【工业串口和网络软件通讯平台(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时,通讯平台会监听网络连接,client连接到server端,会把连接实例以IO接口的形式放到IO管理器。

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

每个设备都有一个视频属性操作接口,针对现场的设备能够选择配置视频server,在server端对文件数据和视频数据进行融合展示。

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

原文地址:https://www.cnblogs.com/wzzkaifa/p/7233293.html