李煊丁為
(中石化上海石油化工研究院,上海 201208)
上海石油化工研究院所用的實驗裝置具有點數少、設備多樣化等特點。一套典型的小試裝置,控制點一般少于100個。這種規模的裝置用分布式控制系統(distributed control system,DCS)顯然不夠經濟(集中評價部門除外)。因此,目前設計的微反、小試、中試裝置中,多使用“智能儀表+PLC”模式,其模擬量的測量控制(AI、AO)由智能儀表完成,開關量(DI、DO)的控制由PLC及相關電路完成。近年來,這種模式得到了上海石油化工研究院研究、管理部門的認可。對于這種模式的監控、操作、記錄平臺的實現,工控機和串口編程技術成為了核心。本文列舉了幾種日常工作中常用設備的通信協議,并介紹了這些通信協議的應用。
AIBUS是廈門宇電自動化科技有限公司為AI系列顯示控制儀表開發的通信協議,其使用異步串行通信接口,接口電平符合RS-232C或RS-485標準中的規定[1]。采用RS-485通信方式時,能通過簡單的指令實現儀表的全功能操作,并提供比其他常用協議(如Modbus)更快的速率。在9600 bit/s下,一般上位機訪問一臺7.0版儀表的平均時間約80 ms,但若采用AIBUS,一次性訪問56個通道只需1.2 s,平均訪問時間在20 ms左右。
AI儀表采用16進制數據格式來表示各種指令代碼及數據,其軟件通信指令經過優化設計,只有讀、寫兩條指令,從而使得上位機軟件的編寫更容易,且能夠100%地對儀表進行操作。標準的讀寫指令如下。
①讀:地址代號+52H(82)+要讀的參數代號+0+0+校驗碼。
②寫:地址代號+43H(67)+要寫的參數代號+寫入數低字節+寫入數高字節+校驗碼。
參數代號是指在使用RS-485通信方式時,為在一個通信接口上連接多臺AI儀表,需要為每臺AI儀表編一個互不相同的通信地址,有效的地址為0~80。校驗碼采用16位求和校驗方式,其中讀指令的校驗碼計算方法為要讀參數的代號×256+82+Addr。寫指令的校驗碼計算方法為以下公式作16位二進制加法計算得出的余數(溢出部分不處理):要寫的參數代號×256+67+要寫的參數值+Addr,余數為2個字節,其低字節在前,高字節在后。公式中Addr為儀表地址參數值,范圍為0~80。要寫的參數值用16位二進制整數表示。無論是讀還是寫,儀表都返回以下10個字節數據,即測量值PV+給定值SV+輸出值MV及報警狀態+所讀/寫參數值+校驗碼。其中,PV、SV及所讀參數值均各占2個字節、MV占1個字節、狀態位占1個字節、校驗碼占2個字節,共10個字節。
正常情況下,一臺儀表的通信時間不會超過100 ms。若在1 s內不能完成通信,則認為本次通信失敗,連續5次通信失敗則判斷為儀表通信故障;若在1 s內完成通信且校驗碼正確,則認為儀表通信成功。在實際測試中,沒有發現校驗碼錯誤例子。寫表程序類似,不再贅述。設計的讀表程序邏輯框圖如圖1所示。

圖1 讀表程序邏輯框圖Fig.1 Logical diagram of communication programme for computer’s reading
根據AIBUS協議,在我們的監控軟件中,讀表程序主要部分描述如下。其中,out定義為字節型數組。


在實際工作中,通過使用AIBUS協議所編寫的程序,用戶可以在上位機上實現目標值(多段控制值)的輸入、控制參數的修改和實時值(測量值、給定值、輸出值及報警狀態)采集。以返回接收緩沖器的字節數等于10作為輸入結束的判斷,沒有發現過異?;蛘邅y碼,AIBUS協議被認為是目前所用各類通信協議中較為友好、穩定的協議。
FX2N系列PLC與計算機間的通信類型有N∶N網絡、并行鏈接、計算機鏈接(用專用協議進行數據傳送,RS-485/422)和無協議通信(用RS指令進行數據傳輸)等[2]??紤]到系統點數少和工控機監控的特點,本文采用計算機鏈接通信。
計算機鏈接指令如表1所示,由此可以對PLC進行全方位操作。

