徐 文
(浙江經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院數(shù)字信息技術(shù)分院 浙江 杭州 310018)
PLC(Programmable Logic Controller,可編程控制器)主導(dǎo)的工業(yè)通訊主要分為管理級、 過程控制級和現(xiàn)場總線級等級別。 由于接口、鏈路、協(xié)議和應(yīng)用的多樣性,不同級別的PLC 通訊在通常情況下需要采用不同的方法和標(biāo)準(zhǔn)進(jìn)行編程,且不同品牌PLC 之間的通訊標(biāo)準(zhǔn)、協(xié)議不具備通用性,由PLC 設(shè)備組建通訊網(wǎng)絡(luò)就呈現(xiàn)出復(fù)雜的特性。 文獻(xiàn)1 介紹了基于組態(tài)軟件的Profibus 通訊設(shè)計方法,文獻(xiàn)2、3 介紹了PLC 與計算機和變頻器之間基于MODIBUS、USS 協(xié)議的通訊設(shè)計方法,文獻(xiàn)4 介紹了PPI 協(xié)議的OPC 通訊設(shè)計方法,這些設(shè)計大多借助高成本的組態(tài)軟件等第三方工具實現(xiàn),缺乏應(yīng)用的靈活性。 文獻(xiàn)5、6、7 雖然自定義協(xié)議實現(xiàn)了最大程度通訊應(yīng)用的靈活性, 但可復(fù)用率低。 尤其當(dāng)PLC 設(shè)備承擔(dān)工業(yè)網(wǎng)絡(luò)中不同通訊層級的中轉(zhuǎn)節(jié)點時,就需要編制基于不同協(xié)議、面向不同應(yīng)用的PLC 端通訊軟件。 這樣將提高開發(fā)和維護(hù)的成本,且成果較難復(fù)用。
本文通過對西門子S7-200 小型機RS485 口的自由協(xié)議通訊機制的分析,設(shè)計了基于自由協(xié)議的通訊框架。
目前不少PLC 制造商都開發(fā)出自由協(xié)議通訊模式, 即PLC 提供串行通訊硬件和用于定制通訊協(xié)議的相關(guān)指令,由用戶控制串行通訊接口,采用自定義通訊協(xié)議來編制PLC 通訊程序,實現(xiàn)與其它控制設(shè)備的數(shù)據(jù)通訊。
西門子S7-200 PLC 用于自由協(xié)議通信的指令主要是:數(shù)據(jù)發(fā)送指令XMT 和數(shù)據(jù)接收指令RCV。 以報文接收完成、字符接收完成、報文發(fā)送完成等中斷機制來控制數(shù)據(jù)通信是主要的手段。 以通信接口0為例,其中斷向量為:
1)向量8:通信接口0 字符接受完成;
2)向量9:通信接口0 報文發(fā)送完成;
3)向量23:通信接口0 報文接收完成;
S7-200 PLC 自由協(xié)議通信的參數(shù)需要通過PLC 內(nèi)部特殊標(biāo)志寄存器SM30、SMl30(分別對應(yīng)通信接口O、接口1)進(jìn)行設(shè)定與選擇,可設(shè)定的參數(shù)包括:奇偶校驗、字符數(shù)據(jù)的位數(shù)、通信速率、通信協(xié)議。
S7-200 PLC 通信過程的控制與檢測需要通過PLC 的內(nèi)部特殊標(biāo)志寄存器進(jìn)行。用于通信控制與檢測的特殊標(biāo)志寄存器的作用與意義如表1 所示。
由表1 可知,空閑時間檢測、報文起始字符、中斷條件檢測均可作為啟動報文接受的條件,這些條件可單獨或聯(lián)合使用。結(jié)束字符、報文定時器、最大接受字符數(shù)以及接受信息校驗出錯均可獨立成為結(jié)束報文接受的條件,其中只有收到結(jié)束字符屬于正常結(jié)束。
在上述技術(shù)分析的基礎(chǔ)上,PLC 通訊由以下通用構(gòu)件組成:
1)通訊狀態(tài)初始化
定義各類通訊模式的相關(guān)工作參數(shù),定義(綁定)各類通訊及相關(guān)事件的中斷向量,使能通訊任務(wù)及相關(guān)中斷。 并定義通訊協(xié)議參數(shù)。
2)通訊狀態(tài)解除定義(還原)各類通訊模式參數(shù),解除各類通訊及相關(guān)事件的中斷向量綁定,禁止通訊及任務(wù)相關(guān)中斷。
表1 S7—200 PLC 通信過程的控制與檢測
3)報文發(fā)送
作報文發(fā)送前的數(shù)據(jù)準(zhǔn)備工作(如數(shù)制轉(zhuǎn)換、格式轉(zhuǎn)換、數(shù)據(jù)計算),然后向約定的發(fā)送緩沖區(qū)施行數(shù)據(jù)填充,并執(zhí)行發(fā)送指令。 由于RS485 口通訊報文接收由硬件自動完成,故不必也不可能由軟件子程序來實現(xiàn)。 端口硬件自動完成報文接收后將產(chǎn)生中斷。
4)報文信息校驗
根據(jù)約定的算法校驗數(shù)據(jù)緩沖區(qū),并將校驗結(jié)果通過入口參數(shù)返回,供調(diào)用者作針對性處理。
1)報文接收完成中斷服務(wù)
在完成一個數(shù)據(jù)報的接受任務(wù)后,根據(jù)約定算法和約定緩沖區(qū)中接受到的數(shù)據(jù)報,對報文進(jìn)行完整性校驗并作相應(yīng)處理,處理結(jié)束后可啟動其它通訊例程或設(shè)置通訊參數(shù)。
2)報文發(fā)送完成中斷服務(wù)
在完成一個數(shù)據(jù)報的完成任務(wù)后可啟動其它通訊例程或設(shè)置相關(guān)通訊參數(shù)。
S7-200PLC 自由協(xié)議通訊框架設(shè)計如圖1 所示。
圖1 S7-200PLC 自由協(xié)議通訊框架
該框架圖包括以下幾個部分的程序:主程序、通訊狀態(tài)初始化子程序、通訊狀態(tài)解除子程序、報文發(fā)送子程序、報文接收完成中斷程序、報文發(fā)送完成中斷程序、報文信息校驗子程序。 其中主程序是核心,在每個掃描周期均被執(zhí)行,并實施對通訊狀態(tài)初始化子程序、通訊狀態(tài)解除子程序、報文發(fā)送子程序等接口的功能調(diào)用。 當(dāng)通訊狀態(tài)初始化子程序正常執(zhí)行、 數(shù)據(jù)報接受中斷開啟并有數(shù)據(jù)報被通訊口接受,則報文接收完成中斷程序自動觸發(fā)并執(zhí)行,期間在進(jìn)行數(shù)據(jù)檢驗時調(diào)用報文信息校驗子程序。 當(dāng)通訊狀態(tài)初始化子程序正常執(zhí)行、數(shù)據(jù)報發(fā)送中斷開啟并正常執(zhí)行了報文發(fā)送子程序,則報文發(fā)送完成中斷程序自動觸發(fā)并執(zhí)行。
為驗證上述通訊框架設(shè)計的有效性, 按照常規(guī)PLC 通訊技術(shù)要求設(shè)計了以下通訊案例。
1)基本功能
通信接口:接口0;
通信變量緩沖器起始地址:VB100;
通信速率:19200bit/s;
字符數(shù)據(jù)位數(shù):8 位;
奇偶校驗:無;
最大發(fā)送/接收字符數(shù):100 字符;
報文開始方式:使用起始字符;
報文起始字符:空格(ASII 碼00);
報文結(jié)束方式:使用結(jié)束字符結(jié)束報文;
報文結(jié)束字符:CR(ASII 碼0D);
報文檢測:使用報文定時器檢測功能,最大傳輸時間為1s;定時到達(dá)后強行終止傳送。
2)校驗和
“求和”校驗碼:傳輸?shù)臄?shù)據(jù)附加有“求和”校驗碼,總字符數(shù)位于用戶數(shù)據(jù)的第1 字節(jié),“求和”校驗碼位于緩沖區(qū)的最后。 當(dāng)“求和”校驗出錯時,輸出Q1.0 指示燈亮。
1)中斷子程序設(shè)計
中斷程序INT0:報文接收完成(綁定中斷向量23)中斷程序。在報文接收后調(diào)用“求和”校驗功能SBR1。校驗結(jié)果正確,則啟動延時定時中斷INT2。
中斷程序INT1:回傳報文完成(綁定中斷向量9)中斷程序。 回傳報文完成后,重新啟動報文接收INT0 的中斷使能。
中斷程序INT2:定時(綁定中斷向量10)中斷程序。延時定時5ms后,啟動回傳報文中斷INT1。
2)報文格式設(shè)計
VB100:發(fā)送或接受的字節(jié)數(shù);
VB101:起始字符;
VB102:用戶數(shù)據(jù)總字符數(shù);
VB103 ~VBn:用戶數(shù)據(jù);
VBn+1:“求和”校驗碼;
VBn+2:結(jié)束字符。
3)標(biāo)志寄存器的值設(shè)置
①數(shù)據(jù)通信內(nèi)部特殊標(biāo)志寄存器的值。
SM30=05H(字符位數(shù)8 位, 不使用奇偶校驗功能,無協(xié)議通信方式,波特率19.2kbit/s);
SM87=ECH(數(shù)據(jù)接受允許,使用起始、結(jié)束字符與報文定時器檢測功能,生效報文定時器);
SMB89=0DH(結(jié)束字符為CR);
SMW92=1000(報文定時器時間為ls):
SMB94=100(最大發(fā)送/接收字符數(shù)為100)。
②定時中斷內(nèi)部特殊標(biāo)志寄存器的值。
SMB34=5(定時中斷定時為5ms)。
通過上面的例證參數(shù)設(shè)計,S7-200 的通信接口0 在接受到數(shù)據(jù)并經(jīng)過校驗后延時5ms 即發(fā)回發(fā)送端。 發(fā)送端使用PC 機的com0 作為通訊口,在通訊工具軟件上執(zhí)行發(fā)送(計算好的校驗和需作為最后的發(fā)送字符),可實時回顯數(shù)據(jù)。
針對PLC 通訊應(yīng)用的靈活性和最大程度降低開發(fā)、 維護(hù)成本的要求,在對通用型西門子S7-200 小型PLC 的RS485 口自由協(xié)議通訊機制深入分析的基礎(chǔ)上,設(shè)計了基于自由協(xié)議的S7-200 通訊框架。例證表明,在該框架下的通訊程序開發(fā)方式具有標(biāo)準(zhǔn)一致、效率高、易于復(fù)用性、維護(hù)簡便等特點,在PLC 通訊領(lǐng)域應(yīng)用中具有借鑒和應(yīng)用的價值。
[1]夏鏈,王程,韓江.Profibus—DP 在柔性制造系統(tǒng)中的應(yīng)用技術(shù)研究[J].機械制造,2009,47(542):59-60.
[2]張士磊,趙新蕖.基于PLC 和組態(tài)軟件的變頻器監(jiān)控系統(tǒng)設(shè)計[J].工礦自動化,2010,(3):101-102.
[3]高銳,姜波.基于USS 協(xié)議的WinCC 與S7—200 變頻器網(wǎng)絡(luò)通訊研究[J].工業(yè)控制計算機,2009,22(5):3-4.
[4]賈仟偉,周以琳.基于S7-200PLC 的監(jiān)控網(wǎng)絡(luò)設(shè)計[J].硅谷,2010,(3):21-21.
[5]王昱,趙剛.基于USB 總線的PLC 與PC 自由口通信系統(tǒng)設(shè)計[J].中國西部科技,2005,(12):16-17.
[6]孫曉明,敖非.S7-200 PLC 與Danfoss 變頻器自由口通信的實現(xiàn)[J].武漢理工大學(xué)學(xué)報:信息與管理工程版,2009,31(4):521-524.
[7]徐季曼,季鋼.計算機和PLC 通訊在自動輸送線系統(tǒng)中的應(yīng)用[J].實驗室研究與探索,2006,25(10):1227-1232.