Modbus 通讯 示例

创建表

数据库创建表有几个范式需要遵守,大家可以去看看。

这里想提一点的就是,表的id字段,或者说记录的索引。

一般比较偷懒的做法就是直接用递增的序列.,一般数据库都有这个特性,自增字段。这个做法具有弊端。刚开始的时候或许还觉着方便,等到后期业务集成化提高的时候,就会发现问题。当多个业务系统进行合并的时候,自增Id不可避免的冲突。某些业务标识也用这个自增Id的时候,会因为这个标识不可更改,给业务的实现和调整带来一些困难。表中可以有自增字段,不建议作为业务中的记录索引。这里推荐采用GUID,理论上是不会重复的,一个系统能遇到的概率,比一个bu*生的概率小太多。如果不能避免程序出现bug,就别提这个。有人可能会说,性能比数字低,传输、存储等效率低、开销大。大家可以去试试有多大影响吧。

  • 设备表:Device Modbus 通讯 示例

 

  • 点表:TagModbus 通讯 示例

 

 

数据库

简单的就选择Mysql,创建数据库monitor

创建表语句

 

Modbus 通讯 示例

数据库创建完成

Modbus 通讯 示例

 

开发环境

本人用C#较多,比较顺手,先不折腾别的。后面有时间可以把python操练一下。另外尝试一下DotNet Core3.0。

 

Modbus协议

先找个*跑起来吧。*挺多,这里选择NModbus4。看了一下资料,NModbus4对 DotNet Core3.0支持不太友好,计划做个简单的迁移。之所以这么做,是因为NModbus4 开放写入事件响应接口,这样就可以做到对实时写入数据的监视。或许其他Modbus实现也支持,我还没看到吧。

 

数据库操作

之前接触过好些orm,这里选择sqlsugar。

 

工程创建

梳理了一下思路,开干。撸了一下午。基本结构出来了。

 

Modbus 通讯 示例

 结果展示

 服务端显示写入的数据区和地址

客户端显示读取的数据类型等信息

截图如下,基本完成目标。后续有时间继续完善吧

Modbus 通讯 示例