xml地图|网站地图|网站标签 [设为首页] [加入收藏]

【工业串口和网络软件通讯平台(SuperIO)教程】四

SuperIO相关材质下载:

1.1    应用场景

   通讯平台的并行对象包涵两地点:第一、与硬件产品竞相。第二、与软件出品竞相。基本这两下边思量,通信平台一般会接纳在多个场景:

1)通信平台应用在PC机上

   主要利用在自动站的工控机上,通过RubiconS485/凯雷德S232、奥迪Q7J45、4-20mA等办法搜聚硬件装置的多少音信。同不经常候,通信平台与劳动器端的软件举行交互,负担上传数据消息,以及接受调整命令等。

2)通信平台应用在服务器端上

澳门mgm4858集团登录网址,   终端设备以3G/4G、无线专网、卫星等与报纸发表平台连接,进行多少交互,终端设备包含:PC机、移动终端(手提式有线电话机)、监测设施等。

 www4858mgmcom 1

1.1    开辟计划

把“开垦包”内的有所文件复制到项指标“bin”目录下,或项目下的专项使用生成目录。开采包文件蕴含如下图:

www4858mgmcom 2

  SuperIO.dll是软件平台的着力模块, SuperIO目录是软件平台的参数配制、数据存款和储蓄的目录。

1.2    通信机制概述

   对于报纸发表平台来讲,通信部分始终是软件的基本,要求高实时性、高牢固。软件架构决定了软件运转的安居,以及后来的扩张性,所以要求对电视发表机制、调控方法进行杰出的设计。

   一般采纳的简报机制为呼叫应答情势,或叫主从方式。主机发送央求命令,从机接到指令后展开校验数据的完整性,以及明确是还是不是发放自个儿的吩咐,校验成功后,再次回到钦定的数据消息,完结壹遍完整的报道。

   呼叫应答通信机制如下图:

www4858mgmcom 3

1.2    项目配制

1)目的框架采纳Framework4.0

www4858mgmcom 4

2)生成的靶子平台应用x86

www4858mgmcom 5

不无事例程序的靶子平台运用x86。首要思虑到叁16人操作系统与64操作系统的包容性。

1.3   串口、互联网的结合

    在开采设备驱动或协商驱动的时候,对于同三个驱动模块要同一时间援救LacrosseS485/智跑S232和ENVISIONJ45通信方式,防止因为协议的分裂也许通信格局的两样进行数十次重复性的支付。有限支持职业逻辑统一的意况下,尽量收缩职业量。所以,在简报格局方面要在逻辑上统一接口,以担保整个电视发表平台的通用性。

    接口设计如下图:

www4858mgmcom 6

 

1.3    假定通讯公约

1.4   串口通信机制

    由于串口通讯的表征限制,防止多个硬件装置连接到串口总线出现数量错乱境况,重要采用轮询格局的呼唤应答通迅机制。

1.3.1    发送读实时数据命令合同

Computer发送0x61下令为读实时数据命令,共发送6个字节,校验和为从“从机地址”开始的增进和,不包涵“数据报头”、“校验和”和“合同甘休”。

发送指令数据帧如下:

www4858mgmcom 7

  

(1)  轮询情势

   当有多个器材连接到通信平台时,通讯平台会轮询调解设施实行报导任务。某偶尔刻只好有三个设备开展发送须要命令、等待接受重临数据,这一个装置达成发送、接收后,下多个配备才进行电视发表职分,依第二轮询设备。如下图:

www4858mgmcom 8

1.3.2    深入分析实时数据左券

    下位机接收到读实时数据命令后,并校验成功,重临实时数据,校验和为从“从机地址”开始的增进和,不饱含“数据报头”、“校验和”和“合同甘休”。

收受数据帧如下:

www4858mgmcom 9

 

