无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

Artery AT32 MCU實現Modbus

2022-11-24 10:18| 发布者: 闪电| 查看: 3| 评论: 0

摘要: 1 概述Modbus是一种串行通信协议,是Modicon公司(现施耐德电气)于1979年为使用可编程逻辑控制器(PLC)通信而发表。如今Modbus已成为工业领域通信协议的业界标准,并且是工业电子设备之间常用的连接方式。1.1 关于 ...
1 概述
Modbus是一种串行通信协议,是Modicon公司(现施耐德电气)于1979年为使用可编程逻辑控制器(PLC)通信而发表。如今Modbus已成为工业领域通信协议的业界标准,并且是工业电子设备之间常用的连接方式。

1.1 关于 Modbus 协议
Modbus协议使用的是主从的通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方所使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如可编程逻辑控制器(PLC)等。

MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。

Modbus通讯物理接口可以选用串口(包括RS232、RS485等),也可以选择以太网口等。

图 1. Modbus 通信栈

MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS协议映射能够在应用数据单元(ADU)上引入一些附加域。

图 2. 通用 Modbus 帧

当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。需要管理超时,以便明确地等待可能不会出现的应答。

图 3. Modbus 事务处理(无差错)

图 4. Modbus 事务处理(异常响应)

MODBUS使用一个‘big-Endian’表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。例如,寄存器大小16-bit的值为0x1234,先发送的第一字节为0x12,然后为0x34。MODBUS的数据模型以一系列具有不同特征表格上的数据模型为基础。四个基本表格为:

表 1. Modbus 数据模型

MODBUS有三类功能码:公共功能码、用户定义功能码、保留功能码。
公共功能码是较好地被定义的功能码,保证是唯一的、公开证明的,具有可用的一致性测试。

图 5. 公共功能码定义

Modbus 串行链路协议是一个主从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus事务处理。
主节点以两种模式对子节点发出Modbus 请求:
1、 单播模式,主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个'应答')。每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。

图 6. 单播模式

2、 广播模式,主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。

图 7. 广播模式

Modbus有两种串行传输模式被定义:RTU 模式(默认) 和 ASCII 模式。

图 8. RTU 和 ASCII 模式的位序列

Modbus 串行链路上所有设备的传输模式 (和串行口参数) 必须相同。有关Modbus 实现和特性的详细信息,请访问Modbus 官网:https://modbus.org。

1.2 关于 FreeModbus 协议栈
FreeMODBUS是一个针对通用的Modbus协议栈在嵌入式系统中应用的实现。它提供了RTU/ASCII传输模式及TCP协议支持。FreeModbus遵循BSD许可证,这意味着用户可以将FreeModbus应用于商业环境中。目前FreeMODBUS只免费提供了一个Modbus从机节点的协议栈。该协议栈使用ANSI C编写,并且支持多个变量。
本应用指南将介绍如何在AT32F435单片机上,通过FreeMODBUS协议栈实现Modbus从机节点的主要功能,并提供基于AT32F43x_StdPeriph_Lib和FreeMODBUS协议栈的源代码。如结合AT32-Comm-EV Board和AT-START Board可以方便快速的搭建起基于RS485的Modbus从机节点。

1.3 关于 Modbus Poll 调试软件
Modbus Poll是一个Modbus主机模拟器,支持Modbus RTU、ASCI、TCP/IP传输模式。它可以协助开发人员调试Modbus从设备,测试和模拟Modbus协议的通信。通过多文档界面接口,可以同时监控多个Modbus从机设备、数据域等。每个窗口可简单地设定从设备ID、功能码、地址、长度和轮询间隔。支持Modbus数据模型的四个基本表格,支持Modbus的多个公共功能码。
本应用指南中将下载安装Modbus Poll在PC机上作为Modbus主机,与AT-START Board(作为Modbus从机)通过USB转RS485的模块相连,实现一个完整的、可测试的Modbus通信网络。

2 AT32 硬件准备
硬件主要由AT32-Comm-EV Board和AT-START Board组成。
本应用指南提供的demo使用到的外设资源有USARTTMR等,用户可根据具体需要灵活配置和修改,使用RS232或RS485来实现Modbus物理层的连接。

图 9. AT32 Modbus 结构原理图

 AT-START Board

当前提供例程基于AT-START-F435。可提供基于RS232的Modbus通信。

图 10. AT-START-F435 V1.0 实验板

 AT32-Comm-EV Board

可提供例程基于RS485的Modbus通信支持。

图 11. AT-START 结合 AT32-Comm-EV 使用

3 将FreeMODBUS移植到AT32上

3.1 基础工程准备

下载最新版本BSP&PACK文件,按照其应用指南进行安装及配置,本文档及例程均基于AT32F4xx_StdPeriph_Lib_V2.x.x的BSP&PACK文件进行开发。可借用at_start_f435文件夹下的temple工程来进行修改,更改文件夹及工程名为freemodbus,并准备在该工程内添加FreeMODBUS源码。

12下一页

路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2022-11-24 10:18 , Processed in 0.124801 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部