目录

嵌入式软件开发是软件开发中比较特殊的一环,对于开发人员来说,往往需要具备对硬件的一定了解。

串口通信

基本概念

  • 位:
    • 起始位
    • 数据位
    • 停止位
    • 校验位

Modbus协议

  • 概述:一种应用层协议,即不限定所使用的物理层等底层设施。目前ModBus有ASCII、RTU、TCP三种形式。
    • RTU(Remote Terminal Unit):该模式使用帧间隔来区分帧,两个帧之间至少间隔3.5个字符发送时间。
    • ASCII:该模式是使用特殊字符来标记帧起始和结束,同时规定ADU内只能使用ASCII编码下的'0'~‘f’这16种数值。需要用两个字符才能表示RTU的ADU中的一个字符
    • TCP:用于在TCP上传输时的报文形式,替换了ADU头部,同时由于TCP具备校验能力,去除了校验部分
  • 术语:
    • 线圈(Coil):boolean状态值,来源是早期的设备控制都是磁线圈,只有上电和失电两种状态。
      • 在一些地方也被称为“位”,这个就是使用了现代计算机的Bit概念了
    • 寄存器(Register):int值,这个就是通用的寄存器的含义了。
    • ADU(Application Data Unit) & PDU(Protocal Data Unit):
    • 功能码:用于表明该指令的业务目的,取状态值/设置状态值
  • 坑:
    • 在使用Modbus协议发送数据时,如果底层采用RTU,需要注意间隔发送,否则粘包。即使是使用上层Modbus TCP时,如果最终转为Modbus RTU,也需要注意这个问题。
    • 使用Modbus TCP转RTU时,需要注意TCP格式中的内容。

      参考:工业以太网杂谈(一) Modbus TCP/IP:关于设备识别号,对于Modbus TCP/IP协议该项默认255,但是如果该协议为Modbus Plus或者Modbus RTU等串口协议,通过串口服务器等转换设备转换后变为了Modbus RTU over TCP,则该项为Modbus 串口从站的设备地址。

  • 工具:
    • Modbus Poll/Slave: Poll用来模拟一个主站设备,便于调试从站。Slave则用来模拟从站设备,便于调试主站。
  • 参考: