日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

工业采集S7协议 python通过S7协议通信

發布時間:2024/1/1 python 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工业采集S7协议 python通过S7协议通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python使用snap7庫進行采集S7協議通信

S7協議介紹

Snap7是一個用于處理S7以太網協議,與西門子S7系列PLC通訊的開源通訊組件。支持與S7-200、S7-200 Smart、S7-300、S7-400、S7-1200以及S7-1500的以太網通信。

環境準備

1. 安裝開源庫python-snap;

pip install python-snap7

2. Python版本python3.6;

代碼實現

1. snap7庫簡單介紹

snap7庫主要通過read_area和write_area兩個函數實現對PLC數據的讀寫; snap7中有專門的方法讀取數據。

讀取M位存儲區數據:

讀取存儲區數據的編號: areas = ADict({'PE': 0x81,'PA': 0x82,'MK': 0x83,'DB': 0x84,'CT': 0x1C,'TM': 0x1D, }) 讀數據; read_area(area,dbnumber,start,size) area:area參數用于區分I、Q、M、DB存儲區: dnumber:0 start:起始地址 size:讀取長度

在snap7中加入PLC使用的是PE那就在代碼中使用的是‘0x81’的編碼

例:read_area(0x84, 100, 0, 0)

通過S7采集的數據返回的數據是 byteorder類型,所以如果需要變成自己能用的數據還需要轉下格式。

2. 完整的代碼

import snap7 from snap7.util import * # 對位操作的函數要導入該庫 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("數據解析結果點位1:"+cj0)print("數據解析結果點位2:"+cj1)time.sleep(1)#等待一秒,一秒一個的獲取數據#有必要的情況下可以創建個多線程 def xc():# 創建線程thread_hi = cj_s7()# 啟動線程thread_hi.start()print('Main thread has ended!')if __name__ == '__main__':xc()

總結

s7協議我也是剛開始接觸,所以很多地方也有需要完善學習的地方,希望有個老師能來指導指導下。
謝謝,可以留下或私聊下聯系方式:🐧qq:3025905045

總結

以上是生活随笔為你收集整理的工业采集S7协议 python通过S7协议通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。