Modbus设备FB接口设计背后的理念

已锁定

宝冬

  • 帖子

    1491
  • 精华

    52
  • 被关注

    177

论坛等级:奇侠

注册时间:2016-07-06

钻石 钻石 如何晋级?

Modbus设备FB接口设计背后的理念

4761

40

2022-11-04 08:11:20

star star star star star

类似下图这样的,以前在多个帖子中曾展示过,今天来聊一下接口背后的设计思考。


这张图片描述的案例场景是:5个同一品牌温控器连接到一个CB1241的485端口上。


Port485:这个参数不需多说,任何与本地485口编程有关的都会用到。对于本帖案例它指的是一个CB1241模块。

 

MBCommLoad和MBMaster:我是一直把通信当作IO来看待的。普通常见的IO都是单一、固定和孤立的。通信则是I和O的组合,而且I和O之间存在异步、跨扫描周期的行为关联。究其本质,通信就是因协议而关联到一起的IO复合体


通信和普通IO区别就在于:普通IO上是不存在双向交互协议的。普通IO都是单向信息。

通信= I + O + 协议

协议是工控和IT的灵魂。一个程序员是否可以自己搭建通信协议,是个分水岭。


所以对通信的IO操作,与普通IO不同,实际上是对协议执行指令的操作,而非直接操作底层硬件。所以对于本帖案例中温控器而言的IO,就是MBCommLoad和MBMaster这两个指令。

 

对于本帖案例而言,Port485、MBCommLoad和MBMaster,三者共同构成了直接走PLC本体485模块的modbus底层IO资源。

 

换言之,对于其它物理通道方式的Modbus通信,IO资源组合是不一样的。


下图是走UDP的Modbus通信的IO资源


下图是走TCP的Modbus通信的IO资源


这些协议操作的基础指令,都需要数据块实例。随便拖拽生成一个即可。

 

有的时候官方的基础指令未必够用或好使,可以自己另做。比如MB_Master_PtP和ModbusUDP (Master only),这两个我在其它帖子中提供过SCL源码供大家下载。

 


本例中的5个温控器的各自IO资源参数设定完全一样。

都是连在一个物理端口上,也都使用同一对MBCommLoad和MBMaster实例。既然是唯一公共IO资源,就没必要给每个温控器单独预备和独占。


也就是说,如果你有多个与PLC本体直连的485串口模块,就需要给每个端口,预备一对MBCommLoad和MBMaster实例,供连接在该端口的所有设备竞争和轮流使用。

 

注意:本帖案例中,因为用的是PLC本体上的串口模块,所以使用的是低版本的官方Modbus指令,指令执行速度会更快一点。如果是分布式应用,需要用高版本的。


Modbus设备FB接口设计背后的理念 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有12957条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。