MODBUS 透传

概述

编写一段在 MODBUS 透传设备上的 Master 代码。透传设备上是通过串口转485模块跟485设备通信。透传设备上主要是按照 MODBUS Master的角色,发起 Request 并等待485设备的Response。其实,就是简单的调用了串口写后,再调用串口读超时。

参考文档及代码

MODBUS Application Protocol 1 1 bhttps://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdfAbout - Embedded Experts (embedded-experts.at)https://www.embedded-experts.at/en/freemodbus/about/luoyun1989/freemodbushttps://gitee.com/luoyun1989/freemodbus.gitluoyun1989/STM32_HAL_FREEMODBUS_RTUhttps://gitee.com/luoyun1989/STM32_HAL_FREEMODBUS_RTU.gitluoyun1989/FreeModbus_Slave-Master-RTT-STM32https://gitee.com/luoyun1989/FreeModbus_Slave-Master-RTT-STM32.gitluoyun1989/libmodbushttps://gitee.com/luoyun1989/libmodbus.git

代码编写

根据自己的串口驱动,实现write_ex, read_ex, read_ex中设置了500ms超时。(Master等待Slaver 回复的时间,通常设置为300~500ms,根据不同设备也可能是几秒)。

int32_t write_ex(uint8_t *buf, uint32_t buf_len) {

    uint32_t write_len = 0;

    int32_t retVal = rs232_write(s_pst232port, buf, buf_len, &write_len);

    return retVal;

}

int32_t read_ex(uint8_t *buf, uint32_t buf_len) {

    uint32_t read_len = 0;

    int32_t retVal = 0;

    if ((buf == NULL) || (buf_len < MAX_BUF_LEN)) {

        return -1;

    }

    retVal = rs232_read_timeout(s_pst232port, buf, buf_len, &read_len, 500);

    if (retVal == 0) {

        return read_len;

    }

    return -1;

}

#define MB_ADU_LEN                      256

#define MB_PDU_LEN                      (MB_ADU_LEN - 3)

#define MB_ADU_REQ_LEN_MIN              8

#define MB_ADU_RSP_LEN_MIN              5

#define MB_ADU_ADDR_INDEX               0

#define MB_ADU_FUNC_INDEX               (MB_ADU_ADDR_INDEX + 1)

#define MB_ADU_START_ADDR_INDEX         (MB_ADU_FUNC_INDEX + 1)

#define MB_ADU_QUANTITY_INDEX           (MB_ADU_START_ADDR_INDEX + 2)

#define MB_ADU_COUNT_INDEX              (MB_ADU_FUNC_INDEX + 1)

#define MB_ADU_INVALID_FUNC             0

#define MB_ADU_RSP_FUNC_EXCEPTION       0x80

#define MB_COILS_QUANTITY_MAX               2000  //0x7D0

#define MB_DISCRETE_INPUTS_QUANTITY_MAX     2000  //0x7D0

#d

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据 NUC972主板支持10通道modbus采集,支持透传模式,自解析模式本地数据库存储720min数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值