(廣西中煙工業有限責任公司1,廣西 柳州 545005;北京中電紅石科技有限公司2,北京 100083)
ControlLogix是美國羅克韋爾公司生產的大型、高端新一代集成通信與控制平臺,廣泛應用于鋼鐵、汽車、冶金、煙草等行業。它提供了單一的集成化控制架構,能夠實現離散、傳動、運動、過程控制任務,其處理器自帶有RS-232(DFl協議)端口。同時,用戶可以通過擴展通信模塊實現與Ethernet、ControlNet、DeviceNet和普通的Remote I/O鏈路之間的通信,可以插入第三方通信接口模塊連接到Modbus、Profibus等國際標準協議網絡上[1]。
然而現階段,企業仍有一些在用的設備和儀表采用自定義通信協議而非標準協議,導致ControlLogix系統與其不能相互實現高速的數據傳輸。為了使自定義協議設備實現與ControlLogix系統方便、快捷地互聯通信,本文以廣西中煙公司煙葉庫溫濕度控制系統為例,在分析ControlLogix各類通信接口、第三方提供的不同通信模塊功能的基礎上,提出了一種通過串行通信實現與自定義協議設備通信的方案,解決了ControlLogix系統與自定義協議設備之間的通信難題。
ControlLogix平臺自帶有RS-232端口,但其與外部設備交換數據都需要另外插入通信擴展模塊。RS-232端口可以與調制解調器實現DF1協議通信,也可以實現發送接收ASCII碼如條形碼閱讀器、打印機等,還可以借助AIC+高級接口轉換器(1761-NET-AIC),將ControlLogix控制器連接到RS- 485網絡,實現Modbus一主多從通信[2]。在插入模塊擴展通信功能方面,制造商羅克韋爾公司只提供以下幾種常見類型。
① 1756-ENET,用于以太網通信接口模塊,支持TCP/IP協議,用于計算機和有關設備之間的高速信息交換。
② 1756-CNBR,用于高速確定性ControlNet網絡,與同級別的設備提供實時信息和數據發送。
③ 1756-DNB,用于控制器與DeviceNet網絡設備之間的通信接口,如傳感器、變頻器、觸摸屏等控制元件。
④ 1756-DHRIO,用于DH+網絡,支持遠程編程和數據采集,實現一個小型同級對同級的網絡。
⑤ 1756-RIO,用于和遠程I/O通信模塊連接,可以傳送浮點數據和專用數據[3]。
柳州卷煙廠煙葉庫空調溫濕度監控系統采用ControlLogix平臺。一套控制器負責連接3臺TB2X系列數字溫濕度巡檢儀。巡檢儀只提供自定義通信協議,物理層采用兩線制RS- 485接口;工作于異步通信方式,1個起始位、8個數據位和1個停止位,波特率為19 200 bit/s或9 600 bit/s。因此,必須借助第三方通信模塊實現ControlLogix與溫濕度巡檢儀的串口通信。美國Prosoft公司提供的MVI56 ADM是一種C語言應用開發模塊,能夠與ControlLogix的背槽直接通信,允許用戶開發的“C”應用程序在ControlLogix平臺運行[4]。該模塊支持兩個完全孤立的串行端口,允許多種串行現場設備集成到ControlLogix平臺;提供簡單的輸入/輸出功能,可直接訪問處理器的內存,完成數據傳輸。該模塊特別適用于與自定義協議設備之間的通信。
整個煙葉庫溫濕度監控系統的硬件構成如圖1所示。上位機通過1784 PCIC控制網卡與ControlLogix通信,實現庫區溫濕度的實時監視和對中央空調的遠程控制。ControlLogix采用1756 L63作為控制器,MVI56 ADM模塊負責讀取3臺溫濕度巡檢儀上54個傳感器的數據,并計算平均溫度和平均濕度。控制器按照算法控制中央空調冷水閥、加熱閥和加濕閥的開度,實現對庫區溫濕度的自動控制。

