又紧又大又爽精品一区二区-久久久久高潮毛片免费全部播放-女人张开腿让男桶喷水高潮-精品久久亚洲中文无码

首頁(yè) 新聞中心 行業(yè)動(dòng)態(tài) 【手把手教程】用Python連接Modbus通信,工業(yè)自動(dòng)化其實(shí)很簡(jiǎn)單!

【手把手教程】用Python連接Modbus通信,工業(yè)自動(dòng)化其實(shí)很簡(jiǎn)單!

來(lái)源:聯(lián)誠(chéng)科技
發(fā)布時(shí)間:2024-05-10
瀏覽:876

在當(dāng)今快速發(fā)展的工業(yè)自動(dòng)化和智能制造領(lǐng)域,對(duì)高效、可靠的通信協(xié)議的需求日益增長(zhǎng)。Modbus,作為一個(gè)歷史悠久且廣泛采用的工業(yè)通信協(xié)議,扮演著至關(guān)重要的角色。結(jié)合Python的強(qiáng)大編程能力,我們可以更加靈活和高效地實(shí)現(xiàn)工業(yè)自動(dòng)化解決方案。

 

本篇文章將通過(guò)教程介紹如何利用Python與Modbus協(xié)議進(jìn)行通信,以及如何在實(shí)際的工業(yè)環(huán)境中應(yīng)用這些技術(shù)。


Python連接Modbus通信


什么是Modbus?


Modbus 是一種廣泛使用的工業(yè)通信協(xié)議,由 Modicon Systems 開(kāi)發(fā)。它采用主從架構(gòu),允許一個(gè)主設(shè)備(Master)與多達(dá) 247 個(gè)從設(shè)備(Slaves)進(jìn)行通信。

 

Modbus的類型


Modbus主要分為兩種類型:


Modbus串行:使用串行線(如 RS232 或 RS485)進(jìn)行通信。


Modbus TCP/IP:基于以太網(wǎng),克服了串行通信的限制。

 

Modbus串行是使用串行電纜傳輸信號(hào),如果以點(diǎn)對(duì)點(diǎn)方式連接(一主一從),則將使用 RS232或RS422 電纜, 但如果以點(diǎn)對(duì)多點(diǎn)方式連接。 (一主多從)使用RS485電纜,但由于串行電纜的許多限制,包括距離、設(shè)置和數(shù)量,它現(xiàn)在已經(jīng)發(fā)展到能夠支持使用Modbus TCP/IP通過(guò)以太網(wǎng)連接。


Python連接Modbus通信


在本次教程中,我們選擇使用Modbus TCP,但是Modbus Serial也可以使用相同的代碼進(jìn)行測(cè)試。

 

準(zhǔn)備工作


為了開(kāi)始使用Python與Modbus通信,你需要:


1.安裝pymodbus(可以使用pip或下載)


2.下載并設(shè)置Modbus從設(shè)備程序以進(jìn)行測(cè)試。

 

實(shí)驗(yàn)開(kāi)始


使用 Python 作為服務(wù)器,modbus sim 作為客戶端,你可以實(shí)現(xiàn) Modbus 協(xié)議的通信。以下是實(shí)驗(yàn)步驟:


from pymodbus.client.sync import (
    ModbusSerialClient,
    ModbusTcpClient,
    ModbusTlsClient,
    ModbusUdpClient,
)
from pymodbus.transaction import (
    ModbusAsciiFramer,
    ModbusBinaryFramer,
    ModbusRtuFramer,
    ModbusSocketFramer,
    ModbusTlsFramer,
)

client = ModbusTcpClient(host='localhost',port=502,framer=ModbusSocketFramer)

def WriteData(slave_id,address,count,value):
    client.write_registers(address,[value]*count,unit=slave_id)

def ReadData(slave_id,address,count):
    x = client.read_holding_registers(address,count,unit = slave_id)
    print(x.registers)

def ReadCoil(slave_id,address,count):
    x = client.read_coils(address,count,unit=slave_id).bits
    print(x)

def WriteCoil(slave_id,address,count,value):
    if value == "ON":
        status = True
    else:
        status = False
    x = client.write_coils(address,[status]*count,unit=slave_id)
    # print(x)

def WriteString(slave_id,address,count,value):
    client.write_registers(address,[0]*count,unit=slave_id)
    if len(value)%2 > 0:
        value = value + " "
    c = len(value)//2
    for i in range(c):
        y = value[0 + (2*i):2 + (2*i)]
        print(y)
        q = [ hex(ord(r))[2:4] for r in y]
        print(q)
        k = int(q[0]+q[1],16)
        client.write_registers(address+i,k,unit=slave_id)

print(client.connect())

# WriteData(1,0,2,555)
# WriteCoil(1,0,8,"ON")

# ReadData(1,0,8)
# ReadCoil(1,0,8)

