運(yùn)用 ModBus 通信協(xié)議,實(shí)現(xiàn)電子秤 與 PLC 的實(shí)時(shí)通信
上海彩信電子科技有限公司 陳東富
【摘 要】 本文介紹了在工業(yè)控制系統(tǒng)中廣泛使用的 ModBus 通信協(xié)議。以 ModBus 的 ASCII 方
式為例,剖析了 ModBus 的指令結(jié)構(gòu),著重說明基于 ModBus 通信協(xié)議的設(shè)備之間如何進(jìn)行數(shù)據(jù)通 信、如何使用 ModBus 通信協(xié)議把衡器接入 PLC 系統(tǒng),并簡(jiǎn)單介紹了 PLC 系統(tǒng)與局域網(wǎng)的互聯(lián)。 【關(guān)鍵詞】 ModBus 通信協(xié)議;PLC 可編程控制器;衡器
在衡器行業(yè)中,但凡涉及串行通信時(shí),工程師們都會(huì)有一種無奈,就是通信協(xié)議問題。由于我 國(guó)衡器廠眾多,各自采用自己的通信協(xié)議,使得通信協(xié)議五花八門,互不兼容。由于是自成一體, 也為后續(xù)與其他系統(tǒng)聯(lián)網(wǎng)、維修、儀表配件互換等留有后遺問題。若采用一種工業(yè)控制領(lǐng)域的主流 協(xié)議,各衡器廠的通信協(xié)議都與這個(gè)主流協(xié)議兼容,那么上述問題自然迎刃而解。這個(gè)主流協(xié)議首 推 ModBus。
一、什么是 ModBus
ModBus 是一種通信協(xié)議,是由 Modicon 公司發(fā)表于 1979 年,主要用于 PLC(可編程邏輯控 制器)系統(tǒng)。目前,在工業(yè)自動(dòng)化設(shè)備通信連接中,ModBus 已是相當(dāng)常見的一種連接方式。
二、ModBus 與其他通信協(xié)議比較
1、物理層簡(jiǎn)單、價(jià)廉:ModBus 可以在常用且廉價(jià)的 RS232、RS485 等物理媒介上運(yùn)行,不像
CanBus、ProfiBus、BitBus 等需昂貴的芯片支持。
2、免費(fèi):ModBus 是一種公開的,可以無償使用的協(xié)議。而使用 ProfiBus 則需要向有關(guān)組
織登記繳費(fèi)。
3、使用普及:ModBus 是當(dāng)前工業(yè)控制中使用zui廣的一種通信協(xié)議,基于這點(diǎn),具有 ModBus
的設(shè)備接入工控系統(tǒng)相對(duì)容易。
4、維護(hù)方便:由于接入 ModBus 總線相對(duì)其他工控總線而言,比較簡(jiǎn)單。一般具有 RS232、 RS485 等串行口的 PC 機(jī)都可以接入,使用 PC 機(jī)自帶的超級(jí)終端軟件或其他串行控制軟件,就能 觀察 ModBus 通信過程,可以很方便地查出故障站點(diǎn)。
三、ModBus 的主要型式
ModBus 主要有四種型式:ASCII、RTU、TCP/IP 和 Plus。
1、ASCII 型式:采用 ASCII 碼進(jìn)行數(shù)據(jù)交換,使用縱向冗余校驗(yàn)的校驗(yàn)和(LRC)進(jìn)行數(shù)據(jù)
校驗(yàn)。
2、RTU 型式:采用二進(jìn)制碼進(jìn)行數(shù)據(jù)交換,使用循環(huán)冗余校驗(yàn)的校驗(yàn)和(CRC)進(jìn)行數(shù)據(jù)校
驗(yàn)。
3、TCP/IP 型式:主要用于以太網(wǎng),不使用校驗(yàn)和進(jìn)行數(shù)據(jù)校驗(yàn)。
4、Plus 型式:該型式為 Modicon 公司專有,采用專門的協(xié)處理器進(jìn)行數(shù)據(jù)處理。 目前,使用zui廣泛的型式是 ASCII 和 RTU,主要采用 RS232、RS422、RS485 進(jìn)行物理連接,
其中 RS485 使用zui多。
四、ModBus 的結(jié)構(gòu)
ModBus 協(xié)議是一個(gè) master(主)/slave(從)架構(gòu)的協(xié)議。有一個(gè)節(jié)點(diǎn)是 master 節(jié)點(diǎn),其他使 用 Modbus 協(xié)議參與通信的節(jié)點(diǎn)是 slave 節(jié)點(diǎn)。每一個(gè) slave 設(shè)備都有一個(gè)*的地址。ModBus 的 通信比較簡(jiǎn)單,由 master 發(fā)通信指令,指令中含有欲于之通信的 slave 站號(hào)。當(dāng) master 發(fā)指令時(shí), 所有 slave 都處于收聽狀態(tài),一旦 slave 收聽到與自己地址相同的站號(hào)時(shí),立刻執(zhí)行指令的內(nèi)容,并
回傳執(zhí)行的結(jié)果。
五、ASCII 型式的 ModBus 通信協(xié)議的格式
在 ModBus 上通信時(shí),各站點(diǎn)的通信參數(shù)必須一致,如:波特率、奇偶校驗(yàn)。 通信時(shí),一個(gè)信息字節(jié)中的每 8 位分為兩個(gè) ASCII 字符進(jìn)行傳輸,允許字符傳輸間隔在 1 秒之
內(nèi)。
1、ASCII 型式每一字節(jié)的格式
16 進(jìn)制編碼,ASCII 字符(0-9、A-F),即:0x30-0x39、0x41-0x46。
1 位開始位、7 位數(shù)據(jù)位(先低后高)、1 位奇偶校驗(yàn)(無奇偶校驗(yàn)時(shí)為 0)、1 位停止位。
2、數(shù)據(jù)錯(cuò)誤校驗(yàn)采用縱向冗余校驗(yàn)(LRC)
3、通信幀格式(ModBus 命令格式)
開始 | 地址(站號(hào)) | 功能 | 數(shù)據(jù) | 校驗(yàn)(LRC) | 結(jié)束 |
| | | | | |
:(0x | xx | xx | x... | xx | CR、LF(0x0d、0x |
| | | | | |
1 字符 | 2 字符 | 2 字符 | N 字符 | 2 字符 | 2 字符 |
| | | | | |
一個(gè)基本的 ModBus 命令,除了開始、校驗(yàn)、結(jié)束字符外,還必須有地址項(xiàng)及功能項(xiàng)。地址—
—也就是站號(hào),想要被操作的對(duì)象(slave 站號(hào));功能——想要被操作的對(duì)象完成的任務(wù)。ModBus
命令可以沒有數(shù)據(jù)項(xiàng)。
被操作的對(duì)象,在完成所要求的操作后,必須回傳一幀信息,傳遞操作結(jié)果?;貍餍畔⒌母袷?/p>
與命令格式相同,只是數(shù)據(jù)內(nèi)容為操作的結(jié)果。
六、利用 ModBus,實(shí)現(xiàn) PLC 與電子稱重設(shè)備的通信
為了使大家對(duì) Modbus 有更進(jìn)一步的了解,下面用例子方式說明如何把電子稱重設(shè)備接入 PLC 控制系統(tǒng)的 Modbus 總線網(wǎng)絡(luò)。例子中的稱重儀表為上海彩信電子科技有限公司生產(chǎn)的 XK
中傳輸?shù)臄?shù)據(jù),正常工作時(shí)是移除的。
上述系統(tǒng)可實(shí)現(xiàn)以下功能:
1、正常工作時(shí),PLC 每隔 10 秒輪詢一次,獲取每臺(tái)秤的重量。
2、當(dāng)秤臺(tái)上重量異常時(shí),PLC 會(huì)發(fā)出警告信息,提示控制室人員注意。
3、控制人員可以通過 PLC,對(duì)某臺(tái)秤發(fā)出置零、去皮等操作指令。
4、PLC 可對(duì)各臺(tái)秤的稱量,進(jìn)行各項(xiàng)統(tǒng)計(jì),生成必要的統(tǒng)計(jì)報(bào)表。
七、ModBus 與局域網(wǎng)互連
現(xiàn)在,很多 PLC 都具有局域網(wǎng)接口,通過該接口,就可以遠(yuǎn)程控制稱重系統(tǒng)了。當(dāng)然,也可 以通過接在 Modbus 總線上的 PC 機(jī),利用 PC 機(jī)的軟、硬件資源,編制相應(yīng)的軟件,將重量信號(hào)傳 送到局域網(wǎng)上。若局域網(wǎng)通過路由器接入因特網(wǎng),很顯然重量數(shù)據(jù)就可以在因特網(wǎng)上傳輸了。本系 統(tǒng)是通過 PLC 的 DH+網(wǎng)絡(luò)接入局域網(wǎng)的。當(dāng)然,網(wǎng)絡(luò)部分使用的協(xié)議,* TCP/IP、NetBEUI。 Modbus 也有相關(guān)的 TCP/IP 型式,這里就不再贅述了,大家可以參考相關(guān)的書籍。
上述的稱重系統(tǒng)只是 PLC 的一個(gè)子系統(tǒng),是后期改造的一個(gè)項(xiàng)目。其整個(gè) PLC 系統(tǒng)(見圖 2) 是采用美國(guó) ROCKWELL 公司的 PLC,共有 5 臺(tái) PLC 機(jī)箱(采用 PLC5 系列)、4 臺(tái)工控機(jī)和 2 臺(tái) 服務(wù)器、若干臺(tái) PC 組成的。PLC 采用 ROCKWELL 公司的 DH+網(wǎng)絡(luò)連接,使用 DF1 協(xié)議;其中 1
附錄: XK 說明 報(bào)頭 站號(hào) 功能碼 首址 數(shù)據(jù)量 數(shù)據(jù)值 校驗(yàn)碼 報(bào)尾 指令 : xx xx xxxx xxxx xxxx LRC \CR\ LF 回傳 : xx xx xx xxxx LRC \CR \ LF 出錯(cuò) : xx xx xx LRC \CR 回傳 zui高位置 1 錯(cuò)誤碼 \ LF
報(bào)頭、報(bào)尾:所有指令均以冒號(hào)(:)開始,以回車符、換行符結(jié)束。 站號(hào):2 個(gè) ASCII 碼,范圍為 01-90(16 進(jìn)制:0x01-0x
02:讀繼電器輸出狀態(tài);
04:讀稱量狀態(tài)(顯示值、皮重等);
05:置零操作;
06:皮重操作;
07:通信測(cè)試;
08:讀定值;
09:寫定值。
首址:4 個(gè) ASCII 碼,讀寫數(shù)據(jù)的位置。
數(shù)據(jù)量:4 個(gè) ASCII 碼,讀寫數(shù)據(jù)的數(shù)量。
數(shù)據(jù)值:讀寫的數(shù)據(jù)。
校驗(yàn)碼:2 個(gè) ASCII 碼,采用 LRC 校驗(yàn)。
LRC 校驗(yàn)碼運(yùn)算:報(bào)頭(:)不參與運(yùn)算,LRC 在數(shù)據(jù)之后,在\CR\LF 之前。參加運(yùn)算的是報(bào) 頭之后,LRC 之前的所有數(shù)據(jù)。LRC 為參加運(yùn)算的數(shù)據(jù)之和的補(bǔ)碼,舍去進(jìn)位。
當(dāng)儀表執(zhí)行指令出錯(cuò)時(shí),會(huì)回傳錯(cuò)誤碼,并將功能碼的zui高位置 1。
錯(cuò)誤碼: 00--接收到的功能碼出錯(cuò); 01--數(shù)據(jù)地址錯(cuò); 02--數(shù)據(jù)數(shù)量錯(cuò);
03--數(shù)據(jù)值錯(cuò),如:預(yù)置皮重大于zui大稱量 FS;
04--稱量為負(fù)時(shí)去皮;
05--不在稱重狀態(tài)時(shí)置零;
銷售代表:郭曉金
:
:
公司地址:上海市松江區(qū)沈磚公路5599號(hào)
掃一掃 微信咨詢
©2024 上海香川電子衡器有限公司 版權(quán)所有 備案號(hào):滬ICP備09098494號(hào)-32 技術(shù)支持:化工儀器網(wǎng) sitemap.xml 總訪問量:773721 管理登陸