《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于RS485接口Modbus協(xié)議的PLC與多機(jī)通訊
基于RS485接口Modbus協(xié)議的PLC與多機(jī)通訊
微計(jì)算機(jī)信息
鄧志君 梁松峰
摘要: 在自動(dòng)控制領(lǐng)域,PLC 和單片機(jī)都受到廣泛應(yīng)用。PLC 具有穩(wěn)定可靠,抗干擾能力強(qiáng), 功能強(qiáng)大且使用方便等特點(diǎn)[1],單片機(jī)具有成本低廉,使用靈活,功能多樣等特點(diǎn)。PLC 與 單片機(jī)結(jié)合,互相聯(lián)系,互相通訊,將擴(kuò)展控制功能,更好的控制復(fù)雜的系統(tǒng)。
Abstract:
Key words :

1 引言

    在自動(dòng)控制領(lǐng)域,PLC 和單片機(jī)都受到廣泛應(yīng)用。PLC 具有穩(wěn)定可靠,抗干擾能力強(qiáng), 功能強(qiáng)大且使用方便等特點(diǎn)[1],單片機(jī)具有成本低廉,使用靈活,功能多樣等特點(diǎn)。PLC 與 單片機(jī)結(jié)合,互相聯(lián)系,互相通訊,將擴(kuò)展控制功能,更好的控制復(fù)雜的系統(tǒng)。

    在研究混合動(dòng)力電動(dòng)汽車驅(qū)動(dòng)系統(tǒng)[2]時(shí), 采用PLC 作為主控制器,控制電機(jī)變頻器和發(fā) 動(dòng)機(jī)節(jié)氣門控制器,實(shí)現(xiàn)對(duì)電機(jī)和發(fā)動(dòng)機(jī)功率的 綜合控制。因?yàn)镻LC 和變頻器均是艾默生公司 的產(chǎn)品,均支持RS485 接口和MODBUS 協(xié)議, 所以控制系統(tǒng)統(tǒng)一采用RS485 接口和MODBUS 協(xié)議。而發(fā)動(dòng)機(jī)節(jié)氣門控制器采用89C51 單片 機(jī),所以要通過(guò)建立PLC 與單片機(jī)的通訊,實(shí) 現(xiàn)控制。

圖1 通信系統(tǒng)結(jié)構(gòu)框圖

2 硬件設(shè)計(jì)

    通訊系統(tǒng)的結(jié)構(gòu)框圖如圖1 所示。

2.1 信號(hào)轉(zhuǎn)換電路

    單片機(jī)支持 TTL 電平,可以采用MAX485 芯片來(lái)實(shí)現(xiàn)RS485 與TTL 之間的信號(hào)轉(zhuǎn)換 (如圖2)。MAX485 芯片采用單一電源+5 V 工作,額定電流為300 μA,采用半雙工通訊方式,內(nèi)部含有一個(gè)驅(qū)動(dòng)器和接 收器。RO 和DI 端分別為接收 器的輸出和驅(qū)動(dòng)器的輸入端, 分別與單片機(jī)的RXD 和TXD 相連;RE 和DE 端分別為接收 和發(fā)送的使能端,當(dāng)RE 為邏 輯0 時(shí),器件處于接收狀態(tài); 當(dāng)DE 為邏輯1 時(shí),器件處于 發(fā)送狀態(tài),因?yàn)镸AX485 工作 在半雙工狀態(tài),所以只需用單 片機(jī)的一個(gè)管腳控制這兩個(gè) 引腳即可;PLC 里RS485 總線的A 端和B 端分別為接收和發(fā)送的差分信號(hào)端,當(dāng)A 引腳的 電平高于B 時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A 的電平低于B 端時(shí),代表發(fā)送的數(shù)據(jù)為0。在A 和B 端之間加匹配電阻,一般可選100Ω 左右的電阻。

3 軟件設(shè)計(jì)

    控制系統(tǒng)采用單主機(jī)/多從機(jī)的組網(wǎng)方式,PLC 為主機(jī),電機(jī)變頻器和單片機(jī)為從機(jī)。 艾默生公司的PLC 和電機(jī)變頻器之間已經(jīng)建立了采用RS485 總線,MODBUS 協(xié)議的通訊 [3][4],為了實(shí)現(xiàn)PLC 與單片機(jī)的通訊,須先了解PLC 與電機(jī)變頻器的通訊特點(diǎn),然后建立 連接通訊。

