上位机通信基础知识
上位机通信基础知识
上位机通信的概念
- 上位机:负责监控、数据处理、逻辑控制和人机交互。
- 下位机:PLC、单片机、嵌入式系统等,负责实时控制、数据采集或执行具体的任务。
上位机与下位机通信通过特定的协议和硬件接口,实现双向数据交换。
典型场景:
- 指令下发:上位机发送控制命令(启动/停止)到下位机。
- 数据上传:下位机将设备状态、数据(扭力、温度、压力等)发送给上位机。
通信方式与协议
通信方式:
- 串口通信:RS-232、RS-485(低成本、短距离 )
- 以太网:TCP/IP、Ethernet/IP(高速、远距离)
- 工业总线:CAN、EtherCat、Profinet(高实时性)
- 无线通信:Wi-Fi、蓝牙、LoRa(灵活部署)
协议:
- Modbus:支持串口通信和 TCP 通信,基于寄存器的通信操作,通过寄存器地址去访问数据,主从式通信。协议简单没有内置安全机制,不支持复杂的数据类型。
- OPC UA:支持跨平台、高安全性、复杂的数据结构和历史数据访问。
- CANopen:实时性高,抗干扰性好,支持多组通信,优先级仲裁机制。但传输速率有限,并不适合长距离传输。主要用于汽车和工控行业。
- EtherCAT:高实时性,微秒级响应-分布式时钟同步,适用于高精度的运动控制、高速的自动化生产线,部分需要授权才能使用。
- PLC:每个 PLC 支持的协议不同,需要根据对应的 PLC 决定。
- MQTT:轻量级,基于发布-订阅模式,适合低低带宽、不稳定网络环境
串口通信的参数配置:波特率、数据位(8 位)、校验反思(奇偶校验),需要与下位机一致。
数据交换
数据格式:
- 字节流:二进制数据(需按协议解析),以 byte 为单位存储,紧凑高效,解析速度块,适合对实时性和宽带要求高的场景,但可读性差,需要严格约定格式。
- 结构化数据:JSON、XML(可读性高、简洁性,常用于物联网)。
通信模式:
- 轮询:适合简单、低实时性场景,成本低但效率有限。
上位机开启线程循环等待是否读取到下位机传输的数据,收到数据返回收到数据信号。
- 中断:适合紧急事件处理,实时性强但需控制触发频率。
下位机检查到特定事件,如异常状态或数据时,主动反馈数据给上位机。
- 发布-订阅:适合于多设备协同场景(如 MQTT)
上位机(订阅者)订阅感兴趣的事件,仅接收到感兴趣的事件进行处理,无需知道发布者。
下位机(发布者)将数据封装成事件,主动发布到中心服务器上,无需知道订阅者。
异常处理
处理通信连接异常、接收不到数据、数据丢失、控制失效和设备故障等问题,提供处理逻辑。
- 超时重试:在没有接收到响应的情况下,触发自动重发请求,若重试成功则恢复通信(需设置最大重试次数,避免无限重试)
- 错误校验:
- 硬件校验:奇偶检验、CRC 校验。
- 软件校验:校验和、哈希值。
- 日志记录:详细记录异常时间、错误码、设备地址、数据内容,便于故障排查。
关闭连接
- 正常关闭:发送终止指令,释放资源。
- 异常恢复:断线后自动重连(需心跳包机制,异常检测与自动恢复)。