工业采集S7协议 python通过S7协议通信
生活随笔
收集整理的這篇文章主要介紹了
工业采集S7协议 python通过S7协议通信
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Python使用snap7庫進行采集S7協(xié)議通信
S7協(xié)議介紹
Snap7是一個用于處理S7以太網(wǎng)協(xié)議,與西門子S7系列PLC通訊的開源通訊組件。支持與S7-200、S7-200 Smart、S7-300、S7-400、S7-1200以及S7-1500的以太網(wǎng)通信。
環(huán)境準備
1. 安裝開源庫python-snap;
pip install python-snap72. Python版本python3.6;
代碼實現(xiàn)
1. snap7庫簡單介紹
snap7庫主要通過read_area和write_area兩個函數(shù)實現(xiàn)對PLC數(shù)據(jù)的讀寫; snap7中有專門的方法讀取數(shù)據(jù)。讀取M位存儲區(qū)數(shù)據(jù):
讀取存儲區(qū)數(shù)據(jù)的編號: areas = ADict({'PE': 0x81,'PA': 0x82,'MK': 0x83,'DB': 0x84,'CT': 0x1C,'TM': 0x1D, }) 讀數(shù)據(jù); read_area(area,dbnumber,start,size) area:area參數(shù)用于區(qū)分I、Q、M、DB存儲區(qū): dnumber:0 start:起始地址 size:讀取長度在snap7中加入PLC使用的是PE那就在代碼中使用的是‘0x81’的編碼
例:read_area(0x84, 100, 0, 0)通過S7采集的數(shù)據(jù)返回的數(shù)據(jù)是 byteorder類型,所以如果需要變成自己能用的數(shù)據(jù)還需要轉下格式。
2. 完整的代碼
import snap7 from snap7.util import * # 對位操作的函數(shù)要導入該庫 import time import jsonclient = snap7.client.Client() # IP地址,機架,槽位 client.connect('10.0.11.241', 0, 1) # 測試是否通訊成功 if client.get_connected():print('連接成功') else:print('連接失敗')def cj_s7():while True:cj0 = client.read_area(0x84, 100, 0, 2)cj1 = client.read_area(0x84, 100, 1, 2)cj_time = time.time()log_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print("數(shù)據(jù)解析結果點位1:"+cj0)print("數(shù)據(jù)解析結果點位2:"+cj1)time.sleep(1)#等待一秒,一秒一個的獲取數(shù)據(jù)#有必要的情況下可以創(chuàng)建個多線程 def xc():# 創(chuàng)建線程thread_hi = cj_s7()# 啟動線程thread_hi.start()print('Main thread has ended!')if __name__ == '__main__':xc()總結
s7協(xié)議我也是剛開始接觸,所以很多地方也有需要完善學習的地方,希望有個老師能來指導指導下。
謝謝,可以留下或私聊下聯(lián)系方式:🐧qq:3025905045
總結
以上是生活随笔為你收集整理的工业采集S7协议 python通过S7协议通信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2014年计算机一级考试操作题,2014
- 下一篇: extjs,下拉多选