跳到主要内容

Modbus在算盘上的连接

背景

Modbus 是一种工业协议,于 1979 年开发,旨在实现自动化设备之间的通信。 Modbus 最初是作为通过串行层传输数据的应用级协议实现的,现已扩展到包括通过串行、TCP/ IP 和用户数据报协议(UDP)的实现。

Modbus 具有以下几个优势:

  1. 标准、开放,用户可以免费、放心地使用 Modbus 协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持 Modbus 的厂家超过400家,支持 Modbus 的产品超过600种。
  2. Modbus 可以支持多种电气接口,如 RS-232、RS-485 等,还可以在各种介质上传送,如双绞线、光纤、无线等。
  3. Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。 标准的 Modbus 口是使用 RS-232-C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由 Modem 组网。

Modbus 是一个开放的架构,支持各种操作系统。目前在 linux 环境下进行开发,通过 TCPIP/USB 串行适配器和外部进行通讯。通过实现一个 Modbus 核心协议栈,来完成 Modbus 的接口开发。根据 Modbus 的特性,它的协议数据接口有下述的定义:
Modbus 协议是一个 master/slave 架构的协议。有一个节点是 master 节点,其他使用 Modbus 协议参与通信的节点是 slave 节点。每一个 slave 设备都有一个唯一的地址。slave 一般是硬件设备。
对于 Modbus TCP 而言,主站通常称为 Client,从站称为 Server;而对于 Modbus RTU 和 Modbus ASCII 来说,主站是 Master,从站是 Slave。

MODBUS RTU 报文格式:

起始位设备地址功能代码数据CRC校验结束符
T1-T2-T3-T48Bit8Bitn个8Bit16BitT1-T2-T3-T4

MODBUS ASCII 报文格式:

起始位设备地址功能代码数据LRC校验结束符
1个字符2个字符2个字符n个字符2个字符2个字符

MODBUS TCP 报文:

交互标识协议标识报文长度设备标识功能代码数据
2字节
一般为0
2字节
一般为0
2字节
高字节在前
1字节
也就是设备地址
1个字符n个字符

可以看到 Modbus 是基于 TCPIP 或者串行接口上的数据结构。从硬件层来说可以确定是经过 Ethernet 接口和串行接口卡。从 Modbus 的协议数据中看到的特征包含设备地址,功能码,和应用数据。用户可以从 Modbus 中读取一个或者多个数据。
 
Modbus 常用的的功能码如下表所示:

功能码名称作用
01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02读取输入状态取得一组开关输入的当前状态(ON/OFF)
03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值
05强置单线圈强置一个逻辑线圈的通断状态
06预置单寄存器把具体二进值装入一个保持寄存器
15强置多线圈强置一串连续逻辑线圈的通断
16预置多寄存器把具体的二进制值装入一串连续的保持寄存器

功能描述

支持从 Modbus TCP 和 RTU 设备中采集数据,并且定期读取点位,得到点位的值,并且输出。
支持数据通过网络(MQTT 和 Websocket)转发。
支持查看 Modbus 使用中产生的设备日志。
支持导入导出 Modbus 的点位表。
支持多 Modbus 设备的同时连接。

测试平台搭建

使用 Modbus Slave 作为对接的测试软件,并且设置好端口,运行,这里监听在 9001 端口上。

测试流程

在算盘Link组件后面板点击打开网页的按钮,可以打开用户界面的数据接入模块,如图所示。

添加通道

点击新建通道按钮,填写通道的名称:
 
添加成功之后会在左侧栏目中显示,这里会显示已连接的状态:

添加设备

选择通道点击添加设备按钮,弹出一个对话框,填写正确的服务器地址和名称,然后点击确认。
添加成功之后,可以在左侧看到一个测试设备,并且在状态栏里面显示设备已经连接。

添加变量

点击新增点位,会弹出一个对话框。按照如图所示填写,并且确认。

可以看到点位列表里面显示了新的一个数据项。

点击导出点位表按钮,可以得到一个excel文件:

可以看到导出的excel表格只有一行数据,编辑这个表格,扩展出多行数据,然后导入。
 
可以看到用户配置的点位变得更加的丰富: