开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍
一、项目背景
我们是传统行业,但是我们有一颗不传统的心。企业用户遍布国内和国外,面对行业,要建设行业级的(大)数据平台。一提到大数据平台,大家往往想到Hadoop、Spark、Nosql、分布式等等,我只能说我们还比较低级,但是后期肯定会涉及到这些技术。做大数据平台是有风险的,抛开绝技术方面,应该从四个方面来考虑这个问题:企业思维的转变、是否解决实际问题、是否落地可实施、是否有增值效应。
不转变思维,企业不死,个人死。为什么呢?战略定力差,推进动力不足,随时面临PASS的风险。
不能解决实际问题,那只是空中楼阁,创造不了实际的价值,变现也很困难,忽悠人是不能长久的。
不能落地可实施,要么是团体不行,要么是技术不行,总之还是团队不行,带头人不一定什么都懂,但是要有绝对的推进能力。
不能有增值效应,最终最不到钱,这是任何人都不愿意看到的情况。再美的女人,不能生孩子,你也要多顾虑一些。所以我大学同学找对象的第一原则,就是能生孩子。
二、数据情况
全国大概有238个站点,不包括国外。每个站点大概有2000个传感器,5分钟上传一次数据,相当于1秒钟要传7个点的传感器。在大数据平台再进行数据的深度分析,帮助生产企业改进生产工艺,以及安全防范。
三、通讯协议
通讯协议主要从指令要求、传输流程、通讯层级、应答模式、重发机制、超时界定、数据完整性、通讯效率、代码和字典定义等,进行综合考虑,有些是用技术实现的,有些是用协议保障的……。
通讯协议命令包如下:

四、缓存机制
避免频繁的操作数据库,在上传数据端和接收数据端进行了缓冲设计,作为临时数据的存储,当然这些临时数据也可以保存在Hadoop上,前期没有打算这样做。
客户端缓存结构图:

服务端缓存结构图:

五、通讯层面的框架
服务端使用的是SeverSuperIO(SSIO),并没有使用其他的框架。一是考虑到不同协议的接入,二是方便对站点的通讯状态、IO状态,以及站点进行管理。客户端就是自己写的控制台程序。

六、问题及解决
(1) 第一天客户端与服务端进行测试的时候,第二天发现客户端直接崩了,提示:OutOfMemoryException。经排查,再测试至今还没有出现问题。可能是因为线程并且对数据操作引起的。
(2) 测试过程中,发现接收到的数据开头和结尾都对,但是就是解析数据包为空。这个问题是因为CRC16校验与结尾字节数据组重复了,SeverSuperIO(SSIO)在过滤数据的时候,少了两个字节。后来把CRC16校验改成了校验和。
七、测试效果
测试12小时,如下图:

2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案
3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO
物联网&集成技术(.NET) QQ群:
开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍的更多相关文章
- 开源物联网框架ServerSuperIO 3.0正式发布(C#),跨平台:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套设备驱动跨平台挂载,附:开发套件和教程。
3.0版本主要更新内容: 1.增加跨平台能力:Win&Win10 Iot&Ubuntu&Ubuntu Mate 2.统一设备驱动接口:可以一套设备驱动,跨平台挂载运行,降低人力 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 18.集成OPC Client,及使用步骤
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布
19.设备驱动和OPC Client支持mysql.oracle.sqlite.sqlserver的持久化 19.1 概述 ServerSuperIO支持设备驱动和OPC Client采集的数 ...
- 《物联网框架ServerSuperIO教程》-21.终端控制传感器或设备,形成回路控制。附:demo源代码
21.1 概述 ServerSuperIO以前所做的工作逐步为形成回路控制或级联控制打下基础,例如:服务连接器和设备驱动连接器的开发与应用.总之,是通过多种形式下发命令控制设备(驱动)或传感器 ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- Firebug中调试中的js脚本中中文内容显示为乱码
Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---" ...
- date命令
GNU的date提供+%s(小写s), 能打印出自1970-01-01 00:00:00到当前时间的秒数. 这可能大家都不陌生,但有两点需要注意: 1. %s存在于GNU扩展版本.像在solaris等 ...
- 当我们在谈论kmeans(1)
本稿为初稿,后续可能还会修改:如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/ 简书:建设中... 知乎:建设中... 当我们在谈论 ...
- 解除win7网络限速.
在电脑刚买或者系统重装了的时候,win7系统会默认限制20%的网络速度,限制了我们的上网速度,我们可以解决这个限制,让上网变得更快 下面是操作步骤 1.开始>运行 2.输入以下命令,然后确定 g ...
- Visual Studio Code v0.9.1 发布
微软的跨平台编辑器 Visual Studio Code v0.9.1 已经发布,官方博客上发布文章Visual Studio Code – October Update (0.9.1):http:/ ...
- Guava库介绍之实用工具类
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...
- ARM的栈指令
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
- JVM系列-常用参数
1.堆内存 堆内存用于存储new对象,垃圾回收器负责堆内存的管理.但Java程序实际占用的空间则由堆内存.栈内存(程序运行栈).程序计数器.常量区.代码区.本地内存等. 堆内存分为Young和Old, ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
- 你所不知道的setInterval
在你所不知道的setTimeout记载了下setTimeout相关,此篇则整理了下setInterval:作为拥有广泛应用场景(定时器,轮播图,动画效果,自动滚动等等),而又充满各种不确定性的这set ...