最近发现了个Modbus接口验证工具,做了个示例(CShell + HslCommunication =》 Modbus、Serial、Profinet 等 工控行业通讯协议调试工具箱),欢迎讨论。
创建表
数据库创建表有几个范式需要遵守,大家可以去看看。
这里想提一点的就是,表的id字段,或者说记录的索引。
一般比较偷懒的做法就是直接用递增的序列.,一般数据库都有这个特性,自增字段。这个做法具有弊端。刚开始的时候或许还觉着方便,等到后期业务集成化提高的时候,就会发现问题。当多个业务系统进行合并的时候,自增Id不可避免的冲突。某些业务标识也用这个自增Id的时候,会因为这个标识不可更改,给业务的实现和调整带来一些困难。表中可以有自增字段,不建议作为业务中的记录索引。这里推荐采用GUID,理论上是不会重复的,一个系统能遇到的概率,比一个bug产生的概率小太多。如果不能避免程序出现bug,就别提这个。有人可能会说,性能比数字低,传输、存储等效率低、开销大。大家可以去试试有多大影响吧。
- 设备表:Device
- 点表:Tag
数据库
简单的就选择Mysql,创建数据库monitor
创建表语句
数据库创建完成
开发环境
本人用C#较多,比较顺手,先不折腾别的。后面有时间可以把python操练一下。另外尝试一下DotNet Core3.0。
Modbus协议
先找个轮子跑起来吧。轮子挺多,这里选择NModbus4。看了一下资料,NModbus4对 DotNet Core3.0支持不太友好,计划做个简单的迁移。之所以这么做,是因为NModbus4 开放写入事件响应接口,这样就可以做到对实时写入数据的监视。或许其他Modbus实现也支持,我还没看到吧。
数据库操作
之前接触过好些orm,这里选择sqlsugar。
工程创建
梳理了一下思路,开干。撸了一下午。基本结构出来了。
结果展示
服务端显示写入的数据区和地址
客户端显示读取的数据类型等信息
截图如下,基本完成目标。后续有时间继续完善吧
验证