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