• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于分布式控制系統(tǒng)的通信軟件開發(fā)實(shí)現(xiàn)

      2011-08-26 08:05:22管其勇
      制造業(yè)自動(dòng)化 2011年21期
      關(guān)鍵詞:共享內(nèi)存驅(qū)動(dòng)程序緩沖區(qū)

      管其勇

      GUAN Qi-yong

      (江蘇淮安信息職業(yè)技術(shù)學(xué)院 電氣工程系,淮安 223003)

      1 DCS控制系統(tǒng)

      DCS是工業(yè)領(lǐng)域常用的分布式集散控制系統(tǒng)。典型的 DCS 系統(tǒng)規(guī)模受限于網(wǎng)絡(luò)邏輯節(jié)點(diǎn)數(shù)、網(wǎng)絡(luò)負(fù)荷、服務(wù)器負(fù)荷、單一數(shù)據(jù)庫容量等等各項(xiàng)資源的限制,多域結(jié)構(gòu)設(shè)計(jì)(分布式數(shù)據(jù)庫),使得 DCS 系統(tǒng)規(guī)模的擴(kuò)大有了“無限” 的可能。

      一個(gè)域?qū)?yīng)現(xiàn)實(shí)中的一臺(tái)機(jī)組、一個(gè)主裝置,域中的設(shè)備等同于一套傳統(tǒng)意義上的 DCS。不同的機(jī)組、裝置可由分屬不同域的 DCS 控制,減少不必要的數(shù)據(jù)交換,降低系統(tǒng)網(wǎng)絡(luò)、服務(wù)器和數(shù)據(jù)庫的工作負(fù)荷。同時(shí),域間也可實(shí)現(xiàn)數(shù)據(jù)交換,共享數(shù)據(jù)和信息。

      DCS系統(tǒng)中主要的嵌入式系統(tǒng)軟件是控制器和它包括硬件和軟件兩部分,其中軟件部分又包括操作系統(tǒng)(要求實(shí)時(shí)和多任務(wù)處理,一般稱作嵌入式實(shí)時(shí)操作系統(tǒng))和應(yīng)用程序兩大部分。

      Modbus是應(yīng)用于電子儀控設(shè)備上的一種標(biāo)準(zhǔn)的通訊協(xié)議。儀控設(shè)備之間、儀控設(shè)備與其他設(shè)備之間可以通過RS485總線的連接按照此協(xié)議進(jìn)行通訊,使得不同廠商生產(chǎn)的儀控設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。該協(xié)議主要包括TCP和RTU 兩種模式。

      IEC是International Electro Technical Commission,國際電工委員會(huì)。文檔中的IEC任務(wù)指的是以IEC61131-3可編譯邏輯語言實(shí)現(xiàn)的計(jì)算任務(wù)。IEC工作組制定的IEC-870-5-104規(guī)約適用于電網(wǎng)數(shù)據(jù)采集和監(jiān)視控制系統(tǒng)以及調(diào)度所之間以網(wǎng)絡(luò)方式傳送實(shí)時(shí)遠(yuǎn)動(dòng)信息的系統(tǒng),該規(guī)約規(guī)定了OSI七層協(xié)議中的應(yīng)用層,傳輸層以下采用TCP/IP協(xié)議。

      2 RTS系統(tǒng)

      RTS系統(tǒng)主要任務(wù)如下:

      在編程系統(tǒng)中可以給IEC任務(wù)指定的優(yōu)先級為0~31。有兩種方式可以激活I(lǐng)EC任務(wù)。

      時(shí)間控制: 如果編程系統(tǒng)中指定任務(wù)的循環(huán)周期(e.g. 10 ms), 則由控制任務(wù)按周期來激活I(lǐng)EC任務(wù)。

      事件控制: 如果任務(wù)被指定了一個(gè)IEC事件(boolean variable),則按照事件控制運(yùn)行。當(dāng)該BOOL型變量從FALSE變成TRUE之后,該任務(wù)被激活。

      對于兩種方式,任務(wù)激活后的處理過程是相同的??梢苑殖上铝腥齻€(gè)部分。

      1)將該IEC任務(wù)所用到的輸入數(shù)據(jù)從過程映象刷新到輸入過程映象。

      2)調(diào)用編程系統(tǒng)指定給該任務(wù)的POU程序。

      3)將所有的輸出數(shù)據(jù)輸出到過程映象,然后輸出給外圍設(shè)備。

      對IO過程映象數(shù)據(jù)的輸入/輸出是由專門的 I/O 驅(qū)動(dòng)來實(shí)現(xiàn)的。

      TCP/IP或serial的server任務(wù)是可選的。兩個(gè)任務(wù)都被設(shè)計(jì)成可接收來自不同CLIENT端(CoDeSys,OPC,...)的具體數(shù)據(jù),并將這些數(shù)據(jù)傳遞給內(nèi)部server。內(nèi)部server 解釋這些數(shù)據(jù),執(zhí)行請求的命令,并通過通訊任務(wù)給CLIENT端發(fā)回應(yīng)答。

      兩種SERVER建立連接的方式不同。

      1)TCP/IP Server

      與CLIENT端建立連接之后,SERVER會(huì)建立一個(gè)獨(dú)立的任務(wù)來處理這個(gè)CLIENT端的所有數(shù)據(jù)包。此后,SERVER繼續(xù)等待接收CLIENT端發(fā)來的新的建立連接的請求。這個(gè)機(jī)制很重要。因?yàn)樗试S網(wǎng)絡(luò)上有不同IP地址的不同計(jì)算機(jī)都可以連接到RTS上。

      2)Serial Server

      一個(gè)串口SERVER任務(wù)維護(hù)一個(gè)串口,并等待輸入數(shù)據(jù)。這意味著串口與RTS通訊只能是單個(gè)的。

      總共包含RTS程序和通訊驅(qū)動(dòng)兩部分。通訊驅(qū)動(dòng)完成通訊站跟第三方系統(tǒng)通訊時(shí)的狀態(tài)診斷(鏈路狀態(tài)、數(shù)據(jù)質(zhì)量)、數(shù)據(jù)的采集和輸出的功能。同時(shí),它通過共享內(nèi)存的方式與RTS程序進(jìn)行數(shù)據(jù)交換,從而共同完成整個(gè)通訊站的功能。

      3 配置文件設(shè)計(jì)

      通訊站做為主站或服務(wù)端,驅(qū)動(dòng)主進(jìn)程初始化創(chuàng)建共享內(nèi)存時(shí),根據(jù)編譯下裝到通訊站的安裝。

      配置文件裝載自己的通訊參數(shù)和數(shù)據(jù)點(diǎn)信息。每個(gè)通訊站只生成與本站通訊相關(guān)的配置信息。

      1)LinkDef.csv文件主要是提供通訊鏈路參數(shù)信息,該配置文件中應(yīng)該包括以下配置信息:

      (1)進(jìn)程信息:版本號、通訊鏈路名、站號、鏈路號、鏈路類型、子鏈路類型。

      (2)鏈路參數(shù)設(shè)置(串口號、波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位、IP地址、端口號)

      (3)主站讀寫鏈路的周期(主從站通訊的周期)

      (4)讀鏈路的超時(shí)時(shí)間

      (5)鏈路等待時(shí)間(等待從站響應(yīng)的時(shí)間)

      配置文件格式如下:

      1,,,,,

      PN,SN,LN,LT,SLT,LP

      ;通訊鏈路名,站號,鏈路號,鏈路類型,子鏈路類型,鏈路參數(shù)區(qū)

      GME,65,0,1,GME,1’9600’8’1’0’2000’100’100

      LinkDef.csv文件說明了主站進(jìn)程的鏈路1負(fù)責(zé)與GME系統(tǒng)通訊,與該系統(tǒng)通訊的通訊站號是65、鏈路號是0、鏈路類型1代表該鏈路的通訊協(xié)議是Modbus-RTU、子鏈路類型是GME、串口號1、波特率為9600、數(shù)據(jù)位8位、停止位1位、奇偶校驗(yàn)位0位。主從站的通訊周期為2秒。讀串口超時(shí)時(shí)間為0.1秒、讀串口等待時(shí)間(延遲時(shí)間)為0.1秒。

      規(guī)定鏈路參數(shù)區(qū):

      如果鏈路是MODBUS-RTU類型,輸入信息依次為:串口號、波特率、數(shù)據(jù)位、停止位、校驗(yàn)位、通訊周期、讀串口超時(shí)時(shí)間和讀串口等待延遲時(shí)間。不同字段用“’”(小撇號)分割;如輸入多個(gè)設(shè)備信息,則用“|”(豎線)分割。

      如果鏈路是MODBUS-TCP類型,輸入信息依次為:IP地址、端口號、超時(shí)時(shí)間和等待時(shí)間。不同字段用“’”(小撇號)分割;如輸入多個(gè)設(shè)備信息,則用“|”(豎線)分割。

      如果鏈路是IEC-104類型,輸入信息依次為:端口號、第三方系統(tǒng)IP地址1、第三方系統(tǒng)IP地址2、……不同字段用“’”(小撇號)分割;如輸入多個(gè)設(shè)備信息,則用“|”(豎線)分割。

      2)ComPoints.csv文件主要是提供通訊數(shù)據(jù)點(diǎn)信息,該配置文件中應(yīng)該包括以下配置信息:

      (1)進(jìn)程信息:版本號、站號、鏈路號、設(shè)備號

      (2)數(shù)據(jù)點(diǎn)信息:通訊點(diǎn)項(xiàng)名、通道號、數(shù)據(jù)類型、數(shù)據(jù)長度、用戶自定義數(shù)據(jù)(如Modbus下的寄存器地址、IEC870.5-104下的類型標(biāo)識(shí)等)、輸入輸出類型、點(diǎn)類型(模擬量、開關(guān)量、SOE、字符串)

      1,,,,,,,,,

      PIN,SN,LN,DN,CN,DT,DL,UP,IOT,PT

      ;通訊點(diǎn)項(xiàng)名,站號,鏈路號,設(shè)備號,通道號,數(shù)據(jù)類型,數(shù)據(jù)長度,用戶自定義數(shù)據(jù),輸入輸出類型,點(diǎn)類型

      AVI001.AV,65,0,1,0,9,4,40001,0,0

      AVI001.QC,65,0,1,0,9,4,40001,0,0

      DVI001.DV,65,0,2,1,4,1,30001,0,1

      DVO001.QC,65,0,2,1,4,1,30001,1,1

      ComPoints.csv文件中數(shù)據(jù)區(qū)的第一行信息說明,與GME系統(tǒng)通訊的65號通訊站的0號鏈路下,1號設(shè)備的第0個(gè)數(shù)據(jù)的點(diǎn)項(xiàng)名是AVI001.AV,代表當(dāng)前值,存放在40001寄存器地址中,是模擬量輸入點(diǎn)。

      規(guī)定用戶自定義參數(shù)區(qū):

      如果鏈路是MODBUS-RTU類型,輸入信息依次為:通訊點(diǎn)項(xiàng)數(shù)據(jù)對應(yīng)的寄存器地址。

      如果鏈路是MODBUS-TCP或IEC-104類型,輸入信息待定。

      4 驅(qū)動(dòng)程序的結(jié)構(gòu)

      驅(qū)動(dòng)程序負(fù)責(zé)將第三方系統(tǒng)中采集的數(shù)據(jù)傳送到共享內(nèi)存的輸入?yún)^(qū)中,并將共享內(nèi)存輸出區(qū)中的數(shù)據(jù)傳送到相應(yīng)的第三方系統(tǒng)中,在整個(gè)通訊站軟件中處于數(shù)據(jù)傳遞的橋梁的作用。

      根據(jù)Level2產(chǎn)生的配置文件LinkDef.csv提供了對應(yīng)的鏈路數(shù)及其通訊協(xié)議類型,驅(qū)動(dòng)程序啟動(dòng)對應(yīng)的鏈路數(shù)據(jù)處理線程(以下簡稱子線程或鏈路線程)與第三方系統(tǒng)通訊。采用線程方式是為了減少系統(tǒng)資源的開銷,同時(shí)提高程序的并發(fā)性和可擴(kuò)展性。通訊站中,驅(qū)動(dòng)程序最多支持4條鏈路,即最多啟動(dòng)四個(gè)線程進(jìn)行數(shù)據(jù)處理。這些鏈路是三種鏈路類型中的一條或多條。內(nèi)存和共享內(nèi)存的數(shù)據(jù)更新。

      主進(jìn)程完成整個(gè)通訊驅(qū)動(dòng)的初始化和控制功能,在各子線程中完成與第三方系統(tǒng)的通訊。各子線程之間相互獨(dú)立,不存在相互的數(shù)據(jù)依賴關(guān)系。

      5 驅(qū)動(dòng)程序的數(shù)據(jù)流

      為了保證將共享內(nèi)存數(shù)據(jù)進(jìn)行一次性更新,避免各子線程直接操作共享內(nèi)存,在驅(qū)動(dòng)程序內(nèi)部開辟了數(shù)據(jù)緩沖區(qū)供主進(jìn)程和各子線程進(jìn)行數(shù)據(jù)交換使用。

      主進(jìn)程根據(jù)共享內(nèi)存輸入?yún)^(qū)和輸出區(qū)為所有子線程創(chuàng)建兩個(gè)全局緩沖區(qū)(這兩個(gè)緩沖區(qū)是共享內(nèi)存IO區(qū)數(shù)據(jù)在驅(qū)動(dòng)內(nèi)存中的映像):

      輸出緩沖區(qū)(命名為OutputBuf)指從共享內(nèi)存輸入?yún)^(qū)讀取的用于發(fā)送給第三方的數(shù)據(jù)緩沖區(qū)。

      輸入緩沖區(qū)(命名為InputBuf)指各鏈路采集用來寫入共享內(nèi)存輸入?yún)^(qū)的緩沖區(qū)。

      數(shù)據(jù)在緩沖區(qū)依次按通道號、設(shè)備號、鏈路號進(jìn)行排列存放(宏觀來看,緩沖區(qū)的數(shù)據(jù)按鏈路類型存放在各自連續(xù)的單元中)。

      6 驅(qū)動(dòng)程序模塊設(shè)計(jì)

      結(jié)合驅(qū)動(dòng)程序的功能和結(jié)構(gòu),對通訊驅(qū)動(dòng)軟件進(jìn)行模塊設(shè)計(jì)和劃分。程序各模塊的主要源文件定義如表1所示。

      圖1 在通訊站軟件中驅(qū)動(dòng)程序結(jié)構(gòu)圖

      當(dāng)主進(jìn)程啟動(dòng)各鏈路子線程后,各鏈路子線程獨(dú)立的進(jìn)行數(shù)據(jù)發(fā)送和采集,主進(jìn)程每隔一定時(shí)間間隔(暫定50ms,第三方系統(tǒng)數(shù)據(jù)發(fā)送周期是秒級,如周期太小交互頻繁而影響性能可以在聯(lián)調(diào)階段適當(dāng)調(diào)整數(shù)據(jù)交換的周期)進(jìn)行驅(qū)動(dòng)內(nèi)存(數(shù)據(jù)緩沖區(qū))和共享內(nèi)存的數(shù)據(jù)交換。驅(qū)動(dòng)程序啟動(dòng)后,在定時(shí)器的控制下,定時(shí)進(jìn)行驅(qū)動(dòng)

      7 結(jié)論

      通過分布式控制系統(tǒng)中通信軟件的設(shè)計(jì),使得RTS可以和modbusRtu、modbusTcp、iec104進(jìn)行共享驅(qū)動(dòng),是通信數(shù)據(jù)的發(fā)送采集處理得到統(tǒng)一處理。高效快速,性能優(yōu)越,利于在整個(gè)工業(yè)開發(fā)中的推廣應(yīng)用。

      圖2 驅(qū)動(dòng)程序的數(shù)據(jù)流圖

      表1 主要源文件定義

      [1]王常力,羅安.分布式控制系統(tǒng)(DCS)設(shè)計(jì)與應(yīng)用實(shí)例[M].北京:電子工業(yè)出版社,2004.

      [2]呂當(dāng)俠.CAN總線的特點(diǎn)及應(yīng)用[J].航空與航天,2005;(3):16~20.

      [3]Microsoft.Microsoft speech SDK 5.1 documentation.http://download.microsoft.com/download/SpeechSDK/SDK/5.1/WXP/EN-US/sapi.chm.

      [4]Verissimo P.Distributed computer-controlled systems:The DEAR-COTS approach[J].IFAC,2000.

      猜你喜歡
      共享內(nèi)存驅(qū)動(dòng)程序緩沖區(qū)
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
      通過QT實(shí)現(xiàn)進(jìn)程間的通信
      基于PCI總線的多處理器協(xié)同機(jī)制研究
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      QNX下PEX8311多路實(shí)時(shí)數(shù)據(jù)采集的驅(qū)動(dòng)設(shè)計(jì)
      電子世界(2014年21期)2014-04-29 06:41:36
      一種高效RTAI 共享內(nèi)存管理層的研究與實(shí)現(xiàn)*
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      電視技術(shù)(2012年1期)2012-06-06 08:13:58
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      万山特区| 崇义县| 奉化市| 睢宁县| 吴江市| 新民市| 双辽市| 柳州市| 刚察县| 和静县| 武鸣县| 南通市| 梅州市| 彭山县| 扎赉特旗| 泸州市| 邳州市| 杂多县| 石门县| 舒城县| 扶余县| 阿巴嘎旗| 安阳县| 邯郸市| 安远县| 大方县| 铁力市| 高雄县| 和龙市| 黄浦区| 荆州市| 沁源县| 兴安县| 高安市| 花莲市| 怀柔区| 乐东| 太谷县| 武定县| 临沂市| 宝鸡市|