全部評(píng)論(1條)
-
- 卷毛96 2016-02-23 04:30:24
- Modbus RTU模式不需要判斷起始位。它是1主多從的通信方式,主站發(fā)出請(qǐng)求后,它要等待從站應(yīng)答,中間有一個(gè)等待時(shí)間。從站接收請(qǐng)求數(shù)據(jù)包之后,先與本機(jī)地址比較,若地址相等則進(jìn)行CRC效驗(yàn),CRC效驗(yàn)通過后再返回應(yīng)答數(shù)據(jù)包。這樣,在兩個(gè)數(shù)據(jù)包之間是有一個(gè)間隔時(shí)間的,主站和從站通過間隔時(shí)間已經(jīng)能識(shí)別數(shù)據(jù)包。
-
贊(16)
回復(fù)(0)
登錄或新用戶注冊(cè)
- 微信登錄
- 密碼登錄
- 短信登錄
請(qǐng)用手機(jī)微信掃描下方二維碼
快速登錄或注冊(cè)新賬號(hào)
微信掃碼,手機(jī)電腦聯(lián)動(dòng)
注冊(cè)登錄即表示同意《儀器網(wǎng)服務(wù)條款》和《隱私協(xié)議》
熱門問答
- Modbus RTU模式時(shí),沒有起始位 那怎么判通信開始呢? 本人菜鳥
2016-02-22 16:10:59
530
1
- 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)是什么。 請(qǐng)教各位了? 展開
2013-04-08 23:05:15
376
2
- modbus rtu串口通信
- 公司買了一個(gè)溫度巡檢儀,功能有限,我想通過自己做的軟件來增強(qiáng)巡檢儀的功能,但對(duì)串口通信編程知之甚少?,F(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)巡檢儀的功能,但對(duì)串口通信編程知之甚少?,F(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ā)請(qǐng)求 Dim btSend(23) As Byte btSend(0) = &H1 '目標(biāo)站號(hà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)證不出,所以先刪除了。期望大俠們幫我修改下程序 展開
2009-07-05 16:19:26
440
2
- 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位的嗎? 問題二:無符號(hào)十六位二進(jìn)制數(shù)據(jù)乘以100,再除以256,這個(gè)運(yùn)算是起到什么作用呢?
2013-01-29 03:23:16
451
2
- modbus協(xié)議RTU模式校驗(yàn)碼怎么計(jì)算
2016-01-30 03:44:18
509
1
- modbus協(xié)議RTU模式校驗(yàn)碼怎么計(jì)算
2016-01-25 04:46:33
636
1
- modbus RTU是什么呢?
2013-11-09 03:57:33
448
2
- RTU怎么通信
- 如題
2016-02-29 07:07:44
376
1
- 本人現(xiàn)在在做modbus rtu 協(xié)議 上位機(jī)與智能儀表通信 希望高手指點(diǎn)一下
- 自己程序謝了 讀儀表地址01的值,讀到txt2.text中 程序如下: Private Sub Form_Load() '初始化串口 MSComm1.CommPort = 1 '選擇串口 MSComm1.Settings = "9600,E,8,1" '設(shè)... 自己程序謝了 讀儀表地址01的值,讀到txt2.text中 程序如下: Private Sub Form_Load() '初始化串口 MSComm1.CommPort = 1 '選擇串口 MSComm1.Settings = "9600,E,8,1" '設(shè)置通信參數(shù) MSComm1.InputMode = comInputModeBinary '設(shè)置接受數(shù)據(jù)為二進(jìn)制形式 MSComm1.InBufferSize = 512 MSComm1.OutBufferSize = 512 MSComm1.InputLen = 0 '從接受緩沖區(qū)讀取全部數(shù)據(jù) Timer1.Interval = 100 Timer1.Enabled = True Timer2.Interval = 10 Timer2.Enabled = False 'MSComm1.SThreshold = 1 ' If Not MSComm1.PortOpen Then MSComm1.PortOpen = True ' End If End Sub Function crc16(ByRef cmdstring() As Byte, ByVal j As Integer) Dim data As Integer Dim i As Integer Dim k As Integer Dim Addressreg_crc As Long Addressreg_crc = &HFFFF For i = 0 To j Addressreg_crc = Addressreg_crc Xor cmdstring(i) For k = 0 To 7 data = Addressreg_crc And &H1 If data Then Addressreg_crc = Addressreg_crc \ 2 ' Addressreg_crc = Addressreg_crc And &H7FFF Addressreg_crc = Addressreg_crc Xor &HA001 Else Addressreg_crc = Addressreg_crc \ 2 ' Addressreg_crc = Addressreg_crc And &H7FFF End If Next k Next i Hibyte = Addressreg_crc And &HFF Lobyte = (Addressreg_crc And &HFF00) / &H100 End Function Private Sub timer1_timer() MSComm1.OutBufferCount = 0 '清空接受緩沖區(qū) Dim sendstr(8) As Byte sendstr(0) = &H1 sendstr(1) = &H3 sendstr(2) = &H0 sendstr(3) = &H1 sendstr(4) = &H0 sendstr(5) = &H1 Call crc16(sendstr(), 5) sendstr(5) = Hibyte sendstr(6) = Lobyte MSComm1.Output = sendstr '發(fā)送查詢命令 Timer2.Enabled = True '啟動(dòng)定時(shí)器2 End Sub ' Private Function Hex2(ByRef c As String) As String ' Hex2 = Hex(CInt(c)) 'If Len(Hex2) < 2 Then 'Hex2 = "0" & Hex2 'End If 'End Function Private Sub Timer2_Timer() Dim inputbuf As String '接收數(shù)組 Dim inputsafebuf() As Byte '安全數(shù)組 Dim index As Integer inputbuf = "" ' MSComm1.RThreshold = 7 inputsafebuf = MSComm1.Input '將輸入緩沖區(qū)中的數(shù)據(jù)放入安全數(shù)組中 Select Case MSComm1.CommEvent Case comEvReceive For index = 0 To UBound(inputsafebuf) - 1 If Len(Hex(inputsafebuf(index))) = 1 Then inputbuf = inputbuf & "0" & inputsafebuf(index) Else inputbuf = inputbuf & inputsafebuf(index) End If Next index '將安全數(shù)組中的數(shù)據(jù)放入接收數(shù)組中 ' n = Val("&H" & CStr(Mid(inputbuf, 5, 2))) '字符數(shù) ' If Mid(inputbuf, 1, 2) = 1 And Mid(inputbuf, 3, 2) = 3 And Mid(inputbuf, 5, 2) = 2 Then txt2.Text = Val("&H" & CStr(Mid(inputbuf, 7, 4))) ' End If Case comEvSend Exit Sub End Select End Sub 展開
2011-09-22 08:32:51
512
3
- s7-1200進(jìn)行modbus RTU 通信需要什么硬件
2014-03-05 22:37:38
319
2
- 如何使Wonderware intouch建立modbus rtu通信
2017-09-26 03:23:52
453
1
- modbus rtu通信有16位數(shù)據(jù)位的嗎
2015-08-16 04:27:59
417
1
- 求助三菱FX2N PLC Modbus rtu 通信問題
2017-12-13 00:43:29
416
1
- 求助三菱FX2N PLC Modbus rtu 通信問題
2018-12-06 17:26:32
439
0
- 如何使Wonderware intouch建立modbus rtu通信
2018-11-25 01:36:13
315
0
- 如何使Wonderware intouch建立modbus rtu通信
2017-08-10 12:55:47
355
1
- 為什么modbus會(huì)有RTU和ASC兩種模式
2018-11-11 00:59:29
378
0
- 三菱L02CPU 加LJ71C24 做MODBUS RTU通信該怎么設(shè)置
2017-07-23 06:35:03
592
1
- modbus通信RTU和ASCII兩種傳輸方式的區(qū)別?
2012-12-05 14:35:01
453
2
4月突出貢獻(xiàn)榜
推薦主頁
最新話題





參與評(píng)論
登錄后參與評(píng)論