LattePanda V1 RS485接口扩展板

1. 简介

  • LattePanda RS485 扩展板是专为 LattePanda V1 设计的轻工业级接口扩展板,将 LattePanda 串口转换为 RS485 接口
  • 采用金升阳的串口转 RS485 模块和电源模块,保证信号隔离与电源隔离
  • 工业接线端子(4Pin:12V、GND、485A、485B),可方便的连接各种RS485接口设备
  • 12V 电源输出,最大输出电流 150mA 左右,方便测试小负载的 RS485设备
  • 沉金工艺,既美观,又保证PCB质量。双塑长脚2.0mm排针,保证排针的耐用
  • 板载 120Ω 终端匹配电阻,可通过开关控制接入接出
  • 随产品附赠尼龙柱,保证产品与LP连接的稳定性

2. 产品参数

产品尺寸

  • 模块运行电源:+5V
  • 符合EIA/TIA-232-F标准
  • 通信波特率最高 115200 bps(LP一代的TTL信号最高只能调节到115200bps)
  • 最高 12V 电源输出(输出电流小于 150 mA)
  • 隔离电压 2500 VDC
  • 1/8 单位负载,总线负载能力高达 256 节点
  • 总线失效保护和总线驱动短路保护
  • 工作温度范围:-40℃ to +105℃
  • ⚠注意:不支持热插拔

3. 应用

  • 在 Windows 环境下轻松开发和使用 RS485 通信接口(兼容 Linux 环境)

4. 引脚说明

LattePanda RS485扩展版引脚图



LattePanda V1 引脚定义(建议参考 LattePanda 官方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 V1 通过 RS485 接口控制 DFR0290 8路继电器

准备硬件:

  1. 一块 LattePanda V1
  2. 一块 LattePanda V1 RS485 接口扩展板(DFR0684)
  3. 一块 RLY-8-PoE-RS485 8路继电器(DFR0290)

7.1 扩展板与 LattePanda V1 插接示意

插接示意

需使用尼龙柱和尼龙螺丝固定扩展版与 LattePanda

7.2 连线图

如下图:

连线图



7.3 使用上位机软件

  1. LattePanda 与 RS485 接口扩展板插接好后,开机
  2. RLY-8-PoE-RS485 8路网络控制继电器模块接通电源
  3. LattePanda 上打开DFRobot出品的上位机软件,选择COM1串口,波特率设置115200
  4. 通过上位机软件即可操作继电器模块

上位机界面
操作效果图



7.4 使用串口调试助手

  1. 重复上述步骤
  2. 根据 8路网络控制继电器模块的自定义通信规则,使用串口调试工具发送正确指令,控制继电器模块

如下图,控制继电器 1 号继电器的开关

串口调试助手控制继电器



7.5 使用 ModBus 调试助手

  1. 重复上述步骤
  2. 根据 8 路网络控制继电器模块的ModBus协议规则,使用ModBus调试助手发送正确指令,控制继电器模块

如下图,获取设备名称和控制继电器 2 号继电器的开关

ModBus调试助手



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 的使用为例。

  1. 重复上述步骤
  2. 在 LattePanda V1 上安装 Python 和 modbus_tk 和其他依赖包
  3. 根据 8路网络控制继电器模块的ModBus协议规则,编写 python 代码,控制继电器模块

如下图,在命令行运行 Python 脚本,获取设备名称和控制设备依次开关所有的继电器

命令行运行python脚本
运行效果

python3脚本示例,点击获取.zip



疑难解答

更多问题及有趣的应用,请访问论坛



更多

DFshopping_car1.png DFRobot商城购买链接