普通PC通过USB转485串口 ModBus-RTU通信协议控制伺服电机
一、RS485通信
RS485 是半雙工通信(2 線制),可以一點對多點進(jìn)行組網(wǎng),而且 RS485 是用纜線兩端的電壓差值來表示傳遞信號,這與 RS232 電氣特性大不一樣。RS485 僅僅規(guī)定了接收端和發(fā)送端的電氣特性,并沒有規(guī)定或推薦任何數(shù)據(jù)協(xié)議
RS485 采用兩根通信線,通常用 A 和 B 或者 D+和 D-來表示。邏輯“1”以兩線之間的電壓差為+(0.2~6)V 表示,邏輯“0”以兩線間的電壓差為-(0.2~6)V 來表示,是一種典型的差分通信,
電平與 TTL 電平兼容,可方便與 TTL 電路連接。
優(yōu)點:
RS485的接口信號電平比RS231-C低,不易損壞接口電路的芯片,且該電平與TTL電平兼容,方便于TTL電路相連接。
RS485的數(shù)據(jù)最高傳輸速率為10Mbps。其平衡雙絞線的長度與傳輸速率呈反比,在100kbps速率下,才可能使用規(guī)定的最長電纜長度,只有在很短的距離下才能獲得最高傳輸速率。
RS485接口采用平衡驅(qū)動器和差分接收器的組合,抗共模干擾能力強(qiáng),即抗噪聲干擾性好,因而通信距離遠(yuǎn),最大傳輸距離大約為1200m,實際可達(dá)3000m。
RS485接口在總線上允許連接多達(dá)128個收發(fā)器,既具有多站能力。同時需要兩個終端電阻,其阻值要求等于傳輸電纜的特性阻抗。在短距離300m內(nèi)傳輸時可不連接終端電阻。
RS485引腳定義
RS-232與RS-422及RS-485三者之間的特性與區(qū)別
二、ModBus-RTU通信協(xié)議
modbus協(xié)議已經(jīng)成為通用工業(yè)標(biāo)準(zhǔn),通過協(xié)議,控制器與控制器、控制器通過網(wǎng)絡(luò)(以太網(wǎng))與其他設(shè)備之間可以實現(xiàn)串行通信。RTU即遠(yuǎn)程終端單元,消息中每8位包含兩個十六進(jìn)制字符。在相同的波特率下,這種方法比ASCII方式傳送的數(shù)據(jù)量大。
2.1.1 圖解區(qū)
2.2 ModBus-RTU詳解
Modbus 一個工業(yè)上常用的通訊協(xié)議、一種通訊約定。Modbus協(xié)議包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比較簡單,在單片機(jī)上很容易實現(xiàn)。
上面圖中看到了報文格式:下面詳細(xì)分析一條報文:01 06 00 01 00 17 98 04
010600 0100 1798 04
從機(jī)地址功能號數(shù)據(jù)地址數(shù)據(jù)CRC校驗
這一串?dāng)?shù)據(jù)的意思是:把數(shù)據(jù) 0x0017(十進(jìn)制23) 寫入 1號從機(jī)地址 0x0001數(shù)據(jù)地址
2.1.1 圖解報文格式
1、主機(jī)對從機(jī)寫數(shù)據(jù)操作
如果單片機(jī)接收到一個報文那么就對報文進(jìn)行解析執(zhí)行相應(yīng)的處理,如上面報文:
01 06 00 01 00 17 98 04
從機(jī)地址 功能號 數(shù)據(jù)地址 數(shù)據(jù) CRC校驗
假如本機(jī)地址是 1 ,那么單片機(jī)接收到這串?dāng)?shù)據(jù)根據(jù)數(shù)據(jù)計算CRC校驗判斷數(shù)據(jù)是否正確,如果判斷數(shù)據(jù)無誤,則結(jié)果是:
HoldDataReg[1] = 0x0017;
MODBUS主機(jī)就完成了一次對從機(jī)數(shù)據(jù)的寫操作,實現(xiàn)了通訊。
2、主機(jī)對從機(jī)讀數(shù)據(jù)操作
主機(jī)進(jìn)行讀HoldDataReg[1] 操作,則報文是:
01 03 00 01 00 01 D5 CA
從機(jī)地址 功能號 數(shù)據(jù)地址 讀取數(shù)據(jù)個數(shù) CRC校驗
那么單片機(jī)接收到這串?dāng)?shù)據(jù)根據(jù)數(shù)據(jù)計算CRC校驗判斷數(shù)據(jù)是否正確,如果判斷數(shù)據(jù)無誤,則結(jié)果是:返回信息給主機(jī),返回的信息也是有格式的:
返回內(nèi)容:
01 03 02 0017 F8 4A
從機(jī)地址 功能號 數(shù)據(jù)字節(jié)個數(shù) 兩個字節(jié)數(shù)據(jù) CRC校驗
MODBUS主機(jī)就完成了一次對從機(jī)數(shù)據(jù)的讀操作,實現(xiàn)了通訊。
2.1.2 CRC校驗
意義:例如上面的 98 04 是它前面的數(shù)據(jù)(01 06 00 01 00 17)通過一算法(見附錄2,很簡單的)計算出來的結(jié)果,其實就像是計算累加和那樣。(累加和:就是010600010017加起來的值,然后它的算法就是加法)。
作用:在數(shù)據(jù)傳輸過程中可能數(shù)據(jù)會發(fā)生錯誤,CRC檢驗檢測接收的數(shù)據(jù)是否正確。比如主機(jī)發(fā)出01 06 00 01 00 17 98 04,那么從機(jī)接收到后要根據(jù)01 06 00 01 00 17 再計算CRC校驗值,從機(jī)判斷自己計算出來的CRC校驗是否與接收的CRC校驗(98 04主機(jī)計算的)相等,如果不相等那么說明數(shù)據(jù)傳輸有錯誤這些數(shù)據(jù)不能要。
2.1.3 功能碼
常用功能碼
01 (0x01) 讀線圈
02 (0x02) 讀離散量輸入
03 (0x03) 讀保持寄存器
04(0x04) 讀輸入寄存器
05 (0x05) 寫單個線圈
06 (0x06) 寫單個寄存器
15 (0x0F) 寫多個線圈
16 (0x10) 寫多個寄存器
總結(jié)
以上是生活随笔為你收集整理的普通PC通过USB转485串口 ModBus-RTU通信协议控制伺服电机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 士官拒服兵役怎么处理?
- 下一篇: 人民公园相亲角(南宁人民公园相亲角)