python?snap7讀寫PLC的操作方法
主要在DB塊里操作
讀DB塊
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塊的編號,90表示DB塊內(nèi)的偏移地址,4表示要讀取的字節(jié)數(shù)。
data2=PLC.db_read(db_number=1200, start=90, size=4) print(data2)
data2是個bytearray(b'\x00\x00\x00\x05'),struct.unpack()方法將讀取到的4個字節(jié)數(shù)據(jù)按照大端字節(jié)序("!"表示大端字節(jié)序)解包為一個整數(shù)。解包的結(jié)果以元組的形式返回
data3 = struct.unpack('!i', data2)
print(data3)
#data3 = 5'!i'和'!h'都是Python中struct庫中的格式化字符串,用于指定要解析的二進制數(shù)據(jù)的格式和字節(jié)順序。
其中:
'!'表示使用網(wǎng)絡(luò)字節(jié)順序(big-endian)。'i'表示要解析的數(shù)據(jù)類型是4字節(jié)的整數(shù),也就是int類型。'h'表示要解析的數(shù)據(jù)類型是2字節(jié)的有符號整數(shù),也就是short類型。
因此,'!i'用于解析4字節(jié)的大端整數(shù),'!h'用于解析2字節(jié)的大端有符號整數(shù)。
當(dāng)解析不同類型的數(shù)據(jù)時,需要使用相應(yīng)的格式化字符串。在這里,根據(jù)PLC中數(shù)據(jù)類型的不同,可以選擇不同的格式化字符串來解析數(shù)據(jù)。通常需要根據(jù)PLC的數(shù)據(jù)類型和大小來選擇正確的格式化字符串,否則解析出來的數(shù)據(jù)將會是錯誤的。
寫DB塊
已經(jīng)知道這個要寫入的DB塊是DINT類型的。要把數(shù)字1寫進去
a=struct.pack('!i', 1)a= b'\x00\x00\x00\x01'
PLC.db_write(1200, 90, a)
在這個例子中,1200表示要寫入的DB塊的編號,90表示從該塊的偏移地址90處開始寫入數(shù)據(jù),b'\x00\x00\x00\x01'表示要寫入的四個字節(jié)的數(shù)據(jù)。
到此這篇關(guān)于python snap7讀寫PLC的文章就介紹到這了,更多相關(guān)python snap7讀寫PLC內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python計算三角函數(shù)之a(chǎn)sin()方法的使用
這篇文章主要介紹了Python計算三角函數(shù)之a(chǎn)sin()方法的使用,是Python入門的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05
Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息并入庫
本文主要介紹了利用Python爬蟲實現(xiàn)抓取電影網(wǎng)站信息的功能,并將抓取到的信息入庫。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2022-02-02
python實現(xiàn)圖片彩色轉(zhuǎn)化為素描
這篇文章主要為大家詳細介紹了python實現(xiàn)圖片彩色轉(zhuǎn)化為素描,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
如何使用virtualenv管理python環(huán)境
這篇文章主要介紹了如何使用virtualenv管理python環(huán)境,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
pandas中DataFrame排序及分組排序的實現(xiàn)示例
本文主要介紹了pandas中DataFrame排序及分組排序,pandas中的sort_values()函數(shù)原理類似于SQL中的order by,可以將數(shù)據(jù)集依照某個字段中的數(shù)據(jù)進行排序,下面就來具體介紹一下,感興趣的可以了解一下2024-04-04
python bmp轉(zhuǎn)換為jpg 并刪除原圖的方法
今天小編就為大家分享一篇python bmp轉(zhuǎn)換為jpg 并刪除原圖的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python urllib urlopen()對象方法/代理的補充說明
這篇文章主要介紹了python urllib urlopen()對象方法/代理的補充說明的相關(guān)資料,需要的朋友可以參考下2017-06-06
Python開發(fā)常用五種循環(huán)方式的場景性能比較
Python是一門高級編程語言,其擁有多種循環(huán)方式,如for循環(huán)、while循環(huán)、do-while循環(huán)等。本文將逐個分析Python所有的循環(huán)執(zhí)行效率和適用場景,需要的可以參考一下2023-04-04

