SSIO的更新
在SSIO上增加了UDP通讯方式,可以到Git上 下载源代码。在原来的项目中,远端的设备与中心站的数据交互并没有使用过UDP方式。这种短连接的通讯链路,不容易维护,主要体现在:(1)持续的数据交 互能力。(2)对现场设备进行长时间的维护和校准。(3)SSIO要协调设备、IO和控制方式之间的运作关系,无法即时反应设备的IO状态。等等。
但是,对于一个平台来讲,UDP的通讯方式是应该具有的,根据现场情况选择是否应用。例如:远端的设备定时发送设备状态信息等,可以使用UDP的通讯方式,在SSIO里单独建立一个状态服务实例。
SIO和SSIO应用方案
SIO和SSIO的设计思想是相似的,但是还是有一定的区别,请参见《C#跨平台物联网通讯框架ServerSuperIO(SSIO)》。
根据应用场景,SIO和SSIO可以相互配合部署到不同的地方。SIO可以部署在工业现场或工作站点,采集区域范围的硬件设备或传感器的数据,然后打包上传数据;SSIO可以部署在服务器端,接收上传的数据,并与现场进行数据或命令交互。结合图如下:
SIO本身就是一个WinForm应用程序,只需要继承MainForm就能够很快的构建自己的图形化的通讯平台,把开发好的设备驱动、图形显示、服务等 以插件的方式挂载到平台,就可以运行了,可以参见二次开发手册。一般现场工控机都是Windows操作系统,尽管SIO不支持跨平台(开发SIO的时候, 还没有Mono呢),但是支持Windows XP sp3所有以上版本的操作系统。
SSIO本身是一个支持多服务实例的命令行程序,更适合部署在服务器端,负责与SIO或现场设备、传感器进行数据交互。并且SSIO的各方面的性能更优于SIO,以及支持4种控制模式的应用场景,轮询模式、自控模式、并发模式和单例模式。
使用SIO和SSIO二次形式发时不需要关心对设备、IO和控制方式的调度,只需要继承接口开发设备驱动和设置相应的参数就可以了。另外,SIO和SSIO可以作为组态软件的核心通讯组件。
嵌入式智能设备
SSIO可以支持跨平台运行,如果智能设备内嵌裁剪后的Linux操作系统,SSIO可以跑在智能设备中,唯一的缺点就是缺少强大的Web监控服务,现在ASP.NET Core支持跨平台部署了,到是一个发展的方向。
SSIO也可以作为嵌入式智能网关服务,对采集的数据进行协议转换、打包、转发。
其他说明
SIO和SSIO的设备驱动,当网络通讯时,都支持Tcp Client工作模式。因为现场环境比较复杂,又是防火墙、路由之类的。有时候做项目,找个熟悉环境的人都困难,所以当前找了一个最简单的解决方法,就是反向连接,也一直延续至今。
====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]