3.1 PLC 與電機(jī)變頻器的通訊特點(diǎn)

    采用RTU 方式的Modbus 協(xié)議,幀格式如圖3 所示。 波特率為9600bps,數(shù)據(jù)格式為1-8-N-2,字符間間隔少于 1.5 個(gè)字符時(shí)間(1.72ms),RTU 幀的最大幀長(zhǎng)度是256 個(gè) 字節(jié)。幀之間的空閑時(shí)間取命令碼設(shè)定和Modbus 內(nèi)部約 定值中的較大值。Modbus 內(nèi)部約定的最小幀間空閑如下: 幀頭和幀尾通過(guò)總線空閑時(shí)間不小于3.5 個(gè)字符時(shí)間 (4ms)來(lái)界定幀。幀之間的總線空閑不需要累加起始和 結(jié)束空閑。數(shù)據(jù)采用CRC16 校驗(yàn),整個(gè)信息參與校驗(yàn), 校驗(yàn)和的高低字節(jié)需要交換后發(fā)送。

圖3 RTU 方式

    RS485 是異步半雙工的通訊總線。主機(jī)處于主導(dǎo)和支 配地位,定時(shí)發(fā)出監(jiān)控命令,等待從機(jī)的應(yīng)答。從機(jī)處于 偵聽狀態(tài),不能主動(dòng)往總線發(fā)送數(shù)據(jù),在接收到主機(jī)發(fā)送 的一幀信息后,首先判斷地址碼是否本機(jī)地址,如果此幀 信息的地址碼和本機(jī)地址相同,則繼續(xù)處理命令碼和數(shù) 據(jù),如果此幀信息的地址碼和本機(jī)地址不同,則忽略。接收完一個(gè)主機(jī)監(jiān)控命令后,先進(jìn)行校驗(yàn),如果校驗(yàn)正確則執(zhí)行接收的監(jiān)控命令,并根據(jù)命令回送相應(yīng)的應(yīng)答幀。任何時(shí)刻只能有一個(gè)從機(jī)處于發(fā)送狀態(tài),但主機(jī)發(fā)送時(shí)所有從機(jī)都必須 處于接收狀態(tài)。

    上位機(jī)PLC 的通訊流程圖如圖4 所示。

圖4 上位機(jī)PLC 的通訊流程圖

3.2 PLC 與單片機(jī)通訊的實(shí)現(xiàn)

表 1 PLC 與單片機(jī)通訊的幀字節(jié)數(shù)

    單片機(jī)進(jìn)行通信時(shí)工作在“方式一”的狀態(tài)下[5]。 因?yàn)镻LC 發(fā)出的數(shù)據(jù)幀第一個(gè)字符為地址數(shù)據(jù),所 以單片機(jī)在接收數(shù)據(jù)時(shí)要區(qū)分接收到的數(shù)據(jù)是否是 幀的第一個(gè)字符。根據(jù)單片機(jī)每接收完一個(gè)字節(jié)數(shù) 據(jù)RI 就置1,而且?guī)g間隔4ms 以上,字符間隔少 于1.72ms, 可以通過(guò)計(jì)時(shí)的方式來(lái)判斷幀的第一個(gè) 字符。當(dāng)RI 置1,開始計(jì)時(shí),到下一次RI 置1,計(jì) 時(shí)結(jié)束,當(dāng)時(shí)間間隔大于4ms,則后一次RI 置1 時(shí) 接收的字符是幀的第一個(gè)字符,當(dāng)時(shí)間少于1.72ms, 則不是。

    為了簡(jiǎn)化程序,可以協(xié)議好PLC 與單片機(jī)通訊 的幀字節(jié)數(shù)為6 個(gè)字節(jié),如表1。單片機(jī)根據(jù)地址字 符數(shù)據(jù)判斷是否是本機(jī)地址,如果是,則接收處理 后面的5 個(gè)字節(jié)數(shù)據(jù),計(jì)算前四個(gè)字節(jié)的CRC 校驗(yàn) 碼,并與接收到的兩個(gè)字節(jié)CRC 校驗(yàn),進(jìn)行核對(duì), 如果不相同,則不反饋數(shù)據(jù)給PLC,也不執(zhí)行數(shù)據(jù) 包含的指令,如果相同,則反饋數(shù)據(jù)給PLC,執(zhí)行 數(shù)據(jù)包含的指令。下位機(jī)單片機(jī)程序的流程圖如圖5 所示。

4 結(jié)束語(yǔ)

    本文作者創(chuàng)新點(diǎn):在艾默生 PLC 與其變頻器的 通訊基礎(chǔ)上加入了基于RS485 接口Modbus 協(xié)議的 PLC 與單片機(jī)的多機(jī)通訊,該通訊方案硬件接口簡(jiǎn) 單,軟件和通信協(xié)議有很好的通用性,可以拓展為PLC 與多個(gè)變頻器和單片機(jī)的同時(shí)通訊, 也可應(yīng)用于其他工程的多機(jī)通訊系統(tǒng)中。該通訊方案已經(jīng)成功應(yīng)用于混合動(dòng)力電動(dòng)汽車的驅(qū) 動(dòng)電機(jī)及發(fā)動(dòng)機(jī)節(jié)氣門的綜合控制。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。