【工业串口和网络软件通讯平台(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
【工业串口和网络软件通讯平台(SuperIO)教程】二.架构和组成部分的更多相关文章
- 【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务.数 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 导出数据接口的作用 在数据集成系统项目中,要么是自已集成其他厂家的设备,要么是其他厂家集成自己 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】五.二次开发图形显示界面
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 图形显示接口的作用 用于显示采集终端设备的数据,可以把不同类型设备的数据以多种形式集成显示在不 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】四.开发设备驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 开发准备 把“开发包”内的所有文件复制到项目的“bin”目录下,或项目下的专用生成目录.开发包 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】九.重写通讯接口函数,实现特殊通讯方式
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 统一的IO接口 开发一套设备驱动同时具备串口和网络通讯能力,通讯接口在逻辑上是统一的,在此基础 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】一.通讯机制
1.1 应用场景 通讯平台的交互对象包括两方面:第一.与硬件产品交互.第二.与软件产品交互.基本这两方面考虑,通讯平台一般会应用在两个场景: 1)通讯平台应用在PC机上 主要应用在自动站的工控机 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】八.SuperIO通讯机制与设备驱动对接的说明
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 通讯机制说明 通讯的总体机制采用呼叫应答方式,就是上位机软件主动发送请求数据命令,下位机终端接 ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】三.二次开发流程
1.1 二次开发流程图 1.2 引用相关组件 找到“开发包”,引用里边的相关组件.如下图: 1.3 开发设备驱动模块 1.3.1 开发发送协议驱动 继承SuperIO.Devi ...
- 工业串口和网络软件通讯平台(SuperIO 2.0)发布
下载:SuperIO 2.0(开发手册.Demo.组件包) 官网:进入 交流群:54256083 SuperIO 2.0版本正式发布.把SCL正式更改名称为SuperIO. 一.此次升级主要包括两个方 ...
随机推荐
- 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7 在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...
- JQuery图片切换动画效果
由于博主我懒,所以页面画的比较粗糙,但是没关系,因为我主要讲的是如何实现图片动画切换. 思路:想必大家都逛过淘宝或者其他的一些网站,一般都会有图片动画切换的效果,那是怎样实现的呢?博主我呢,技术不是很 ...
- WPF入门教程系列二十三——DataGrid示例(三)
DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...
- android studio sdk 不能更新
网上看到好多sdk不能更新的,解决办法基本上一下,试了下大都没用,,有人说改hosts ,我试了 貌似没用 下面是我亲测可以更新的一种方法:使用镜像地址更新 步骤: 1. 打开 SDK Manager ...
- python学习之day1-基础知识
1.变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问.在python中,如果要使用一个变量,不需要提前声明,只需要在用的时候,给这个变量赋值即可.pytho ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
- SmtpClient发邮件时为什么用MailMessage.From而不用MailMessage.Sender
今天在看C#高级编程(第9版)的时候,在768页看到这样的一段代码 SmtpClient sc = new SmtpClient(); sc.Host = "邮箱服务器地址"; M ...
- 深入理解ajax系列第一篇——XHR对象
× 目录 [1]创建对象 [2]发送请求 [3]接收响应[4]异步处理[5]实例演示 前面的话 ajax是asynchronous javascript and XML的简写,中文翻译是异步的java ...
- ASP.NET MVC之JsonResult(六)
前言 这一节我们利用上节所讲Unobtrusive Ajax并利用MVC中的JsonResult来返回Json数据. JsonResult 上节我们利用分部视图返回数据并进行填充,当我们发出请求需要获 ...
- Java面向对象练习
1.定义长方形类,含: 属性:宽.高(整型): 方法:求周长.面积: 构造方法3个:(1)无参——宽.高默认值为1:(2)1个参数——宽.高均为参数值:(3)2个参数——宽.高各为参数值. 要求:进行 ...