李煊丁為
(中石化上海石油化工研究院,上海 201208)
上海石油化工研究院所用的實(shí)驗(yàn)裝置具有點(diǎn)數(shù)少、設(shè)備多樣化等特點(diǎn)。一套典型的小試裝置,控制點(diǎn)一般少于100個。這種規(guī)模的裝置用分布式控制系統(tǒng)(distributed control system,DCS)顯然不夠經(jīng)濟(jì)(集中評價部門除外)。因此,目前設(shè)計(jì)的微反、小試、中試裝置中,多使用“智能儀表+PLC”模式,其模擬量的測量控制(AI、AO)由智能儀表完成,開關(guān)量(DI、DO)的控制由PLC及相關(guān)電路完成。近年來,這種模式得到了上海石油化工研究院研究、管理部門的認(rèn)可。對于這種模式的監(jiān)控、操作、記錄平臺的實(shí)現(xiàn),工控機(jī)和串口編程技術(shù)成為了核心。本文列舉了幾種日常工作中常用設(shè)備的通信協(xié)議,并介紹了這些通信協(xié)議的應(yīng)用。
AIBUS是廈門宇電自動化科技有限公司為AI系列顯示控制儀表開發(fā)的通信協(xié)議,其使用異步串行通信接口,接口電平符合RS-232C或RS-485標(biāo)準(zhǔn)中的規(guī)定[1]。采用RS-485通信方式時,能通過簡單的指令實(shí)現(xiàn)儀表的全功能操作,并提供比其他常用協(xié)議(如Modbus)更快的速率。在9600 bit/s下,一般上位機(jī)訪問一臺7.0版儀表的平均時間約80 ms,但若采用AIBUS,一次性訪問56個通道只需1.2 s,平均訪問時間在20 ms左右。
AI儀表采用16進(jìn)制數(shù)據(jù)格式來表示各種指令代碼及數(shù)據(jù),其軟件通信指令經(jīng)過優(yōu)化設(shè)計(jì),只有讀、寫兩條指令,從而使得上位機(jī)軟件的編寫更容易,且能夠100%地對儀表進(jìn)行操作。標(biāo)準(zhǔn)的讀寫指令如下。
①讀:地址代號+52H(82)+要讀的參數(shù)代號+0+0+校驗(yàn)碼。
②寫:地址代號+43H(67)+要寫的參數(shù)代號+寫入數(shù)低字節(jié)+寫入數(shù)高字節(jié)+校驗(yàn)碼。
參數(shù)代號是指在使用RS-485通信方式時,為在一個通信接口上連接多臺AI儀表,需要為每臺AI儀表編一個互不相同的通信地址,有效的地址為0~80。校驗(yàn)碼采用16位求和校驗(yàn)方式,其中讀指令的校驗(yàn)碼計(jì)算方法為要讀參數(shù)的代號×256+82+Addr。寫指令的校驗(yàn)碼計(jì)算方法為以下公式作16位二進(jìn)制加法計(jì)算得出的余數(shù)(溢出部分不處理):要寫的參數(shù)代號×256+67+要寫的參數(shù)值+Addr,余數(shù)為2個字節(jié),其低字節(jié)在前,高字節(jié)在后。公式中Addr為儀表地址參數(shù)值,范圍為0~80。要寫的參數(shù)值用16位二進(jìn)制整數(shù)表示。無論是讀還是寫,儀表都返回以下10個字節(jié)數(shù)據(jù),即測量值PV+給定值SV+輸出值MV及報(bào)警狀態(tài)+所讀/寫參數(shù)值+校驗(yàn)碼。其中,PV、SV及所讀參數(shù)值均各占2個字節(jié)、MV占1個字節(jié)、狀態(tài)位占1個字節(jié)、校驗(yàn)碼占2個字節(jié),共10個字節(jié)。
正常情況下,一臺儀表的通信時間不會超過100 ms。若在1 s內(nèi)不能完成通信,則認(rèn)為本次通信失敗,連續(xù)5次通信失敗則判斷為儀表通信故障;若在1 s內(nèi)完成通信且校驗(yàn)碼正確,則認(rèn)為儀表通信成功。在實(shí)際測試中,沒有發(fā)現(xiàn)校驗(yàn)碼錯誤例子。寫表程序類似,不再贅述。設(shè)計(jì)的讀表程序邏輯框圖如圖1所示。
圖1 讀表程序邏輯框圖Fig.1 Logical diagram of communication programme for computer’s reading
根據(jù)AIBUS協(xié)議,在我們的監(jiān)控軟件中,讀表程序主要部分描述如下。其中,out定義為字節(jié)型數(shù)組。
在實(shí)際工作中,通過使用AIBUS協(xié)議所編寫的程序,用戶可以在上位機(jī)上實(shí)現(xiàn)目標(biāo)值(多段控制值)的輸入、控制參數(shù)的修改和實(shí)時值(測量值、給定值、輸出值及報(bào)警狀態(tài))采集。以返回接收緩沖器的字節(jié)數(shù)等于10作為輸入結(jié)束的判斷,沒有發(fā)現(xiàn)過異常或者亂碼,AIBUS協(xié)議被認(rèn)為是目前所用各類通信協(xié)議中較為友好、穩(wěn)定的協(xié)議。
FX2N系列PLC與計(jì)算機(jī)間的通信類型有N∶N網(wǎng)絡(luò)、并行鏈接、計(jì)算機(jī)鏈接(用專用協(xié)議進(jìn)行數(shù)據(jù)傳送,RS-485/422)和無協(xié)議通信(用RS指令進(jìn)行數(shù)據(jù)傳輸)等[2]??紤]到系統(tǒng)點(diǎn)數(shù)少和工控機(jī)監(jiān)控的特點(diǎn),本文采用計(jì)算機(jī)鏈接通信。
計(jì)算機(jī)鏈接指令如表1所示,由此可以對PLC進(jìn)行全方位操作。
表1 計(jì)算機(jī)鏈接指令表Tab.1 The table of computer linking instructions
常用的指令包括位軟元件成批讀指令(BR)和位軟元件成批寫指令(BW)。
2.2.1 位軟元件成批讀(BR)指令
BR指令協(xié)議格式為ENQ+站號+PC號+BR+等待時間+元件號+元件數(shù)+校驗(yàn)碼。其中,“ENQ”表示計(jì)算機(jī)查詢,其值為05H;“站號”表示如有N臺PLC,站號為00H~(N-1),十六進(jìn)制;“PC號”表示對于FX系列PLC,該號取值為FFH;“BR”表示批讀指令;“等待時間”的值根據(jù)需要設(shè)置;“元件號”表示一組位軟元件及其編號;“元件數(shù)”表示本次要同時讀的元件個數(shù)。
PLC接受指令后的反饋值為 STX+站號 +PC號+指定元件數(shù)據(jù)+EXT+校驗(yàn)碼。其中,“STX”表示文本起點(diǎn),其值為02H;“EXT”表示文本終點(diǎn),其值為03H;“指定元件數(shù)據(jù)”取值為“0”或“1”,“0”代表“關(guān)”,“1”代表“開”。
2.2.2 位軟元件成批寫(BW)指令
BW指令協(xié)議格式為ENQ+站號+PC號+BW+等待時間+元件號+元件數(shù)+校驗(yàn)碼。除了指令字符為BW外,其他定義同2.2.1節(jié)。PLC接受指令后的反饋值為STX+站號+PC號。
在研究院的各項(xiàng)試驗(yàn)中,工作程序往往是變化的,特別是某一工段的時間設(shè)置。對于這種工作狀態(tài),讓試驗(yàn)人員不斷地修改PLC程序并不現(xiàn)實(shí),自控人員也沒有時間和精力經(jīng)常去做這件事。為此,在PLC編程中,編制了兩套程序,分別用于2種工作狀態(tài)。
①PLC控制狀態(tài),適用于按照預(yù)先規(guī)定好的常規(guī)工作程序操作,此時計(jì)算機(jī)可以啟動/關(guān)閉現(xiàn)場設(shè)備和試驗(yàn)數(shù)據(jù)記錄。
②計(jì)算機(jī)控制狀態(tài),適用于不斷變化的工作程序。而這兩種狀態(tài)的切換,由計(jì)算機(jī)改變PLC中的輔助繼電器實(shí)現(xiàn)。當(dāng)計(jì)算機(jī)處于控制狀態(tài)時,PLC僅充當(dāng)DI、DO功能,并保留安全連鎖功能。
按照上述思想編制的部分PLC程序梯形圖如圖2所示。
圖2 PLC程序梯形圖(部分)Fig.2 Ladder diagram of PLC ladder program(partial)
圖2中,M20為狀態(tài)切換的輔助繼電器,缺省值為PLC控制,X0003為連鎖保護(hù)輸入點(diǎn),在兩個狀態(tài)下都適用,Y0005為控制目標(biāo)輸出端,T0、T4為PLC的時間繼電器,分別代表開始、結(jié)束時間,M5為計(jì)算機(jī)控制所使用的輔助繼電器,其開關(guān)狀態(tài)由計(jì)算機(jī)規(guī)定,由此實(shí)現(xiàn)任意時間的設(shè)置。
改變M20,由PLC控制并切換成計(jì)算機(jī)控制的指令為:
MSComm2.Output=Chr$(5)+"00FFBW0M002001156"
閉合M5,使Y0005動作的指令為:
MSComm2.Output=Chr$(5)+"00FFBW0M000501159"
讀取Y0000~0007狀態(tài)的指令為:
MSComm2.Output=Chr$(5)+"00FFBR0Y00000831"
通過這些指令,可靈活地根據(jù)實(shí)際需要,使用計(jì)算機(jī)控制PLC的開關(guān)狀態(tài),達(dá)到計(jì)算機(jī)控制目的。
按上述思路設(shè)計(jì)的實(shí)驗(yàn)裝置和自行開發(fā)的程序,自2003年開始使用至今,除了電動機(jī)聯(lián)動限位開關(guān)長期使用損壞過外,其他控制部分沒有出過任何問題。
PLC接受指令后的反饋值,作為通信成功的判定。其中通信故障判斷方法類似1.2節(jié),不再贅述。
發(fā)送至天平的指令包含一個或多個ASCII碼組,因此,必須注意以下幾點(diǎn)[3]。
①只能使用大寫字母輸入指令;
②指令中的參數(shù)必須在指令名中以空格的形式分開;
③文字的輸入可以是8位ASCII字符集從字符32到255(十進(jìn)制)所構(gòu)成的一組字符串;
④每組指令必須以 CRLF結(jié)束(ASCII十進(jìn)制代碼13,10);
例如,指令“SI”+CRLF為要求天平發(fā)送當(dāng)前穩(wěn)定的凈稱量值,天平返回值為“S S 100.00 g”。同時,天平可能返回其他信息,如“S I”,表示無法執(zhí)行指令(天平正執(zhí)行其他指令,如去皮或因未達(dá)到穩(wěn)定值指令已超時);返回“S+”時,表示天平過載,“S–”時,表示天平欠載。
上海石油化工研究院裝置中的電子天平(秤)一般都用于監(jiān)視原料(產(chǎn)物)的減少(增加),其屬于一個動態(tài)過程,故平時只使用該天平指令中的“SI”指令(立即發(fā)送稱量值),即MSComm3.Output=“SI”+vbCr+vbLf)。指令發(fā)出后,即可得到相應(yīng)值,按位數(shù)取出重量值及單位即可。
但實(shí)際應(yīng)用中存在的問題是該天平的通信時間不穩(wěn)定。根據(jù)實(shí)測記錄,從指令發(fā)出到返回值接收,所用的時間是隨機(jī)變化的,從小于200 ms到大于2 s都有可能,這對故障判斷非常不利。在實(shí)際編程中,若連續(xù)10次通信時間超過2 s,則判斷該天平通信故障或者沒有上電,在發(fā)出故障通報(bào)后,停止對該天平的監(jiān)控。
Mark天平/Q系列電子天平可以通過標(biāo)準(zhǔn)RS-232C接口,由計(jì)算機(jī)運(yùn)行各種功能[4]。天平操作按鍵與計(jì)算機(jī)指令對應(yīng)表如表2所示。
表2 按鍵與指令對應(yīng)表Tab.2 Pushbuttons vs.computer instructions
對于計(jì)算機(jī)通信設(shè)置,該系列天平提供了PC Cout(連續(xù))模式和PC Cmd(指令)模式兩種選項(xiàng)。這兩種模式的返回格式如表3所示。
表3 返回值格式表Tab.3 Format(s)of the returned value(s)
連續(xù)模式不需要指令,天平會連續(xù)不斷地發(fā)送當(dāng)前的稱量值。由于沒有上下位機(jī)的協(xié)調(diào)動作,計(jì)算機(jī)首先取到的往往是亂碼。而指令模式僅能在稱重物質(zhì)量穩(wěn)定的情況下使用,否則會出現(xiàn)通信錯誤的提示。
經(jīng)過分析,決定在連續(xù)模式下進(jìn)行“去偽存真”處理:將輸入數(shù)據(jù)緩沖區(qū)的長度定在50,約是輸入數(shù)據(jù)長度(15)的3倍;然后在大于一個數(shù)據(jù)段長度的第11位開始,找到重量單位“g”,再倒退11位,分析每一位是否為0~9的數(shù)字,并分析小數(shù)點(diǎn)和正負(fù)符號位的正確性,若滿足,則認(rèn)為這一段是有效值,否則再從下一個數(shù)據(jù)段進(jìn)行查找;若整個數(shù)據(jù)段都是亂碼,則放棄,重新取數(shù)。若重新取數(shù)5次,還沒有拿到正常數(shù)據(jù),則發(fā)出通信錯誤通報(bào)。
根據(jù)實(shí)測情況,約每10組數(shù)中有一組亂碼,而且亂碼都出現(xiàn)在前幾個字符,這樣基本上保證了上述對策的有效性。經(jīng)過長時間的運(yùn)行,該對策經(jīng)受住考驗(yàn),使得計(jì)算機(jī)能夠按要求獲得相關(guān)數(shù)據(jù)。
Lab alliance II型計(jì)量泵配置了一個RS-232C通信接口,接口使用的是RJ-11接頭,與計(jì)算機(jī)上的9針串口的對應(yīng)關(guān)系如表4所示[5]。上位機(jī)可以對該泵進(jìn)行流量設(shè)置和啟停操作。
表4 計(jì)量泵與RS-232C引腳的接線對照Tab.4 Connections between metering pump and RS-232C pins
Lab alliance II型計(jì)量泵常用的通信指令有3條:①FL,x.xx表示設(shè)置流量為 x.xx mL/min 的指令,設(shè)置范圍由泵頭類型決定,如 0.01 到 0.09,0.1 到 39.9等;②RU表示設(shè)置泵運(yùn)行指令;③ST表示設(shè)置泵停止指令。
VB 指令 MSComm7.Output== “FL,”+Text7.Text+vbCr+vbLf表示將指定的流量送入計(jì)量泵,MSComm7.Output=“RU” +vbCr+vbLf表示發(fā)出運(yùn)行指令,MSComm7.Output=“ST” +vbCr+vbLf表示發(fā)出停止指令
泵在接收以上指令后,會反饋一個“OK”字符,表示通信成功。經(jīng)過多年的使用,該泵的通信較為穩(wěn)定,沒有出現(xiàn)過問題,但存在以下幾個缺點(diǎn)。
①接口使用的是RJ-11,需要專用卡鉗制作。
②沒有流量讀取指令,當(dāng)用戶在現(xiàn)場手動改變流量后,計(jì)算機(jī)不能獲得信息,此時若需要記錄,只能到計(jì)算機(jī)界面上修改(不下傳)。
整套八通閥由閥體、控制器、手操器、24 V直流電源以及相關(guān)連接電纜組成[6]??刂破魍ㄟ^RS-232C(RS-485可選)電纜與電腦連接。當(dāng)多臺閥與計(jì)算機(jī)相連時,可以使用該公司提供的并聯(lián)線,將多臺閥全部并聯(lián)后,接入計(jì)算機(jī)的一個串口。本項(xiàng)目使用了6臺(最多10臺)。閥之間通信的區(qū)分通過給每臺閥設(shè)置不同的ID號實(shí)現(xiàn)。
常用的指令有:VR,為顯示部件號和出廠日期;GOnn,為閥按照最短路徑走到nn位;CP,為顯示當(dāng)前通道數(shù);IDn,為設(shè)置 ID 號,從 0 ~9[7]。
類似上述恒流泵,許多指令如GOnn是沒有應(yīng)答的,這是因?yàn)橛?jì)算機(jī)無法得知指令是否被完整執(zhí)行。
與供貨商討論的結(jié)果是在GOnn指令后,再加上一條CP指令,以讀取當(dāng)前的實(shí)際通道數(shù),用兩條指令滿足實(shí)際控制的要求。從表面上看,該邏輯是成立的,但在實(shí)際調(diào)試中,發(fā)現(xiàn)GOnn指令的完整執(zhí)行需要較長時間,例如閥從1號位到4號位接近1 s,在閥還沒有轉(zhuǎn)動到位時,CP已經(jīng)返回目標(biāo)值,而不是實(shí)際到位信息。
這種現(xiàn)象在單個閥控制時不會出現(xiàn)問題,若多閥聯(lián)動且共用一條通信線時,則會造成通信上的堵塞。從控制器返回的信息可以發(fā)現(xiàn),許多正常的指令,在一定狀態(tài)下特別是通信繁忙的情況下,會被閥控制器判斷為無效指令。因此,在實(shí)際應(yīng)用中,只能在用戶可接受的范圍內(nèi)放慢運(yùn)行速度,以保證每個閥的轉(zhuǎn)動確實(shí)到位。
工控機(jī)及串口編程技術(shù)是中石化上海石油化工研究院裝置自控部分設(shè)計(jì)的核心,上述幾種串口通信協(xié)議及程序設(shè)計(jì)方法在裝置設(shè)計(jì)中均得到了較好的應(yīng)用。在實(shí)際的程序設(shè)計(jì)中,需要仔細(xì)分析各串口通信協(xié)議的內(nèi)容,根據(jù)各協(xié)議的不同特點(diǎn),靈活地調(diào)整設(shè)計(jì)方案,必要時還需要與生產(chǎn)商進(jìn)行溝通。
[1]張磊.AIBUS現(xiàn)場通訊總線的PLC工控設(shè)計(jì)方案[J].MM現(xiàn)代制造,2006(9).
[2]王芹,滕今朝.可編程控制器技術(shù)及應(yīng)用[M].天津:天津大學(xué)出版社,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.