1.5   网络通信机制

    轮询通讯机制是保险数据有序的发送、接收,幸免出现数据在总线上出现杂乱,不过这种通信机制是以收缩质量为代价的,适用于串口通信,在以太网通讯中分明不可能丰富利用网络通信的优势。

    以太网是单身信道、能够全双工通信。为了充裕发挥以太网的优势,在轮询通信机制的底蕴上扩充了产出通讯格局、自作者调节通信形式通迅机制。一是为着提MediaTek讯的性质,二是为了贰次开荒有越多自己作主要调节制权。

1.3.3    发送和接收数据事例

发送(十六进制):0x55 0xaa 0x00 0x61 0x61 0x0d

选取(十六进制):0x55 0xaa 0x00 0x61 0x43 0x7a 0x00 0x00 0x43 0xb4 0x15 0x0d

流量数据为:250.00

时限信号数据为:360.00

(1)  轮询格局

    以太网轮询通讯方式与串口通信格局一致,如下图:

www4858mgmcom 10

1.4    新建设施模块

如下图:

www4858mgmcom 11

增加对SuperIO.dll的引用,如下图:

www4858mgmcom 12

    项指标配制请参见:1.2档期的顺序配制。

(2) 并发情势

    并发通信格局是聚集发送全体器械的央浼指令,硬件配备接收到指令后张开校验,校验成功后回到对应指令的数量,通信平台监听到数量音讯后,举行摄取操作,然后再开展数据的散发、管理等。如下图:

www4858mgmcom 13

1.5    创设筑协会谈商讨驱动

    新建七个类:MySendProtocol 和MyReceiveProtocol,MySendProtocol承继SCL.Device.DeviceSendProtocol基类,MyReceiveProtocol类承接SCL.Device.DeviceReceiveProtocol。

      MySendProtocol 和MyReceiveProtocol八个类都重写(override)“Function61”函数,MySendProtocol类中的Function61函数完毕打包发送命令操作,MyReceiveProtocol类中的Function61函数完毕深入分析数据操作,FunctionXX在七个类中都会成对出现,首即使为着好记。

     在MySendProtocol实例中可以调用DriverFunction函数,传入相应的授命,举个例子:0x61。会自行调用“Function61”函数,作为调用相应命令函数的驱动接口。GetSendCmdBytes函数接口是在DriverFunction函数基础上包裹的,一样也得以运用,不过要把“isbox“设置成false,不然会对发送的数码做非常的拍卖。

   在MyReceiveProtocol实例中得以调用DriverFunction函数,传入相应的命令,比方:0x61。会活动调用“Function61”函数,作为调用相应命令函数的驱动接口。GetAnalysisData函数是在DriverFunction函数基础上包裹的,同样能够采纳,只是多调用了一层GetCommand函数接口。

    具体代码请参见:Device德姆o项目。

(3)  自笔者调节方式

    自笔者调整通讯方式与出新通讯情势类似,差距在于发送指令操作交给设备自个儿,可能说交给二遍开垦者,一遍开荒者能够独立通过事件驱动发送指令。硬件设施接收到指令后开展校验,校验成功后回来对应指令的数量,通信平台监听到数量音讯后,实行摄取操作,然后再展开多少的散发、管理等。

    自笔者调整通信情势可认为二遍开垦者提供可信赖的定时要求实时数据机制,使通信机制越来越灵活。也能够利用自小编调控通讯形式,在不发送任何数据的气象下,举办被动接收数据。如下图:

www4858mgmcom 14

www4858mgmcom, 

作者QQ:504547114

交流QQ群:54256083

1.6    创设参数和实时数据实例类

