串口 RS232 RS485 都是物理层标准
其中RS232使用较高差异的电平(±3-12v)区分逻辑 结构简单 用在芯片之间通讯 或在1m以内的PLC与上位机通讯
RS485使用差分信号区分逻辑(如A>B为逻辑0 反之为1) 使用缠绕双绞线以抗干扰 传输距离可以在1200m 半双工!
上位机编程一般直接根据串口逻辑进行(使用通用串口总线)
Modbus
ModBus链路

一个项目中还可能有多条 同一链路上使用相同波特率 主站->从站 以实现轮询/问答
仪表要配置 站地址(站号) 通讯参数(波特率 校验 数据位 停止位)
- Modebus RTU (Remote Terminal Unit) 远程终端设备
- Modebus TCP
寄存器
- 线圈寄存器 bit 可读可写
- 离散输入寄存器 bit 可读
- 保持寄存器 word(16bit) 可读可写
- 输入寄存器 word(16bit) 可读可写
功能码
| 功能码 (Hex) | 操作名称 | 读写权限 | 对应地址前缀 | 典型用途与场景 |
|---|---|---|---|---|
| 01 | 读线圈 | 读 | 0x (00001-) | 查看开关输出状态 例如:检查继电器是否吸合、电机是否运行、指示灯状态。 |
| 02 | 读离散输入 | 读 | 1x (10001-) | 读取外部开关信号 例如:读取按钮按下状态、限位开关触发、传感器到位信号。 |
| 03 | 读保持寄存器 | 读/写 | 4x (40001-) | 最常用的功能 读取/设置设备参数(如目标温度、PID参数)、读取模拟量输出值。 |
| 04 | 读输入寄存器 | 只读 | 3x (30001-) | 采集实时测量值 读取传感器数据(如当前电压、电流、温度、压力),通常不可修改。 |
| 05 | 写单个线圈 | 写 | 0x (00001-) | 控制开关动作 远程启动/停止电机、强制置位继电器、开关阀门。 |
| 06 | 写单个保持寄存器 | 写 | 4x (40001-) | 修改单个参数 修改变频器的频率设定、调整温控器的设定值。 |
| 10 (16) | 写多个保持寄存器 | 写 | 4x (40001-) | 批量下发配置 一次性写入一组PID参数、设置多段速运行指令,提高效率。 |