圖1 硬件連接示意圖
ControlLogix控制器通過編寫梯形圖程序可以直接寫入或讀取MVI56 ADM模塊的輸入輸出映像區。輸入映像區占500 B,輸出映像區占496 B。數據刷新的頻率可以由用戶自行設定,一般在2~10 ms之間。MVI56 ADM模塊設置有內部數據庫,可以從映像區中取出數據或者寫入數據。這些數據最后通過加載不同的用戶驅動程序,完成與外部網絡設備的交換。ControlLogix控制器、MVI56 ADM模塊以及外部設備三者之間的數據傳輸流程如圖2所示。
HCC 在我國的發病率和病死率均居前列,手術切除仍是目前主要的治療方式。然而,HCC 切除術后的復發和轉移成為影響手術效果和患者生存期的瓶頸。HCC 一旦發生轉移,即使積極治療,這些患者的 3年生存率也不足 20%[10]。包括 HCC在內,腫瘤轉移導致的相關死亡率為 90%[11],因此對 HCC 轉移機制的深入探討有助于臨床設計相關防治策略。

圖2 數據傳輸流程圖
MVI56 ADM模塊類似于一臺帶3個串口的計算機,自帶一套通用嵌入式DOS6-XL操作系統。這個操作系統與DOS系統兼容,允許用戶實時、多任務處理。操作系統存儲在模塊的ROM中,當模塊啟動時由BIOS加載進去。該系統允許用戶使用標準DOS工具開發應用程序,如Digital Mars C++和Borland公司的編譯器。用戶程序可以通過CONFIG.SYS或AUTOEXEC.BAT文件加載并自動執行。
應用程序編程接口函數(application programming interface,API)是MVI56 ADM模塊提供給用戶的接口函數。應用程序可通過調用操作系統提供的相關API函數,使操作系統通過應用程序去執行一些命令[5]。MVI56 ADM API函數允許用戶不需要詳細了解模塊的硬件結構即可實現PLC背板訪問和串行通信。API函數包括3個不同的部分:SP API、BP API和ADM API,其中,SP API提供訪問串行端口,BP API提供訪問背槽接口,ADM API提供簡化用戶開發難度的功能。每個API提供了一個函數調用庫。該庫支持任何編程語言,且必須創建與用戶應用程序的連接,并最終生成可執行文件。MVI、ADM、API函數之間的關系如圖3所示。

圖3 MVI56、ADM、API函數關系圖
系統主要使用的軟件包括:用于ControlLogix PLC編程的軟件“RSLogix 5000”、C語言開發編程軟件“Borland C++ 5.1”、生成MVI56 ADM模塊硬盤映像文件“WINIMAGE”、下載硬盤映像文件至模塊的軟件“MVI Flash Update”,及Windows系統自帶串口調試工具“超級終端”。用戶可以到Prosoft公司的相關網站下載MVI56 ADM模塊的編程軟件,同時也可以下載相應的使用說明書和案例代碼,以上軟件均需要使用。
整個通信程序主要包括讀取命令、發送命令、接收數據、寫入數據4部分。程序工作流程如圖4所示。

