適配器通俗一點說就是一種起中間連接作用的配件,使用這種配件的作用在于簡化主機的硬件�(shè)�,增加主機的通用性和靈活性�
�(xiàn)場總線作為二十世紀(jì)80年代�(fā)展起來的新興技�(shù),在工業(yè)�(xiàn)場已有了廣泛的應(yīng)�。在比較有影響力的幾種現(xiàn)場總線中,CAN總線以其突出的優(yōu)點不僅大量應(yīng)用于工業(yè)�(xiàn)�,而且在樓宇自動化、智能終端設(shè)備等民用�(lǐng)域也有了長足的發(fā)��
�(xiàn)場總線網(wǎng)�(luò)技�(shù)的實�(xiàn)需要與計算機相�(jié)�。以往CAN總線�(wǎng)�(luò)與計算機的連接采用RS232、ISA或PCI接口。但是隨著計算機接口技�(shù)的發(fā)展,ISA接口已經(jīng)逐漸被淘�;RS232接口�(shù)�(jù)傳輸率太�;PCI雖然仍是高速外�(shè)與計算機接口的主要渠道,但其主要缺點是占用有限的系統(tǒng)資源、設(shè)計復(fù)�、需有高�(zhì)量的�(qū)動程序保證系�(tǒng)的穩(wěn)定,且無法用于便攜式計算機的擴展。隨著USB1.1、USB2.0�(guī)范的相繼制定,為外設(shè)與計算機的接口提出了新的�(fā)展方�。USB的主要特點有:外�(shè)安裝簡單,可實現(xiàn)熱插撥;通訊速率�,USB1.1全速傳送速率�12Mbps,與�(biāo)�(zhǔn)串行端口相比,大約快100�;支持多�(shè)備連接;提供內(nèi)置電源�
本文給出一種在Windows2000下使用USB1.1�(xié)議實�(xiàn)CAN總線適配器的�(shè)計方�。整個設(shè)計主要開�(fā)適配器的固件及計算機的驅(qū)動程序、應(yīng)用程�,以達到用USB接口連接�(xiàn)場CAN總線�(wǎng)�(luò)的目��
1 適配器硬件接口設(shè)�
適配器硬件電路由微控制器、CAN總線接口、USB總線接口和DC-DC隔離電源模塊等組成。原理框圖如�1所��
微控制器P89C51RD2是Philips公司生產(chǎn)的增強型MCS-51兼容單片機,片內(nèi)集成64KB閃存�1KB擴展RAM,雙�(shù)�(jù)指針�4級中斷優(yōu)先級�7個中斷源,內(nèi)置看門狗,可編程時鐘輸�,在6時鐘模式下工作,速度是標(biāo)�(zhǔn)51單片機的兩�。此時外部頻率可�20MHz。在高�、大程序容量、中小規(guī)模數(shù)�(jù)處理場合是一款非常理想的單片機型�
CAN總線接口使用Philips公司的獨立CAN總線控制器SJA1000,并由光�6N136進行總線隔離。SJA1000是一種獨立控制器,用于移動目�(biāo)和一般工�(yè)�(huán)境中的區(qū)域網(wǎng)�(luò)控制,符合CAN2.0A�2.0B�(guī)范,速率可在�1Mbps。CAN總線收發(fā)器采用PCA82C250�
PDIUSBD12是Philips公司推出的全速USB接口器件,完全兼容USB1.1�(guī)�。圖1中D+引腳信號電平通過器件SoftConnect命令�(nèi)部上�,從而向主機表示為一個全速設(shè)備。EOT引腳自動檢測USB接口的VBUS電壓以確定USB電纜是否連接到了主機。SUSPEND是雙向引�,用以向微控制器指示器件是否掛起。當(dāng)有USB總線事件�(fā)生時,引腳向微控制器�(fā)出中斷信�。PDIUSBD12支持總線�(fù)用和非復(fù)用兩種并行接口模�,以方便連接不同類型的微控制�。圖1中采用總線復(fù)用方式,�(dāng)用奇�(shù)地址訪問PDIUSBD12時被認為是命�,偶�(shù)地址訪問則被認為是數(shù)�(jù)讀��
各器件都需要外部時鐘信�,而且它們自身也都有可編程的時鐘輸出功能,這就給系�(tǒng)的時鐘設(shè)計帶來了便利。圖1中微控制�6時鐘運行模式下,外部�12MHz晶振。P89C51RD2的P1.1引腳�(chǎn)�6MHz方波作為PDIUSBD12的輸入時鐘;通過PDIUSBD12的SetMode寄存器編程使CLKOUT輸出時鐘頻率�24MHz,作為SJA1000的外部輸入時鐘�
2 軟件�(shè)�
軟件�(shè)計包括微控制器的固件�(shè)計和計算機端USB�(qū)動程序兩部分�
2.1 微控制器固件編程
固件編程是USB�(shù)�(jù)傳輸系統(tǒng)中終端設(shè)備程序設(shè)計的一個重要概念。微控制器通過固件是程序與計算機進行�(shù)�(jù)交換。固件設(shè)計的目的是:使PDIUSBD12在USB上達到的傳輸速率;增加系�(tǒng)的可擴展性和硬件無關(guān)��
固件要實�(xiàn)的內(nèi)容:一是對SJA1000初始�,接收CAN總線送來的數(shù)�(jù),收集CAN�(wǎng)�(luò)狀�(tài)信息,并將主機的�(shù)�(jù)下發(fā)到CAN�(wǎng)�(luò);二是對PDIUSBD12初始�,完成USB總線連接過程,并組織CAN�(wǎng)�(luò)和主機之間的�(shù)�(jù)傳�。設(shè)計中采用KeilC51軟件編譯�(huán)�,C51和ASM混合編程方式�
SJA1000和PDIUSBD12都有完善的中斷機�,微控制器可以通過讀它們的中斷寄存器獲得總線事件。為了提高固件的運行效率,主程序?qū)ο到y(tǒng)進行實始化后開放中斷,在中斷服務(wù)程序中對事件進行分析和必要的處理,并�(shè)置相�(yīng)的變量標(biāo)志和�(shù)�(jù)緩沖區(qū)。主程序則循�(huán)查詢變量�(biāo)�,調(diào)用相�(yīng)的子程序進行處理。這種程序�(jié)�(gòu)使得主程序能夠在前臺處理各種�(shù)�(jù)傳送任�(wù),同時又可以通過中斷在后臺及時處理總線事��
2.1.1 CAN�(xié)議實�(xiàn)
SJA1000支持BasicCAN和PeliCAN兩種�(xié)議模�。在適配器設(shè)計中采用了BasicCAN模式。中斷設(shè)為電平中斷方�,SJA1000中斷服務(wù)程序框圖如圖2所��
2.1.2 USB1.1�(xié)議實�(xiàn)
PDIUSBD12支持所有的四種USB�(shù)�(jù)傳輸方式。在適配器的�(shè)計中使用了控制傳�、中斷傳輸和批量傳輸??刂苽鬏斨兄挥脕韨鬟f控制信息,固定使用端�0;中斷傳輸使用端�1,用來傳送CAN�(wǎng)�(luò)狀�(tài)信息;批量傳輸用來實�(xiàn)主機和CAN�(wǎng)�(luò)節(jié)點之間的�(shù)�(jù)傳�,使用端�2。圖3是PDIUSBD12中斷服務(wù)程序框圖�
2.2 �(qū)動程序設(shè)�
USB�(qū)動程�?qū)儆赪DM(Windows driver module)類型。WDM�(qū)動程序是分層�,引入了FDO(Function Device Object)和PDO(Physical Device Object)兩個新類來描述硬件,每一個物理硬件有一個PDO,但是可以有多個FDO,在�(qū)動程序中直接操作的是PDO和FDO。系�(tǒng)通過全局�(biāo)識符GUID實現(xiàn)�(qū)動程序的識別。應(yīng)用程序和WDM�(qū)動程序通信�,系�(tǒng)為每個用戶請求打包形成一個I/O請求包發(fā)送到�(qū)動程序�
�4是Windows中USB的通信層次�(jié)�(gòu)模型。圖4系統(tǒng)軟件方塊中的底部是Windows系統(tǒng)提供的驅(qū)動程�,包括主控制器驅(qū)動程序(OPENHCI.SYS或者UHCD.SYS)、HUB�(qū)動程序(USBHUB.SYS)是一個類�(qū)動程序(USBD.SYS��
Windows2000下驅(qū)動程序的�(shè)計工具是VC++和Win2000DDK,但是直接使用DDK編程有相�(dāng)大的難度。目前有第三方軟件廠商提供了一些驅(qū)動程序開�(fā)工具,如Jungo公司的WinDriver、Compuware公司的DriverStudio�。這些工具仍然是基于WindowsDDK�,但是進行了新的封�,提供了�(qū)動程序設(shè)計向?qū)А?/FONT>
適配器設(shè)計中采用了DriverStudio作為�(qū)動程序開�(fā)工具。利用其中的DriverWorks一步步地作出選擇并修改少量參數(shù),即可生成驅(qū)動程序框架和測試臺應(yīng)用程序框架,對USB�(shè)備的通用性部分支持得很好。在程序框架,對USB�(shè)備的通用性部分支持得很好。在VC++中對�?qū)傻拇a作修�,并對設(shè)備特殊功能部分添加處理代�,然后用VC++編譯�*.SYS文件,就是一個完整的�(qū)動程�。SoftIce是DriverStudio的另一個調(diào)試工具,可以對驅(qū)動程序進行操作系統(tǒng)�(nèi)核級的跟蹤與�(diào)��
生成�(qū)動程序后,編寫相�(yīng)的INF文件是重要的一步。INF文件在操作系�(tǒng)�(fā)�(xiàn)新硬件之后向系統(tǒng)指明�(yīng)該安裝的�(qū)動程�、系�(tǒng)向設(shè)備提供的服務(wù)以及注冊表項要修改的�(nèi)容�
基于USB接口的CAN總線適配器經(jīng)過試驗運行證明:在中小規(guī)模和短時大數(shù)�(jù)塊傳送時,能夠很好地完成�(wǎng)�(luò)通信任務(wù)。USB接口是計算機外設(shè)的發(fā)展趨勢,目前主要用在中低速場�。隨著USB2.0�(guī)范的推出,又逐漸向高速應(yīng)用發(fā)�。因此將�(xiàn)場總線網(wǎng)�(luò)和計算機接口相連的適配器具有廣泛的�(yīng)用前景�
DeviceNet是一種連接工業(yè)底層控制�(shè)備的開放式網(wǎng)�(luò),自1994年提出以�,得到了廣泛的應(yīng)用。然�,組建控制系�(tǒng)�(wǎng)�(luò)時都面臨著布線的問題,雖然采用以太網(wǎng)的現(xiàn)場總線相對來說成本低、維護方便,但在實際的應(yīng)用中仍然會受到客觀條件的限�,特別是在環(huán)境惡劣的條件下,不能采用布線來解決問�。在這種情況�,將無線技�(shù)引入到工�(yè)控制�(lǐng)域就顯得很有必要�?;谶@一目的,在�(shè)計適配器過程�,以無線局域網(wǎng)�(xié)議IEEE802�1lb為基�(chǔ),結(jié)合DevlceNet�(yīng)用層�(xié)議和適用于工�(yè)�(xiàn)場設(shè)備間通信的通信方式,提出實�(xiàn)無線功能的DeviceNet從站適配器的�(shè)計方��
1 DOViceNet總線與IEEE802.11b
1.1 DeviceNet總線
DevlceNet是一種連接工業(yè)底層控制�(shè)備的開放式網(wǎng)�(luò),采用先進的�(wǎng)�(luò)通信技�(shù),具有低成本、高效率、高可靠性、高性能的特�。它可以提供底層�(wǎng)�(luò)�(shè)備互連的低成本、高效率的解決方�,現(xiàn)場設(shè)備的智能�,主從和對等通信能力。兩個主要的用途為:傳送與�(xiàn)場設(shè)備相�(guān)的控制和狀�(tài)信息:傳送與被控制系�(tǒng)相關(guān)的診�。配置等其他信息�
1.2 IEEE802.11b
1999�9�,電子和電氣工程師協(xié)�(IEEE)批準(zhǔn)了IEEE 802.11b�(guī)�。此�(guī)范稱為wi—Fi。IEEEE 802.11b定義了用于在共享的無線局域網(wǎng)(WLAN)進行通信的物理層和媒體訪問控�(MAC)子層,是目前的WLAN�(xié)�,使�2.4 GHz頻段;速率11 Mbps,實際使用速率根據(jù)距離和信號強度可�(150 m�(nèi)1�2 Mbps�50 m�(nèi)可達�11 Mbps)�802.11b的較低速率使得無線�(shù)�(jù)�(wǎng)的使用成本能夠被大眾接受(目前接入節(jié)點的成本僅為10�30美元);具有增強物理層,可以和1 Mbps�2 Mbps�802.11bps DSSS系統(tǒng)互操�;編碼方式采用CCK(Complementary Code Keylng)技�(shù)�
2 系統(tǒng)總體框架和無線從站設(shè)計思路
2.1 無線�(wǎng)�(luò)總體框架
整個網(wǎng)�(luò)分為三個部分:組態(tài)軟件(上位�)、主節(jié)�(一般為PLC)和從�?;跓o線技�(shù)的DeviceNet�(wǎng)�(luò)如圖1所�。其中網(wǎng)�(luò)組態(tài)軟件包括RockweU公司的RSIinx和RSworks實時�(jiān)控網(wǎng)�(luò)的狀�(tài),并可對主從節(jié)點的信息進行配置。PC通過無線�(wǎng)卡與各節(jié)點進行通信,在無主節(jié)點的情況下可直接對各從站進行直接控制。在通信過程�,各節(jié)點模塊均需要相�(yīng)的接收和�(fā)送模�。在對主、從節(jié)點之間配置后,可實現(xiàn)主從的控制過程�
2�2�(shè)計思路
基于802.11b的DeviceNet無線�(wǎng)�(luò),實際上是將原來通過CAN�(wǎng)�(luò)進行通信的過程交給無線收�(fā)器來完成。這里,網(wǎng)�(luò)接口采用物理層接口,即指使用無線信道替代通常的有線信�,而物理層以上各層不變。這樣做的�(yōu)點是上層的網(wǎng)�(luò)操作系統(tǒng)及相�(yīng)的驅(qū)動程序可不做任何修改。這種接口方式在使用時一般作為有線網(wǎng)的集線器和無線轉(zhuǎn)�(fā)�,以實現(xiàn)有線局域網(wǎng)間互連或擴大有線局域網(wǎng)的覆蓋面�。無線節(jié)點由適配器和從站�(gòu)�,根�(jù)物理層接口的原理,設(shè)計中無線收發(fā)完成信號的傳�,而鏈路層的功能交給FPGA完成�
3 從站適配器的�(shè)�
3.1 適配器系�(tǒng)定位
某系列變頻器具備Modbus通信能力,但不具備DeviceNet通信能力。適配器位于從站和DeviceNet�(wǎng)�(luò)之間,使變頻器能夠運行于基于無線技�(shù)的DeviceNet�(wǎng)�(luò)��
3.2硬件�(shè)�
系統(tǒng)使用ADI公司16位定點DSP。Blackfin531。該款芯片可以實�(xiàn)400 MHz的連續(xù)工作,系�(tǒng)支持片外�、異步存儲器,具�2個雙通道全雙工同步串行接口和1個支持IrDA的通行串行�。其中DeviceNet端口使用FPGA+802.11b無線收發(fā)器與DeviceNet�(wǎng)�(luò)連接�
802.1lb無線收發(fā)電路主要由MAX2820和MAX2242等組合實�(xiàn)。MAX2820是單片零中頻收發(fā)器.專為工作�2.4�2.5 GHz ISM(工作/科學(xué)/�(yī)�)波段�802.11b�(yīng)用而設(shè)計,�(nèi)部包含實�(xiàn)802.11b射頻到基帶傳輸所需的所有電�,加上功率放大器MAX2242、RF開關(guān)和帶通濾波器等就可以�(gòu)建完整的前端電路。FPGA選用Xilinx公司的XCV50E,硬件電路如�2所��
3.3�(shù)�(jù)鏈路�
�(shù)�(jù)鏈路層主要包括邏輯鏈接子�(LLC)和媒體訪問控制子�(MAC)。另�,由于無線網(wǎng)�(luò)和DeviceNet�(wǎng)�(luò)頻率有差�,故�(yīng)有頻率轉(zhuǎn)換的功能�
(1)硬件選擇
�(shù)�(jù)鏈路功能由FPGA實現(xiàn)。本�(shè)計選用Xilinx公司VirtexE系列系統(tǒng)級XcV50E。其主要資源�71 693個系�(tǒng)門�65 536位塊�(nèi)存和176個用戶I/O�(其中包括83對差分I/o�)。主要特性有�1.8 V超低核心電壓,支�20種高速總線標(biāo)�(zhǔn)�8個全�(shù)字延遲鎖定環(huán)�0.18μm 6層金屬工�,支持IEEE 1149.1邊界掃描;具有卓越的整體性能和高速特�,是實現(xiàn)高速系�(tǒng)級設(shè)計的�(yōu)選芯��
(2)�(shù)�(jù)幀格式和仲裁的實現(xiàn)
�(shù)�(jù)幀分為長幀�(jié)�(gòu)和短幀�(jié)�(gòu),前者用于節(jié)點間的報文交�,結(jié)�(gòu)如圖3所示;后者用于仲�,無�(shù)�(jù)區(qū)�
短幀實現(xiàn)仲裁正是利用到標(biāo)識符�11�。當(dāng)總線開放�,任何單元均可開始發(fā)送報文。若同時由兩個或者更多的單元開始�(fā)�,總線訪問沖突運用逐位仲裁�(guī)則,借助�(biāo)識符ID解決。這種仲裁�(guī)則可以使信息和時間均無損�。標(biāo)識符包含兩個具體含義:一是在報文交換�,代表邊接的生產(chǎn)�/消費者關(guān)系;二是代表報文本身的優(yōu)先級(越小�(yōu)先級越高)。無線網(wǎng)�(luò)中節(jié)點數(shù)�64,掃描器(主站)地址定義為O,仲裁的過程如圖4所��
3.4 �(yīng)用層�(shè)�
本節(jié)從對象建模與尋址、事件驅(qū)動與消息響應(yīng)兩個方面,簡要介紹無線從節(jié)點的�(yīng)用層�(shè)��
(1)對象建模與尋址
本設(shè)計對適配器建立圖5所示的對象�(guān)�。圖5中可以看出,適配器包�10個對�,其�4個為DeviceNet節(jié)點必須包含的對象�5個與�(yīng)用相�(guān)的對��1個組裝對�。DeviceNet�(yīng)用面�?qū)ο蟮募夹g(shù),將�(wǎng)�(luò)節(jié)點抽象為若干個對象類的集�,每個對象有特定的功�,具有自己的屬性和服務(wù),表�(xiàn)出一定的行為。網(wǎng)�(luò)尋址的過程是:根�(jù)節(jié)點的MACID值確定當(dāng)前被訪問的設(shè)�,并由對象、實�、屬性為路徑定位具體的操作�
?�?)事件驅(qū)動與消息響應(yīng)
事件是指改變系統(tǒng)運行狀�(tài)和運行流程的系統(tǒng)外部或內(nèi)部的變化,消息是表示事件是否�(fā)生的�(biāo)�。當(dāng)系統(tǒng)一有事件發(fā)生,系統(tǒng)并不立即處理,而是�(fā)送一個事件對�(yīng)的消息,系統(tǒng)的后臺不停地捕捉消息。根�(jù)收到的消息執(zhí)行相�(yīng)的任�(wù)。這樣盡管系統(tǒng)事件的觸�(fā)是隨�、分散的,但是事件的處理是集中的,程序思路清晰,管理簡單。圖6是基于這種思想的軟件結(jié)�(gòu)�
適配器采用這種程序組織思路,定義了十多個事件。將這些事件分為6�,即故障事件、DeviceNet事件、Modbus事件、RS232事件、定時器事件、設(shè)備更新事件和空閑事件,每一類事件中又包含若干個子事件。利用全局變量Global[_]Event來定義各事件的優(yōu)先級,優(yōu)先級高的事件先處理,�(yōu)先級低的事件后處��
4 � �(jié)
�(shè)計將無線技�(shù)�(yīng)用于DevieNet�(wǎng)�(luò)的從站適配器的設(shè)計中,使得無線領(lǐng)域的�(fā)展惠及傳�(tǒng)的控制領(lǐng)域。其主要特點為:物理層使用了802.11b�(xié)議通信,傳送距離遠,突破了傳統(tǒng)的鋪線環(huán)節(jié)的局限�;利用FPGA實現(xiàn)鏈路層功�,而對象建模和事件�(qū)動與消息響應(yīng)則是�(xié)議軟件設(shè)計中的重�。總�,基于無線技�(shù)是當(dāng)前總線技�(shù)�(lǐng)域中研究的重要方�,�802.11b具備�(yīng)用廣�、價格低廉的特點,成為其中的熱點�
�(yīng)急聯(lián)動要求整個系�(tǒng)快�、靈�、高效地運作,因�,必然要求這些子系�(tǒng)能夠�(xié)同工�,目前雖然各� 子系�(tǒng)的技�(shù)都已�(jīng)比較成熟,但都自成體系,往往由于接口、架�(gòu)的不�(tǒng)一使得這些本應(yīng)緊密集成的子系統(tǒng)� 為了一個個的“信息孤島�,相互間的協(xié)�(diào)配合往往在兩個系�(tǒng)之間單一進行,每個系�(tǒng)要維護多個接�,系�(tǒng) 整合程度很低且存在瓶�。各子系�(tǒng)間的信息整合基本上是基于點對點方式開�(fā)完成,沒有統(tǒng)一的標(biāo)�(zhǔn)接口;對 系統(tǒng)�(lián)動缺乏統(tǒng)一的控制機�,并且開放性差,難以隨著應(yīng)急聯(lián)動業(yè)�(wù)要求的變化而靈活應(yīng)��
智能�(yīng)用平臺(Intelligent Application Platform,IAP)是以智能網(wǎng)技�(shù)為基�(chǔ),結(jié)合計算機輔助� �,多種信息綜合處理的平臺。IAP 平臺就是為了解決前述的系�(tǒng)集成問題,作為粘合劑來連接系統(tǒng)�(nèi)外各種業(yè) �(wù)相關(guān)的異�(gòu)系統(tǒng)、應(yīng)用以及數(shù)�(jù)�,從而滿足各個子系統(tǒng)之間無縫共享和交換數(shù)�(jù)的需要。其中適配器為各� 市應(yīng)急子系統(tǒng)接入到IAP 提供了適配轉(zhuǎn)換橋�� 1. 智能�(yīng)用平臺(IAP�
智能�(yīng)用平�(IAP)完成后應(yīng)用于城市�(yīng)急聯(lián)動系�(tǒng)中的理想�(jié)�(gòu)�(yīng)如圖1 所�,系�(tǒng)中各個功能子系統(tǒng)� 過對�(yīng)的適配器接入到智能應(yīng)用平臺(IAP)中,各子系�(tǒng)之間通過平臺實現(xiàn)了客戶請求與服務(wù)提供的關(guān)�,即 一個子系統(tǒng)向平臺注冊并提供其自身實�(xiàn)的功能(服務(wù)提供�,同時它也可以向平臺查詢其需要的功能,并借助 平臺使用該功能(客戶請求);這樣的客�/服務(wù)�(guān)系由IAP 來統(tǒng)一管理,IAP 對建立在其之上的各個系�(tǒng)來說� 透明的。通過這樣�(tǒng)一的系�(tǒng)交換集成平臺,以取代原有系統(tǒng)間多對多的網(wǎng)狀�(lián)接�
�1 城市�(yīng)急系�(tǒng)IAP 示意�
2. 基于IAP 的適配器�(shè)�
IAP 適配器位于結(jié)�(gòu)模型的接入層,它是各城市�(yīng)急子系統(tǒng)與平臺進行交互的橋�,實�(xiàn)各個子系統(tǒng)與IAP 平臺之間共享和交換數(shù)�(jù)。目前連接到IAP 的各子系�(tǒng)大部分以微軟的視窗操作系�(tǒng)為工作平�,因此IAP � 配器也是基于Windows 平臺下的�
2.1 IAP 適配器設(shè)計方案概�
Windows 下的適配器實�(xiàn)為ActiveX 控件的方�,適配器在系�(tǒng)中所處的位置如圖2 所示:
�2 IAP 適配器示意圖
適配器嵌入到各子系統(tǒng)�(yīng)用中,提供調(diào)用方法,代理各子系統(tǒng)�(yīng)用向 IAP 平臺�(fā)送消�,同時在收到消息 的時候,通過觸發(fā)事件,將消息傳遞給各子系�(tǒng)�(yīng)�。在IAP 平臺�(cè)以接入服�(wù)的形式供適配器連接,適配器 與IAP 平臺之間的消息采用XML �(guī)范實�(xiàn),便于靈活擴�。因此適配器必須實現(xiàn)XML 文檔的解析和XML � 檔的生成。適配器與IAP 平臺的接入服�(wù)間采用Socket 連接,以后可以考慮采用SOAP(Simple Object Access Protocal,簡單對象接受協(xié)議),這是因為由于消息已經(jīng)定義為XML 方式,可以比較方便地向SOAP 過渡�
2.2 IAP 適配器模塊結(jié)�(gòu)
適配器內(nèi)部可分為三個模�,分別為通訊模塊、消息轉(zhuǎn)換模�、子系統(tǒng)接口模塊,其�(jié)�(gòu)如圖 3 所示:
� 3 IAP 適配器內(nèi)部結(jié)�(gòu)�
各模塊功能敘述如下: 通訊模塊:處理與IAP 平臺接入服務(wù)之間的底層通訊,數(shù)�(jù)包的收發(fā)。通訊層包含收�(fā)一對線�,確保通訊 層不成為性能瓶頸。通訊層與接入服務(wù)間建立并維護一條Socket 連接,適配器作為客戶��
消息�(zhuǎn)換模塊:包含一個工作線�,通訊模塊完成消息包的接收�,即把包�(fā)往消息�(zhuǎn)換模塊的工作線程� XML 消息的解析是在工作線程中完成的。同時也處理將數(shù)�(jù)�(zhuǎn)換為XML 格式�(shù)�(jù)包發(fā)給通訊模塊� 子系�(tǒng)接口模塊:接收消息轉(zhuǎn)換模塊發(fā)來解析后的消�,并觸發(fā)ActiveX 事件。同�,接收各子系�(tǒng)�(yīng)用對 其接口方法的�(diào)�,并將有�(guān)�(shù)�(jù)�(fā)送給消息�(zhuǎn)換模塊處��
2.3 適配器消息處理機�
適配器的消息處理分為� IAP 接收及向IAP �(fā)送兩個方向。從IAP 接收請求的消息處理流程如�4 所示:
�4 接收IAP 消息處理流程�
A) 通訊層收到業(yè)�(wù)請求消息,完成消息的接收�,將其發(fā)送到�(yè)�(wù)層的工作線程�
B) 工作線程將消息中的XML 字串解析�,得到命令碼,根�(jù)不同的命令碼�(diào)用不同的處理函數(shù),對XML 字串進行進一步解��
C) 完成 XML 的解析后,將消息中的各參�(shù)提取出來,如果帶有應(yīng)用數(shù)�(jù)的附件,則將提取附件。將消息� 包成�(nèi)部數(shù)�(jù)�(jié)�(gòu),用窗口消息的方式發(fā)送給接口層的控件窗口�
D) 控件窗口接收到業(yè)�(wù)層發(fā)來的消息,從消息中解出觸�(fā)ActiveX 事件所需要的參數(shù),如果需要生� VARIANT 則進行參數(shù)的打�,然后觸�(fā)事件,將�(yè)�(wù)�(diào)用請求傳遞給各子系統(tǒng)�(yīng)�� 向IAP �(fā)送請求的消息處理流程則與從IAP 接收消息流程相反,敘述如下:
a) 各子系統(tǒng)�(yīng)用通過�(diào)� ActiveX 控件的方法,將業(yè)�(wù)請求的參�(shù)傳遞給適配器�
b) 適配器接口層將調(diào)用參�(shù)打包� XML 消息,如果帶有終端應(yīng)用數(shù)�(jù),則將其作為附件打包�
c) �(diào)用通訊層的�(wǎng)�(luò)�(fā)送接口,通過通訊層的�(fā)送線程將消息�(fā)送給 IAP 的接入服�(wù)� 向IAP �(fā)送請求消息流程如�5 所示:
�5 向IAP �(fā)送消息處理流程圖
2.4 適配器各模塊�(shè)�
?�?)通訊模塊�(shè)�
針對用于Windows 平臺的ActiveX 控件,考慮采用Windows 下的異步Socket 機制來實�(xiàn),Socket 事件掛接 一個窗口句�,該窗口句柄在接收線程中�(chuàng)建,因此共享該線程的消息循環(huán)。對于Socket 的寫消息,在接收� 程收到后�(zhuǎn)�(fā)�(fā)送線程處�,業(yè)�(wù)層對Socket 的寫操作也發(fā)送到�(fā)送線程處�� 以上機制封裝在基類CSocketBase �,同時它還封裝了作為服務(wù)端進行�(jiān)聽的機制,在它的派生類中根據(jù)� 作為客戶端或服務(wù)�,初始化為不同的方式�
�2)消息轉(zhuǎn)換模塊設(shè)�
消息�(zhuǎn)換模塊以一個工作線程類CworkThread 來實�(xiàn),類中考慮線程池機制,即可以啟動多個工作線�。工 作線程處理IAP 平臺�(fā)來的消息中XML 部分的解�,同時對終端�(yīng)用的�(diào)�,生成相�(yīng)的XML 文檔,并�(fā)送到� 訊層。工作線程從收到的XML 子串中解析出命令字,對不同的命令,調(diào)用不同的處理函數(shù)來進行處理;完成XML 字串的解析后,將其轉(zhuǎn)換為�(nèi)部格�,發(fā)送到接口�。生成XML 文檔處理的流程與上述方式相反。XML �(zhuǎn)換的具體實現(xiàn)采用開放源碼的xerces �,并對其做二次封裝以方便�(diào)��
?�?)子系統(tǒng)接口模塊�(shè)�
子系�(tǒng)接口模塊放在整個適配器的主線程中,包含控件窗口的消息循�(huán)。各子系�(tǒng)�(yīng)用將�(yè)�(wù)請求以窗口消 息的形式�(fā)送給控件窗口,由窗口類中映射的消息進行處理,將請求傳遞給轉(zhuǎn)換模�。反之,接口模塊在收到消 息后,根�(jù)不同的消息觸�(fā)不同的ActiveX 事件,從而將響應(yīng)傳遞給各子系�(tǒng)�(yīng)用處�。接口層必須觸發(fā)的事� 包括�
� IAP 平臺接入服務(wù)Socket 連接建立事件�
� IAP 注冊并收到注冊應(yīng)答消息事��
與平臺間的鏈路斷開后事件�
收到平臺�(fā)送的�(yè)�(wù)請求事件(應(yīng)支持�(yīng)用數(shù)�(jù)以字符串的方式和二進制的方式傳遞)�
收到平臺�(fā)送的�(yè)�(wù)請求�(yīng)答事件(�(yīng)支持�(yīng)用數(shù)�(jù)以字符串的方式和二進制的方式傳遞)�
同時,各子系�(tǒng)�(yīng)用通過�(diào)用適配器實現(xiàn)的ActiveX 方法與平臺交�,方法包括:
初始化適配器方法�
建立� IAP 平臺間的Socket 連接方法�
斷開與平臺的�(wǎng)�(luò)連接方法�
向平臺注冊方法;
從平臺中注銷方法�
�(fā)起業(yè)�(wù)請求方法�
收到�(yè)�(wù)請求并處理后,發(fā)送處理結(jié)果方法;
考慮到ActiveX 控件需要跨語言�(huán)境使�,例如需要在Web 頁面中使�,方法與事件傳遞中需要傳遞數(shù)組的 情況均采用VARIANT 參數(shù)來傳遞,為了從VARIANT 中解出數(shù)�(jù),對此操作進行了封��
3. 總結(jié)
本文�(shè)計的基于智能�(yīng)用平臺的適配器依托企�(yè)研發(fā)�(huán)境,很快地進入實用階段,并很快體現(xiàn)出較好的實用 價�。四川省開縣�(yīng)急聯(lián)動系�(tǒng)在智能應(yīng)用平臺使用前每日能實�(xiàn)的話�(wù)量小�1000 個,�(yīng)用該平臺后日話務(wù) 量可�5000 多�,大大提高了整體工作性能�
維庫電子�,電子知�,一查百通!
已收錄詞�154185