Modbus 通讯 示例

最近发现了个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。

 

工程创建

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

 

 结果展示

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

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

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

验证

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值