盧 偉,孟 婥,孫以澤,朱荷蕾,李培興
(東華大學(xué) 機械工程學(xué)院,上海201620)
過程控制系統(tǒng)數(shù)據(jù)傳輸過程中,存在很多可能發(fā)生的故障[1,2],業(yè)界普遍采用根據(jù)下位機返回碼檢測數(shù)據(jù)傳輸是否正常的方法,但是僅根據(jù)下位機返回碼檢測數(shù)據(jù)傳輸狀態(tài)存在很多局限性:當(dāng)網(wǎng)線連接出現(xiàn)問題、下位機通訊模塊出現(xiàn)故障等,上位機就收不到返回碼,無法判斷數(shù)據(jù)傳輸故障;當(dāng)傳感器的電源不穩(wěn)定或者傳感器損壞,數(shù)據(jù)傳輸不一定受影響,但所傳輸?shù)臄?shù)據(jù)卻不能真實地反映過程變量,如果上位機對所讀取的數(shù)據(jù)不加判斷,將失真數(shù)據(jù)發(fā)送到了PLC 等控制器,PLC 等控制器將根據(jù)錯誤數(shù)據(jù)進行錯誤動作,極易導(dǎo)致生產(chǎn)事故;數(shù)據(jù)傳輸故障檢測僅在上位機中進行,下位機PLC等控制器不具備數(shù)據(jù)傳輸故障的識別功能。本文中,針對僅根據(jù)下位機返回碼檢測數(shù)據(jù)傳輸故障所存在的局限性,以棉麻纖維紗線晶變改性成套裝備運行時現(xiàn)場數(shù)據(jù)傳輸可靠性為研究對象,設(shè)計了基于以太網(wǎng)的數(shù)據(jù)傳輸可靠性方案。
設(shè)計的基于工業(yè)以太網(wǎng)的傳感器數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)如圖1所示。
底層是溫度、壓力、液位等過程變量傳感器,中間層是數(shù)據(jù)采集單元和數(shù)據(jù)接收單元,上層是上位機監(jiān)控中心[3]。上位機程序采用VB 編程實現(xiàn),基于以太網(wǎng),采用應(yīng)答方式,讀取數(shù)據(jù)采集單元中的數(shù)據(jù),進行數(shù)據(jù)處理后,將數(shù)據(jù)傳送給數(shù)據(jù)接收單元[4-6]。其中,數(shù)據(jù)采集單元可以是專用的數(shù)據(jù)采集模塊,也可以是PLC的A/D 模塊;數(shù)據(jù)接收單元是PLC等控制器。
圖1 傳感器數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)
系統(tǒng)主程序流程如圖2所示,為提高傳感器數(shù)據(jù)傳輸?shù)目煽啃裕谝粋€傳輸周期中,分5個階段對傳輸故障進行判斷。讀取數(shù)據(jù)過程中,首先判斷上位機是否與各數(shù)據(jù)采集模塊及PLC建立連接,其次判斷是否讀取指定空間的數(shù)據(jù);數(shù)據(jù)處理后,判斷數(shù)據(jù)跳動范圍是否正常;發(fā)送數(shù)據(jù)過程中,首先判斷上位機是否與PLC 建立連接,其次判斷是否向指定空間寫入數(shù)據(jù)。在任何階段發(fā)現(xiàn)故障,上位機都輸出警示,并且程序返回到初始位置重新讀取數(shù)據(jù)。
本系統(tǒng)是單客戶機 (client)、多服務(wù)器 (server)的通訊系統(tǒng)。數(shù)據(jù)傳輸過程中,客戶端發(fā)出請求 (request)報文,服務(wù)器根據(jù)請求返回響應(yīng) (response)報文,屬應(yīng)答通訊模式,可根據(jù)服務(wù)器返回的報文判斷數(shù)據(jù)傳輸是否正常并采取相應(yīng)措施。不同的通訊協(xié)議,報文的數(shù)據(jù)幀格式不一樣,現(xiàn)以Modbus/TCP協(xié)議為例說明。當(dāng)使用功能碼03從數(shù)據(jù)采集模塊及PLC讀取數(shù)據(jù)時,如通訊正常,返回報文依次為7字節(jié)MBAP 報頭、1字節(jié)功能碼、1字節(jié)字節(jié)數(shù)、N×2字節(jié)數(shù)據(jù);如通訊異常,返回報文依次為7字節(jié)MBAP報頭、1字節(jié)差錯碼、1字節(jié)異常碼[7]。當(dāng)使用功能碼16向PLC發(fā)送數(shù)據(jù)時,如通訊正常,返回報文依次為7字節(jié)MBAP報頭、1字節(jié)功能碼、2字節(jié)起始地址、2字節(jié)數(shù)據(jù)數(shù)量;如通訊異常,返回報文依次為7字節(jié)MBAP 報頭、1字節(jié)差錯碼、1 字節(jié)異常碼[8,9]。當(dāng)檢測到差錯碼,可判定通訊異常,根據(jù)異常碼,可判定故障類型。
圖2 數(shù)據(jù)傳輸可靠性主程序流程
一般情況下,根據(jù)服務(wù)器返回報文可以判斷數(shù)據(jù)傳輸是否正常。極端情況下,比如連接服務(wù)器有問題,服務(wù)器沒有接收到請求,就不能返回報文,上位機也無法根據(jù)下位機返回報文判斷數(shù)據(jù)傳輸狀態(tài)。針對連接服務(wù)器出問題導(dǎo)致上位機收不到返回報文的情況,設(shè)計了陷阱程序進行處理,以下是陷阱程序的主體部分。
在陷阱程序中,首先定義與連接各服務(wù)器相應(yīng)的陷阱標志,接著連接服務(wù)器語句的前一句將陷阱標志設(shè)置一個狀態(tài),如置0,再接著連接服務(wù)器語句的后一句將陷阱標志修改成另一個狀態(tài),如置1。程序執(zhí)行過程中,如果連接服務(wù)器成功,執(zhí)行完連接服務(wù)器語句后,陷阱標志將被置1;如果連接服務(wù)器不成功,連接服務(wù)器語句不能正常執(zhí)行,陷阱標志置1語句不會被執(zhí)行,陷阱標志狀態(tài)將保持為0。在程序開頭部分使用On Error GoTo語句,程序執(zhí)行過程中發(fā)生不能連接服務(wù)器錯誤,程序?qū)⑻D(zhuǎn)到指定的陷阱處理部分,在陷阱處理程序中,根據(jù)陷阱標志狀態(tài),判斷出不能連接服務(wù)器故障并輸出警示。針對連接各服務(wù)器分別設(shè)置陷阱標志,當(dāng)出現(xiàn)連接故障時,程序可以對各連接故障準確定位。
傳感器數(shù)據(jù)傳輸?shù)目煽啃圆粌H體現(xiàn)在上位機能否讀取數(shù)據(jù)采集模塊及PLC A/D 模塊中的數(shù)據(jù)、處理后再發(fā)送到PLC等控制器中,還要考慮所傳輸?shù)臄?shù)據(jù)能否真實反映傳感器所檢測的溫度、壓力、液位等物理信號。如果傳感器的供電電源不穩(wěn)定或現(xiàn)場偶然出現(xiàn)強電磁干擾都可以導(dǎo)致數(shù)據(jù)采集模塊等采集的數(shù)據(jù)失真[10]。如果上位機讀取了錯誤的數(shù)據(jù)并將其發(fā)送到了PLC 等控制器,PLC 等控制器將根據(jù)錯誤數(shù)據(jù)進行錯誤動作,導(dǎo)致重大事故。
基于數(shù)據(jù)可能失真的情況,上位機在向PLC 發(fā)送數(shù)據(jù)前,檢測數(shù)據(jù)跳動范圍。電源不穩(wěn)或電磁干擾會同時使多個傳感器數(shù)據(jù)失真,檢測程序依據(jù)這一特征進行檢測。主程序的數(shù)據(jù)處理包含數(shù)據(jù)濾波,讓當(dāng)前所讀取的采樣值與上一次的濾波值比較,當(dāng)檢測到高于70%的當(dāng)前采樣值遠離上一次濾波值時,判定數(shù)據(jù)跳動范圍過大,出現(xiàn)了電源不穩(wěn)或電磁干擾等故障。上位機一旦檢測到數(shù)據(jù)跳動范圍過大,就停止向PLC 發(fā)送數(shù)據(jù),放棄當(dāng)前所讀取的采樣值,輸出警示,并返回到主程序初始位置重新讀取數(shù)據(jù)。
上位機檢測到任何數(shù)據(jù)傳輸故障,在輸出警示的同時,都會調(diào)用SQL數(shù)據(jù)庫,記錄數(shù)據(jù)傳輸故障的詳細信息,以便定期對系統(tǒng)進行維護,對故障進行統(tǒng)計。
在上位機中采取了各種措施,可以保證及時準確地檢測數(shù)據(jù)傳輸中的各種故障并在上位機輸出警示,但沒有將故障告知PLC等控制器,其原因是數(shù)據(jù)傳輸故障可能出現(xiàn)在上位機與PLC等控制器之間。系統(tǒng)運行中,僅上位機檢測到數(shù)據(jù)傳輸故障是不夠的,PLC 等控制器必須具備識別數(shù)據(jù)傳輸故障的功能。針對這種情況,在PLC 中設(shè)計了軟件看門狗程序,監(jiān)控數(shù)據(jù)傳輸故障,看門狗程序示例梯形圖如圖3所示[11,12]。
圖3 看門狗程序示例梯形圖
軟件看門狗程序的設(shè)計思想是在PLC 的數(shù)據(jù)保持寄存器區(qū)定義一個寄存器作為狀態(tài)寄存器,其狀態(tài)作為PLC 識別數(shù)據(jù)傳輸故障的邏輯條件。上位機向PLC 發(fā)送數(shù)據(jù)過程中,在數(shù)據(jù)幀中多嵌入一個字的數(shù)據(jù)發(fā)送到PLC 中定義好的狀態(tài)寄存器,交替改變該寄存器的狀態(tài),例如交替發(fā)送#0000 和#FFFF。PLC 根據(jù)兩個不同的狀態(tài),分別啟動兩個定時器,定時器的定時時間大于一個數(shù)據(jù)傳輸?shù)闹芷凇?shù)據(jù)傳輸正常情況下,該狀態(tài)寄存器的狀態(tài)交替改變,兩個定時器也將隨之被交替啟動和停止,由于定時器的定時時間大于一個數(shù)據(jù)傳輸?shù)闹芷冢瑑蓚€定時器不會到達其定時時間。任何一個定時器定時時間到,都說明狀態(tài)寄存器的狀態(tài)長時間沒有改變,PLC 長時間沒有從上位機接收到數(shù)據(jù),即可判定數(shù)據(jù)傳輸出現(xiàn)故障,PLC 接通一個數(shù)據(jù)傳輸故障標志位,并進行相應(yīng)動作。
在PLC的看門狗程序中,通過設(shè)定定時器的定時時間判斷狀態(tài)寄存器的狀態(tài)多長時間沒有改變,由此判定出現(xiàn)數(shù)據(jù)傳輸故障。但如果在定時器的定時時間內(nèi)狀態(tài)寄存器的狀態(tài)得到改變,即使在這個過程中出現(xiàn)過數(shù)據(jù)傳輸故障,PLC也會正常工作,這保證了PLC 在時間上對數(shù)據(jù)傳輸故障具有容錯性,避免了每次數(shù)據(jù)傳輸故障PLC 都要停機。定時器的定時時間根據(jù)系統(tǒng)運行工況確定,在該系統(tǒng)中,正常情況下上位機數(shù)據(jù)傳輸?shù)闹芷谠?000ms左右,定時器的定時時間設(shè)定為4000ms,即大約是正常情況一個數(shù)據(jù)傳輸周期的4倍。
為檢驗所設(shè)計可靠性方案的有效性,分別進行了三組實驗,檢驗上位機及PLC對數(shù)據(jù)傳輸故障的檢測能力。
第一組是上位機在讀取數(shù)據(jù)采集模塊數(shù)據(jù)時,向數(shù)據(jù)采集模塊發(fā)送一個未定義的功能碼,下位機無法識別,上位機依據(jù)下位機返回碼判斷數(shù)據(jù)傳輸故障。
第二組是在數(shù)據(jù)傳輸過程中,隨機拔掉一根連接下位機服務(wù)器的網(wǎng)線,檢驗陷阱程序的有效性。
第三組是檢測數(shù)據(jù)跳動范圍,用一根非屏蔽電纜連接變頻器和電機,并啟動變頻器,使電機工作,將該電纜接近各數(shù)據(jù)采集模塊上的傳感器接線端子排,并迅速移開電纜,短時干擾傳感器的采集信號。
數(shù)據(jù)傳輸正常情況如圖4 (a)所示,上位機在VB 界面中顯示數(shù)據(jù)采集信息;在第一組實驗中上位機彈出如圖4(b)所示對話框,提示功能碼無法識別;在第二組實驗中上位機彈出如圖4 (c)所示對話框,提示無法連接服務(wù)器;在第三組實驗中上位機彈出如圖4 (d)所示對話框,提示數(shù)據(jù)跳動范圍過大。
在前兩組實驗中,由于數(shù)據(jù)傳輸故障,PLC 持續(xù)4000 ms沒有從上位機接受到數(shù)據(jù),其數(shù)據(jù)傳輸故障標志位被接通,并通過PLC的輸出端口輸出開關(guān)信號進行相應(yīng)動作;在第三組實驗中,由于是短時干擾,故障持續(xù)時間在PLC的容錯時間內(nèi),PLC仍然正常工作。
以棉麻纖維紗線晶變改性成套裝備運行時現(xiàn)場數(shù)據(jù)傳輸可靠性為研究對象,設(shè)計了基于以太網(wǎng)的數(shù)據(jù)傳輸可靠性方案。分析了傳感器數(shù)據(jù)傳輸過程中可能存在的各種故障,采取了4種措施,且各種措施層層遞進。在上位機中,根據(jù)數(shù)據(jù)傳輸?shù)姆祷卮a判斷數(shù)據(jù)傳輸狀態(tài),設(shè)計了陷阱程序,監(jiān)控了數(shù)據(jù)跳動范圍,按照數(shù)據(jù)傳輸可靠性主程序流程,可以全程監(jiān)控數(shù)據(jù)傳輸狀態(tài)。在PLC 控制器中,設(shè)計了軟件看門狗程序,既可以監(jiān)控數(shù)據(jù)傳輸故障,同時對數(shù)據(jù)傳輸故障在時間上具有容錯性。設(shè)計的方案已在現(xiàn)場運行,提高了棉麻纖維紗線晶變改性成套裝備運行時傳感器數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
圖4 正常及各種數(shù)據(jù)傳輸故障下上位機響應(yīng)
[1]DENG Huanming,HUANG Shuang,ZHOU Chunjie.Transient faults handling of communication in industrial Ethernet[J].Computer Engineering and Design,2012,33 (9):3327-3331 (in Chinese).[鄧煥明,黃雙,周純潔.工業(yè)以太網(wǎng)通信中瞬時故障處理 [J].計算機工程與設(shè)計,2012,33 (9):3327-3331.]
[2]XU Aidong,Jiang Liqun.Research of fault tolerance technique for high industrial Ethernet[C]//Proceedings of the IEEE International Conference on Information and Automation,2009:301-305.
[3]TAO Jing,CHEN Zenghan.Communication between iFIX and PLC based on OPC and industrial Ethernet[J].Computer Engineering and Design,2009,30 (8):2064-2066(in Chinese).[陶靜,陳曾漢.基于OPC 及工業(yè)以太網(wǎng)的iFIX 與PLC 的通信[J].計算機工程與設(shè)計,2009,30 (8):2064-2066.]
[4]TIAN Zhongda,GAO Xianwen,LI Kun,et al.The improvement of IEEE 802.1p priority scheduling protocol in industrial Ethernet[J].Information and Control,2012,41 (1):117-122 (in Chinese).[田中大,高憲文,李琨,等.工業(yè)以太網(wǎng)中IEEE 802.1p 優(yōu)先權(quán)調(diào)度協(xié)議改進 [J].信息與控制,2012,41 (1):117-122.]
[5]DAI Bin,ZHU Jianping,YUAN Yan.Implementation of Ethernet communication between OMRON PLC and a host based on FINS protocol [J].Electronic Technology,2009(9):13-16 (in Chinese).[戴斌,朱建平,袁焱.基于FINS協(xié)議的OMRON PLC與上位機以太網(wǎng)通信的實現(xiàn) [J].電子技術(shù),2009 (9):13-16.]
[6]YU Dongping,ZHANG Jianfeng,WANG Cong,et al.Optimization of data scheduling algorithm in concurrent multipath data transfer [J].Journal of Computer Applications,2014,34 (5):1227-1231 (in Chinese). [余東平,張劍鋒,王聰,等.多路并行傳輸中數(shù)據(jù)調(diào)度算法的優(yōu)化 [J].計算機應(yīng)用,2014,34 (5):1227-1231.]
[7]LIU Peijin,GU Lichen,HAN Xing,et al.Controller for real-time data collection and network communication based on Modbus/TCP in thermal power plant [J].Electric Power Automation Equipment,2009,29 (8):128-131 (in Chinese).[劉沛津,谷立臣,韓行,等.基于Modbus/TCP的火電廠實時數(shù)據(jù)集成及網(wǎng)絡(luò)通信控制器研制 [J].電力自動化設(shè)備,2009,29 (8):128-131.]
[8]ZHANG Shengshan,SHANG Wenli,WAN Ming,et al.Security defense module of modbus TCP communication based on region/enclave rules [J].Computer Engineering and Design,2014,35 (11):3701-3707 (in Chinese).[張盛山,尚文利,萬明,等.基于區(qū)域/邊界規(guī)則的Modbus TCP 通訊安全防御模型 [J].計算機工程與設(shè)計,2014,35 (11):3701-3707.]
[9]PENG Daogang,ZHANG Hao,LI Hui,et al.Design and implementation of ARM embedded monitoring platform based on Modbus protocol[J].Electric Power Automation Equipment,2009,29 (1):115-120 (in Chinese). [彭道剛,張浩,李輝,等.基于Modbus協(xié)議的ARM 嵌入式監(jiān)測平臺設(shè)計與實現(xiàn) [J].電力自動化設(shè)備,2009,29 (1):115-120.]
[10]LIU Bin.Performance testing and networking optimization of industrial Ethernet[D].Hangzhou:Graduate School of Zhejiang University,2010:2-10 (in Chinese). [劉斌.工業(yè)以太網(wǎng)性能測試與組網(wǎng)優(yōu)化 [D].杭州:浙江大學(xué)研究生院,2010:2-10.]
[11]WANG Bin,LI Wenxin,LI Detian,et al.Research to improve anti-interference technology of enbedded system by watchdog software design [J].Computer Technology and Development,2012,22 (10):188-190 (in Chinese). [王彬,李文新,李得天,等.通過看門狗軟件設(shè)計提高抗干擾能力的方法[J].計算機技術(shù)與發(fā)展,2012,22 (10):188-190.]
[12]FAN Linan,LI Zhen,ZHOU Shenglai,et al.Soft-watchdog system design based on Keil C51 [J].Computer Technology and Development,2009,19 (1):154-156 (in Chinese).[范立南,李震,周勝來,等.基于Keil C51的軟件看門狗系統(tǒng)設(shè)計 [J].計算機技術(shù)與發(fā)展,2009,19 (1):154-156.]