新建四个类:MyDeviceParameter和MyDeviceRTDataMyDeviceParameter承接SCL.Device.DeviceParameter类,用于保存备参数,能够在此类中追加新的设备参数。

           MyDeviceRTData承继SCL.Device.DeviceRealTimeData类,用于保存设备的实时数据,能够依靠电视发表合同自定义设备的实时数据。

      那八个类继承基类后会自动连续SaveSerialize和GetSerialize多个泛型函数,SaveSerialize函数是把当前指标种类化成XML,GetSerialize是把体系化的XML反向变化对象实例。

          SCL.Device.DeviceParameter类和SCL.Device.DeviceRealTimeData类是承袭自SerializeOperation类,他们的接口是IserializeOperation,SerializeOperation只是二个简练的系列化XML操作类库。

     假若开垦者想完全自定义三个数额持久文件,那么能够承接IserializeOperation接口,重写相应的接口函数,自定义存款和储蓄数据的方式。

 

法定网站:

源网址:

1.7    构建设备驱动

      “创设筑协会谈商讨驱动”和“创设参数和实时数据实例类”两节都是为构建运维设备做的开始时代希图,将作为运转设备的性质。

      新建二个器材类:MyDevice,它继续自SCL.Device.RunSCLDevice1。

开垦者注意到还应该有三个SCL.Device.RunSCLDevice类,它是相比较早的周转设备类,思量的平台的包容性,今后还在三番五次使用,可是新开采的设备模型不提议利用SCL.Device.RunSCLDevice类。

它们都以持续自IRunSCLDevice接口。

1.7.1    常用接口

1)         public override SCL.ProtocolDriver.ISendProtocol SendProtocol

把写好的出殡公约类实例化之后,在此重临。比方:MySendProtocol类。

 

2)         public override SCL.ProtocolDriver.IReceiveProtocol ReceiveProtocol

把写好的摄取协议类实例化之后,在此再次来到。比如:MyReceiveProtocol类。

 

3)         public override SCL.Device.IDeviceParameter DeviceParameter

把写好的设备参数类实例化之后,在此重临。比如:MyDeviceParameter类。

 

4)         public override SCL.Device.IDeviceRealTimeData DeviceRealTimeData

把写好的实时数据类实例化之后,在此重回。比如:MyDeviceRTData类。

 

5)         public override void InitDevice(int devid)

开端化设备,能够在此间对出殡和埋葬协议、接收左券、设备参数和实时数据等新闻进行初叶化。

 

6)         public override byte[] GetRealTimeCommand()

其一类是回去读实时数据命令,当CommandCache命令缓冲区中有可发送命令的时候,优先读、发送取命令缓冲区中的命令数据;如果CommandCache命令缓冲区未有数据的时候,软件平台会自动调用GetRealTimeCommand函数接口,重临读实时数据命令,进行发送。

 

7)         public override void DealData(byte[] data)

当报纸发表平日时,软件平台会把收到到的数据自动传入到这么些函数,能够调用ReceiveProtocol属性举行剖析数据以及管理、分析、保存。通信符合规律与否和收受契约类中CheckData函数接口有关。

 

8)         public override void UnRegDevice()

当软件平台没有注册的时候,软件平台会调用那几个函数。

 

9)         public override void UnknownIO()

当电视发表链路为null的时候,软件平台会调用这些函数。比方:串口未展开、网络尚未连接等。

 

10)     public override void CommunicateChanged(SCL.Device.IOState ioState)

当报导状态发送退换的时候,软件平台会调用这一个函数。通讯状态富含:通信正常、通信中断和报纸发表困扰。

 

11)     public override void CommunicateError()

当报导困扰的时候,软件平台会调用那些函数。通信不荒谬与否和摄取合同类中CheckData函数接口有关。

 

12)     public override void CommunicateInterrupt()

当报纸发表中断的时候,软件平台会调用这一个函数。通信平日与否和接受公约类中CheckData函数接口有关。

 

13)     public override void CommunicateNone()

当未知通信状态的时候,软件平台会调用这一个函数。一般景观下不会冒出此类意况。

 

14)     public override void SaveData()

对拍卖的多寡举行保存。

 

15)     public override void Alert()

判定数据是还是不是丰富,借使出现极度数据,在开展报警管理。

 

16)     public override void ShowData()

体现数据管理,用于创新设备运转器,以及自定义UI和导出数据。

 

