程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 二.SuperIO架構和組成部分,.superio架構組成

二.SuperIO架構和組成部分,.superio架構組成

編輯:C#入門知識

二.SuperIO架構和組成部分,.superio架構組成


1.1    架構結構圖

1.1.1    層次示意圖

 


1.1.2    模型對象示意圖

 


1.2    IO管理器

IO管理器是對串口和網絡通訊鏈路的管理、調度。針對串口和網絡通訊鏈路的特點,在IO管理器接口的基礎上派生出串口管理和網絡管理。

1.2.1    串口管理

串口管理對創建串口IO實例、串口IO的打開、串口IO的關閉以及釋放資源作出及時響應,以及IO操作實例的管理。

1.2.2    網絡管理

當設備采用網絡通訊模式的時候,設備的工作模式分為:Tcp Server和TcpClient。

當工作模式為Tcp Server時,通訊平台會監聽網絡連接,客戶端連接到服務器端,會把連接實例以IO接口的形式放到IO管理器。

當工作模式為Tcp Client時,通訊平台會主動連接遠程服務器,當連接成功後,會把連接實例以IO接口的形式放到IO管理器。

針對所有網絡連接實例定時進行心跳檢測,對於假連接、死連接、遠程斷開、硬件鏈路斷開等現象做出響應,主動釋放網絡連接實例的資源。

網絡IO管理器針對接收數據、發送數據、連接操作、斷開操作等事件作出及時反應。


1.3    設備管理器

設備管理器主要的職責是對串口設備、網絡設備、虛擬設備進行統一管理,以及提供對外可操作設備的接口。主要實現功能,如下圖:

 


1.3.1    設備主要接口

 設備有統一的接口,在通訊平台運行過程中以此接口作為可操作的實例。接口包括:事件類接口、函數類接口、屬性類接口。如下圖:

 

 以下介紹設備主要組成部分的功能,以及功能的職責。


1.3.1.1     命令緩存

每一個設備都有一個命令緩存,可以把設備要發送的指令放到命令緩存裡,當通訊平台是輪詢通訊模式或並發通訊模式時,會主動調用獲得指令數據接口,並判斷當前命令緩存是否有數據信息,當命令緩沖有數據的時候,會發送命令緩存的數據,否則調用獲得實時數據指令接口,發送實時數據指令。如下圖:

 


1.3.1.2     協議驅動

協議驅動分為:發送數據協議驅動和接收數據協議驅動,在設備實例中作為兩個必備的屬性,以便通訊平台進行調用。

發送數據協議驅動通過獲得命令接口驅動不同的功能函數,打包命令數據,然後通過IO接口發送數據。

接收數據協議驅動通過解析命令接口驅動不同的功能函數,按命令狀態字解析數據信息,並返回可操作的對象,進行業務處理。

1.3.1.3     數據保持

數據保持分為兩種類型數據:實時數據、參數數據。兩種類型數據都是通過序列化接口保存成XML文件格式。

當設備初始化時加載XML文件,反序列化成實例對象,並作為設備的屬性接口,以便通訊平台對設備的參數、實時數據進行必要的操作。

另外,二次開發者也可以繼承序列化接口,自定義數據持久處理方式,例如:以數據庫為載體,避免實時性過高導致文件損壞。

1.3.1.4     虛擬設備接口

可以對同一類型的設備可以開發相應的虛擬設備,對虛擬設備設置虛擬公式,對同一類型的多台設備的相應數據進行業務邏輯處理。

1.3.1.5     運行授權

每一個設備都有一個授權屬性,對於非授權的設備不對IO接口進行操作,設備也無法進行有效的通訊。在二次開發過程中,開發者可以進行授權設置。

1.3.1.6    視頻接口

每一個設備都有一個視頻屬性操作接口,針對現場的設備可以選擇配置視頻服務器,在服務器端對文件數據和視頻數據進行融合展示。

1.3.1.7     通道監視

可以監視設備IO發送數據和接收數據情況,數據以16進制顯示,並對16進制的源始數據進行保存,方便設備的調試。

1.3.1.8     優先級別

優先級別為了兩種類型:高級別和普通級別,可以針對設備和命令分別設置優先級別,在IO控制管理器進行優先級調度設備和命令。


1.4    控制管理器

IO控制管理器主要是對通訊機制進行調度,串口和網絡通訊機制不一樣,

所以控制管理器也不一樣,但是對於通訊平台的接口是統一的。

1.4.1    串口控制

IO控制管理器裡有多個串口控制器,每個串口控制器裡有一個單獨的線程,負責是對設置該串口的設備進行輪詢通訊機制調度。如下圖:


1.4.2    網絡控制

