1.概述

使用RS485物理接口进行串口调试。

  • 背景

  • 适用范围

1.1背景

在ED-HMI2120系列产品上实现与Windows平台进行485通讯。RS485是一种功能强大的串行通信标准,具有良好的抗干扰能力、长距离传输能力和高速传输能力,适用于各种工业控制和自动化应用中的数据通信需求。基于RS485底层,可以开发应用层的上层协议Modbus-RTU和Modbus-ASCII。本文仅列出常用串口调试工具及方法。

1.2适用范围

本应用适用于ED-IPC2000、ED-IPC2200、ED-IPC2100、ED-HMI2120系列、ED-HMI2220系列、ED-HMI202-系列产品。如果您使用其他系列产品,但需要使用485进行串口底层调试,也可以参考本文档。

2.应用指导

介绍在ED-HMI2120系列产品上使用485调试。

2.1RS485使用与调试

RS485为串口通讯的物理层接口协议。以下介绍在Windows下与ED-HMI2120系列产品使用485进行串口通讯并实现部分串口操作。

前提条件

  • USB转485模块

image-20240613103714045

  • 一台有可用USB口的Windows电脑

  • 一台HMI-2120系列产品

  • Windows下安装sscom51串口调试工具:sscom51open in new window

  • 正确接线:根据模块所标明,将A与HMI2120上所选择的A2连接,B与B2连接。GND与GND相连。如下图所示

image-20240613103751130

  • 将USB转485模块插入电脑USB口后打开sscom51工具。能识别端口号。

image-20240613104253346

2.1.1使用picocom进行串口调试

Picocom 是一个更轻量级的串口通信工具,它的功能较为简单。它专注于提供基本的串口通信功能,因此更适合于简单的串口交互和调试。

前提条件:已按照指示正常接线,并Windows上可正常识别端口号。

操作步骤

  1. HMI命令行终端安装picocom工具

    sudo apt install picocom

  2. HMID打开串口等待数据交互

    sudo picococm -b 115200 /dev/com2

    115200:设置的波特率

    /dev/com2:由查询ED-HMI2120应用手册得知。接线A2,B2口对应串口com2image-20240613104837463

  3. 输入Ctrl+A,Ctrl+C打开本地回显,等待另一方打开串口即可开始调试image-20240614103254827

  4. Windows操作:打开sscom的串口进行收发测试。image-20240613105208271

    a) 在sscom51发送区编辑要发送的数据,点击发送,可以在HMI命令行终端中看到对应数据,收发成功。image-20240613105303051

    b) 在HMI命令行终端写入数据。可以在sscom51界面接收到数据,收发成功。image-20240613172106828

  5. 使用16进制收发

    a) 在HMI命令行输入如下命令打开16进制显示

    sudo picocom /dev/com2 --imap spchex,nrmhex,8bithex

    b) 再次使用sscom51发送字符串数据,在HMI本地回显为16进制显示。image-20240613105345316

    c)在HMI命令终端输入Ctrl+A,Ctrl+W,可以按HEX格式发送数据。 image-20240613105405691

2.1.2使用minicom调试

Minicom 是一个功能更为丰富的串口通信程序,提供了更多的功能,如脚本支持、多窗口、X/Y/ZModem 文件传输等。它是一个相对较老的工具,但仍然被广泛使用。下文同样使用minicom进行简单的串口底层调试。

  1. HMI命令行安装minicom工具

apt install minicom

  1. 配置minicom参数

    a) 输入命令打开配置界面

    minicom -s

    image-20240613105416329

    b) 选择Serial port setup进行参数配置波特率,端口号,流控,停止位等。此处配置同上节picocom。 image-20240613105519073

  2. 数据收发测试

    使用Ctrl+A+E打开本地回显,同picocom在终端输入调试即可。 image-20240613105647778

  3. 设置16进制显示

    a) 输入命令进入配置界面,选择screen and keyboard。image-20240613105738630

    b) 输入S设置Hex Display,显示Yes后。键盘输入Enter保存。image-20240613105818511

    c) 同2.1节类似,Windows端发送字符串,在minicom终端会显示解析为16进制显示。image-20240613105827826

2.1.3 使用pyserial进行调试

pyserial 是一个 Python 库,用于简化串口通信。在嵌入式系统开发、设备控制和数据采集等领域,pyserial 非常有用。它支持多平台,包括 Windows、Linux 和 macOS,并且可以处理各种串口设备。下文介绍使用python脚本实现串口数据收发。

操作步骤:

  1. 查看是否安装python环境

    python -V

​ 若返回版本号则有。没有则安装使用如下指令安装

sudo apt install python

  1. 创建代码编写示例文件

    a) 使用如下指令创建.py文件

    nano test.py

    b) 将代码复制进文件中,然后Ctrl+S,Ctrl+X保存退出

import serial # pyserial
try:
    # 端口号设置
    portx = "/dev/com2"
    # 波特率设置
    bps = 115200
    # 超时设置
    timex = 5
    # 打开串口,并得到串口对象
ser = serial.Serial(portx, bps, timeout=timex)
data = [0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00]
    # 写数据
    result = ser.write(data)
    print("写总字节数:", result)
    ser.close() # 关闭串口
except Exception as e:
print("error!", e)
  1. 输入指令执行文件

    python test.py

在Windows上sscom51界面上接收到数据,收发良好。image-20240613105854785