17)     public override void DeviceTimer()

每种设备会分配一个机械漏刻,暗中认可1秒钟调用叁次那么些函数。能够通信IsStart提姆er属性运维、甘休反应计时器,通过提姆erInterval属性设置沙漏试行间隔。

 

18)     public override SCL.Device.DeviceType DeviceType

回到设备项目,设备档案的次序包罗:普通设备、设想设备以及别的。

 

19)     public override s y s t e m.Windows.Forms.Control DeviceGraphics

回去设备图形化分界面。

 

20)     public override void ShowContextMenu()

展示上下文菜单函数。

 

21)     public override string ModelNumber

回来设备模块编号,也等于器械的型号,这一个编号尽量供给不能够重新。

 

24)public void ShowMonitorIODialog();

展现通道监视器窗口

 

25)public void ShowMonitorIOData(byte[] data, string desc);

向运维监视器中显示数据音讯

1.7.2    属性表明

     上面是设备具备的属性,请参谋。

1)         UserLevel

客户等第属性,包涵:未知客商、普通用户、低等客商和高级客户等多个品级。

 

2)         IsStartTimer

获得或安装是还是不是张开当前设备的石英钟,暗中同意不张开。

 

3)         TimerInterval

获得或安装当前设备机械钟的间隔时间,默以为1秒。

 

4)         IsRegLicense

赢得或设施当前设备是还是不是被登记,暗中认可不注册。

 

5)         RunDevicePriority

获得或安装当前设备运行等级,分为:普通和事先。如若为先行级别,则先调用该举办发送和接收数据。

 

6)         CommunicationType

获得或设置当前配备的通讯类型。满含:串口和网络二种。

 

7)         CommandCache

收获或设置当前配备命令缓冲,要是有要发送的数据,则先行调用命令缓冲的数量开展发送。

 

8)         IsRunDevice

获取或安装是或不是运转业前设施,假如设置false,当前设置不在场运营(发送和接收数据)。

 

9)         DeviceParameter.IsSaveOriginBytes

标志是还是不是保存原有发送和接受的字节数据,要是保留,暗中认可保存路线在D盘。

 

10)      object Tag

有时标识属性。

 

11)      object SyncLock

同步锁对象

1.7.3    事件表明

以下设备事件都是在原技艺件的底子上进展包装的函数,开拓者能够直

接调用以下触发事件的函数,软件平台在开发银行的时候已经私下认可加载了这几个事件。

1)         void OnReceiveDataHandler(byte[] revdata);

接触接收数据事件

 

2)         void OnSendDataHandler(byte[] senddata);

接触发送数据事件,当互联网通信的时候,应用Self情势的时候,能够通过那一个事件自己作主发送数据。

 

3)         void OnDeviceRuningLogHandler(string statetext);

把道具运维日志输出到运营监视器

 

4)         void OnUpdateContainerHandler();

接触更国民党的新生活运动行监视器事件

 

5)         void OnCOMParameterExchangeHandler(int oldcom, int oldbaud, int newcom, int newbaud);

串口改动事件。

 

6)         void OnDeviceObjectChangeHandler(object obj);

指标数据变动事件,用于驱动彰显、导出、服务等模块。

 

7)         void OnDeleteDeviceHandler();

删去设备事件

1.7.4    高档应用

1)         void RunIODevice (SCL.CommunicateController.IDeviceIO io)

能够重写这些函数,在那边改动设备运转的流程,依据CommunicationType属性钦命的广播发表类型,能够把io参数转变为网络通信接口ISocket或串口通信接口ICOM,之后能够有针对性的对出殡和埋葬操作和摄取操作实行一回开垦。一般不提议重写这几个函数。

 

2)         void Send(SCL.CommunicateController.IDeviceIO io, byte[] sendbytes)

能够重写那么些函数,依据CommunicationType属性内定的通信类型,能够把io参数转换为互连网通讯接口ISocket或串口通信接口ICOM,进行发送数据操作。在不重写RunDevice函数的气象下,在适合的使用场景能够重写那么些函数。

 

