張營建,臧珠萍,曾培峰
(東華大學計算機科學與技術學院,上海 201620)
控制軟件中設備無關性的設計與實現(xiàn)*
張營建,臧珠萍,曾培峰
(東華大學計算機科學與技術學院,上海 201620)
提出一種設備無關的控制軟件設計理念.用文本文件格式保存各種外設的通信協(xié)議格式以及端口地址定義,通過工作空間和命令轉(zhuǎn)換器,為計算機控制程序提供統(tǒng)一的通信接口.使用標準XML映射的方法實現(xiàn)物理地址與邏輯地址的匹配.外設的通信協(xié)議格式變化或者端口改變,無需修改控制軟件,只要修改相應的外設文本文件,進行命令轉(zhuǎn)換和地址映射即可完成數(shù)據(jù)通信,實現(xiàn)設備無關性.
設備無關性;物理地址;邏輯地址;M ap映射
工控領域的監(jiān)控系統(tǒng)中,對外設的監(jiān)控主要通過上位機發(fā)送命令、下位機響應命令的方法實現(xiàn).上位機和外設的監(jiān)控方式主要有兩種:一種是用戶以Window s的編程語言編寫上位機程序,然后通過串行口發(fā)送命令,與外設交換數(shù)據(jù)實現(xiàn)監(jiān)控.文獻[1-2]給出了松下 PLC與計算機的通信實現(xiàn);文獻[3]研究了富士 PLC在高速數(shù)字控制系統(tǒng)中的應用.這兩種應用都基于了解設備的通信協(xié)議和通信格式.有些設備廠家的通信驅(qū)動并不公開,為用戶預留一個自由口通信方式,由用戶自定義通信協(xié)議格式,西門子PLC的一般用戶只能采用這種通信方式[4-5].另外一種方式是利用組態(tài)軟件對系統(tǒng)進行工業(yè)組態(tài).目前很多專業(yè)的組態(tài)軟件可以進行系統(tǒng)組態(tài)[6-9].文獻[10]列舉了多種工控組態(tài)軟件的應用,并進行了對比.常用的組態(tài)軟件有西門子公司的 WinCC、美國 WonderWare公司的 In Touch;國內(nèi)的產(chǎn)品主要有北京亞控自動化軟件有限公司的組態(tài)王、北京昆侖通態(tài)自動化軟件科技有限公司的MCGS等.文獻[11]比較了高級語言和組態(tài)軟件兩種方式的不同.W indows編程方式優(yōu)點是:投入成本低,并能根據(jù)需要隨時對程序進行升級,便于程序的二次開發(fā).但是對于初級人員,入門有一定難度,不僅需要了解完整的通信過程,熟悉編程軟件,而且需要一定的時間來完成程序的編制與調(diào)試.應用組態(tài)軟件方式的優(yōu)點是:開發(fā)周期短,不需要了解通信過程,只要調(diào)用相應的驅(qū)動程序即可實現(xiàn)通信.缺點是軟件的二次開發(fā)受到一定限制,購買專用的組態(tài)軟件成本比較高.實際生產(chǎn)中,如果對外設的控制速度要求不太高,或者在成本有限的情況下,通常采用W indows的編程方式.但是這種方式,程序的開發(fā)和外設的通信格式、協(xié)議以及端口密切相關,外設的改變或者外設端口的改變,都會導致程序的再次開發(fā).
本文提出一種設備無關[12-13]的控制軟件設計理念.將各種外設的通信協(xié)議格式以及端口地址以XML格式保存在映射文件中.上位機對外設進行監(jiān)控時,讀入相應的映射文件,用標準 xml[14-15]來解析映射關系,實現(xiàn)物理地址與邏輯地址的匹配及控制命令格式的轉(zhuǎn)換,完成上位機與外設的數(shù)據(jù)通信.當外設變更時,只需修改映射文件,無需對上位機程序進行任何修改,從而為計算機控制程序提供了統(tǒng)一的通信接口,實現(xiàn)設備無關性.
計算機監(jiān)控系統(tǒng)通過RS 485串口總線接口與不同的設備或控制單元進行數(shù)據(jù)交換.為了解決各個外設、生產(chǎn)廠商制定的通信協(xié)議不同帶來的問題,本文提出并構(gòu)建的與外設驅(qū)動無關的監(jiān)控系統(tǒng),能夠識別具有RS 485接口的多種設備,進行數(shù)據(jù)交換以及實現(xiàn)控制.本文中系統(tǒng)的結(jié)構(gòu)框圖如圖1所示.
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 System construction
圖形界面:為用戶提供人機交互接口,對系統(tǒng)進行信息的顯示和鍵盤的設定.顯示信息包括:系統(tǒng)的設備列表、設備的工作狀態(tài)、設備的內(nèi)部參數(shù)等.鍵盤設定可以對系統(tǒng)進行人工干預,修改設備的某些信息,向外設寫數(shù)據(jù).
系統(tǒng)信息與設備列表監(jiān)控:用于計算機監(jiān)控系統(tǒng)進行在線設備管理和在線設備配置,用不同的通信協(xié)議按地址順序進行通信查詢.通過查詢比較,將建立起通信的設備信息與設備列表信息相比較,顯示建立起通信的設備;若有新的設備連接到系統(tǒng),則系統(tǒng)自動添加新設備到設備列表.
工作空間:開辟了系統(tǒng)的局部內(nèi)存空間,存儲需要對外設內(nèi)存空間修改的信息,實現(xiàn)與各種外設內(nèi)存進行數(shù)據(jù)交換的功能.系統(tǒng)存儲下位機的信息,通過工作空間使得外設信息與系統(tǒng)內(nèi)部信息達到統(tǒng)一,保證數(shù)據(jù)的完整性.
Map映射:系統(tǒng)要求工控領域的現(xiàn)場設備不能因為設備輸出端口的臨時更改或者交換,對系統(tǒng)的軟件造成影響.因此定義了系統(tǒng)的物理地址與邏輯地址.物理地址定義為外設的實際端口地址;邏輯地址定義為系統(tǒng)內(nèi)部的內(nèi)存地址.M ap映射通過改變地址的映射關系實現(xiàn)物理地址與邏輯地址的對應.
設備命令轉(zhuǎn)換:將系統(tǒng)內(nèi)部的數(shù)據(jù)格式與外設需要的協(xié)議格式進行格式的轉(zhuǎn)換,然后,通過 RS 485發(fā)送到外設[16].
系統(tǒng)的各個主要模塊在下面進行詳細的討論.
系統(tǒng)的主要功能是實現(xiàn)人機界面的交互及對外設的控制.從局部性原理來看,CPU訪問存儲器時,無論是取指令還是存取數(shù)據(jù),所訪問的存儲單元都趨于聚集在一個較小的連續(xù)區(qū)域中.這個連續(xù)的區(qū)域就是工作空間.工作空間與外設的內(nèi)存空間相比,體積雖小,但是足以用來保存在某一時間段所需要的數(shù)據(jù).
工作空間的維護主要包含兩方面內(nèi)容:(1)監(jiān)視外部的變化,當外設的輸入數(shù)據(jù)發(fā)生變化時,對應內(nèi)部的相應空間也要發(fā)生同步變化;(2)用戶通過操作界面更改數(shù)據(jù)或者修改參數(shù),內(nèi)部區(qū)域的相應參數(shù)變化時,需要外設區(qū)域的參數(shù)同步變化.
上位機與外設交換數(shù)據(jù)主要有兩種數(shù)據(jù)格式:整型數(shù)據(jù)和布爾型數(shù)據(jù).整型數(shù)據(jù)主要是系統(tǒng)發(fā)送和接收的命令、對外設設定的參數(shù)、現(xiàn)場傳感器檢測的數(shù)據(jù)等;布爾型數(shù)據(jù)主要是一些開關量的變化.不管是整型數(shù)據(jù)還是布爾型數(shù)據(jù),都需要通過串行口進行數(shù)據(jù)交互.由于對不同的外設傳遞數(shù)據(jù)是分時處理的,且數(shù)據(jù)傳遞的目的地地址不同,因此需要先將要傳遞的數(shù)據(jù)保存在系統(tǒng)的內(nèi)存中,即存放在工作空間中.本文根據(jù)數(shù)據(jù)格式的不同以及存放地址的不同,在工作空間構(gòu)建 Integer表和Bool表.Integer表存放整型數(shù)據(jù)的邏輯地址和當前需要更新的內(nèi)容;Bool表存放布爾型數(shù)據(jù)的邏輯地址和當前外設端口開關量相應的狀態(tài).
不同生產(chǎn)廠商的外設物理地址(如外設的通用數(shù)據(jù)存儲地址或端口地址)方式不一樣.西門子PLC的通用數(shù)據(jù)存儲地址為 V寄存器,例如V 100,輸入端口定義為 I寄存器,例如 I 0.0,輸出端口定義為Q寄存器,例如Q 0.0;松下 PLC的通用數(shù)據(jù)存儲地址為R寄存器,例如R 100,輸入端口定義為X寄存器,例如X 00,輸出端口定義為 Y寄存器,例如 Y10;三菱PLC和OM RON PLC都有自己的規(guī)范.為了使上位機對不同的物理地址的訪問統(tǒng)一起來,與外設無關,本文通過一種中間語言將這些信息統(tǒng)一到工作空間中.XML具有嚴密的條理性、邏輯性和良好的結(jié)構(gòu)性等特點,是一種良好的中間描述語言.因此系統(tǒng)的工作表 Integer表和Bool表用 XML語言構(gòu)建.Integer表格式如下所示:,“LogAddress”字段代表邏輯地址(如:邏輯地址1 000),表示系統(tǒng)數(shù)據(jù)存放的內(nèi)存地址,“Value”是當前的數(shù)據(jù)(如:100).Bool表定義采用地址與位地址相結(jié)合的方式表示.定義如下:,其中:“LogAddress”字段代表邏輯地址的位信息(如:邏輯地址1 000的第1位),表示當前需要修改的位地址,“Value”是當前的邏輯值(如:1).
如果傳遞的數(shù)據(jù)是按照邏輯地址連續(xù)存放,外設接收數(shù)據(jù)也是按照物理地址連續(xù)存放,數(shù)據(jù)傳遞過程只需要一一對應即可.當工作空間的數(shù)據(jù)分布與外設數(shù)據(jù)的分布情況不完全一致時,需要采用地址映射的方法.
按照一般的程序設計方法,外部現(xiàn)場設備的輸出端口出現(xiàn)相互交換,或者端口損壞等情況,上位機程序需要重新編寫.為了解決這個問題,提出M ap映射的方案.通過地址映射的方式實現(xiàn)物理地址與邏輯地址的對應,從而保證外設地址改變,而不修改應用程序,使得系統(tǒng)正常運行.
系統(tǒng)初始化時,對系統(tǒng)擁有的不同的外設構(gòu)造一個M ap映射文件,該文件包含了整型和布爾型數(shù)據(jù),給出了邏輯地址與物理地址的對應關系.
M ap表定義格式如下:
Map表中包含了西門子PLC和其他PLC的映射信息,在西門子上面分別定義了兩種不同形式(整型和布爾型)的邏輯地址和物理地址的映射關系.整型數(shù)據(jù)定義的有:邏輯地址1 000,對應西門子的物理地址V 100;布爾型數(shù)據(jù)定義的有:邏輯地址2 000.0,對應西門子的物理地址I 0.0;邏輯地址3 000.0,對應西門子的物理地址Q 0.0.其他PLC定義方式和西門子的類似.通過該文件使外設的物理地址與邏輯地址對應.
映射的對應關系有兩種情況:(1)地址的改變需要進行映射.若整型數(shù)據(jù)中物理地址與邏輯地址不一致,則需要記錄Map映射表中相對應的項;若布爾型數(shù)據(jù)中物理地址的位地址被修改,也要記錄Map映射表中相對應的項.(2)地址不需要映射.若物理地址與邏輯地址相一致,為了節(jié)約文件空間,則不需要記錄在Map表中.
具體映射過程是:當工作空間的數(shù)據(jù)反映到外設時,要先根據(jù)邏輯地址去Map表中進行物理地址查找.若查找到對應的項,此項即是映射后的物理地址;若找不到對應的項,邏輯地址就是物理地址.當外設中的數(shù)據(jù)反映到工作空間時,同樣根據(jù)邏輯地址在Map表中進行物理地址查找,找到對應的項即是映射后的邏輯地址;若未找到,物理地址就是對應的邏輯地址.
從Map表格式來看,每一個設備都有對應的映射塊,不同的設備映射塊不同,因此M ap映射表容量會很大.另外,每一個工作空間都要進行內(nèi)部數(shù)據(jù)輸出或者外部數(shù)據(jù)輸入操作,都要確認數(shù)據(jù)是否要進行地址的轉(zhuǎn)換,如果對整個映射表查詢一次,會造成映射查找時速度很慢.為了提高查找速度,在系統(tǒng)中構(gòu)建一個臨時表,其行數(shù)與工作空間相同.無論物理地址與邏輯地址是否一致,都在該臨時表中進行登記,得到一一對應關系.查找過程中,僅查找該臨時表進行對應.為保持數(shù)據(jù)的一致性,臨時表需要隨工作空間、Map映射表的更新而更新.
當外設的物理地址確定之后,可以將操作的數(shù)據(jù)傳遞到外設,或者將外設的數(shù)據(jù)讀入到內(nèi)存空間.根據(jù)數(shù)據(jù)流的方向不同,可以有以下兩個程序流程.
完成發(fā)送命令串的組合,并發(fā)送給外設.
(1)讀入兩個文件到內(nèi)存空間:一個是邏輯地址表文件Logical.xml,另一個是物理地址與邏輯地址映射文件M ap.xml.Logical.xml的格式為:
(2)生成命令串:Logical.xml文件中的信息表示將上位機的信息發(fā)送到下位機,或者讀入下位機的數(shù)據(jù)到內(nèi)存空間.如果Value為空,則讀下位機的信息到上位機的內(nèi)存空間;如果 Value="Data",則Data數(shù)據(jù)發(fā)送出去.
首先從Logical.xml表中進行查找.在當前行中,以 Log Address為查找的關鍵字,首先保留Value的值,然后在Map.xml中查找邏輯地址所映射的物理地址存為當前地址信息.若有映射對應,則保留物理地址,若沒有找到對應,其物理地址和邏輯地址一致,將邏輯地址存為物理地址.下面分為3種情況:
①若Logical.xml中連續(xù)兩條命令的Value都是非空(或者都是空),查找Map表,若兩條命令對應的物理地址連續(xù),可將兩條寫命令(或者讀命令)組成一條寫命令(或者讀命令).
②若Logical.xml中連續(xù)兩條命令的Value都是非空(或者都是空),而Map表中兩條命令的物理地址不連續(xù),則分別單獨組成兩條寫命令(或者讀命令).
③若Logical.xml中連續(xù)兩條命令的Value不同,即一個是空,另一個是非空,則分別單獨組成兩條讀命令或者寫命令.即:空的組成讀命令,非空的組成寫命令.
對Logical.xml反復執(zhí)行①②③操作,直到文件結(jié)束.
如果是地址連續(xù)的讀數(shù)據(jù),則組成一條命令串,格式如下:Address1 Address2…;若為地址不連續(xù)的讀命令,則單獨組成一條命令進行處理;如果是地址連續(xù)的寫數(shù)據(jù),則組成命令串,格式如下:StartAddressEndA ddressStartData1 …EndData;同理,不連續(xù)的寫命令則單獨處理.
(3)生成協(xié)議命令:系統(tǒng)檢測外設,根據(jù)外設的傳輸協(xié)議,生成符合協(xié)議規(guī)定的命令.其主要任務是將上述生成的命令串添加頭信息、校驗碼、命令結(jié)束信息等.例如:用松下PLC的通信協(xié)議,生成的 PLC寫命令格式如下:“%01#WDD+起始地址+結(jié)束地址+起始地址的數(shù)據(jù)+…+結(jié)束地址的數(shù)據(jù)+**CR”.
(4)串口發(fā)送數(shù)據(jù):將生成的命令通過串口發(fā)送出去.
(1)命令響應:在外設收到上位機發(fā)送的命令后,接收到該命令的設備響應上位機發(fā)送的命令請求.
(2)串口返回:外設接收到命令后,響應相應的命令并執(zhí)行相應的操作,然后將返回的命令發(fā)回到上位機.
(3)返回數(shù)據(jù)處理:根據(jù)返回的不同命令,生成不同的.xml文件.
①若上位機發(fā)送的是讀命令,且讀取成功,則生成ReadOk.xml;
②若上位機發(fā)送的是寫命令,且寫入成功,則生成W riteOk.xml;
③若在通信過程中出現(xiàn)錯誤,則返回ReturnErro r.xml.
設備監(jiān)控列表用于監(jiān)控連接到系統(tǒng)的設備信息,其中包括系統(tǒng)初始化,更新設備信息和添加設備信息.系統(tǒng)監(jiān)控流程圖如圖2所示.
(1)初始化操作:監(jiān)控方式是在系統(tǒng)啟動時檢查設備的連接情況,通過使用系統(tǒng)存儲的所有命令對上次外設的端口進行循環(huán)掃描.用來檢測是否有新的設備連接到系統(tǒng)或者更新了設備.
(2)更新設備信息:通過測試命令監(jiān)控外設的端口連接情況.如果端口有響應,表示有已知設備連接到系統(tǒng)的該端口上,記錄該外設的通信協(xié)議信息.
(3)添加新設備:若有新的設備連接到系統(tǒng),系統(tǒng)通過設備信息監(jiān)控模塊,保留新設備的信息,并且自動添加新設備到設備列表中.
圖2 監(jiān)控流程圖Fig.2 Monitoring flowchart
在開發(fā)傳統(tǒng)的工業(yè)控制軟件時,工業(yè)被控對象一旦有變動,就必須修改其控制系統(tǒng)的源程序,導致其開發(fā)周期長,而且軟件的可維護性較差.本文為解決上述實際工程問題提供了一種解決方法.通過修改相應的XML的轉(zhuǎn)換文件,采用邏輯地址和物理地址映射的通信方法,實現(xiàn)了對不同小型PLC(松下,西門子,富士)的控制.對于其他公司的具有RS 485接口的PLC,可以采用類似的方法進行通信設計.實驗證明系統(tǒng)程序具有模塊化、結(jié)構(gòu)化的特點,滿足設備無關性的要求.當然,系統(tǒng)的響應速度是以后研究的重點,可以通過優(yōu)化程序等措施加以解決.總體上說,本文的設計方案能夠完成較復雜的控制任務,具有良好的網(wǎng)絡通信能力,可以滿足和實現(xiàn)當前工業(yè)自動化領域控制系統(tǒng)開放性和互換性的要求.這種方法對于實現(xiàn)多種類型的外設通信具有一定的參考作用.
[1] 劉正國,劉唯.計算機與松下 FP系列 PLC串行通訊的實現(xiàn)[J].微計算機信息,2006,22(8):166-168.
[2] 孫東,韓紹坤,邢懷飛.PC對 PLC遠程控制的軟硬件設計[J].自動化與儀表,2005,20(2):51-53.
[3] 大內(nèi)茂人,章秀珍.MICREX-F系列可編程序控制器在高速數(shù)字控制系統(tǒng)中的應用[J].富士時報,1991,12(3):57-61.
[4] 周敏,李鳳婷,吳為民.基于VB的 PC機與多臺 PLC的通信研究[J].計算機工程,2009,35(4):103-104,107.
[5] 湯光華,吳青.自由口模式下 S7-200PLC與上位機的通信[J].微計算機信息,2008,24(5):62-64.
[6] 易異勛.工控系統(tǒng)組態(tài)軟件體系結(jié)構(gòu)的研究[J].基礎自動化,2000,7(2):62-64.
[7] 王亞民,郝建領.DCS組態(tài)軟件體系結(jié)構(gòu)及其數(shù)據(jù)交換標準研究[J].計算機工程,2006,32(1):110-112.
[8] 易江義,周彩霞.工控組態(tài)軟件的發(fā)展與開發(fā)設計[J].洛陽工業(yè)高等專科學校學報,2003,13(1):33-35.
[9] 劉耀,李超良.組態(tài)軟件架構(gòu)的研究與設計[J].微計算機信息,2005,21(8):86-88.
[10] 葛玻,沈文杰,趙旎.工控組態(tài)軟件的對比及應用[J].計算機測量與控制,2002,10(8):550-552.
[11] 岳建鋒.高級語言和組態(tài)軟件對PC機與PLC通訊程序的比較[J].微計算機信息,2005,21(7):51-53.
[12] 陳姝.組態(tài)軟件中數(shù)據(jù)采集模塊設備無關性的設計與實現(xiàn)[J].工業(yè)控制計算機,2003,16(12):33-35.
[13] 陳建偉.面向?qū)ο蟮脑O備無關性報表打印技術[J].微型機與應用,1997,16(9):17-19.
[14] 楊建武,陳曉鷗.xml相關標準綜述[J].計算機科學,2002,29(2):25-27.
[15] 李麗萍,馬文閣,梁勇.XML深入剖析[J].遼寧工程技術大學學報,2002,21(2):207-209.
[16] 張冰,蘇燕辰.基于RS485總線技術的微機與智能儀表的雙向通信設計[J].中國測試技術,2005,31(1):84-86.
Design and Implementation of Device-Independent Programming for Control Unit
ZHANG Ying-jian,ZANG Zhu-ping,ZENG Pei-feng
(College of Computer Science and Technology,Donghua University,Shanghai201620,China)
A device independent programming method is proposed.Communication protocol definitions and device port addresses are stored in control units as text files.A standard communication interface is established by means of the working space and the command interpreter.The physical and logical addresses for devices in communication are associated by means of XML mapping.Therefore,the changes of peripheral communication protocol and port address have no effect on application software.Moreover,the communication command conversion and data communication are implemented device independence.
device independence;physical address;logical address;mapping
TP 314
A
2009-10-19
張營建(1983—),男,河南洛陽人,碩士,研究方向為嵌入式控制系統(tǒng).E-mail:zhyingjian@gmail.com
臧珠萍(聯(lián)系人),女,講師,E-mail:zpzang@dhu.edu.cn
1671-0444(2010)03-0263-04