目前,市场上存在很多网关产品。一般分为两种:透传网关和单协议网关。透传方式不具备解析功能,单协议网关只支持一种协议,这样造成开发者每次还要寻找不同的协议网关去解决问题。然而,至于北京智雨物联科技公司提供的给予ARM架构利用.net core 2.0开发的智能网关解决的此问题。让一个网关支持多种协议成为可能。
工业物联网需要大量的协议通讯,如何能够快速的连接设备相应的协议呢?智雨物联提供了一套完整的解决方案,利用智雨物联公司的智能网关(支持OPC UA)和协议开发包就能快速的开发自己想要的协议。网关提供的标准的工业总线接口RS485,RS232,以太网等,通过协议开发包,开发者只需关注协议解析部分,无需考虑接口的问题快速开发协议。从而实现一个网关支持多种协议的功能,而且智雨物联云平台还提供了web组态功能,良好的图形化界面使得开发一套SCADA监控系统变得简单很多。
基于智雨平台协议接口,开发新的通讯协议,本文档基于创建MODBUS协议为列,讲解如何创建使用新的自定义协议。
其中,协议实现的模型图,如下图所示:
所有协议均实现自Protocol.Interface协议接口
创建新的自由协议,主要要创建两个类库
xxxx.Protocol.{name}和xxxx.Protocol.{name}.Config
其中第一个类库主要涉嫌协议内通讯的功能,第二个类库主要为需要实现的协议设置配置参数
1:xxxx.Protocol.{name}勒库中主要需要的类
1):{name}ProtocolException类:(根据具体需求,此类可无)
主要实现该协议下的各种错误类型,在编写具体协议通讯代码时,根据报错类型创建此类对象。方便日志记录。
2):{name}Protocol类:
具体协议类,此类为协议具体实现的类,需要继承 IProtocol接口
IProtocol接口需要事先的方法有:
协议包运行入口:
///channel">通道配置
///canceltoken">取消标识
void Run(Channelchannel, CancellationTokenSource canceltoken);
异步读取变量:
void AsyncReadValue();
异步写入变量:
///stagnames">要写入的变量名称
///ovalues">要写入的变量值
///serveroperationcontext">服务器上下文
void AsyncWriteValue(string[]stagnames, object[] ovalues, objectserveroperationcontext);
获取变量信息方法:
PData[] GetValue();
四个委托
publicdelegatevoidPDataValueChanged(PDatachangeddata);
publicdelegatevoidPDataWriteComplete(PDatacompletedata);
publicdelegatevoidPDataReadComplete(PDatacompletedata);
publicdelegatevoidPDataAlived(PData aliveddata);
四个事件:
///
///变量值改变后,触发此事件
///
eventPDataValueChanged ValueChanged;
///
///异步写入完成后,触发此事件
///
eventPDataWriteComplete WriteComplete;
///
///异步读取变量完成后,触发此事件
///
eventPDataReadComplete ReadComplete;
///
///每与变量通讯一次,触发此事件
///
eventPDataAlived Alived;
xxxx.Protocol.{name}.Config类库:
该类库主要为自定义协议中的协议通道和协议设备根据需求设置配置参数。
要实现的类:
{name}SerialChannel类:
协议串口配置信息,该类需要继承SerialChannel类其中在SerialChannel类中已存在的配置参数有:
可根据需求创建自己需要的协议属性,以ModBus协议为参考:
{name}EthernetChannel类:
协议网口配置类,此类需要继承EthernetChannel类,此类中已经实现的配置项有:
以ModBus协议为例:
{name}Device类:
协议设备类,在该协议通道下创建新的协议设备时,设备所需配置的参数,该类需要继承Device类,以ModBus协议为例:
以上就是利用智雨物联云平台的协议开发包开发modbus协议的过程,用户利用协议开发包开发各种协议就可以在智雨物联云平台设计自己的监控系统了!
更多案例请登陆www.krmes.com qq:553016857