圖4 MVI56 ADM通信程序工作流程圖
系統要求能夠實現遠程讀取溫濕度巡檢儀的數據,并可以寫入控制參數。實質上就是MVI56 ADM模塊在讀取ControlLogix的數據后,通過串口發送這些數據指令至總線,巡檢儀接收到指令后按要求返回數據,模塊再接收總線上反饋的數據,如此反復[6]。因此,通信程序設計的難點在于MVI56 ADM模塊。需要特別注意的是,如果終端一次返回較大的數據量,在發送指令完成后要做適當的延時處理,否則就會造成校驗錯誤。根本原因是MVI56 ADM模塊串口接收區的數據還沒有來得及全部刷新。
3.3.1 創建工程文件
打開“Borland C++ 5.1”軟件,新建一個工程文件。在“Target Type”框里選擇“Application(.exe)”,在“Platform”框里選擇“DOS(Standard)”,在“Target Model”框里選擇“Large”,在“Math Support”選項中點中“Emulation”,最后點擊“OK”按鈕。在彈出的窗口中刪除“.cpp”文件。在新建工程的“.exe”文件列表處點右鍵選中“Add Node”菜單,打開窗口在文件類型,選擇“*.lib”,依次加入“admapi.lib”、“mvispapi.lib”、“mvibpapi.lib”、“mviscapi.lib”“cipapi.lib”庫函數。這些庫函數的源文件可以通過訪問Prosoft公司官方網站,下載資料包“ADM_TOOL_MVI.ZIP”解壓獲取。
3.3.2 設計主函數
② 設置端口參數:打開PRT2端口,波特率19 200 bit/s、無奇偶校驗、8個數據位、1個停止位。
MVIsp_Open(COM2,BAUD_19200,PARITY_NONE,WORDLEN8,STOPBITS1)
③ 讀取命令:讀取ControlLogix數據指令。以下程序是讀取MVI56 ADM模塊數據映像區的30 B的數據(前4個為模塊狀態數據,因此從4開始讀取),數據存儲在數組rdbuff中。
ADM_BtOpen(adm_handle,interface_ptr,1);
MVIcip_ReadConnected(interface_ptr->handle,ConnHandle,(BYTE*)rdbuff,4,30);
④ 發送命令:將數組rdbuff從PRT2端口發送。其中,len為數組長度,TIMEOUT_ASAP為超時設定。
MVIsp_PutData(COM2,&rdbuff[0], &len,TIMEOUT_ASAP);
⑤ 接收數據:讀取終端返回的數據,存儲在數組data中,n為數據長度,TIMEOUT_ASAP為超時設定。
MVIsp_GetData(COM2,data,&n,TIMEOUT_ASAP);
⑥ 寫入數據:將數組data中的數據寫入ControlLogix,共計78 B。
MVIcip_WriteConnected(interface_ptr->handle,ConnHandle,data,0,77)
⑦ 關閉通信:ADM_BtClose(adm_handle,interface_ptr);MVIsp_Close(COM2)。
3.3.3 程序下載
編譯前面的工程文件,生成可執行文件,如命名為ADM.EXE。打開“WINIMAGE”軟件,選擇新建一個“1.44 MB”磁盤格式,在“Options”中選中“Truncate unused image part”,截掉未使用的空間。選擇“CONFIG.SYS”、“AUTOEXEC.BAT”、“TINYCMD.COM”、“MVI56BP.EXE”、“ADM.EXE”文件并加入,最后選擇“Save As”,另存為IMG格式,生成用戶程序映像文件。背槽硬件驅動程序“MVI56BP.EXE”和用戶自己編寫的程序“ADM.EXE”必須通過創建批處理命令被系統自動調用并執行。
當啟動模塊時,按住“Ctrl-C”鍵,接著出現提醒用戶配置PRT1端口的信息,設置正確的串口通信參數。然后將一臺計算機的RS-232口與MVI56 ADM模塊的“PRT1”口相連接,打開軟件“MVIUPDAT.EXE”,再次給MVI56 ADM模塊上電,計算機屏幕上將會顯示“Main Menu”。選擇“UPDATE FLASH DISK IMAGE”,按照程序的提醒輸入要下載的IMG文件名。下載完成后選擇“REBOOT MODULE”,重新啟動模塊。
在“RSLogix5000”硬件配置中增加第三方模塊。在彈出窗口“Connection Parameters”選項“input”輸入1和250,“output”輸入2和248,“configuration”輸入4和0。在用戶的梯形圖程序中,需要發送的數據存儲在數組中,并用“COP”指令將數據送入“Local:8:O.Data”。從模塊中讀取數據也用“COP”指令讀取“Local:8:I.Data”,其中8指的是模塊安裝的插槽[7]。ControlLogix通過循環寫入和讀取MVI56 ADM模塊輸入輸出映像區的數據,實現與外部設備的數據通信。
本文采用第三方模塊MVI56 ADM解決了ControlLogix系統與自定協議設備之間的通信,應用串口技術為ControlLogix系統與各種設備之間通信提供了一種通用的實現方法,擴展了系統應用的靈活性。實踐表明,以上通信解決方案數據傳輸穩定、刷新速度快且易于實現,完全滿足煙葉庫區對溫濕度檢測實時監控的要求。MVI56 ADM模塊為ControlLogix系統與自定義協議設備之間的通信提供了高效解決方案,具有較好的推廣和應用價值。
[1] 錢曉龍.ControlLogix系統電力行業自動化應用培訓教程[M].北京:機械工業出版社,2009:46-54.
[2] 鄧李.ControlLogix系統實用手冊[M].北京:機械工業出版社,2008:102-110.
[3] 張本舉.ControlLogix系統在煤氣站的應用[J].自動化儀表,2009(5):22-24.
[4] 夏志英.ControlLogix控制系統在熱煤爐中的應用[J].石油規劃設計,2010(4):49-51.
[5] 蒲靖榮,杜開勛,朱占清,等.基于網絡和Modbus協議的遠程監控系統[J].自動化儀表,2009(7):52-54.
[6] 浙江大學羅克韋爾自動化技術中心.可編程序控制器系統[M].杭州:浙江大學出版社,2000:32-45.
[7] 孔凡才.自動控制系統-工作原理、性能分析與系統調試[M].北京:機械工業出版社,2003:239-241.