### 物联网网络中间件
使用java语言且基于netty, spring boot, redis等开源项目开发来的物联网网络中间件, 支持udp, tcp通讯等底层协议和http, mqtt, websocket(默认实现和自定义协议头实现), modbus(tcp,rtu),plc,dtu(支持心跳,设备注册功能以及AT协议和自定义协议支持),dtu for modbus tcp,dtu for modbus rtu组件适配 等上层协议. 主打工业物联网底层网络交互、设备管理、数据存储、大数据处理. (其中plc包括西门子S7系列,欧姆龙Fins,罗克韦尔CIP,三菱MC). 数据存储将使用taos(TdEngine时序数据库)数据库以及redis消息队列
#### 如果您觉得的还可以点个star让更多开发者了解此项目
#### 主要特性
- 支持服务端启动监听多个端口, 统一所有协议可使用的api接口
- 包含一套代理客户端通信协议,支持调用:客户端 -> 服务端 -> 设备 -> 服务端 -> 客户端
- 支持设备协议对象和其业务对象进行分离(支持默认业务处理器【spring单例注入】和自定义业务处理器)
- 支持同步和异步调用设备, 支持应用程序代理客户端和设备服务端和设备三端之间的同步和异步调用
- 服务端支持设备上线/下线/异常的事件通知, 支持自定义心跳事件, 客户端支持断线重连
- 丰富的日志打印功能,包括设备上线,下线提示, 一个协议的生命周期(请求或者请求+响应)等
- 支持请求时如果连接断线会自动重连(同步等待成功后发送)
- 支持客户端发送请求时如果客户端不存在将自动创建客户端(同步等待成功后发送)
- 支持作为mqtt网关,将从工业物联网采集的数据更加简单方便的发布到mqtt服务器
- 支持常用的物联网协议比如:mqtt、plc、modbus、websocket
- 支持通过dtu方式使用modbus协议操作plc
- 支持 mysql8.0 和 TdEngine
#### 模拟工具
1. [QtSwissArmyKnife](https://gitee.com/qsaker/QtSwissArmyKnife) 支持udp、tcp、modbus、websocket、串口等调试 ,源码
2. [IotClient] 支持plc(西门子,欧姆龙,三菱),modbus,串口,mqtt,tcp, udp等模拟和调试 。源码
3. NetAssist.exe ,二进制
4. UartAssist.exe , 二进制
5. CX-Programmer ,plc调试软件,需要自己网络下载
**其它工具**
1、windows 下 杀进程工具 , 使用方法 , 比如要杀 nginx , 命令窗口 输入tskill nginx
2 服务安装和卸载工具 ,
### 开发文档
#### 1. 名词解释
1. 报文对象(Message):报文是对在网络中进行传输的二进制数据的封装,也是二进制数据的载体,在一定程度上 报文 = 二进制数据
2. 协议对象(Protocol):协议是报文的一个规范约束,比如报文内容是:0x04 AF CD EE 03,那怎么知道这一串表示的是什么呢,协议就是对这一串数据的声明, 比如第一个字节代表数据后面还有几个字节的长度, 第二个字节是电压,第三字节是电流,第四个字节是校验位
3. 组件对象(FrameworkComponent):在服务端,组件用来管理一个端口所需要的各种接口;在客户端,组件用来管理连接同一个服务器的所有接口以及已经连接的所有客户端。比如服务端的设备管理器,报文需要用到的编解码器,同步异步处理都是由组件来管理
4. 同步:在调用请求的时候,请求线程会加锁阻塞,直到接收到响应或者超时来解锁
5. 异步:在调用请求的时候,请求线程在发送完报文后直接返回,不阻塞调用线程, 而是注册一个回调函数,等到对方响应或者超时的时候在做业务处理
6. 编解码器:用来对网络上的二进制数据进行拆包和粘包的处理对象
7. 协议工厂(ProtocolFactory):用来创建各个协议对象的地方(因为一个客户端可能包含多个功能(协议), 每个功能对应一个协议对象那就会有很多协议对象,协议工厂用来管理协议对象的创建)
8. 协议处理器(ProtocolHandle): 用来对协议做业务处理的
下面将由一个例子来展开说明iot框架的使用
**例子:比如服务端接受到客户端报文如下:0x01 11 12 13 05 06 EE FF 八个字节, 如果客户端发送完此报文之后没有连续发送, 服务端接受到的数据就是一包完整的报文, 我们可以很容易的读取缓存区的内容然后进行处理; 那如果第一包发送完之后服务端还在忙其他的时没有及时读取缓冲区内容这时候又接收到了客户端的第二个报文,这时候数据缓冲区的数据如下:0x01 11 12 13 05 06 EE FF 02 21 22 23 25 26 AA BB CC DD,这时候程序读取的缓冲区是两包完整的报文,这时候程序怎么将两包报文拆开处理呢?这时候就需要编解码器上场了!**
如何处理上面报文粘包和拆包的情况呢?netty提供了一下几种常用的解码器
#### 2. 编解码器
1. FixedLengthFrameDecoder: 固定长度解码器是最简单的一种方式,每个包的长度是固定的,比如每个包都是8个字节,那么程序就可以以8字节为单位进行拆包
2. LineBasedFrameDecoder:换行符解码器是让每个报文都用换行符结尾,这时候程序可以循环读取每个字节判断,如果这个字节是换行符就说明已经读完了一包报文
3. DelimiterBasedFrameDecoder:如果我们的数据里面刚好包含换行符这时候读取就会出错,这时候可以用自定义分隔符来拆分报文
4. LengthFieldBasedFrameDecoder:不管是换行符解码还是自定义分隔符解码,都需要循环判断每个字节,如果在一包完整的报文很长的情况下性能会非常差,这时候有个非常好用且性能极高的解码器,长度字段解码,就是在报文里面加入一个长度字段用来标识整个报文的长度
5. ByteToMessageDecoder:如果还有更好的解码方式可以使用自定义报文解码
6. SimpleChannelInboundHandler:简单的解码器
在设备对接的时候厂家一般会提供协议文档,然后就需要我们来选择合适的解码器,当我们确认好了解码器之后就可以开始编码了,下面先开始服务端的对接教程
#### 3. 服务端教程
编写服务端网络程序时需要监听某个端口来给客户端连接, 当我们选择某个解码器之后就可以选择对应的服务端解码器组件来开启某个端口,iot框架适配了netty提供的几个常用的解码器
##### 创建解码器组件
1. FixedLengthFrameDecoderServerComponent 使用固定长度解码器的服务端组件
2. LineBasedFrameDecoderServerComponent 使用换行符解码器的服务端组件
3. DelimiterBasedFrameDecoderServerComponent 使用自定义分隔符解码器的服务端组件
4. LengthFieldBasedFrameDecoderServerComponent 使用长度字段解码器的服务端组件
5. ByteToMessageDecoderServerComponent 使用自定义解码器的服务端组件
6. DatagramPacketDecoderServerComponent udp协议的服务端组件
7. SimpleChannelDecoderComponent 简单自定义解码器对应的组件
以下是使用LengthFieldBasedFrameDecoderServerComponent示例
```
// 首先:必须先创建一个组件对象来继承LengthFieldBasedFrameDecoderServerComponent
// 以iot-test模块的断路器服务端模拟为例
public class BreakerServerComponent extends LengthFieldBasedFrameDecoderServerComponent<BreakerServerMessage> {
public BreakerServerComponent(ConnectProperties connectProperties) {
super(connectProperties, ByteOrder.LITTLE_ENDIAN, 256, 0
, 4, 0, 0, true);
}
xxx 实现省略
}
// 注:要求传入ConnectProperties对象作为构造参数, 此对象可以指定ip和端口
```
我们看到上面的组件需要一个泛型参数BreakerServerMessage, 此参数就是报文对象,上面我们说过报文对象是一个二进制数据载体,用于在iot框架各个对象中进行使用,下
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
开源mes系统:Java springboot + layui + mysql,看板和后端独立 。 目前MES系统的功能 : 1、 产品和原材料双向溯源 (支持二维码扫描输入后的自动解析,设备自动上传产品数据), 2、工艺流程定义, 3、生产计划, 4、工作过程监控, 5、工作进度监控, 6、设备管理, 7、班组管理, 8、质量管理(质量检测使用了产品参数自动测量技术,包括图像自动识别技术)、 9、报工 (包含在产品管理模块中,自动报工) 10、现场数据采集(PLC设备,网口/串口通讯,二维码扫描等), 11、可视化展示(订单编号,生产线,班组,计划产量,实际产量,次品数量,合格率,完工率,设备状态和稼动率,工艺工序,现场视频 ,等) 12、系统管理(用户管理,菜单,基础数据,日志), 13、报表和数据导入导出。 14、兼容多条产品线 15、 后端和ERP的对接。
资源推荐
资源详情
资源评论
收起资源包目录
开源mes系统:Java springboot + layui + mysql,看板和后端独立
(1313个子文件)
nginx.conf 1KB
bootstrap.css 134KB
bootstrap.min.css 111KB
layui.css 73KB
font-awesome.css 37KB
font-awesome.min.css 30KB
bootstrap-theme.css 21KB
bootstrap-theme.min.css 19KB
company.css 18KB
wangEditor.css 17KB
wangEditor.min.css 15KB
layer.css 14KB
splayui.css 11KB
layui.mobile.css 10KB
style.css 10KB
treeTable.css 9KB
zyupload-1.0.0.min.css 9KB
planDemo.css 7KB
laydate.css 7KB
comon0.css 6KB
comon0.css 6KB
404.css 3KB
effect.css 1KB
start.css 1KB
step.css 1KB
public.css 1KB
code.css 1KB
admin.css 0B
client.css 0B
Dockerfile 284B
简易mes部署说明.docx 30KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
fontawesome-webfont.eot 162KB
iconfont.eot 46KB
glyphicons-halflings-regular.eot 20KB
NetAssist.exe 622KB
tskill.exe 18KB
spring.factories 247B
spring.factories 217B
spring.factories 134B
spring.factories 126B
spring.factories 125B
spring.factories 122B
spring.factories 114B
icon.ftl 96KB
3DProject.ftl 20KB
addOrUpdate.ftl 14KB
addOrUpdate.ftl 14KB
addOrUpdate.ftl 12KB
addOrUpdate.ftl 11KB
addOrUpdate.ftl 11KB
formStep.ftl 10KB
addOrUpdate.ftl 10KB
list.ftl 10KB
list.ftl 9KB
list.ftl 9KB
list.ftl 8KB
demo.ftl 8KB
addOrUpdate.ftl 8KB
list.ftl 8KB
list.ftl 8KB
addOrUpdate.ftl 8KB
list.ftl 8KB
list.ftl 8KB
list.ftl 8KB
list.ftl 7KB
list.ftl 7KB
index.ftl 7KB
list.ftl 7KB
list.ftl 7KB
list.ftl 7KB
login.ftl 7KB
list.ftl 6KB
list.ftl 6KB
list.ftl 6KB
list.ftl 6KB
addOrUpdate.ftl 6KB
addOrUpdate.ftl 6KB
404old.ftl 5KB
addOrUpdate.ftl 5KB
addOrUpdate.ftl 5KB
list.ftl 5KB
planDemo.ftl 5KB
addOrUpdate.ftl 4KB
addOrUpdate.ftl 4KB
addOrUpdate.ftl 4KB
searchPanelMaterile.ftl 4KB
entity.java.ftl 4KB
spSearchPanel4SysUser.ftl 4KB
iconPicker.ftl 4KB
editor.ftl 3KB
addOrUpdate.ftl 3KB
addOrUpdate.ftl 3KB
addOrUpdate.ftl 3KB
welcome.ftl 2KB
plandg.ftl 2KB
colorSelect.ftl 2KB
mapper.xml.ftl 1KB
共 1313 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
- weixin_432275462023-12-31资源不错,很实用,内容全面,介绍详细,很好用,谢谢分享。
- weixin_417209752024-03-11支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
- qq_303210992024-01-28资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
南山二毛
- 粉丝: 1w+
- 资源: 41
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功