1.简介
- LattePanda Alpha&Delta RS485 扩展板是专为 LattePanda Alpha&Delta 设计的轻工业级接口扩展板。
- 采用 FTDI 的 FT232RL 进行 USB 信号转换,稳定可靠。
- 采用金升阳的串口转 RS485 模块和电源模块,保证信号隔离与电源隔离。
- 两路并联的 RS485 输出信号,工业接线端子形式,可方便的连接各种 RS485 接口设备。
- 12V 电源输出,最大输出电流 150mA 左右,方便测试小负载的 RS485设备
- 沉金工艺,既美观,又保证 PCB 质量。
- 板载 120Ω 终端匹配电阻,可通过开关控制接入接出。
- 随产品附赠尼龙柱,保证产品与 LP 连接的稳定性。
2.产品参数
- 模块运行电源:+5V
- 符合 EIA/TIA-232-F 标准
- 通信波特率最高 1M bps
- 最高 12V 电源输出(输出电流 100mA 左右)
- 隔离电压 3000 VDC
- 1/8 单位负载,总线负载能力高达 256 节点
- 总线失效保护和总线驱动短路保护
- 工作温度范围:-40℃ to +105℃
- ⚠注意:
不支持热插拔
3.应用
- 在 Windows 环境下轻松开发和使用 RS485 通信接口。(兼容 Linux 环境)
4.引脚说明
LattePanda Alpha&Delta 引脚定义(建议参考 LattePanda Alpha wiki & LattePanda Delta wiki)
5.RS485 通信协议简介
典型的串行通信标准之一。
RS485 接口具有良好的抗噪声干扰性,较长的传输距离、多站能力和布线简单等优点,因而在工业上被广泛使用。
RS485 通信协议只定义了传输的电压,阻抗等电气特性,但不对软件协议给予定义。数据信号采用差分传输方式,因此具有抑制共模干扰的能力。总线收发器具有高灵敏度,能检测低至200mV的电压。RS-485用于多点互连时非常方便,可以省掉许多信号线。它使用一对双绞线,将其中一线定义为A,另一线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是逻辑1
状态,负电平在-2V~6V,是逻辑0
状态。其最大传输距离约为1200米,传输速率与传输距离成反比,只有在很短的距离下才能获得最高速率传输。RS485需要2个终端电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。在短距离传输时可不需终端电阻,终端电阻需接在传输总线的两端。
6. ModBus 通信协议简介
Modbus 协议是一个 master/slave 架构的协议。有一个节点是 master 节点,其他使用 Modbus 协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。一个 ModBus 命令包含了打算执行的设备的 Modbus 地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不回应指令)。所有的 Modbus 命令包含了校验码,以确定到达的命令没有被破坏。基本的 ModBus 命令能指令一个 RTU 改变它的寄存器的某个值,控制或者读取一个 I/O 端口,以及指挥设备回送一个或者多个其寄存器中的数据。
Modbus协议有多种变体:
- Modbus RTU —— 在串行通信中使用,并使用数据的紧凑二进制表示形式进行协议通信。RTU 格式遵循命令/数据,并带有循环冗余校验校验和作为错误校验机制,以确保数据的可靠性。Modbus RTU 是可用于 Modbus 的最常见的实现。Modbus RT U消息必须连续发送,且字符间不要犹豫。Modbus 消息按空闲(静默)时间段进行帧化(分隔)。
- Modbus ASCII —— 在串行通信中使用,并使用 ASCII 字符进行协议通信。ASCII 格式使用纵向冗余校验和。Modbus ASCII 消息由冒号(“:”)和换行符(CR / LF)组成。
- Modbus TCP/IP 或 Modbus TCP —— 这是 Modbus 变体,用于通过端口 502 连接的 TCP/IP 网络上的通信。它不需要校验和计算,因为较低的层已经提供了校验和保护。
7. 使用教程
这里演示 LattePanda Alpha & Delta 通过 RS485 接口控制 DFR0290 8路继电器。
安装驱动
注:Windows 系统下首次使用需要安装驱动。Linux 系统下无需安装驱动。
Windows 对 FTDI 芯片支持自动搜索安装,将扩展板插在 LP 上,等待几分钟时间,无需任何操作即可安装完成。(自动安装驱动时请保持 LP 联网)。
Windows 环境下,可在设备管理器查看驱动是否安装成功。驱动安装完成后,COM 名称为 USB Serial Port。
也可点击链接下载手动安装:
准备硬件:
- 一块 LattePanda Alpha & Delta
- 一块 LattePanda Alpha & Delta RS485 接口扩展板(DFR0779)
- 一块 RLY-8-PoE-RS485 8路继电器(DFR0290)
7.1 扩展板与 LattePanda Alpha & Delta 插接示意
需使用尼龙柱和尼龙螺丝固定扩展版与 LattePanda
7.2 连线图
如下图:
7.3 使用上位机软件
- LattePanda Alpha&Delta 与 RS485 接口扩展板插接好后,开机
- RLY-8-PoE-RS485 8路网络控制继电器模块接通电源
- LattePanda Alpha&Delta 上打开 DFRobot 出品的上位机软件,选择正确串口,波特率设置 115200
- 通过上位机软件即可操作继电器模块
7.4 使用串口调试助手
- 重复上述步骤
- 根据 8 路网络控制继电器模块的自定义通信规则,使用串口调试工具发送正确指令,控制继电器模块
如下图,控制继电器 1 号继电器的开关
7.5 使用 ModBus 调试助手
- 重复上述步骤
- 根据 8 路网络控制继电器模块的ModBus协议规则,使用ModBus调试助手发送正确指令,控制继电器模块
如下图,获取设备名称和控制继电器 2 号继电器的开关
7.6 使用 Python 的 ModBus 库
目前 Python 关于 ModBus 协议的第三方库,比较主流的有以下几种:
- Modbus_tk
- Pymodbus
- Minimalmodbus
- Umodbus
库名称 | 源码 | 3rd party 依赖 | 主要功能 |
---|---|---|---|
modbus_tk | https://github.com/ljean/modbus-tk | pyserial | Support modbus TCP and RTU, both master and slave。Don’t support modbus ASCII。 重量级 |
pymodbus | https://github.com/riptideio/pymodbus/ | pyserial | Support modbus TCP/RTU/ASCII, master and slave。 重量级 |
minimalmodbus | https://github.com/pyhys/minimalmodbus | pyserial | Only support Modbus RTU and ASCII, and only work in master(clinet). 非常轻量级 |
uModbus | https://github.com/AdvancedClimateSystems/uModbus/ | pyserial | Support both Modbus client amd server (both TCP and RTU). Don’t support Modbus ASCII。轻量级 |
这里以 modbus_tk 的使用为例。
- 重复上述步骤
- 在 LattePanda Alpha & Delta 上安装 Python 环境和 modbus_tk 和其他依赖包
- 根据 8 路网络控制继电器模块的ModBus协议规则,编写 python 代码,控制继电器模块
如下图,在命令行运行 Python 脚本,获取设备名称和控制设备依次开关所有的继电器
疑难解答
更多问题及有趣的应用,请访问论坛