|
引言
現代工業自動控製係統朝智能化、wangluohuahekaifangshijiegoudefangxiangfazhan。liyongxianchangzongxianjishu,jiangfuhetongyibiaozhundegezhongzhinengshebeitongyiqilai,chedishixianzhenggejiancexitongdefensankongzhi,jiangtigaoxitongjichengduheshujuchuanshuxiaolv、延yan長chang有you效xiao控kong製zhi距ju離li,並bing有you利li於yu提ti高gao係xi統tong抗kang幹gan擾rao性xing能neng和he擴kuo展zhan係xi統tong功gong能neng。在zai運yun動dong控kong製zhi中zhong,伺si服fu電dian機ji以yi其qi響xiang應ying速su度du快kuai,控kong製zhi精jing準zhun等deng優you點dian以yi被bei更geng多duo的de客ke戶hu所suo選xuan用yong。如ru果guo把ba總zong線xian通tong信xin與yu伺si服fu控kong製zhi技ji術shu統tong一yi起qi來lai,將jiang推tui動dong運yun動dong控kong製zhi技ji術shu以yi及ji設she備bei遠yuan程cheng監jian控kong技ji術shu的de發fa展zhan。MODBUS作為一種通用的現場總線,已經得到很廣泛的應用,很多廠商PLC、智能I/O與A/D模塊具備MODBUS通訊接口。本文在闡述MODBUS通信協議的基礎上,構建了基於MODBUS的伺服電機運動控製。
1 MODBUS總線控係統的技術特征
MODBUS通(tong)訊(xun)協(xie)議(yi)是(shi)一(yi)種(zhong)工(gong)業(ye)現(xian)場(chang)總(zong)線(xian)通(tong)訊(xun)協(xie)議(yi),它(ta)定(ding)義(yi)的(de)是(shi)一(yi)種(zhong)設(she)備(bei)控(kong)製(zhi)器(qi)可(ke)以(yi)識(shi)別(bie)和(he)使(shi)用(yong)的(de)信(xin)息(xi)幀(zhen)結(jie)構(gou),獨(du)立(li)於(yu)物(wu)理(li)層(ceng)介(jie)質(zhi),可(ke)以(yi)承(cheng)載(zai)於(yu)多(duo)種(zhong)網(wang)絡(luo)類(lei)型(xing)中(zhong)。MODBUS協議把通信參與者規定為“主站”(Master)和“從站”(Slave),數據和信息的通信遵從主/從模式,當它應用於標準MODBUS網絡時,信息被直接傳送。MODBUS總線網絡中的各個智能設備通過異步串行總線連接起來,隻允許一個控製器作為主站,其餘智能設備作為從站。采用命令/應答的通信方式,主站發出請求,從站應答請求並送回數據或狀態信息,從站不能夠自己發送信息。MODBUS協(xie)議(yi)定(ding)義(yi)的(de)各(ge)種(zhong)信(xin)息(xi)幀(zhen)格(ge)式(shi),描(miao)述(shu)了(le)主(zhu)站(zhan)控(kong)製(zhi)器(qi)訪(fang)問(wen)從(cong)站(zhan)設(she)備(bei)的(de)過(guo)程(cheng),規(gui)定(ding)從(cong)站(zhan)怎(zen)樣(yang)做(zuo)出(chu)應(ying)答(da)響(xiang)應(ying),以(yi)及(ji)檢(jian)查(zha)和(he)報(bao)告(gao)傳(chuan)輸(shu)錯(cuo)誤(wu)等(deng)。網(wang)絡(luo)中(zhong)的(de)每(mei)個(ge)從(cong)設(she)備(bei)都(dou)必(bi)須(xu)分(fen)配(pei)給(gei)一(yi)個(ge)唯(wei)一(yi)的(de)地(di)址(zhi),隻(zhi)有(you)符(fu)合(he)地(di)址(zhi)要(yao)求(qiu)的(de)從(cong)設(she)備(bei)才(cai)會(hui)響(xiang)應(ying)主(zhu)設(she)備(bei)發(fa)出(chu)的(de)命(ming)令(ling)。
由於MODBUS總線係統開發成本低,簡單易用,並且現在已有很多工控器、PLC、顯示屏等都具有MODBUS通信接口,所以它已經成為一種公認的通信標準。通過MODBUS總線,可以很方便地將不同廠商生產的控製設備連成工業網絡,進行集中監控。
MODBUS最初為PLC通信而設計,它通過24種總線命令實現PLC與外界的信息交換。這些總線命令對應的通信功能主要包括AI/AO、DI/DO的數據傳送。但不是很多MODBUS設備的控製隻使用其中的幾條命令,對其餘命令不做反應。
1.1 MODBUS通信格式
MODBUS協議定義了兩種傳輸模式,即RTU(Remote Terminal Unit)和ASCII。在RTU模式中,1字節的信息作為一個8位字符被發送,而在ASCII模式中則作為兩個ASCII字符被發送,如發送字符“20”時,采用RTU模式時為“00100000”,然而采用ASCII模式則成為“00110010”+“00110000”(ASCII字符的“2”和“0”)。可見,發送同樣的數據時,RTU模式的效率大約為ASCII模式的兩倍。一般來說,數據量少而且主要是文本時采用ASCII;通信數據量大而且是二進製數值時,多采用RTU模式。
|
數據格式: |
地址碼 |
功能碼 |
數據區 |
錯誤校檢 |
|
數據長度: |
1字節 |
1字節 |
N字節 |
16位CRC碼(冗餘循環碼)
|
主站一次可向一個或所有從站發送通信請求(或指令),主設備通過消息幀的地址域來選通從設備。主站發送的消息幀的內容和順序為:從站地址、功能碼、數據域(數據起始地址、數據量、數據內容)、CRC校驗碼;從站應答的信息內容和順序與主站信息幀基本相同。MODBUSchuledingyitongxingongnengmazhiwai,tongshihaidingyilechucuoma,biaozhichucuoxinxi。zhuzhanjieshoudaocuowumahou,genjucuowudeyuanyincaiquxiangyingdecuoshi。congzhanyingdadeshujuneirongyijugongnengmajinxingxiangying,lirugongnengdaima03要求讀取從站設備中保持寄存器的內容。
MODBUS部分功能碼
|
功能碼 |
定 義 |
操 作(二進製) |
|
02 |
讀開關量輸入 |
讀取一路或多路開關量狀態輸入數據 |
|
01 |
讀開關量輸出 |
讀取一路或多路開關量輸出狀態數據 |
|
03 |
讀寄存器數據 |
讀取一個或多個寄存器的數據 |
|
05 |
寫開關量輸出 |
|
|
06 |
寫單路寄存器 |
把一組二進製數據寫入單個寄存器 |
|
10 |
寫多路寄存器 |
把多組二進製數據寫入多個寄存器 |
1.2 CRC校驗的實現
MODBUS通信的RTU模式中,規定信息幀的最後兩個字節用於傳遞CRC(Cyclic Redundancy Check,循環冗餘校驗)碼。發送方將信息幀中地址域、功能碼、數據域的所有字節按規定的方式進行位移並進行XOR(異或)計算,即可得到2字節的CRC碼,並把包含CRC校驗碼的信息幀作為一連續的流進行傳輸。接收方在收到該信息幀時按同樣的方式進行計算,並將結果同收到的CRC碼的雙字節比較,如果一致就認為通信正確,否則認為通信有誤,從站將發送CRC錯誤應答。
RTU模式一般采用CRC-16冗餘校驗方法,CRC-16的校驗碼為16位(2字節),其中低字節在前,高字節在後。實現CRC校驗有兩種方法:根據CRC校驗的定義公式進行計算,或者在程序中建立CRC校驗值表。在程序中使用前者更容易實現,這裏需要使用CRC生成多項式X16+X15+X2+1。該多項式對應的碼組係數為18005H(16進製),去除最高位,對應的16位餘數為8005H,即為CRC-16常數。CRC-16校驗過程如下:將CRC寄存器的每一位預置為1;把該寄存器值與8bit的信息幀數據進行異或,結果存於該寄存器;對CRC寄存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位後已經被移出CRC寄存器)如果為1,則把寄存器與CRC-16常數進行異或,否則如果LSB為零,則無需進行異或。重複上述的由高至低的移位8次,第一個8bit數據處理完畢,用此時寄存器的值與下一個8bit數據異或並進行如前一樣的8次移位。所有的字符處理完成後CRC寄存器內的值即為最終的CRC值。CRC添加到消息中時,先加入低字節,然後高字節。
1.3 鏈路特征
MODBUS標準的物理層可以采用RS-232串行通信方式,但在長距離通信中常采用RS-422或RS-485代替。在多點通信情況下隻采用RS-485方式,所以RTU模式下的MODBUS係統采用屏蔽雙絞線,通信距離可達1000m。一條總線上最多可配置31gecongzhanshebei。chuanshuxianshangdexinxijiaohuanshibanshuanggongde,jitongshizhinengyouyitaishebeiyunxufasongxinxi,zhuzhanzaifasongxiayitiaozhilingzhiqiandengdaicongzhanhuiying,congerbimianlexianludechongtu。
RTU模式的傳輸格式是1個數據位,2個停止位,沒有奇偶校驗位。通信數據安全由控製參數CRC-16碼保證。RTU接收設備依靠接收字符間經過的時間判斷一幀的開始,如果經過3個半的字符時間後仍然沒有新的字符或者沒有完成幀,接收設備就會放棄該幀,並設下一個字符為新一幀的開始。
鬆下PLC支持modbus協議,隻需要在選項、PLC係統寄存器設置、COM1口設置中站號設成1,通訊模式設為MODBUS RTU,通訊速率和通訊格式與05驅動器的設置保持一致。設置完成後可通過F145 SEND指令實現與05的通訊。
例:
F0 MV , H2 ,DT10 (發送2個字節)
F0 MV , H1002 ,DT11 (通過1號COM口向2號站發數據)
F145 SEND, DT10 ,DT4 ,DT0 ,K1282
(把DT4,DT5的兩個字節通過COM1發送到2號站的K1282地址)
3 施耐德05A伺服驅動器的配置
首先過驅動器的HMI麵板把控製方式設為modbus模式,把波特率、通訊格式設置成與PLC一致。



|