咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2020-10-21 11:08:26 |來源:網(wǎng)絡(luò)轉(zhuǎn)載
1引言
Modbus協(xié)議是某公司于1979年開發(fā)的一種通信協(xié)議,可實(shí)現(xiàn)與控制器之間的通信。Modbus協(xié)議被大部分?jǐn)?shù)據(jù)采集與監(jiān)控系統(tǒng)和人機(jī)界面軟件支持,它已經(jīng)成為一種通用工業(yè)標(biāo)準(zhǔn)。
傳統(tǒng)的稱重控制行業(yè)稱重?cái)?shù)據(jù)的上傳一般是通過稱重控制器將重量信號(hào)轉(zhuǎn)換成電流信號(hào)(一般是4mA-20mA信號(hào)),傳遞的稱重?cái)?shù)據(jù)存在較大的誤差,而如果通過串口總線直接讀取多臺(tái)稱重儀表上的計(jì)量數(shù)據(jù),可以保證數(shù)據(jù)的實(shí)時(shí)準(zhǔn)確性。Modbus協(xié)議是主從站通信協(xié)議,用異步串口完成通信,物理層采用RS484或RS232。傳輸速率可以達(dá)到115kb/s。通信采用命令/應(yīng)答方式,每一種命令幀對(duì)應(yīng)一個(gè)應(yīng)答帔。命令幀由主機(jī)發(fā)出,所有從機(jī)都將收到報(bào)文,但只有被尋址的從機(jī)才會(huì)響應(yīng)命令,返回相應(yīng)的應(yīng)答幀,如果報(bào)文中尋址地址為0,則被視為全局廣播,所有從機(jī)都把它當(dāng)一條命令執(zhí)行,不返回應(yīng)答幀。Modbus通信協(xié)議有兩種傳送方式,RTU方式和ASCII方式。RTU模式相對(duì)于ASCII模式主要優(yōu)點(diǎn)是表達(dá)相同的信息需要較少的位數(shù),且在相同通訊速率下具有更大的數(shù)據(jù)流量。在通常情況下,一般工業(yè)智能儀表都是采用RTU模式的Modbus規(guī)約。
上海某稱重系統(tǒng)有限公司最近推出的控制儀表XK3190-C801和XK3190-C802(以下簡稱C801和C802)都已內(nèi)建了標(biāo)準(zhǔn)的ModbusRTU傳輸格式的標(biāo)準(zhǔn)協(xié)議,經(jīng)測(cè)試可與眾多廠家的組態(tài)軟件適配,如亞控科技的組態(tài)王軟件,北京三維力控的Forcecontrol,威綸通科技的EB8000組態(tài)系列,昆侖通泰的MCGSE組態(tài)軟件,都有成功的應(yīng)用范例。本文主要是詳解C801和C802儀表通過ModbusRTU協(xié)議與威綸通觸摸屏通信的研究與實(shí)現(xiàn)。
2系統(tǒng)控制方案
本系統(tǒng)主要采用觸摸屏、稱重控制器、電流表、模擬傳感器組成。一臺(tái)觸摸屏通過RS485總線連接四臺(tái)稱重控制器。
如圖1所示系統(tǒng)組成部分為:2.1模擬傳感器:輸出為mV信號(hào)。
2.2稱重控制儀表:C801和C802是同步研發(fā)的兩款稱重控制儀表,他們都具有體積小、強(qiáng)變送、AD轉(zhuǎn)換精度高、采用32位高速高性能ARM處理器、帶全隔離0-5V/0-10V/4-20mA模擬量輸出以及光電隔離20mA電流環(huán)大屏幕顯示接口等優(yōu)點(diǎn),兩者功能基本相同,都支持Modbus-Rtu協(xié)議,他們的主要不同點(diǎn)是安裝方式不同,C801是35mm導(dǎo)軌安裝,C802是面板嵌入式安裝,開口尺寸是91mmx45mm;C801標(biāo)配隔離式開關(guān)量三入三出控制,C802標(biāo)配隔離式開關(guān)量二入二出控制;C801開關(guān)量輸出和大屏幕顯示接口互相獨(dú)立,可同時(shí)使用,而C802開關(guān)量輸出和光電隔離20mA電流環(huán)大屏幕顯示接口復(fù)用,不能同時(shí)使用??傊瓹801和C802都適用于各種高速與高精度稱重要求的控制場(chǎng)合,都集成了加法秤、減法秤、分選秤等功能,用戶可根據(jù)現(xiàn)場(chǎng)需求自主選擇所用儀表。本系統(tǒng)以C801為例。
2.3觸摸屏:本系統(tǒng)采用某科技有限公司生產(chǎn)的觸摸屏,型號(hào)是TK6070ip,具有強(qiáng)大的圖形顯示功能和數(shù)據(jù)處理功能,并支持RS-232和RS-485兩種通訊接口,廣泛應(yīng)用于機(jī)械、紡織、電氣、包裝、化工等行業(yè)。配備圖形功能強(qiáng)大且簡單易用的組態(tài)軟件EasyBuilder8000o用戶可創(chuàng)建出直觀的屏幕畫面,完成監(jiān)控、數(shù)據(jù)上傳顯示和修改等畫面的設(shè)計(jì)。
2.4電流表:控制儀表C801接電流表演示4mA-20mA模擬量輸出,模擬量輸出跟C801儀表稱重?cái)?shù)據(jù)線性同步,準(zhǔn)確度0.2%;另外用戶可根據(jù)需要修改C801主板上模擬量短路環(huán)的位置將儀表改為0V-5V或0V-10V輸出。
3系統(tǒng)控制軟件設(shè)計(jì)
本系統(tǒng)可通過觸摸屏連接稱重儀表實(shí)現(xiàn)功能:
(1)4臺(tái)稱重儀表稱重?cái)?shù)據(jù)和指示燈狀態(tài)信息可在觸摸屏上實(shí)時(shí)同步顯示;
(2)按鍵功能實(shí)現(xiàn)置零、除皮、啟動(dòng)和停止配料程序;
(3)可實(shí)現(xiàn)標(biāo)定,標(biāo)定密碼可修改;
(4)可查詢和修改儀表配料參數(shù);
(5)可査詢配料累計(jì)次數(shù)和累計(jì)重量;
(6)可査詢和修改儀表通信站號(hào),修改后需重新連接通信;
3.1觸摸屏界面設(shè)計(jì)及功能實(shí)現(xiàn)
本系統(tǒng)設(shè)計(jì)了以下界面:
(1)主監(jiān)控界面:如圖2所示四臺(tái)儀表主監(jiān)控界面可直觀顯示整個(gè)配料控制系統(tǒng)的輸入輸出工作狀況、儀表狀態(tài)信息,從主監(jiān)控界面單按下置零、除皮、啟動(dòng)、停止按鈕,可分別對(duì)C801儀表實(shí)現(xiàn)置零、除皮、啟動(dòng)、停止動(dòng)作,按下設(shè)置按鈕還可以進(jìn)入每個(gè)儀表的配方界面,按下標(biāo)定按鈕還可以進(jìn)入每個(gè)儀表的標(biāo)定界面。
(2)配方界面:如圖3所示,可查詢到單個(gè)儀表的配方參數(shù)并可以修改同步上傳到C801儀表,也可在該界面査詢到配料累計(jì)次數(shù)和累計(jì)重量,無法查詢到單次配料重量,累計(jì)次數(shù)大于999次時(shí)儀表會(huì)報(bào)錯(cuò)并清除以前數(shù)據(jù)重新開始累計(jì)。
(3)標(biāo)定界面:如圖4所示,按照界面提示信息選擇儀表分度值、小數(shù)位,并輸入儀表滿量程,在空載點(diǎn)和加載標(biāo)準(zhǔn)秩碼點(diǎn)分別操作實(shí)現(xiàn)C801儀表兩點(diǎn)標(biāo)定。
(4)標(biāo)定密碼修改界面:觸摸屏默認(rèn)進(jìn)入標(biāo)定密碼為801,在標(biāo)定密碼修改界面可修改標(biāo)定密碼。
(5)儀表通信站號(hào)修改界面:用戶在可該界面修改每個(gè)儀表通信站號(hào),修改后需斷開重新連接通信。
觸摸屏界面編程需用到組態(tài)軟件EasyBuilder8000,觸摸屏元件地址屬性參考表1對(duì)應(yīng)設(shè)置。如圖5所示讀重量數(shù)值元件設(shè)置和圖6所示啟動(dòng)按鈕位狀態(tài)元件設(shè)置所示,觸摸屏上元件地址屬性需在儀表Modbus對(duì)應(yīng)寄存器地址基礎(chǔ)上加lo圖中varO為觸摸屏VarO站號(hào)變量,地址為LW-10000,保存有l(wèi)#C801儀表站號(hào)地址信息。
3.2儀表程序設(shè)計(jì)及功能實(shí)現(xiàn)
通訊數(shù)據(jù)幀分為査詢消息幀和從機(jī)響應(yīng)幀兩類。通用Modbus-Rtu協(xié)議的數(shù)據(jù)幀由一個(gè)字節(jié)的地址碼、一個(gè)字節(jié)的功能碼和N個(gè)字節(jié)的數(shù)據(jù)碼以及兩個(gè)字節(jié)的校驗(yàn)碼構(gòu)成,并約定在一幀數(shù)據(jù)中最后一個(gè)傳送字符的后面,必須有一個(gè)至少3.5字符時(shí)間間隔標(biāo)志著信息的結(jié)束,下一幀數(shù)據(jù)在這個(gè)間隔之后開始。
C801儀表單片機(jī)Modbus驅(qū)動(dòng)程序總體可分為串口和定時(shí)器1初始化、RS-485總線數(shù)據(jù)釆集、Modbus報(bào)文處理及應(yīng)答3個(gè)基本模塊,其中RS-485總線數(shù)據(jù)采集程序由串口中斷和定時(shí)器1中斷配合完成。儀表通信時(shí)首先要進(jìn)行初始化操作,例如設(shè)置波特率、選用的通訊方式、串口中斷使能、定時(shí)器1工作模式、預(yù)分頻系數(shù)、定時(shí)器中斷使能等。
串口收發(fā)器初始默認(rèn)為接收使能,發(fā)送關(guān)閉狀態(tài),當(dāng)總線空閑,儀表單片機(jī)無數(shù)據(jù)接收時(shí),不會(huì)進(jìn)入數(shù)據(jù)處理子程序,循環(huán)執(zhí)行主程序其他部分;當(dāng)總線有數(shù)據(jù)接收時(shí),如圖7(a)所示,進(jìn)入串口中斷子程序,將串口數(shù)據(jù)幀放入接收數(shù)據(jù)數(shù)組緩沖區(qū)RxBuffer[Ridx]中,隨即接收緩沖區(qū)指針Ridx自增、初始化定時(shí)器1并啟動(dòng)定時(shí)器1后退出本次中斷,以此不斷循環(huán)直到接收最后一個(gè)字符幀后,如圖7(b)所示利用定時(shí)器1中斷等待總線3.5個(gè)字符的空閑時(shí)間后,置有通訊數(shù)據(jù)未處理標(biāo)志。
如圖7(c)所示,當(dāng)主程序循環(huán)掃描到有通訊數(shù)據(jù)未處理時(shí),進(jìn)入數(shù)據(jù)處理子程序,首先檢査報(bào)文數(shù)據(jù)長度是否正確(至少為4個(gè)字節(jié)),長度正確則驗(yàn)證報(bào)文中從站的站號(hào),站號(hào)正確則驗(yàn)證該報(bào)文的CRC16校驗(yàn)碼是否正確,校驗(yàn)通過后再根據(jù)報(bào)文中的功能碼類別執(zhí)行switch語句的相應(yīng)分支程序,在這些分支程序里執(zhí)行上位機(jī)通過總線
傳達(dá)過來的命令并生成應(yīng)答報(bào)文,填充報(bào)文發(fā)送緩沖區(qū)數(shù)組TxBuffer[Sidx],Sidx為發(fā)送數(shù)據(jù)緩沖區(qū)指針,填充完畢后使能收發(fā)器發(fā)送,使用單片機(jī)UART_Write(UART_T*UART,uint8_t*pu8TxBuf,uint32_tu32WriteBytes)庫函數(shù)發(fā)送串口數(shù)據(jù),該庫函數(shù)使用査詢方式發(fā)送串口數(shù)據(jù),UART指向使用的串口寄存器地址,Pu8TxBuf指向要發(fā)送的數(shù)據(jù)數(shù)組首地址,u32WriteBytes變量指要發(fā)送的數(shù)據(jù)報(bào)文長度,最后單片機(jī)在退出數(shù)據(jù)處理子程序之前,都會(huì)清接收緩沖器指針和通訊數(shù)據(jù)未處理標(biāo)志位,置發(fā)送緩沖區(qū)指針,關(guān)收發(fā)器發(fā)送使能,表示通訊數(shù)據(jù)處理已結(jié)束。
C801實(shí)現(xiàn)的Modbus功能見表2
C80I和觸摸屏通信用到的寄存器、離散量輸入和線圈見表3-表8,其中表3-表5為C801標(biāo)準(zhǔn)程序就有寄存器、離散量輸入和線圈地址,表6-表8為本系統(tǒng)標(biāo)定功能添加的寄存器、離散量輸入和線圈地址,以下表格只列出了本系統(tǒng)界面設(shè)計(jì)用到的功能碼地址,如需完整的功能碼地址信息可査閱C801或C802說明書。需要注意的是,不同的用戶對(duì)儀表功能和觸摸屏界面都有自己獨(dú)特的需求,某公司都可以通過定制實(shí)現(xiàn)不同客戶的需求。
(1)標(biāo)準(zhǔn)程序自帶寄存器、離散量輸入和線圈
(2)為了實(shí)現(xiàn)通過觸摸屏進(jìn)行標(biāo)定操作,增加了以下幾項(xiàng):
4 儀表和觸摸屏通信出現(xiàn)的問題和注意要點(diǎn)(系統(tǒng)調(diào)試)
設(shè)備在整個(gè)調(diào)試過程中有一些注意事項(xiàng)及碰到的問題羅列如下:
(1)提高抗干擾辦法:
在RS485通訊連線時(shí),要注意采取一些信號(hào)抗干擾措施,比如通信線連線時(shí)遵循鏈?zhǔn)绞掷值慕泳€方式,防止出現(xiàn)星型連接;推薦采用帶屏蔽的RS485電纜;當(dāng)線路較長,波特率較高的情況下應(yīng)在總線首尾端增加匹配電阻,減少反射;485收發(fā)器在規(guī)定的共模電壓-7V至+12V之間時(shí),才能正常工作,如果超出此范圍會(huì)影響通訊,嚴(yán)重的會(huì)損壞通訊接口,共模干擾會(huì)增大上述共模電壓,消除共模干擾的有效手段之一是將485通訊線的屏蔽層用作地線,將機(jī)具、電腦等網(wǎng)絡(luò)中的設(shè)備地連接在一起,并由一點(diǎn)可靠地接入大地。
(2)觸摸屏和儀表通訊參數(shù)配置:
觸摸屏通信設(shè)置如圖8所示,超時(shí)延時(shí)不宜設(shè)置過長,C801儀表通信響應(yīng)時(shí)間為幾毫秒級(jí)別,如超過100毫秒儀表對(duì)觸摸屏發(fā)送數(shù)據(jù)無響應(yīng)就已經(jīng)超時(shí)了,故將此參數(shù)推薦設(shè)為0.1秒,為穩(wěn)定切換數(shù)據(jù)鏈路的收發(fā)狀態(tài),通信延時(shí)可設(shè)置為50ms,另外C801儀表和觸摸屏通信參數(shù)設(shè)置一定要對(duì)應(yīng),C801儀表通信撥動(dòng)開關(guān)一定要撥向RS485側(cè)。
(3)C801儀表通信響應(yīng)時(shí)間(上位機(jī)發(fā)送結(jié)束到儀表開始響應(yīng)這段時(shí)間):
C801儀表編程時(shí)要注意對(duì)上位機(jī)發(fā)送數(shù)據(jù)的響應(yīng)的實(shí)時(shí)性和準(zhǔn)確性。
如圖9,在調(diào)試C801儀表程序過程中,曾出現(xiàn)過一個(gè)問題,用RS485轉(zhuǎn)RS232轉(zhuǎn)接頭將C801儀表連接電腦,用串口調(diào)試助手以100ms的周期發(fā)送讀重量命令,可以看到串口調(diào)試助手上會(huì)有錯(cuò)誤數(shù)據(jù)出現(xiàn)(總線沖突引起,程序升級(jí)后不再出現(xiàn)此類問題)。
用示波器觀察總線上的通信波形,如圖10,會(huì)發(fā)現(xiàn)C801儀表對(duì)上位機(jī)發(fā)送過來的讀重量命令響應(yīng)時(shí)間不固定,少則10ms,多則超過100ms,說明此問題系總線沖突引起,C801儀表Mod-bus-Rtu通信程序部分存在一定的問題,檢査C801儀表程序發(fā)現(xiàn),儀表將串口數(shù)據(jù)處理子函數(shù)LoadUartlCom_C8010放在一個(gè)100ms定時(shí)循環(huán)體內(nèi),儀表會(huì)在定時(shí)器。中斷中每隔100ms將b_100ms標(biāo)志位置位,在主程序循環(huán)體中,儀表會(huì)不斷査詢b_l00ms是否為1,如為1才會(huì)執(zhí)行串口數(shù)據(jù)處理子函數(shù)LoadUartlCom_C801Q,這樣設(shè)計(jì)會(huì)明顯影響串口數(shù)據(jù)的即時(shí)響應(yīng),應(yīng)把串口數(shù)據(jù)處理子函數(shù)LoadUartlCom_C801Q放在100ms定時(shí)循環(huán)體外,主程序循環(huán)體中,按照此方法升級(jí)標(biāo)準(zhǔn)程序后,燒錄新的程序到C801儀表中,用示波器觀察總線上的通信波形如圖11,C801通信響應(yīng)時(shí)間是固定的,約5ms左右,圖9的問題也不再出現(xiàn)。
5小結(jié)
總之,通過本系統(tǒng)C801/C802儀表與威綸通觸摸屏通信的研究,可以發(fā)現(xiàn)C801/C802儀表ModbusRTU通信能夠正常實(shí)現(xiàn),上位機(jī)與下位機(jī)的通信穩(wěn)定可靠,傳輸數(shù)據(jù)準(zhǔn)確及時(shí),人機(jī)界面使用方便,非常適合用于無人值守和集中控制場(chǎng)合,是值得廣大用戶值得信賴的選擇。
文章來源于網(wǎng)絡(luò)轉(zhuǎn)載,侵刪