(廣西中煙工業(yè)有限責(zé)任公司1,廣西 柳州 545005;北京中電紅石科技有限公司2,北京 100083)
ControlLogix是美國羅克韋爾公司生產(chǎn)的大型、高端新一代集成通信與控制平臺,廣泛應(yīng)用于鋼鐵、汽車、冶金、煙草等行業(yè)。它提供了單一的集成化控制架構(gòu),能夠?qū)崿F(xiàn)離散、傳動、運(yùn)動、過程控制任務(wù),其處理器自帶有RS-232(DFl協(xié)議)端口。同時,用戶可以通過擴(kuò)展通信模塊實(shí)現(xiàn)與Ethernet、ControlNet、DeviceNet和普通的Remote I/O鏈路之間的通信,可以插入第三方通信接口模塊連接到Modbus、Profibus等國際標(biāo)準(zhǔn)協(xié)議網(wǎng)絡(luò)上[1]。
然而現(xiàn)階段,企業(yè)仍有一些在用的設(shè)備和儀表采用自定義通信協(xié)議而非標(biāo)準(zhǔn)協(xié)議,導(dǎo)致ControlLogix系統(tǒng)與其不能相互實(shí)現(xiàn)高速的數(shù)據(jù)傳輸。為了使自定義協(xié)議設(shè)備實(shí)現(xiàn)與ControlLogix系統(tǒng)方便、快捷地互聯(lián)通信,本文以廣西中煙公司煙葉庫溫濕度控制系統(tǒng)為例,在分析ControlLogix各類通信接口、第三方提供的不同通信模塊功能的基礎(chǔ)上,提出了一種通過串行通信實(shí)現(xiàn)與自定義協(xié)議設(shè)備通信的方案,解決了ControlLogix系統(tǒng)與自定義協(xié)議設(shè)備之間的通信難題。
ControlLogix平臺自帶有RS-232端口,但其與外部設(shè)備交換數(shù)據(jù)都需要另外插入通信擴(kuò)展模塊。RS-232端口可以與調(diào)制解調(diào)器實(shí)現(xiàn)DF1協(xié)議通信,也可以實(shí)現(xiàn)發(fā)送接收ASCII碼如條形碼閱讀器、打印機(jī)等,還可以借助AIC+高級接口轉(zhuǎn)換器(1761-NET-AIC),將ControlLogix控制器連接到RS- 485網(wǎng)絡(luò),實(shí)現(xiàn)Modbus一主多從通信[2]。在插入模塊擴(kuò)展通信功能方面,制造商羅克韋爾公司只提供以下幾種常見類型。
① 1756-ENET,用于以太網(wǎng)通信接口模塊,支持TCP/IP協(xié)議,用于計(jì)算機(jī)和有關(guān)設(shè)備之間的高速信息交換。
② 1756-CNBR,用于高速確定性ControlNet網(wǎng)絡(luò),與同級別的設(shè)備提供實(shí)時信息和數(shù)據(jù)發(fā)送。
③ 1756-DNB,用于控制器與DeviceNet網(wǎng)絡(luò)設(shè)備之間的通信接口,如傳感器、變頻器、觸摸屏等控制元件。
④ 1756-DHRIO,用于DH+網(wǎng)絡(luò),支持遠(yuǎn)程編程和數(shù)據(jù)采集,實(shí)現(xiàn)一個小型同級對同級的網(wǎng)絡(luò)。
⑤ 1756-RIO,用于和遠(yuǎn)程I/O通信模塊連接,可以傳送浮點(diǎn)數(shù)據(jù)和專用數(shù)據(jù)[3]。
柳州卷煙廠煙葉庫空調(diào)溫濕度監(jiān)控系統(tǒng)采用ControlLogix平臺。一套控制器負(fù)責(zé)連接3臺TB2X系列數(shù)字溫濕度巡檢儀。巡檢儀只提供自定義通信協(xié)議,物理層采用兩線制RS- 485接口;工作于異步通信方式,1個起始位、8個數(shù)據(jù)位和1個停止位,波特率為19 200 bit/s或9 600 bit/s。因此,必須借助第三方通信模塊實(shí)現(xiàn)ControlLogix與溫濕度巡檢儀的串口通信。美國Prosoft公司提供的MVI56 ADM是一種C語言應(yīng)用開發(fā)模塊,能夠與ControlLogix的背槽直接通信,允許用戶開發(fā)的“C”應(yīng)用程序在ControlLogix平臺運(yùn)行[4]。該模塊支持兩個完全孤立的串行端口,允許多種串行現(xiàn)場設(shè)備集成到ControlLogix平臺;提供簡單的輸入/輸出功能,可直接訪問處理器的內(nèi)存,完成數(shù)據(jù)傳輸。該模塊特別適用于與自定義協(xié)議設(shè)備之間的通信。
整個煙葉庫溫濕度監(jiān)控系統(tǒng)的硬件構(gòu)成如圖1所示。上位機(jī)通過1784 PCIC控制網(wǎng)卡與ControlLogix通信,實(shí)現(xiàn)庫區(qū)溫濕度的實(shí)時監(jiān)視和對中央空調(diào)的遠(yuǎn)程控制。ControlLogix采用1756 L63作為控制器,MVI56 ADM模塊負(fù)責(zé)讀取3臺溫濕度巡檢儀上54個傳感器的數(shù)據(jù),并計(jì)算平均溫度和平均濕度??刂破靼凑账惴刂浦醒肟照{(diào)冷水閥、加熱閥和加濕閥的開度,實(shí)現(xiàn)對庫區(qū)溫濕度的自動控制。
圖1 硬件連接示意圖
ControlLogix控制器通過編寫梯形圖程序可以直接寫入或讀取MVI56 ADM模塊的輸入輸出映像區(qū)。輸入映像區(qū)占500 B,輸出映像區(qū)占496 B。數(shù)據(jù)刷新的頻率可以由用戶自行設(shè)定,一般在2~10 ms之間。MVI56 ADM模塊設(shè)置有內(nèi)部數(shù)據(jù)庫,可以從映像區(qū)中取出數(shù)據(jù)或者寫入數(shù)據(jù)。這些數(shù)據(jù)最后通過加載不同的用戶驅(qū)動程序,完成與外部網(wǎng)絡(luò)設(shè)備的交換。ControlLogix控制器、MVI56 ADM模塊以及外部設(shè)備三者之間的數(shù)據(jù)傳輸流程如圖2所示。
HCC 在我國的發(fā)病率和病死率均居前列,手術(shù)切除仍是目前主要的治療方式。然而,HCC 切除術(shù)后的復(fù)發(fā)和轉(zhuǎn)移成為影響手術(shù)效果和患者生存期的瓶頸。HCC 一旦發(fā)生轉(zhuǎn)移,即使積極治療,這些患者的 3年生存率也不足 20%[10]。包括 HCC在內(nèi),腫瘤轉(zhuǎn)移導(dǎo)致的相關(guān)死亡率為 90%[11],因此對 HCC 轉(zhuǎn)移機(jī)制的深入探討有助于臨床設(shè)計(jì)相關(guān)防治策略。
圖2 數(shù)據(jù)傳輸流程圖
MVI56 ADM模塊類似于一臺帶3個串口的計(jì)算機(jī),自帶一套通用嵌入式DOS6-XL操作系統(tǒng)。這個操作系統(tǒng)與DOS系統(tǒng)兼容,允許用戶實(shí)時、多任務(wù)處理。操作系統(tǒng)存儲在模塊的ROM中,當(dāng)模塊啟動時由BIOS加載進(jìn)去。該系統(tǒng)允許用戶使用標(biāo)準(zhǔn)DOS工具開發(fā)應(yīng)用程序,如Digital Mars C++和Borland公司的編譯器。用戶程序可以通過CONFIG.SYS或AUTOEXEC.BAT文件加載并自動執(zhí)行。
應(yīng)用程序編程接口函數(shù)(application programming interface,API)是MVI56 ADM模塊提供給用戶的接口函數(shù)。應(yīng)用程序可通過調(diào)用操作系統(tǒng)提供的相關(guān)API函數(shù),使操作系統(tǒng)通過應(yīng)用程序去執(zhí)行一些命令[5]。MVI56 ADM API函數(shù)允許用戶不需要詳細(xì)了解模塊的硬件結(jié)構(gòu)即可實(shí)現(xiàn)PLC背板訪問和串行通信。API函數(shù)包括3個不同的部分:SP API、BP API和ADM API,其中,SP API提供訪問串行端口,BP API提供訪問背槽接口,ADM API提供簡化用戶開發(fā)難度的功能。每個API提供了一個函數(shù)調(diào)用庫。該庫支持任何編程語言,且必須創(chuàng)建與用戶應(yīng)用程序的連接,并最終生成可執(zhí)行文件。MVI、ADM、API函數(shù)之間的關(guān)系如圖3所示。
圖3 MVI56、ADM、API函數(shù)關(guān)系圖
系統(tǒng)主要使用的軟件包括:用于ControlLogix PLC編程的軟件“RSLogix 5000”、C語言開發(fā)編程軟件“Borland C++ 5.1”、生成MVI56 ADM模塊硬盤映像文件“WINIMAGE”、下載硬盤映像文件至模塊的軟件“MVI Flash Update”,及Windows系統(tǒng)自帶串口調(diào)試工具“超級終端”。用戶可以到Prosoft公司的相關(guān)網(wǎng)站下載MVI56 ADM模塊的編程軟件,同時也可以下載相應(yīng)的使用說明書和案例代碼,以上軟件均需要使用。
整個通信程序主要包括讀取命令、發(fā)送命令、接收數(shù)據(jù)、寫入數(shù)據(jù)4部分。程序工作流程如圖4所示。
圖4 MVI56 ADM通信程序工作流程圖
系統(tǒng)要求能夠?qū)崿F(xiàn)遠(yuǎn)程讀取溫濕度巡檢儀的數(shù)據(jù),并可以寫入控制參數(shù)。實(shí)質(zhì)上就是MVI56 ADM模塊在讀取ControlLogix的數(shù)據(jù)后,通過串口發(fā)送這些數(shù)據(jù)指令至總線,巡檢儀接收到指令后按要求返回?cái)?shù)據(jù),模塊再接收總線上反饋的數(shù)據(jù),如此反復(fù)[6]。因此,通信程序設(shè)計(jì)的難點(diǎn)在于MVI56 ADM模塊。需要特別注意的是,如果終端一次返回較大的數(shù)據(jù)量,在發(fā)送指令完成后要做適當(dāng)?shù)难訒r處理,否則就會造成校驗(yàn)錯誤。根本原因是MVI56 ADM模塊串口接收區(qū)的數(shù)據(jù)還沒有來得及全部刷新。
3.3.1 創(chuàng)建工程文件
打開“Borland C++ 5.1”軟件,新建一個工程文件。在“Target Type”框里選擇“Application(.exe)”,在“Platform”框里選擇“DOS(Standard)”,在“Target Model”框里選擇“Large”,在“Math Support”選項(xiàng)中點(diǎn)中“Emulation”,最后點(diǎn)擊“OK”按鈕。在彈出的窗口中刪除“.cpp”文件。在新建工程的“.exe”文件列表處點(diǎn)右鍵選中“Add Node”菜單,打開窗口在文件類型,選擇“*.lib”,依次加入“admapi.lib”、“mvispapi.lib”、“mvibpapi.lib”、“mviscapi.lib”“cipapi.lib”庫函數(shù)。這些庫函數(shù)的源文件可以通過訪問Prosoft公司官方網(wǎng)站,下載資料包“ADM_TOOL_MVI.ZIP”解壓獲取。
3.3.2 設(shè)計(jì)主函數(shù)
② 設(shè)置端口參數(shù):打開PRT2端口,波特率19 200 bit/s、無奇偶校驗(yàn)、8個數(shù)據(jù)位、1個停止位。
MVIsp_Open(COM2,BAUD_19200,PARITY_NONE,WORDLEN8,STOPBITS1)
③ 讀取命令:讀取ControlLogix數(shù)據(jù)指令。以下程序是讀取MVI56 ADM模塊數(shù)據(jù)映像區(qū)的30 B的數(shù)據(jù)(前4個為模塊狀態(tài)數(shù)據(jù),因此從4開始讀取),數(shù)據(jù)存儲在數(shù)組rdbuff中。
ADM_BtOpen(adm_handle,interface_ptr,1);
MVIcip_ReadConnected(interface_ptr->handle,ConnHandle,(BYTE*)rdbuff,4,30);
④ 發(fā)送命令:將數(shù)組rdbuff從PRT2端口發(fā)送。其中,len為數(shù)組長度,TIMEOUT_ASAP為超時設(shè)定。
MVIsp_PutData(COM2,&rdbuff[0], &len,TIMEOUT_ASAP);
⑤ 接收數(shù)據(jù):讀取終端返回的數(shù)據(jù),存儲在數(shù)組data中,n為數(shù)據(jù)長度,TIMEOUT_ASAP為超時設(shè)定。
MVIsp_GetData(COM2,data,&n,TIMEOUT_ASAP);
⑥ 寫入數(shù)據(jù):將數(shù)組data中的數(shù)據(jù)寫入ControlLogix,共計(jì)78 B。
MVIcip_WriteConnected(interface_ptr->handle,ConnHandle,data,0,77)
⑦ 關(guān)閉通信:ADM_BtClose(adm_handle,interface_ptr);MVIsp_Close(COM2)。
3.3.3 程序下載
編譯前面的工程文件,生成可執(zhí)行文件,如命名為ADM.EXE。打開“WINIMAGE”軟件,選擇新建一個“1.44 MB”磁盤格式,在“Options”中選中“Truncate unused image part”,截掉未使用的空間。選擇“CONFIG.SYS”、“AUTOEXEC.BAT”、“TINYCMD.COM”、“MVI56BP.EXE”、“ADM.EXE”文件并加入,最后選擇“Save As”,另存為IMG格式,生成用戶程序映像文件。背槽硬件驅(qū)動程序“MVI56BP.EXE”和用戶自己編寫的程序“ADM.EXE”必須通過創(chuàng)建批處理命令被系統(tǒng)自動調(diào)用并執(zhí)行。
當(dāng)啟動模塊時,按住“Ctrl-C”鍵,接著出現(xiàn)提醒用戶配置PRT1端口的信息,設(shè)置正確的串口通信參數(shù)。然后將一臺計(jì)算機(jī)的RS-232口與MVI56 ADM模塊的“PRT1”口相連接,打開軟件“MVIUPDAT.EXE”,再次給MVI56 ADM模塊上電,計(jì)算機(jī)屏幕上將會顯示“Main Menu”。選擇“UPDATE FLASH DISK IMAGE”,按照程序的提醒輸入要下載的IMG文件名。下載完成后選擇“REBOOT MODULE”,重新啟動模塊。
在“RSLogix5000”硬件配置中增加第三方模塊。在彈出窗口“Connection Parameters”選項(xiàng)“input”輸入1和250,“output”輸入2和248,“configuration”輸入4和0。在用戶的梯形圖程序中,需要發(fā)送的數(shù)據(jù)存儲在數(shù)組中,并用“COP”指令將數(shù)據(jù)送入“Local:8:O.Data”。從模塊中讀取數(shù)據(jù)也用“COP”指令讀取“Local:8:I.Data”,其中8指的是模塊安裝的插槽[7]。ControlLogix通過循環(huán)寫入和讀取MVI56 ADM模塊輸入輸出映像區(qū)的數(shù)據(jù),實(shí)現(xiàn)與外部設(shè)備的數(shù)據(jù)通信。
本文采用第三方模塊MVI56 ADM解決了ControlLogix系統(tǒng)與自定協(xié)議設(shè)備之間的通信,應(yīng)用串口技術(shù)為ControlLogix系統(tǒng)與各種設(shè)備之間通信提供了一種通用的實(shí)現(xiàn)方法,擴(kuò)展了系統(tǒng)應(yīng)用的靈活性。實(shí)踐表明,以上通信解決方案數(shù)據(jù)傳輸穩(wěn)定、刷新速度快且易于實(shí)現(xiàn),完全滿足煙葉庫區(qū)對溫濕度檢測實(shí)時監(jiān)控的要求。MVI56 ADM模塊為ControlLogix系統(tǒng)與自定義協(xié)議設(shè)備之間的通信提供了高效解決方案,具有較好的推廣和應(yīng)用價值。
[1] 錢曉龍.ControlLogix系統(tǒng)電力行業(yè)自動化應(yīng)用培訓(xùn)教程[M].北京:機(jī)械工業(yè)出版社,2009:46-54.
[2] 鄧?yán)?ControlLogix系統(tǒng)實(shí)用手冊[M].北京:機(jī)械工業(yè)出版社,2008:102-110.
[3] 張本舉.ControlLogix系統(tǒng)在煤氣站的應(yīng)用[J].自動化儀表,2009(5):22-24.
[4] 夏志英.ControlLogix控制系統(tǒng)在熱煤爐中的應(yīng)用[J].石油規(guī)劃設(shè)計(jì),2010(4):49-51.
[5] 蒲靖榮,杜開勛,朱占清,等.基于網(wǎng)絡(luò)和Modbus協(xié)議的遠(yuǎn)程監(jiān)控系統(tǒng)[J].自動化儀表,2009(7):52-54.
[6] 浙江大學(xué)羅克韋爾自動化技術(shù)中心.可編程序控制器系統(tǒng)[M].杭州:浙江大學(xué)出版社,2000:32-45.
[7] 孔凡才.自動控制系統(tǒng)-工作原理、性能分析與系統(tǒng)調(diào)試[M].北京:機(jī)械工業(yè)出版社,2003:239-241.