# WriteString(1,0,8,"banana")


從代碼中可以看出,可以通過(guò)更改客戶端和成幀器來(lái)更改為使用串行或 TCP。

 

打開(kāi)modbus從站程序并進(jìn)入設(shè)置并選擇Modbus TCP/IP。


選擇模式為 Modbus TCP

選擇模式為 Modbus TCP

 

 

Slavev id 和地址類型可以從 setup -> Slavev 定義中設(shè)置

Slavev id 和地址類型可以從 setup -> Slavev 定義中設(shè)置

 

嘗試使用WriteData (2,0,2,555)命令,其中前2個(gè)數(shù)字是slave_id,0是默認(rèn)數(shù)據(jù),2是要使用的數(shù)字,555是按運(yùn)行后將發(fā)送的數(shù)據(jù)。


從機(jī) ID 2 在地址 1 和 2 處的值為 555

從機(jī) ID 2 在地址 1 和 2 處的值為 555

 

如果使用 WriteCoil(3,0,3,”O(jiān)N”),將在線圈輸出存儲(chǔ)器中命令一個(gè)打開(kāi)或關(guān)閉位,其中0是初始位,3是要使用的編號(hào),on是要打開(kāi)的命令。


從機(jī) ID 3 的線圈位于地址 1,2,3</span></p>

從機(jī) ID 3 的線圈位于地址 1,2,3

 

可以使用其他讀取地址命令嘗試使用已寫(xiě)入的函數(shù)。


讀取從站3的值

嘗試讀取從站3的值

 

通過(guò)測(cè)試,我們可以看到,僅僅通過(guò)這段代碼就能夠通過(guò)Modbus協(xié)議進(jìn)行通信。你應(yīng)該已經(jīng)對(duì)Modbus協(xié)議及其在工業(yè)自動(dòng)化中的應(yīng)用有了更清晰的理解。


Python與Modbus的通信技術(shù)


Python作為一種高效靈活的編程語(yǔ)言,與Modbus協(xié)議結(jié)合,為工業(yè)控制系統(tǒng)的設(shè)計(jì)和實(shí)施提供了無(wú)限可能。無(wú)論你是工業(yè)自動(dòng)化領(lǐng)域的新手,還是經(jīng)驗(yàn)豐富的專業(yè)人士,掌握Python與Modbus的通信技術(shù)都將極大提升工作效率和系統(tǒng)的智能化水平,助你在工業(yè)自動(dòng)化的道路上走得更遠(yuǎn)。



- END -
熱門推薦
熱門資訊
熱門話題

聯(lián)誠(chéng)科技,助您開(kāi)啟工業(yè)數(shù)字化和智能化之路

在線留言
微信客服
聯(lián)誠(chéng)科技在線客服

微信官方客服

在線客服
掃碼關(guān)注
關(guān)注聯(lián)誠(chéng)科技

關(guān)注聯(lián)誠(chéng)科技

返回頂部

產(chǎn)品試用申請(qǐng)

感謝關(guān)注聯(lián)誠(chéng)科技,請(qǐng)?zhí)顚?xiě)以下信息,我們將第一時(shí)間聯(lián)系您!

基礎(chǔ)信息

需求信息

主站蜘蛛池模板: 十八禁av无码免费网站| 曰韩少妇内射免费播放| 亚洲浮力影院久久久久久| 办公室扒开奶罩揉吮奶头av| 国产色综合久久无码有码| 久久 国产 尿 小便 嘘嘘| 日本巨大的奶头在线观看| 精品少妇无码一区二区三批 | 日日碰狠狠添天天爽无码| 中文字幕丰满乱子无码视频| 亚洲国产精品lv| 国产精品亚洲一区二区三区在线 | 亚洲色婷婷综合开心网| 2018国产精华国产精品| 18岁日韩内射颜射午夜久久成人| 日本内射精品一区二区视频| 国产日韩精品欧美一区喷水| 久久亚洲av成人无码国产| 国产精品永久免费视频| 国产在线无码一区二区三区| 无码人妻精品一区二区三18禁| 丰满少妇弄高潮了www| 在线观看人成视频免费| 国产自国产自愉自愉免费24区| 男女啪啪视频| 国产精品免费久久久久影院仙踪林| 国产l精品国产亚洲区久久| 国产丰满美女a级毛片| 中文在线8资源库| 亚洲国产成人精品无码区二本| 少妇粗大进出白浆嘿嘿视频| 富婆如狼似虎找黑人老外 | 成年女人免费视频播放体验区| 中文字幕亚洲一区二区三区| 麻豆一二三四区乱码| 农民工嫖妓50岁老熟女| 国产日韩av在线播放| 艳妇交换俱乐部| 丝袜 亚洲 另类 欧美 变态 | 无码aⅴ精品一区二区三区浪潮| 色偷偷www8888|