91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python培訓教程:基于Python的ModbusTCP客戶端實現

發布時間:2020-08-14 02:00:58 來源:ITPUB博客 閱讀:342 作者:千鋒Python唐小強 欄目:編程語言

Python培訓教程:基于Python的ModbusTCP客戶端實現

Modbus協議是由Modicon公司(現在的施耐德電氣Schneider Electric)推出,主要建立在物理串口、以太網TCP/IP層之上,目前已經成為工業領域通信協議的業界標準,廣泛應用在工業電子設備之間的互聯。

Modbus Poll和Modbus Slave是兩款非常流行的Modbus設備仿真軟件,支持Modbus RTU/ASCII和Modbus TCP/IP協議 ,經常用于測試和調試Modbus設備,觀察Modbus通信過程中的各種報文。

當用于支持Modbus RTU/ASCII協議時,ModbusPoll作為一個主站設備, ModbusSlave作為一個從站設備,從站設備接收主站設備的命令并返回數據。而當用于支持Modbus TCP/IP時,ModbusSlave作為一個服務器, ModbusPoll作為一個客戶端,服務器接收客戶端的命令并返回數據。客戶端需要填寫指定連接的遠程服務器IP地址和端口號。

Python培訓教程:基于Python的ModbusTCP客戶端實現

這里主要介紹下用Python實現ModbusTCP客戶端功能,同時使用ModbusSlave模擬一個服務器,用于互聯調試。

Python培訓教程:基于Python的ModbusTCP客戶端實現

Python中提供了支持Modbus協議的第三方庫——modbus_tk,下載地址為:https://pypi.org/project/modbus_tk/。使用時需要先導入modbus_tk庫,然后簡單地依照Modbus協議配置參數即可。當實現客戶端功能時,需要配置如下參數:

slave:Modbus從站ID地址 。

function_code:寄存器的功能碼,主要的寄存器功能碼如下所示:

Python培訓教程:基于Python的ModbusTCP客戶端實現

starting_address:寄存器起始地址,從0開始。

quantity_of_x:寄存器連續個數。

output_value:寫命令時的數值。

Scan Rate:讀取數據的周期,程序中體現為執行 execute()方法的周期。

如下例程實現了01和03兩條命令讀取服務器的數據,如下所示:

import modbus_tk.modbus_tcp as mt
import modbus_tk.defines as md
# 遠程連接到服務器端
master = mt.TcpMaster("192.168.1.10", 502)
master.set_timeout(5.0)
# @slave=1 : identifier of the slave. from 1 to 247. 0為廣播所有的slave
# @function_code=READ_HOLDING_REGISTERS:功能碼
# @starting_address=1:開始地址
# @quantity_of_x=3:寄存器/線圈的數量
# @output_value:一個整數或可迭代的值:1/[1,1,1,0,0,1]/xrange(12)
# @data_format
# @expected_length
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
Coils_value = master.execute(slave=1, function_code=md.READ_COILS, starting_address=1, quantity_of_x=3, output_value=5)
print(Hold_value) # 取到的寄存器的值格式為元組(55, 12, 44)
print(Hold_value) # 取到的寄存器的值格式為元組(1, 1, 1)

更多的Python學習教程也會慢慢給大家更新!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇安县| 湘阴县| 土默特左旗| 合肥市| 宁武县| 耿马| 津市市| 汾西县| 阳山县| 东港市| 新邵县| 锦屏县| 大兴区| 金华市| 上犹县| 田阳县| 会东县| 百色市| 祁东县| 嘉鱼县| 靖安县| 汤原县| 莫力| 门头沟区| 兖州市| 昭觉县| 琼海市| 镇赉县| 高雄县| 隆尧县| 中江县| 如东县| 洪雅县| 林甸县| 凤冈县| 锡林浩特市| 高阳县| 淳安县| 兖州市| 丁青县| 明光市|