兩個(gè)不同PLC之間通過rs485(modbus RTU)通信的問題
-
我們實(shí)驗(yàn)用了ABB ac500 pm592 ,與別人西門子的s7-200通過RS485進(jìn)行通信,我是主,他做從 我用了AC500的cpu的com1,接的是2,3口, 兩邊的com設(shè)置都是9600波特率,8數(shù)據(jù)位,偶校驗(yàn),1停止位 主PLC程序如下: BLINK1(ENABLE:=TRUE , TIMELOW:=T... 我們實(shí)驗(yàn)用了ABB ac500 pm592 ,與別人西門子的s7-200通過RS485進(jìn)行通信,我是主,他做從 我用了AC500的cpu的com1,接的是2,3口, 兩邊的com設(shè)置都是9600波特率,8數(shù)據(jù)位,偶校驗(yàn),1停止位 主PLC程序如下: BLINK1(ENABLE:=TRUE , TIMELOW:=T#1s , TIMEHIGH:=T#1s , OUT=> ); COM_MOD_MAST_receive3( EN:=BLINK1.OUT , COM:=1 ,(*接口編號*) SLAVE:= 2,(*從站IP地址,變壓器作為MODBUS_RTU從站*) FCT:=03,(*讀N個(gè)字*) TIMEOUT:=1000, ADDR:=40001,(*要讀取的從站寄存器首地址MODBUS*) NB:=41 ,(*要讀取從站的數(shù)據(jù)個(gè)數(shù),對于位存取NB中規(guī)定位的個(gè)數(shù),對于字和雙字存取,在NB中規(guī)定字的個(gè)數(shù)*) DATA :=ADR(ETH_REC_DATA2) ,(*主站存儲(chǔ)區(qū)首地址,從從站讀取的數(shù)據(jù)放在該地址*) DONE=> , ERR=> , ERNO=>); xx:=COM_MOD_MAST_receive3.ERNO; IF COM_MOD_MAST_receive3.DONE=TRUE AND COM_MOD_MAST_receive3.ERR=FALSE THEN read3_success_num:=read3_success_num+1; IF read3_success_num>5000 THEN read3_success_num:=0; END_IF; END_IF; 但是程序一直沒有收到數(shù)據(jù),不知道是哪里錯(cuò)了 能否給予解答? 有沒有相關(guān)的說明文件給予參考 展開
全部評論(2條)
-
- 風(fēng)格和方式 2017-09-30 00:00:00
- 我實(shí)驗(yàn)成功了歐姆龍與松下的PLC進(jìn)行modbus RTU通訊,首先需要知道兩個(gè)PLC的端口是否支持主從通訊,歐姆龍的只能做主站,松下的做主從站都可以。這個(gè)確定之后就可以確定由誰發(fā)起通訊了,通訊協(xié)議需要注意的是,modbus RTU的數(shù)據(jù)格式、功能代碼格式。不同的功能代碼發(fā)送數(shù)據(jù)格式不一樣。
-
贊(3)
回復(fù)(0)
-
- 木魚來了aCh2i 2018-04-06 10:07:09
- 由于你沒有說兩個(gè)PLC的具體型號!設(shè)置上真的是不好說什么了 需要注意的是兩個(gè)PLC設(shè)置上要一致!宏文件奧相互對應(yīng)!可以再PLC的一邊監(jiān)視下 特別要看下接口(也就是通訊電纜)是不是一致,建議兩個(gè)PLC分別監(jiān)視下!這樣很快就知道問題究竟在哪里了! 能幫你的也就是這么多?。?!希望可以幫到你!祝好運(yùn)?。?!
-
贊(15)
回復(fù)(0)
熱門問答
- 兩個(gè)不同PLC之間通過rs485(modbus RTU)通信的問題
- 我們實(shí)驗(yàn)用了ABB ac500 pm592 ,與別人西門子的s7-200通過RS485進(jìn)行通信,我是主,他做從 我用了AC500的cpu的com1,接的是2,3口, 兩邊的com設(shè)置都是9600波特率,8數(shù)據(jù)位,偶校驗(yàn),1停止位 主PLC程序如下: BLINK1(ENABLE:=TRUE , TIMELOW:=T... 我們實(shí)驗(yàn)用了ABB ac500 pm592 ,與別人西門子的s7-200通過RS485進(jìn)行通信,我是主,他做從 我用了AC500的cpu的com1,接的是2,3口, 兩邊的com設(shè)置都是9600波特率,8數(shù)據(jù)位,偶校驗(yàn),1停止位 主PLC程序如下: BLINK1(ENABLE:=TRUE , TIMELOW:=T#1s , TIMEHIGH:=T#1s , OUT=> ); COM_MOD_MAST_receive3( EN:=BLINK1.OUT , COM:=1 ,(*接口編號*) SLAVE:= 2,(*從站IP地址,變壓器作為MODBUS_RTU從站*) FCT:=03,(*讀N個(gè)字*) TIMEOUT:=1000, ADDR:=40001,(*要讀取的從站寄存器首地址MODBUS*) NB:=41 ,(*要讀取從站的數(shù)據(jù)個(gè)數(shù),對于位存取NB中規(guī)定位的個(gè)數(shù),對于字和雙字存取,在NB中規(guī)定字的個(gè)數(shù)*) DATA :=ADR(ETH_REC_DATA2) ,(*主站存儲(chǔ)區(qū)首地址,從從站讀取的數(shù)據(jù)放在該地址*) DONE=> , ERR=> , ERNO=>); xx:=COM_MOD_MAST_receive3.ERNO; IF COM_MOD_MAST_receive3.DONE=TRUE AND COM_MOD_MAST_receive3.ERR=FALSE THEN read3_success_num:=read3_success_num+1; IF read3_success_num>5000 THEN read3_success_num:=0; END_IF; END_IF; 但是程序一直沒有收到數(shù)據(jù),不知道是哪里錯(cuò)了 能否給予解答? 有沒有相關(guān)的說明文件給予參考 展開
- RS485通過modbus rtu協(xié)議通信和通過pc加載器協(xié)議通信
- 求助三菱FX2N PLC Modbus rtu 通信問題
- 求助三菱FX2N PLC Modbus rtu 通信問題
- modbus RTU模式的通信問題
- modbus RTU模式的通信通訊格式要求 地址 功能碼 數(shù)據(jù) CRC校驗(yàn) 數(shù)據(jù)長度 1個(gè)字節(jié) 1個(gè)字節(jié) N個(gè)字節(jié) 2個(gè)字節(jié) 如發(fā)送的數(shù)據(jù)... modbus RTU模式的通信通訊格式要求 地址 功能碼 數(shù)據(jù) CRC校驗(yàn) 數(shù)據(jù)長度 1個(gè)字節(jié) 1個(gè)字節(jié) N個(gè)字節(jié) 2個(gè)字節(jié) 如發(fā)送的數(shù)據(jù)為: 03 01 00 00 10 校驗(yàn)高位校驗(yàn)低位 我的問題是: 1、我理解地址03使用1個(gè)字節(jié)數(shù)據(jù)長度表示,是用1個(gè)字節(jié)表示0,再使用一個(gè)字節(jié)表示3,但再就使用了兩個(gè)字節(jié)的數(shù)據(jù)長度了,和通訊要求的格式不符。還有一種理解就是使用1個(gè)字節(jié)的直接表示03,其而進(jìn)制碼為000000011,如果地址是20,其二進(jìn)制碼為00010100,但這種理解出現(xiàn)個(gè)疑問,很多設(shè)備同時(shí)支持ASCII或RTU兩種方式,當(dāng)發(fā)送RTU的地址和ASCII方式的起始符相同時(shí)如都為03,接受方怎么判斷他是RTU發(fā)送的地址,還是ASCII起始符。 2、RTU方式判斷幀消息結(jié)束時(shí)是3.5字符時(shí)間,我想知道在物理層如何判斷的,如消息發(fā)送完后,在物理層485雙絞上,其電壓持續(xù)3.5字符長度+15V即判斷消息發(fā)送完成或是其電壓持續(xù)3.5字符長度-15V判斷消息發(fā)送完成。還是雙絞線上為其他狀態(tài)來判斷消息完成。485通訊線上沒有通訊時(shí)A、 B線狀態(tài)是什么。 請教各位了? 展開
- modbus rtu串口通信
- 公司買了一個(gè)溫度巡檢儀,功能有限,我想通過自己做的軟件來增強(qiáng)巡檢儀的功能,但對串口通信編程知之甚少。現(xiàn)通過監(jiān)控原程序得到以下數(shù)據(jù):write requests: 01 03 00 01 00 01 D5 CA 01 01 00 50 00 20 3D C3 01 03 00 60 00 10 44 18 read requests: 01 03... 公司買了一個(gè)溫度巡檢儀,功能有限,我想通過自己做的軟件來增強(qiáng)巡檢儀的功能,但對串口通信編程知之甚少。現(xiàn)通過監(jiān)控原程序得到以下數(shù)據(jù):write requests: 01 03 00 01 00 01 D5 CA 01 01 00 50 00 20 3D C3 01 03 00 60 00 10 44 18 read requests: 01 03 02 00 02 39 85 01 01 04 00 00 00 00 FB D1 01 03 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 4E 20 AE 38 從中能不能翻譯出什么東西?? 后來我又根據(jù)已有資料及網(wǎng)上相關(guān)程序編寫了以下通訊程序: Private Sub Command1_Click() '發(fā)請求 Dim btSend(23) As Byte btSend(0) = &H1 '目標(biāo)站號 btSend(1) = &H3 '功能碼 btSend(2) = &H0 'I0.0地址(0000)高字節(jié) btSend(3) = &H1 'i0.0地址(0000)低字節(jié) btSend(4) = &H0 '讀取個(gè)數(shù)高字節(jié) btSend(5) = &H1 '讀取個(gè)數(shù)低字節(jié) btSend(6) = &HD5 btSend(7) = &HCA btSend(8) = &H1 btSend(9) = &H1 btSend(10) = &H0 btSend(11) = &H50 btSend(12) = &H0 btSend(13) = &H20 btSend(14) = &H3D btSend(15) = &HC3 btSend(16) = &H1 btSend(17) = &H3 btSend(18) = &H0 btSend(19) = &H60 btSend(20) = &H0 btSend(21) = &H10 btSend(22) = &H44 btSend(23) = &H18 ComK3.Output = CVar(btSend) Dim btReceive As Variant With ComK3 Do DoEvents Loop Until .InBufferCount = 5 .InputLen = 30 btReceive = .Input Text1.Text = Hex$(btReceive(1)) Text2.Text = Hex$(btReceive(2)) Text3.Text = Hex$(btReceive(3)) Text4.Text = Hex$(btReceive(4)) ' Text5.Text = Hex$(btReceive(5)) 'Text6.Text = Hex$(btReceive(6)) ' Text7.Text = Hex$(btReceive(7)) ' Text8.Text = Hex$(btReceive(8)) ' Text9.Text = Hex$(btReceive(9)) ' Text10.Text = Hex$(btReceive(10)) ' Text11.Text = Hex$(btReceive(11)) ' Text12.Text = Hex$(btReceive(12)) ' Text13.Text = Hex$(btReceive(13)) ' Text14.Text = Hex$(btReceive(14)) ' Text15.Text = Hex$(btReceive(15)) ' Text16.Text = Hex$(btReceive(16)) ' End If End With End Sub Private Sub Form_Load() With ComK3 .CommPort = 1 .Settings = "9600,N,8,2" .InputMode = comInputModeBinary '二進(jìn)制收發(fā) .InBufferSize = 512 .OutBufferSize = 512 If (Not .PortOpen) Then .PortOpen = True End With End Sub 能收到4個(gè)亂碼,應(yīng)該是錯(cuò)誤標(biāo)示,原程序待CRC驗(yàn)證,我驗(yàn)證不出,所以先刪除了。期望大俠們幫我修改下程序 展開
- modbus rtu通信的一些問題
- 問題一:相關(guān)資料上說modbus rtu通信數(shù)據(jù)中每個(gè)字節(jié)包括” 1個(gè)起始位、8個(gè)數(shù)據(jù)位、 1個(gè)奇偶校驗(yàn)位、1~2個(gè)停止位“,加起來每個(gè)字節(jié)就有12位了。不是一個(gè)字節(jié)只有8位的嗎? 問題二:無符號十六位二進(jìn)制數(shù)據(jù)乘以100,再除以256,這個(gè)運(yùn)算是起到什么作用呢?
- 西門子plc modbus rtu 與臺達(dá)變頻器通信實(shí)例
- 我要實(shí)際案例,有程序的那種??!有的話發(fā)送到471971458@qq.com,謝謝!??!
- 基于modbus RTU通訊協(xié)議的ABB PLC與流量計(jì)之間的通訊程序問題
- ABB的PLC CPU PM581 編程軟件是PS501 系統(tǒng)為一臺PLC與多個(gè)電磁流量計(jì)通訊 讀取流量計(jì)的數(shù)據(jù) 通訊程序如何寫? 其中軟件中有個(gè)modbus功能塊 COM_MOD_MAST 誰知道此功能塊中各個(gè)參數(shù)的設(shè)置方法?例如 通訊端口是2 流量計(jì)地址為1 功能碼為03(讀取) TIMEOU... ABB的PLC CPU PM581 編程軟件是PS501 系統(tǒng)為一臺PLC與多個(gè)電磁流量計(jì)通訊 讀取流量計(jì)的數(shù)據(jù) 通訊程序如何寫? 其中軟件中有個(gè)modbus功能塊 COM_MOD_MAST 誰知道此功能塊中各個(gè)參數(shù)的設(shè)置方法?例如 通訊端口是2 流量計(jì)地址為1 功能碼為03(讀?。?TIMEOUT如何設(shè)置?代表意義?儀表寄存器地址為0X0256 功能塊中NB怎樣設(shè)置?代表意義?DATA是自己設(shè)置讀取到的數(shù)據(jù)存儲(chǔ)地址么?右面的ERNO如何設(shè)置? 展開
- Modbus RTU通訊問題
- 物理連接結(jié)構(gòu):主設(shè)備ADAM5510,通訊端口【ADAM5090 (RS232)】 連接【RS232/RS485轉(zhuǎn)換】并聯(lián)從設(shè)備1、2。標(biāo)準(zhǔn)Modbus RTU協(xié)議。主設(shè)備發(fā)指令讀取從設(shè)備寄存器地址。只有1有響應(yīng),2無響應(yīng),斷開1則2有響應(yīng) 用電腦替換主設(shè)備,分別發(fā)指令至1、2均有正確回應(yīng)。何... 物理連接結(jié)構(gòu):主設(shè)備ADAM5510,通訊端口【ADAM5090 (RS232)】 連接【RS232/RS485轉(zhuǎn)換】并聯(lián)從設(shè)備1、2。標(biāo)準(zhǔn)Modbus RTU協(xié)議。主設(shè)備發(fā)指令讀取從設(shè)備寄存器地址。只有1有響應(yīng),2無響應(yīng),斷開1則2有響應(yīng) 用電腦替換主設(shè)備,分別發(fā)指令至1、2均有正確回應(yīng)。何解??? 如何實(shí)現(xiàn)主設(shè)備正常與多個(gè)從設(shè)備通訊? 展開
- 松下PLC與儀表通過MODBUS RTU通訊,用哪個(gè)指令
- 松下PLC與儀表通過MODBUS RTU通訊,用哪個(gè)指令
- modbus rtu通信有16位數(shù)據(jù)位的嗎
- MODBUS RTU 規(guī)約對時(shí)問題
- 我們做了一套變電站監(jiān)控裝置,如何實(shí)現(xiàn)主從的對時(shí)?也就是時(shí)鐘對時(shí)。謝謝
- 組態(tài)軟件怎樣解決與不同系統(tǒng)之間的通信問題?
- 一塊儀表能同時(shí)被兩個(gè)PLC進(jìn)行MODBUS RTU通訊嗎
- 組態(tài)王與MODBUS RTU之間的地址換算
- 011EH 011FH 0120H 0121H 功能碼都是03對應(yīng)組態(tài)王的地址是多少?
- s7-1200進(jìn)行modbus RTU 通信需要什么硬件
- 如何使Wonderware intouch建立modbus rtu通信
- 如何使Wonderware intouch建立modbus rtu通信
4月突出貢獻(xiàn)榜
推薦主頁
最新話題





參與評論
登錄后參與評論