十. IEC 61499开源项目4diac集成modbus从站

IEC 61499开源项目4diac运行时(forte)只支持modbus主站,不支持modbus从站。下面会讲解怎么在4diac运行时里面新增modbus从站。Modbus主站可以理解为modbus协议的客户端,用于从modbus从站(服务端)读取或者写入变量的值。Forte原本可以用于从modbus从站读写变量,如可以通过modbus操作支持modbus从站的远程IO模块,在原本的forte中对modbus主站支持还是比较全的,如支持的modbus rtu、modbus tcp、线圈、离散输入、保持寄存器、输入寄存器。以上是forte对modbus主站支持情况。

    要在forte中添加modbus从就要先了解modbus主站的代码结构,modbus主站用了libmodbus开源库。libmodbus跟上是支持modbus主站和从站的,所以在forte中添加modbus从站也会使用libmodbus。Modbus主站在forte源码的目录结构是src/com/modbus。里面的文件有modbusclientconnection(用于调用libmodbus操作modbus从站,包括连接、数据读写等)、modbusconnect(创建modbus主站与从站的链路,如modbus rtu、modbus tcp)、modbushandler(modbus主站接收到从站数据后触发一个事件,让与modbus主站输出事件相连接的功能块来获取从modbus从站收到的数据)、modbuslayer(用于创建modbus主站对象,事件链异步把输出到从站的数据和事件链异步去从站输入数据都在这里处理)、modbuspoll(modbus主站异步操作从站的数据读写)、modbustimedevent(modbus主站定时事件管理,如时间计算、时间触发执行)。

    在了解了forte实现modbus主站的结构后,要实现modbus从首先要思考的是modbuslayer,要在这个里面添加创建modbus从站对象的代码,就是在

EComResponse CModbusComLayer::openConnection(char *pa_acLayerParameter),这个函数里面,新增一个类型e_Server用于创建modbus从站对象,在使用创建从站对象前,要添加modbus从站实现文件。以及要清楚为什么switch (m_poFb->getComServiceType())的值是e_Server。这个e_Server实际来源于forte创建服务端或客户端的代码。以上提供的是代码实现思路。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2193410903

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值