3)         byte[] Receive(SCL.CommunicateController.IDeviceIO io)

能够重写那几个函数,依照CommunicationType属性钦赐的简报类型,能够把io参数转变为互联网通信接口ISocket或串口通信接口ICOM,进行接收数据操作。在不重写RunDevice函数的意况下,在适宜的应用场景能够重写那几个函数。

 

4)         void SaveBytes(byte[] data, string desc)

能够重写这一个函数,对发送的数据和接到的数据开展自定义保存。私下认可保存在"d:软件平台 原始数据"目录下。

 

5)         void SocketConnect(string ip, int port)

能够重写这么些函数,当互连网通信的时候,有客商端连接到软件平台会调用那些函数接口。

 

6)         void SocketDisconnect(string ip, int port)

能够重写这几个函数,当网络通信的时候,有客商端与软件平台断开会调用那些函数接口。

1.8    设备调节和测量检验

1.8.1    分界面情势调整

   分界面形式测量试验首假如塑造三个主程序,模拟真实的应用程序对设施开展

测量试验。推荐使用这种测量检验方法。

1)  引用组件

重中之重引用Device德姆o程序集。如下图:

 www4858mgmcom 15

测量试验设施

分界面方式测量试验是有窗体分界面包车型大巴,必得继续“SCL.UI .MainForm”类,并用代码把软件平台设置成调节和测量检验形式“SuperIO.Device.DebugDevice.IsDebug = true;”,如图:

 www4858mgmcom 16

在Form_Load中初步化实例,并且加载调节和测验设备模块,首假若成立设备实例、初始化参数、进行设备调节和测量试验,如:this.DebugDevice((IRunDevice)_myDevice)语句。如下图:

www4858mgmcom 17

3)IO监测器,呈现发送和采纳的原来十六进制数据,便于调节和测量试验。如下图:

www4858mgmcom 18

4)用VirtualSerialPortDriver在本机设想出来多个串口,三个串口完成了虚构连接,举例:COM1和COM2;张开串口帮手软件和平台软件(SuperIO平台),分别安装COM1和COM2,依据“1.3万一通信协议”发送和接收数据。相关软件在“援助理工科程师具”目录里有。如下图:

www4858mgmcom 19

切实地衡量试代码,请参见:FormTest项目。

1.8.2    调控台方式调节和测量试验

调整台测量检验,未有UI彰显界面,部分机能恐怕测量试验不全。须要通过

SCL.Device.IdebugDevice debug= SCL.Device.DebugDevice.GetDebugInstance()拿到调节和测量检验实例。别的代码与“分界面情势测量检验”同样。如下图:

www4858mgmcom 20

1.9    挂载设备模块

在“工业串口和互连网软件通信平台_SuperIO”目录下找到【ConfigTool.exe】应用程序,采取【设备配备】选卡,单击【挂载设备】按键,把刚刚开荒的设施驱动模块挂载到平台下。如下图:

www4858mgmcom 21

1.10    在平台下运营设备

     把器具驱动挂载好今后,运营“工业串口和互联网软件通信平台_SuperIO”目录下的【SuperIO_Run.exe】应用程序,选拔【客商管理】->【客户登录】菜单,采取【程序员】或【管理员】客户,输入私下认可的密码:123。

登录到软件平台后,选拔【设备管理】->【增添设备】菜单,选取刚刚挂载的设施驱动模块。如下图:

www4858mgmcom 22

开辟的好的道具驱动模块同不日常间援助COM(串品)和TCP(互连网)二种简报情势,TCP(网络)通信时辅助Client和Server三种工作格局。

 

作者QQ:504547114

交流QQ群:54256083

合French Open址:

源文章地址:

本文由美高梅集团网址发布于彩票竞彩-投注|代销,转载请注明出处:【工业串口和网络软件通讯平台(SuperIO)教程】四

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。