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塊的編號(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庫中的格式化字符串,用于指定要解析的二進(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ù)類型的不同,可以選擇不同的格式化字符串來解析數(shù)據(jù)。通常需要根據(jù)PLC的數(shù)據(jù)類型和大小來選擇正確的格式化字符串,否則解析出來的數(shù)據(jù)將會(huì)是錯(cuò)誤的。
寫DB塊
已經(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處開始寫入數(shù)據(jù),b'\x00\x00\x00\x01'表示要寫入的四個(gè)字節(jié)的數(shù)據(jù)。
到此這篇關(guān)于python snap7讀寫PLC的文章就介紹到這了,更多相關(guān)python snap7讀寫PLC內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
快速解決jupyter notebook啟動(dòng)需要密碼的問題
這篇文章主要介紹了快速解決jupyter notebook啟動(dòng)需要密碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python實(shí)現(xiàn)爬蟲IP負(fù)載均衡和高可用集群的示例代碼
做大型爬蟲項(xiàng)目經(jīng)常遇到請(qǐng)求頻率過高的問題,這里需要說的是使用爬蟲IP可以提高抓取效率,本文主要介紹了Python實(shí)現(xiàn)爬蟲IP負(fù)載均衡和高可用集群的示例代碼,感興趣的可以了解一下2023-12-12淺談Python對(duì)內(nèi)存的使用(深淺拷貝)
這篇文章主要介紹了淺談Python對(duì)內(nèi)存的使用(深淺拷貝),具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01淺談PyTorch的可重復(fù)性問題(如何使實(shí)驗(yàn)結(jié)果可復(fù)現(xiàn))
今天小編就為大家分享一篇淺談PyTorch的可重復(fù)性問題(如何使實(shí)驗(yàn)結(jié)果可復(fù)現(xiàn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python實(shí)現(xiàn)多張圖片合成一張馬賽克圖片
這篇文章主要介紹了了Python如何實(shí)現(xiàn)將多張圖片合成一張馬賽克圖片。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以學(xué)習(xí)一下2021-12-12使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的多種方法與技巧
可視化是理解和解釋大量數(shù)據(jù)的強(qiáng)大工具之一,而Python作為一種流行的編程語言,提供了豐富的庫和工具來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化,本文將介紹一些使用Python進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)可視化的方法與技巧,并提供相應(yīng)的代碼實(shí)例,需要的朋友可以參考下2024-05-05Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞
這篇文章主要介紹了Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04基于jupyter代碼無法在pycharm中運(yùn)行的解決方法
這篇文章主要介紹了基于jupyter代碼無法在pycharm中運(yùn)行的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04深度學(xué)習(xí)TextLSTM的tensorflow1.14實(shí)現(xiàn)示例
這篇文章主要為大家介紹了深度學(xué)習(xí)TextLSTM的tensorflow1.14實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01