表1 計算機鏈接指令表Tab.1 The table of computer linking instructions
常用的指令包括位軟元件成批讀指令(BR)和位軟元件成批寫指令(BW)。
2.2.1 位軟元件成批讀(BR)指令
BR指令協議格式為ENQ+站號+PC號+BR+等待時間+元件號+元件數+校驗碼。其中,“ENQ”表示計算機查詢,其值為05H;“站號”表示如有N臺PLC,站號為00H~(N-1),十六進制;“PC號”表示對于FX系列PLC,該號取值為FFH;“BR”表示批讀指令;“等待時間”的值根據需要設置;“元件號”表示一組位軟元件及其編號;“元件數”表示本次要同時讀的元件個數。
PLC接受指令后的反饋值為 STX+站號 +PC號+指定元件數據+EXT+校驗碼。其中,“STX”表示文本起點,其值為02H;“EXT”表示文本終點,其值為03H;“指定元件數據”取值為“0”或“1”,“0”代表“關”,“1”代表“開”。
2.2.2 位軟元件成批寫(BW)指令
BW指令協議格式為ENQ+站號+PC號+BW+等待時間+元件號+元件數+校驗碼。除了指令字符為BW外,其他定義同2.2.1節。PLC接受指令后的反饋值為STX+站號+PC號。
在研究院的各項試驗中,工作程序往往是變化的,特別是某一工段的時間設置。對于這種工作狀態,讓試驗人員不斷地修改PLC程序并不現實,自控人員也沒有時間和精力經常去做這件事。為此,在PLC編程中,編制了兩套程序,分別用于2種工作狀態。
①PLC控制狀態,適用于按照預先規定好的常規工作程序操作,此時計算機可以啟動/關閉現場設備和試驗數據記錄。
②計算機控制狀態,適用于不斷變化的工作程序。而這兩種狀態的切換,由計算機改變PLC中的輔助繼電器實現。當計算機處于控制狀態時,PLC僅充當DI、DO功能,并保留安全連鎖功能。
按照上述思想編制的部分PLC程序梯形圖如圖2所示。

圖2 PLC程序梯形圖(部分)Fig.2 Ladder diagram of PLC ladder program(partial)
圖2中,M20為狀態切換的輔助繼電器,缺省值為PLC控制,X0003為連鎖保護輸入點,在兩個狀態下都適用,Y0005為控制目標輸出端,T0、T4為PLC的時間繼電器,分別代表開始、結束時間,M5為計算機控制所使用的輔助繼電器,其開關狀態由計算機規定,由此實現任意時間的設置。
改變M20,由PLC控制并切換成計算機控制的指令為:
MSComm2.Output=Chr$(5)+"00FFBW0M002001156"
閉合M5,使Y0005動作的指令為:
MSComm2.Output=Chr$(5)+"00FFBW0M000501159"
讀取Y0000~0007狀態的指令為:
MSComm2.Output=Chr$(5)+"00FFBR0Y00000831"
通過這些指令,可靈活地根據實際需要,使用計算機控制PLC的開關狀態,達到計算機控制目的。
按上述思路設計的實驗裝置和自行開發的程序,自2003年開始使用至今,除了電動機聯動限位開關長期使用損壞過外,其他控制部分沒有出過任何問題。
PLC接受指令后的反饋值,作為通信成功的判定。其中通信故障判斷方法類似1.2節,不再贅述。
發送至天平的指令包含一個或多個ASCII碼組,因此,必須注意以下幾點[3]。
①只能使用大寫字母輸入指令;
②指令中的參數必須在指令名中以空格的形式分開;
③文字的輸入可以是8位ASCII字符集從字符32到255(十進制)所構成的一組字符串;
④每組指令必須以 CRLF結束(ASCII十進制代碼13,10);
例如,指令“SI”+CRLF為要求天平發送當前穩定的凈稱量值,天平返回值為“S S 100.00 g”。同時,天平可能返回其他信息,如“S I”,表示無法執行指令(天平正執行其他指令,如去皮或因未達到穩定值指令已超時);返回“S+”時,表示天平過載,“S–”時,表示天平欠載。
上海石油化工研究院裝置中的電子天平(秤)一般都用于監視原料(產物)的減少(增加),其屬于一個動態過程,故平時只使用該天平指令中的“SI”指令(立即發送稱量值),即MSComm3.Output=“SI”+vbCr+vbLf)。指令發出后,即可得到相應值,按位數取出重量值及單位即可。
但實際應用中存在的問題是該天平的通信時間不穩定。根據實測記錄,從指令發出到返回值接收,所用的時間是隨機變化的,從小于200 ms到大于2 s都有可能,這對故障判斷非常不利。在實際編程中,若連續10次通信時間超過2 s,則判斷該天平通信故障或者沒有上電,在發出故障通報后,停止對該天平的監控。
Mark天平/Q系列電子天平可以通過標準RS-232C接口,由計算機運行各種功能[4]。天平操作按鍵與計算機指令對應表如表2所示。

表2 按鍵與指令對應表Tab.2 Pushbuttons vs.computer instructions
對于計算機通信設置,該系列天平提供了PC Cout(連續)模式和PC Cmd(指令)模式兩種選項。這兩種模式的返回格式如表3所示。

