您好,登錄后才能下訂單哦!
這篇文章主要介紹“python snap7怎么讀寫PLC”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“python snap7怎么讀寫PLC”文章能幫助大家解決問(wèn)題。
import snap7 import struct def plc_connection(): PLC_IP = '192.168.10.10' PLC = snap7.client.Client() PLC.connect(PLC_IP, rack=0, slot=1) return PLC PLC = plc_connection()
PLC.read_area()方法從PLC中讀取指定區(qū)域的數(shù)據(jù)。
1200表示DB塊的編號(hào),90表示DB塊內(nèi)的偏移地址,4表示要讀取的字節(jié)數(shù)。
data2=PLC.db_read(db_number=1200, start=90, size=4) print(data2)
data2是個(gè)bytearray(b'\x00\x00\x00\x05'),struct.unpack()方法將讀取到的4個(gè)字節(jié)數(shù)據(jù)按照大端字節(jié)序("!"表示大端字節(jié)序)解包為一個(gè)整數(shù)。解包的結(jié)果以元組的形式返回
data3 = struct.unpack('!i', data2) print(data3) #data3 = 5
'!i'
和'!h'
都是Python中struct庫(kù)中的格式化字符串,用于指定要解析的二進(jìn)制數(shù)據(jù)的格式和字節(jié)順序。
其中:
'!'
表示使用網(wǎng)絡(luò)字節(jié)順序(big-endian)。
'i'
表示要解析的數(shù)據(jù)類型是4字節(jié)的整數(shù),也就是int類型。
'h'
表示要解析的數(shù)據(jù)類型是2字節(jié)的有符號(hào)整數(shù),也就是short類型。
因此,'!i'
用于解析4字節(jié)的大端整數(shù),'!h'
用于解析2字節(jié)的大端有符號(hào)整數(shù)。
當(dāng)解析不同類型的數(shù)據(jù)時(shí),需要使用相應(yīng)的格式化字符串。在這里,根據(jù)PLC中數(shù)據(jù)類型的不同,可以選擇不同的格式化字符串來(lái)解析數(shù)據(jù)。通常需要根據(jù)PLC的數(shù)據(jù)類型和大小來(lái)選擇正確的格式化字符串,否則解析出來(lái)的數(shù)據(jù)將會(huì)是錯(cuò)誤的。
已經(jīng)知道這個(gè)要寫入的DB塊是DINT類型的。要把數(shù)字1寫進(jìn)去
a=struct.pack('!i', 1)
a= b'\x00\x00\x00\x01'
PLC.db_write(1200, 90, a)
在這個(gè)例子中,1200
表示要寫入的DB塊的編號(hào),90
表示從該塊的偏移地址90處開(kāi)始寫入數(shù)據(jù),b'\x00\x00\x00\x01'表示要寫入的四個(gè)字節(jié)的數(shù)據(jù)。
關(guān)于“python snap7怎么讀寫PLC”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。