IO控制管理器裡只有一個網絡控制器,網絡控制器裡有一個單獨的線程,負責對所有網絡設備進行輪詢、並發、自控模式通訊調度,以及對IO通道進行數據異步監聽,把接收到的數據分發給相應的設備驅動。如下圖:


1.5    模塊調試

1.5.1    調試接口

調試接口定義了調試設備、調試界面視圖、調試數據導出、調試應用服務等接口,可以通過這些接口對二次開發的程序模塊進行調試工作。

調試接口的定義:

        void DebugDevice(IRunDevice dev);

        void DebugGraphicsShow(IGraphicsShow show);

        void DebugExportData(IExportData export);

void DebugAppService(IAppService appService);

1.5.2    調試方式

1.5.2.1     界面方式調試

可以繼承MainForm窗體,窗體實例提供了調試接口,同時可以通過SuperIO.Device.DebugDevice.IsDebug屬性定義是否為調試模式,如果此屬性為true則可以通過調試接口動態加載程序模塊,進行調試工作;如果此屬性為false,程序會加載目錄配制文件中的程序模塊,將無法進行跟蹤、調試工作。

1.5.2.2     命令控制台方式調試

可以通過DebugDevice. GetDebugInstance()獲得調試實例,此調試實例不具有界面顯示功能,但是可以更方便、快捷的對程序模塊進行調試工作。

1.6    組件控制器

 平台控制器主要職責是組裝各部分主要組件,並且協調各組件之間有序工作;以及提供對外的可訪問接口、調試接口等。

1.7    運行器

運行器主要負責監視所有設備的運行狀態,包括:設備名稱、地址、通訊類型、IO參數、通道狀態、通訊狀態、設備狀態、報警狀態、設備類型等。

同時,還包括:運行監視器,負責顯示設備運行的日志顯示;串口狀態監視,負責對串口控制的狀態顯示;網絡狀態監測,負責對網絡連接狀態的顯示。

1.8    監視器

監視器主要對平台軟件在運行過程中所產生的日志信息進行監視,並且顯示在運行監視器內,以及監測未知異常信息。

1.9    對外接口

主要通過配置文件的形式,掛載程序集,通訊平台再通過配置文件動態加載程序集,對外提供可訪問的接口服務。

1.9.1    掛載設備

可以把繼承IRunDevice接口的設備驅動模塊通過配制窗體把設備驅動的信息保存到配置文件中,配置信息包括:程序模塊文件、程序集ID(自動生成)、文件名稱、設備類型(普通設備、虛擬設備)、實例名稱(命名空間和類名稱)、設備名稱、備注信息等。

設備掛載成功後,可以在通訊平台的設備管理菜單中增加相應的設備,在增加設備的時候可以選擇串口或網絡通訊模式。

1.9.2    界面顯示

可以把繼承IGraphicsShow接口的視圖顯示模塊通過配制窗體把信息保存到配置文件中,配置信息包括:程序模塊文件、文件名稱、實例名稱、標題名稱等。

掛載成功的視圖顯示模塊,會在界面視圖菜單中顯示項,當單擊該配制項的時候,會以Tab的形式顯示相應的視圖。

1.9.3    外部程序

可以把可執行的應用程序配置到外部工具菜單中,作為通訊平台的工具使用。

1.9.4    數據導出

可以把繼承IExportData接口的數據導出模塊通過配制窗體把信息保存到配置文件中,配置信息包括:程序模塊文件、文件名稱、實例名稱、標題名稱等。

掛載成功的數據導出模塊,不會在界面中顯示,平台軟件會自動加載導出模塊的實例。

1.9.5    應用服務

可以把繼承IAppService接口的應用模塊通過配制窗體把信息保存到配置文件中,配置信息包括:程序模塊文件、文件名稱、實例名稱、標題名稱、服務類型和啟動類型。

服務類型包括:顯示模式和隱藏模式。顯示模型的服務可以在菜單中顯示服務項,可以通過單擊事件調用相應的服務窗體界面,對服務進行配置、管理等功能,可以通過這種模式手動啟動、停止服務;隱藏模式的服務不在菜單中顯示服務項,這種服務類型要配合啟動類型使用,把啟動類型設置為自動啟動,服務會在平台軟件啟動時自動啟動服務。

啟動類型包括:手動啟動和自動啟動。手動啟動模式,在通訊平台啟動時不會自動啟動服務;自動啟動模式,在通訊平台啟動時會自動啟動服務。

 

作者QQ:504547114

交流QQ群:54256083

官方網址:http://www.bmpj.net

源文章地址:http://www.bmpj.net/index.php?m=article&f=view&id=2

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved