二.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。

当工作模式为TcpServer时,通讯平台会监听网络连接,客户端连接到服务器端,会把连接实例以IO接口的形式放到IO管理器。

当工作模式为TcpClient时,通讯平台会主动连接远程服务器,当连接成功后,会把连接实例以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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-14 10:28:31

二.SuperIO架构和组成部分的相关文章

企业级应用框架(二)三层架构之数据访问层的封装与抽象

接上一篇我们来对数据访问层进行封装与抽象.在上一篇我们知道,要解除BLL对DAL的依赖,我们就必须抽象出DAL层的接口,同时基于DAL的数据访问技术很多,如EF,ADO.NET,LINQ TO SQL,因此,我们的数据访问层必须对这些技术提供相应的支持.所以今天我们要做的事情有两件,第一,定义我们的数据访问层接口:第二,屏蔽各类数据库访问技术的差异,提供统一的数据库访问模型.举个例子,我们只需要修改一下我们的配置文件,就能够把ADO.NET的实现方式,改变成EF的实现方式.好下面搭建我们的三层构

大型网站技术架构(二)--架构模式

大型网站技术架构(一)--大型网站架构演化 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型网站面临的高并发访问.海量数据.高可靠运行灯一系列问题与挑战.为此,在实践中提出了许多解决方案,以实现网站高性能.高可靠性.易伸缩.可扩展.安全等各种技术架构目标. 1.分层 分词是企业应用系统中最常见的一种架构牧师,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后

【工业串口和网络软件通讯平台(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

Log4j官方文档翻译(二、架构设计)

log4j遵循层次化架构,每个层都有不同的对象来执行不同的任务.这种层次话的结构灵活设计.易于未来的扩展. log4j框架中有两种对象: 核心对象:框架的支撑对象,是框架必不可少的组成部分. 支撑对象:这些是框架可选的对象,用于提供额外重要的工作. 核心对象包括下面几种类型: logger对象,是最高的层,负责通过不同的风格转化日志信息.它提供给appender对象发布前的信息.(这里的层是指所处的位置) layout对象,用于提供格式化日志信息的风格,在发布日志信息前,使其变得可读.可重用.

MVC之排球比赛计分程序 ——(二)架构概要设计

本程序主要基于MVC4框架,使应用程序的输入,处理和输出强制性分开,使得软件可维护性,可扩展性,灵活性以及封装性得到提高, MVC应用程序分为三个核心部件:Model,View, Controller. 一, 架构基本原则: MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任务. 视图  视图是用户看到并与之交互的界面.对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序

从零开始学架构(二)架构知识领域

更新说明 本篇文章已经整理完很长时间,总感觉有些不足,因此一直没法,希望润色后再发,深感自己水平有限,迟迟没有动笔.但是收到多位朋友的邀约,思考再三决定逐步完成本系列文章.其中不足,请批评指正,我们一起进步. 内容摘要 主要从架构方法论,系统划分,架构原则,通用模式,架构视图,几个方面.整体上介绍了架构相关的知识领域,在此基础上,可以有目的的学习相关资料. 本篇主题  2.1架构方法论:面向过程,面向对象,面向方面,面向服务 2.2系统划分:系统,子系统,模块,功能,接口 2.3架构基本原则:场

排球计分(二)架构概要设计

MVC本身就是架构,所以本篇主要就是对MVC的简要概述. MVC最初是在Smalltalk-80中被用来构建用户界面的.M代表模型Model, V代表视图 View, C代表 控制器Controller. MVC的目的是增加代码的重用率,减少数据表达,数据描述和应用操作的耦合度. 同时也使得软件可维护性,可修复性,可扩展性,灵活性以及封装性大大提高. 单用户的应用通常是以事件驱动的用户界面为组织结构的.开发人员用一个界面工具画了一个用户接口界面,然后编写代码根据用户输入去执行相应的动作,许多交互

Shuttle ESB(二)——架构模型介绍

该部分包含如下五部分内容,限于篇幅,本文先介绍前三个:概念.消息类型.耦合. 一.概念 二.消息类型 三.耦合 四.模式 五.消息路由 概念 本位中的所有代码,不是一个完整的例子,也不是一个vs解决方案.它向我们介绍了,在Shuttle ESB里面一些比较重要的概念.在Shuttle ESB入门实例 里面,有一个简单的实现,将这些概念融合在了一起,大家可以结合实例,理解本文的概念. Shuttle ESB的基本组成:消息.队列和服务总线 每一个服务总线实例都是相关联的,因此只有一个输入队列,注意

Openstack nova(二)——架构(一)

架构源自需求 需求分析 软件架构大部分都来自于需求.能够说.有什么样的需求,就会有什么样的架构, 尽管不同一时候期,不同的人来实现,可能不全然一样.可是整体来说, 架构不会相差太远. 如今假设假设须要自己来实现一个相似Openstack这样功能的软件,会是什么样的呢? 首先,还是再看看前一章中总结的最简单的需求 物理server的管理 server的选择 虚拟机的创建.开机.关机.挂起.暂停.调整.迁移等操作 物理server的管理 要对物理server进行管理, 至少要满足下面几个条件 要有一