郭福田,劉心紅,曾麗麗,趙 忖,張 昕
(東北石油大學秦皇島分校應用技術學院,河北秦皇島066004)
自主儀器中ADAM ASCII協議通信接口的設計與實現
郭福田,劉心紅,曾麗麗,趙 忖,張 昕
(東北石油大學秦皇島分校應用技術學院,河北秦皇島066004)
分析了工業(yè)控制系統中常用的研華ADAM 4000系列模塊與計算機之間的通信協議,以及組態(tài)軟件讀取研華ADAM 4000系列模塊的通信過程,在以單片機為核心的自主儀器中采用了研華ADAM 4000系列模塊的部分通信協議,實現了自主儀器模擬ADAM模塊與組態(tài)軟件的通信,該方法為解決自行設計儀器與組態(tài)軟件接口問題,提出了一種技術簡單、方便易行的解決途徑。
通信協議;ADAM模塊;接口;組態(tài)軟件;ASCII碼
隨著計算機在工業(yè)領域的廣泛應用,控制系統中涉及到種類繁多的控制設備和過程監(jiān)控裝置,使用常用編程語言開發(fā)工業(yè)控制軟件,編程復雜,程序重復使用率低,維護不方便,已難以滿足現場的各種需求[1]。組態(tài)軟件的出現為解決這種實際問題提供了一種新的方法,使用戶能根據自己的控制對象和控制目的任意組態(tài),易于完成實際的計算機控制。當用戶需求發(fā)生改變時,不需作很多修改可方便地完成軟件的更新和升級。組態(tài)軟件除了在畫面制作上,易于實現動畫效果、實時數據、歷史數據和曲線的顯示、多媒體應用和網絡傳輸等功能外,其主要優(yōu)勢還在于組態(tài)軟件提供了大量底層設備(PLC可編程控制器、智能儀表、智能模塊、板卡、變頻器等)的驅動程序,便于與市場上流行的各種工業(yè)控制板卡及數據采集模塊接口,方便快捷地構建數據監(jiān)控系統,在自動化控制領域的應用越來越多[2]。
筆者在開發(fā)大港油田某輸油站遠程監(jiān)控系統中,上位機監(jiān)控軟件采用目前國內流行的組態(tài)軟件組態(tài)王,系統中除了采用了多個研華ADAM 4052八路光隔離數據輸入模塊外,還根據實際系統的需要采用了多個自主開發(fā)的可燃氣體報警器。組態(tài)軟件驅動支持與ADAM 4052模塊的通信,而不支持筆者前期自主開發(fā)的可燃氣體報警器的通信協議。為了使組態(tài)王支持自主開發(fā)的設備(后文簡稱自主儀器)通信,需要對自主儀器的通信協議進行改造??紤]到研華ADAM模塊在工業(yè)領域的廣泛應用,以及其通信協議簡單、可靠,實現方便等特點,決定在自主儀器中模擬研華ADAM 4000系列模塊的通信協議,將自主儀器仿真為ADAM模塊,使組態(tài)軟件誤以為自主儀器是ADAM模塊而用ADAM模塊的驅動程序實現與自主儀器的通信。
本文介紹了研華ADAM 4000系列模塊與計算機通信的協議,分析了組態(tài)軟件讀取研華ADAM模塊的通信過程,開發(fā)了自主儀器模擬為ADAM模塊的通信協議,并用組態(tài)軟件進行了通信測試,實現了自主儀器與組態(tài)軟件通信的問題。
ADAM 4000系列智能遠程測控模塊種類繁多,功能齊全,包括數字量輸入/輸出模塊、模擬量輸入/輸出模塊、頻率測量模塊、溫度測量模塊等,在工業(yè)遠程測控領域應用極為廣泛。ADAM 4000系列模塊內置微控制器及RS-485通信接口,采用ASCII碼字符串格式的簡單串行通信協議[3],以查詢應答方式與計算機構成主從通信,主機方可用任何高級語言進行編程。通信時由主機主動發(fā)出查詢請求命令,ADAM模塊作為從機處于等待主機來查詢的應答狀態(tài)。通信中收到與主機請求命令中指定地址相符的模塊接收該命令,并判斷請求命令正確之后,對請求進行處理,返回應答幀(包含主機查詢的數據)。如判斷請求命令不正確,如幀格式錯誤,校驗錯誤等,則不會有應答。主機到ADAM模塊的請求命令幀格式如下:
其中起始符是%$#@其中之一,分別對應不同類型的查詢命令,如通信參數配置類命令以%開始,模塊參數標定類命令以$開始,讀取模塊數據類指令以#開始,報警設置類命令以@開始等。模塊地址為兩個16進制的數值的ASCII碼字符,其地址范圍為0到FF,如模塊地址為1則地址字段用“01”兩個字符表示。命令字段為向模塊發(fā)出的請求命令,由0到2個大寫字母表示,如讀取指定模塊名稱的命令,則命令字段為“M”。數據字段依據命令是否帶有數據而存在,如對于模擬量輸出模塊,數據字段用“15.000”表示輸出電流為15mA。幀結束字段均為回車符,其ASCII碼值為0D。校驗碼用于檢查數據傳送時通信過程中有無誤碼,為了確保在干擾較大的工業(yè)環(huán)境中通信的可靠性,ADAM 4000系列模塊可配置為采用校驗和對傳輸幀進行校驗,該校驗碼產生方法如下:從起始符到校驗字段之前的所有字符的ASCII碼之和,取和的16進制值的低2位的ASCII碼作為校驗字段。如對于讀取指定模塊名稱的請求命令幀,模塊未啟用校驗功能時,主機發(fā)送請求命令為$01M(cr)。模塊啟用校驗功能后,主機發(fā)送的請求命令為$01MD2(cr),這里:
其中:24 30 31 4D分別為$0 1 M四個字符的ASCII碼16進制數值,其和的低2位16進制數為D2即為校驗和。
ADAM 4000系列模塊對主機的正確請求命令的應答幀格式如下:
當模塊收到無效的請求命令時應答幀的起始符為?,后跟模塊地址和回車符作為應答。
當模塊收到有效的命令時應答幀的起始符為!。地址和結束符同請求命令幀。數據字段為模塊對主機請求命令應答的數據。校驗碼的算法同請求命令幀。
從以上介紹可以看出,ADAM 4000系列模塊的通信協議簡單、可靠,易于實現。但ADAM 4000系列模塊有25種左右,每種又有十多條命令,在設計自主儀器時,可選擇與自主儀器功能相近的ADAM模塊,實現其必要的通信命令,其他功能直接在自主儀器軟件中固定設置,不必采用通信命令設置,就可大大簡化自主儀器的設計。
在開發(fā)大港油田某輸油站遠程監(jiān)控系統中,上位機采用組態(tài)軟件組態(tài)王,下位機采用ADAM 4052開關量輸入模塊和筆者自主研發(fā)的以單片機為核心的可燃氣體報警器,每臺報警器檢測多路可燃氣體濃度值并具有濃度超限報警功能。為了實現組態(tài)軟件與ADAM模塊和自主儀器的通信,擬在報警器中采用ADAM模塊的通信協議。由于報警器的功能與研華ADAM 4017八路模擬量輸入模塊類似,因此選用ADAM 4017模塊的通信命令,使組態(tài)軟件認為所連報警器為研華的ADAM 4017模塊。
ADAM 4017模塊有10種與上位機通信的命令,即模塊通信參數配置命令、模塊參數標定命令、讀模塊數據命令、報警狀態(tài)命令等。這些命令全部實現將增加自主儀器設計難度,筆者通過對ADAM 4017模塊與組態(tài)王通信過程分析,確認要實現組態(tài)軟件與ADAM 4017模塊通信最少需要實現兩種命令:一種是$AAM,讀模塊名稱命令,組態(tài)軟件內部使用此命令與確認模塊的運行是否正常。另一種是#AAN,N=1…8,讀取一路模擬量數據的命令。
這兩種命令使用方法如下:
2.1 $AAM[校驗](cr)
這是主機發(fā)送讀取地址為AA的模塊名的命令,其中$為起始符,AA為模塊地址,M為讀取模塊名命令,校驗碼為前面字符的校驗和,(cr)為結束符。
如果上述命令中地址不存在或命令傳輸過程中出錯,模塊不作響應。若請求幀正確時,模塊響應幀為:!AA(模塊名)[校驗](cr)。應答的起始符為!,模塊名即模塊的名稱,其它同請求幀。
例如:不使用校驗和時,主機發(fā)送請求幀$01M(cr),模塊返回應答幀!014017(cr)。
如果使用校驗和,則主機發(fā)送請求幀$01MD2(cr),模塊返回應答幀!0140174E(cr)。其中D2和4E為校驗和。
2.2 #AAN[校驗](cr)
這是主機發(fā)送讀取地址為AA的模塊中第N(N為0到7)通道模擬量值的命令,其中#為起始符,AA為模塊地址,N為通道號,校驗碼為前面字符的校驗和,(cr)為結束符。
如果命令中地址不配或命令傳輸過程中出錯,模塊不作響應。若請求幀正確,模塊響應幀為:>(數據)[校驗](cr)。這里應答幀的起始符為>,數據為模擬輸出的模擬量值,其它同發(fā)送的請求幀。
例如:不使用校驗和時,主機發(fā)送請求幀#011(cr),模塊返回應答幀>+7.2111(cr),其中模塊地址為01,+7.2111為第一路模擬量數值。
如果使用校驗和,則主機發(fā)送請求幀#0184(cr),模塊返回應答幀>+7.211193(cr)。其中84為#018的校驗和,93為>+7.2111的校驗和。
注意,在自主儀器與上位機通信時,其地址是固定的,如第一臺自主儀器的地址為01,則上述第1種請求命令幀固定為:$01M(cr)。但第2種命令來說,若要讀取自主儀器8個通道的模擬量數據,則要實現的命令請求幀為:#010(cr)、#011(cr)、#012(cr)、#013(cr)、#014(cr)、#015(cr)、#016(cr)、#017(cr)。因此設計自主儀器模擬為ADAM 4017模塊的8個通道時,要實現對9條命令的應答。
筆者通過對自主研發(fā)的可燃氣體報警器中單片機通信部分程序重新編程[4],實現了對第2節(jié)中介紹的兩種通信請求命令的應答,將自主儀器偽裝為ADAM 4017模塊,監(jiān)控系統中組態(tài)軟件誤以為是與ADAM 4017模塊實際是與自主儀器進行通信。為了測試報警器的通信協議,構建圖1所示的測試系統。監(jiān)控機通過RS-232/RS-485轉換器連接到具有ADAM 4017模塊通信命令的報警器,報警器上接了四個可燃氣體檢測傳感器,監(jiān)控機上安裝組態(tài)王軟件。其系統連接如圖1所示:
圖1 測試系統連接圖
測試系統功能為主機定時發(fā)送查詢報警器的四路傳感器數據命令,得到四路可燃氣體濃度數據并顯示,然后與可燃氣體濃度預設報警上限進行比較,超過一定值時進行報警。
組態(tài)軟件的設計過程如下:在其工程瀏覽器中新建一個COM1設備——報警器;在數據字典中新建4個I/O實數變量分別對應報警器的AIMIN1、AIMIN2、AIMIN 3、AIMIN 4模塊輸入通道,數據類型均選擇FLOAT;新建監(jiān)測畫面,放置提示文本、數據文本及圖形,布局如圖2所示;設置數據文本的動畫連接的模擬值輸出為相應報警器的輸入變量;圖形的動畫連接的填充屬性設置為綠給分正常,紅表示報警;配置運行系統主畫面為該監(jiān)測畫面[5]。運行組態(tài)系統,可看到實時顯示了可燃氣體濃度的當前值及報警狀態(tài),如圖3所示。
圖2 組態(tài)軟件監(jiān)測設計圖
圖3 組態(tài)軟件監(jiān)測運行圖
上述測試表明,組態(tài)軟件可以正確地實時地讀取自主儀器設備采集到的模擬量數據并進行相應的處理。
本文對自主研發(fā)的可燃氣體報警器所采用的通信協議進行改造,模擬了研華ADAM模塊中簡單可靠的通信協議,實現了組態(tài)軟件對自主儀器的驅動問題,使得自主儀器方便地用于由組態(tài)軟件設計的監(jiān)控系統中,充分利用了自主儀器和組態(tài)軟件的優(yōu)勢。此通信技術已用在大港油田某大站的可燃氣體監(jiān)測報警監(jiān)測系統中,多年來運行穩(wěn)定,效果良好。本文提出的自主儀器與組態(tài)軟件通信技術,可用于監(jiān)控軟件為組態(tài)王等組態(tài)軟件,遠程監(jiān)控模塊可以是模擬量的輸入/輸出,也可以是數字量輸入/輸出,通信協議可以仿真研華ADAM串行通信協議,也可以仿真組態(tài)軟件支持的其它網絡通信協議。該方法應用范圍廣,具有一定的推廣價值。
[1]胡志華,趙文兵.工控組態(tài)軟件[M].北京:電子工業(yè)出版社,2007:12-13.
[2]龔運新,方立友.工業(yè)組態(tài)軟件實用技術[M].北京:清華大學出版社,2005:3-5.
[3]李傳鋒,沈安文,趙方亮.基于MSP430的智能儀表與組態(tài)王的通訊設計[J].微計算機信息,2007,23(8):91-92.
[4]郭福田,楊克遠,包天悅.單片機應用基礎教程[M].北京:石油工業(yè)出版社,2009:126-138
[5]張博文,鄧廣龍,李喜東.基于智能模塊和組態(tài)王的機場環(huán)境監(jiān)控系統設計[J].黑龍江科學,2012,3(8):44-46.
Design and Im plementation of Communications Interface w ith Adam ASCIIProtocol in Self-M aking Instrument
GUO Fu-tian,LIU Xin-hong,ZENG Li-li,ZHAO Cun,ZHANG Xin
(School of Applied Technology,School of Qinghuangdao of Northeast Petroleum University,Qinghuangdao 066004,China)
The paper analyses the communication protocol between PC and ADAM module in the industrial control system,and the communication process of the configuration software reading the ADAM 4000 Modules.U-sing the part of communication protocol of ADAM 4000 modules on instrument of development initiatively that core is single-chip microcomputer.that realized the communication between configuration software and instrument of development initiatively.Thismethod is sample and easy away of interface technology between configuration software and instrument of development initiatively.
communication protocol;ADAM module;interface;configuration software;ASCII code
郭福田(1965-),男,陜西蒲城人,東北石油大學秦皇島分校應用技術學院副教授,從事計算機控制、數據通信等教學與研究。
河北省高等教育學會高等教育科學研究課題(GTXH2013-186)。
TP2
A
2095-0063(2013)06-0031-04
2013-09-21