河南張先生
努力做事,誠信做人
級別: 家園?
![]() |
這是一個廠家給的通訊協(xié)議: 樓層提升機(jī)受控于 PLC,Lothar 系統(tǒng)與 PLC 以 Modbus TCP/IP 協(xié)議通信。 Lothar 系統(tǒng)為 MasterClient,PLC 為 SlaveServer,寄存器開始地址:0x0000 MODBUS TCP/IP 協(xié)議 ⚫ ADU=MBAP+PDU=MBAP+功 能碼+數(shù) 據(jù) ⚫ MBAP 描述 長度(字節(jié)) 描述 客戶端表示 服務(wù)端表示 事務(wù)識別號 2 Modbus 請求/響應(yīng)任務(wù)的識別號 由客戶端初始化時形成 由接收到的請求信息復(fù)制 協(xié)議識別號 2 0=Modbus 協(xié)議 由客戶端初始化時形成 由接收到的請求信息復(fù)制 長度 2 后面的字節(jié)數(shù)量 由客戶端發(fā)送請求時形成 由服務(wù)端響應(yīng)請求時形成 設(shè)備識別號 1 連接的從站地址 由客戶端初始化時形成 由接收到的請求信息復(fù)制 ⚫ 功能 碼 0x03 讀取數(shù)據(jù) readHoldingRegistersAsync 0x10 寫入數(shù)據(jù) writeMultipleRegistersAsync 數(shù)據(jù)報 文示 例 信號 數(shù)據(jù)流向 值 寄存器地址 數(shù)提升機(jī)狀態(tài) PLC>>>Lothar 0x0000(異常) / 0x0001(正常) 0x0000 提升機(jī)門狀態(tài) PLC>>>Lothar 0x0000(已關(guān)) / 0x0001(已開) 0x0001 提升機(jī)樓層狀態(tài) PLC>>>Lothar 0x0000(未知) / 0x0001(已抵達(dá)1樓)/0x0002(已抵達(dá)2樓) 0x0002 呼叫提升機(jī) Lothar>>>PLC 0x0000(否)/0x0001(呼叫提升機(jī)抵達(dá) 1 樓并自動開門 ) 0x0002( 呼 叫 提 升 機(jī) 抵 達(dá) 2 樓 并 自 動 開門) 0x0003 0x0003(呼叫提升機(jī)抵達(dá) 3 樓并自動開門) 釋放提升機(jī) Lothar>>>PLC 0x0000(否)/0x0001(是) 0x0004 其中Lothar 系統(tǒng)為主客戶端。比如西門子SMART是不是作為從服務(wù)器使用 ,是用client模塊建立鏈接還是用Server模塊建立鏈接,寄存器地址0x000是PLC上的地址還是Lothar 系統(tǒng)為主客戶端地址, |
---|---|
|
夢雨天涯
微信hui530527 &
級別: 網(wǎng)絡(luò)英雄
![]() |
圖片:
![]() ![]() |
|
---|---|---|
|
河南張先生
努力做事,誠信做人
級別: 家園常客
![]() |
用Server模塊建立鏈接,寄存器地址0x000是PLC上的,不就是0區(qū)寄存器,占用輸出口地址了嗎,又比如地址0x0002 里面有判斷樓層值 1 2 3 4 5 如果0X0002是位寄存器,怎么去設(shè)置,這點(diǎn)不明白,請指教 [ 此帖被河南張先生在2025-03-28 09:29重新編輯 ] |
---|---|
|
gaoyingchun
GaoYingChun
級別: 略有小成
![]() |
1、上面提到的地址應(yīng)該是Lothar系統(tǒng)端 2、共用到0~4,5個寄存器 3、Modbus協(xié)議,03/10功能碼,都是針對保持寄存器使用的,上面寫成0X開頭,應(yīng)該是搞錯了,你還是按照4X吧 |
---|---|
|