表3 返回值格式表Tab.3 Format(s)of the returned value(s)
連續模式不需要指令,天平會連續不斷地發送當前的稱量值。由于沒有上下位機的協調動作,計算機首先取到的往往是亂碼。而指令模式僅能在稱重物質量穩定的情況下使用,否則會出現通信錯誤的提示。
經過分析,決定在連續模式下進行“去偽存真”處理:將輸入數據緩沖區的長度定在50,約是輸入數據長度(15)的3倍;然后在大于一個數據段長度的第11位開始,找到重量單位“g”,再倒退11位,分析每一位是否為0~9的數字,并分析小數點和正負符號位的正確性,若滿足,則認為這一段是有效值,否則再從下一個數據段進行查找;若整個數據段都是亂碼,則放棄,重新取數。若重新取數5次,還沒有拿到正常數據,則發出通信錯誤通報。
根據實測情況,約每10組數中有一組亂碼,而且亂碼都出現在前幾個字符,這樣基本上保證了上述對策的有效性。經過長時間的運行,該對策經受住考驗,使得計算機能夠按要求獲得相關數據。
Lab alliance II型計量泵配置了一個RS-232C通信接口,接口使用的是RJ-11接頭,與計算機上的9針串口的對應關系如表4所示[5]。上位機可以對該泵進行流量設置和啟停操作。

表4 計量泵與RS-232C引腳的接線對照Tab.4 Connections between metering pump and RS-232C pins
Lab alliance II型計量泵常用的通信指令有3條:①FL,x.xx表示設置流量為 x.xx mL/min 的指令,設置范圍由泵頭類型決定,如 0.01 到 0.09,0.1 到 39.9等;②RU表示設置泵運行指令;③ST表示設置泵停止指令。
VB 指令 MSComm7.Output== “FL,”+Text7.Text+vbCr+vbLf表示將指定的流量送入計量泵,MSComm7.Output=“RU” +vbCr+vbLf表示發出運行指令,MSComm7.Output=“ST” +vbCr+vbLf表示發出停止指令
泵在接收以上指令后,會反饋一個“OK”字符,表示通信成功。經過多年的使用,該泵的通信較為穩定,沒有出現過問題,但存在以下幾個缺點。
①接口使用的是RJ-11,需要專用卡鉗制作。
②沒有流量讀取指令,當用戶在現場手動改變流量后,計算機不能獲得信息,此時若需要記錄,只能到計算機界面上修改(不下傳)。
整套八通閥由閥體、控制器、手操器、24 V直流電源以及相關連接電纜組成[6]。控制器通過RS-232C(RS-485可選)電纜與電腦連接。當多臺閥與計算機相連時,可以使用該公司提供的并聯線,將多臺閥全部并聯后,接入計算機的一個串口。本項目使用了6臺(最多10臺)。閥之間通信的區分通過給每臺閥設置不同的ID號實現。
常用的指令有:VR,為顯示部件號和出廠日期;GOnn,為閥按照最短路徑走到nn位;CP,為顯示當前通道數;IDn,為設置 ID 號,從 0 ~9[7]。
類似上述恒流泵,許多指令如GOnn是沒有應答的,這是因為計算機無法得知指令是否被完整執行。
與供貨商討論的結果是在GOnn指令后,再加上一條CP指令,以讀取當前的實際通道數,用兩條指令滿足實際控制的要求。從表面上看,該邏輯是成立的,但在實際調試中,發現GOnn指令的完整執行需要較長時間,例如閥從1號位到4號位接近1 s,在閥還沒有轉動到位時,CP已經返回目標值,而不是實際到位信息。
這種現象在單個閥控制時不會出現問題,若多閥聯動且共用一條通信線時,則會造成通信上的堵塞。從控制器返回的信息可以發現,許多正常的指令,在一定狀態下特別是通信繁忙的情況下,會被閥控制器判斷為無效指令。因此,在實際應用中,只能在用戶可接受的范圍內放慢運行速度,以保證每個閥的轉動確實到位。
工控機及串口編程技術是中石化上海石油化工研究院裝置自控部分設計的核心,上述幾種串口通信協議及程序設計方法在裝置設計中均得到了較好的應用。在實際的程序設計中,需要仔細分析各串口通信協議的內容,根據各協議的不同特點,靈活地調整設計方案,必要時還需要與生產商進行溝通。
[1]張磊.AIBUS現場通訊總線的PLC工控設計方案[J].MM現代制造,2006(9).
[2]王芹,滕今朝.可編程控制器技術及應用[M].天津:天津大學出版社,2008.
[3]Mettler-Toledo Pac Rim AG.PL-L line of classic light balances[EB/OL].[2007-08-06].http://www.mt.com/classic.
[4]BEL Engineering S R L.Analytical and top loading“Q”series MARK balances[EB/OL].[2009-10-15].http://www.belengineering.com/chi/menu_downloads.asp.
[5]Scientic Systems,Inc.Series II pump user’s guide[EB/OL].[2009-07-09].http://www.laballiance.com/Pdf/active/pumps/Series_II.pdf.
[6]Valco Instruments Co.Inc.Technical note 415:multi-position microelectric valve actuators[EB-OL][2011-07-02].http:∥wenku.baidu.com/view/014a870a763231126edb1183.html.