首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
ARM
» 基于ARM Cortex-M3的MODBUS协议实现及其应用
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于ARM Cortex-M3的MODBUS协议实现及其应用
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2015-6-24 21:56
|
只看该作者
基于ARM Cortex-M3的MODBUS协议实现及其应用
交流电机
,
无损检测
,
变频器
,
控制器
,
灵敏度
摘要:
针对变频器通信应用,介绍了MODBUS协议的特点及其组成;设计了RS485电路接口;并以ARMCortex-M3微控制器为核心,设计了MODBUS协议的实现方案。针对变频器F2000-G开发了嵌入式系统.实现变频调速功能,应用于无损检测试验仪。 漏磁探伤作为非接触式的无损探伤技术,其具有检测速度快、灵敏度高、无需耦合剂、易于实现自动化等特点,是钢轨探伤技术的重点研究方向。为解决漏磁探伤研究中的实验仿真问题,研制了基于嵌入式系统的无损探伤试验仪,通过实现MODBUS协议与变频器通信,以此驱动交流电机与机械试验装置,完成运动控制并进行无损探伤试验。
针对无损探伤试验仪中变频器通信问题,依据MODBUS协议规定,利用RealView MDK开发了基于ARM Cortex-M3微控制器的嵌入式软件,实现了与变频器的MODBUS通信,完成变频调速的运动控制功能。
1 MODBUS协议
1.1 MODBOS协议简介
MODBUS是Gould Ine注册的通讯协议商标,该协议具有纠错能力强、数据传输量大、实时性好等特点,是工业自动控制领域使用较广泛的通讯语言,目前已成为我国工业自动化领域的一种国家标准。
MODBUS协议定义了一个控制器能识别的消息结构,它描述了控制器请求访问和应答回应其他设备的过程,以及错误检测和记录的规范,制定了报文字段和内容的公共格式。MODBUS属于应用层报文传输协议,其通信结构为一对多的主从查询模式,即主从Master-Slave模式。MODBUS网络上可以有多个从节点,但有且只能有一个主节点,主节点按照通信协议对从节点发出请求操作,从设备收到主节点的请求后,做出相应的响应再向主节点回复应答消息。
1.2 MODBOS协议组成
MODBUS协议具有两种传输模式:ASCII模式和RTU模式。ASCII模式中数据以ASCH字符码表示,通过冒号、回车字符判定数据帧的起始和结束,采用IRC数据检验;RTU模式中数据以非压缩BCD码表示,通过时间标记实现数据帧起始判定,采用CRC数据校验,具有数据吞吐量高、传输稳定、通信效率高的优点。
由于变频调速系统的安全性能要求较高,所以选择通信效率高、时间管理严格的RTU传输模式。在协议帧组成上,MODBUS定义了一个基本的,与通信层无关数据协议单元PDU(Protocol Data Unit),并通过在PDU上添加地址、校验等附加域定义了应用数据单元ADU(Application Data Unit),形成完整的数据帧,MODBUS RTU数据帧组成如表1所示。
在数据帧起始判定上,MODBUS RTU采用了如图1所示的时间标记方法,即相邻的两帧之间必须间隔至少为总线发送3.5个字符的时间,该时间称为T3.5。
在MODBUS数据帧中,功能码是指主节点对从节点的请求操作类型,常用的MODBUS功能码及其功能如表2所示。
MODBUS RTU采用循环冗余校验码CRC(Cyclic Redundancy Check)是一种被广泛采用的多项式编码,编码简单且误判概率很低,在串行通信、以太网、MPEG解码等通信领域中得到了广泛应用。在通信过程中,发送方用待发送数据除以一个收发双方约定的生成多项式,将得到余数作为CRC校验多项式,附加在待发送数据尾部作为一个整体发送给接收方。接收方将收到的数据同样除以生成多项式,若余数为零刚传输正常,若余数不为零则传输出错。
2 电路连接及硬件参数
在无损探伤试验仪中,选用基于ARM Cortex-M3内核的STM32F103ZET6微控制器作为处理核心,而变频器采用了烟台惠丰公司的F2000-G矢量变频酪。STM32F103ZET6通过基于MAX3485的RS485链路与F2000-G相连,按照MODBUS协议与之通信,实现变频调速的控制功能。RS485接口电路如图2所示,STM32F103ZET6的USART3的Uart3Rx、Uart3Tx连接到MAX3485的RO、DI以进行RS232的数据收发;STM32F103ZET6的GPI01以I /O模式与MAX3485的接收使能端RE、发送使能端DE相连,对RS485半双工总线的通信方向进行统一控制;而MAX3485的差分信号端A、B则通过插座与F2000-G相连,同时为保证通信质量,消除总线上的信号反射,需在RS485网络终端的差分总线间串联50Ω的电阻R1。
在外设初始过程中,首先需要初始化USART3,按照F2000-G要求,采用的通信参数为:波特率9600kb·s-1,8位数据位,2位停止位,无奇偶校验;其次,还需初始化STM32F103ZET6的GPI01为输出模式,以此控制RS485的通信方向;再次,由于MODBUS RTU采用时间标记的方式进行协议帧的起始判定,所以使用STM32F103ZET6的定时器TIM2用以判定数据帧的结束,而MODBUS RTU中T3.5在工程应用通常取4个字符发送时间,因此设置TIM2的溢出时间为3ms;最后,为处理可能的总线延迟等通信故障,本文使用了系统定时器SysTick作超时判定,综合考虑到变频器动作时间、通信延迟等因素,超时判定的时间阈值取200ms。
3 MODBUS协议实现
在变频调速系统中,STM32F103ZET6作为主节点负责变频调速系统的功能控制,而变频器F2000-G作为MODBUS从节点负责响应主节点的请求,完成对交流电机的运动控制。因此本文中变频调速系统为基于MODBUS协议的主节点程序实现,MODBUS协议主要分为3部分:数据帧发送,数据帧接收和数据帧处理。
3.1 数据帧发送
发送数据时,必须将请求操作封装成标准的MODBUS协议帧才能成功进行发送,即MODBUS协议的编码。由前所述,数据协议单元PDU包括功能码和数据码,PDU的封装可以归纳为将操作类型和操作参数作为参数封装成PDU。构建PDU之后,在数据帧头部加入从机的地址,再将CR-C16校验值写入数据帧尾部即构成完整的应用数据单元ADU。
MODBUS中使用CRC16作为冗余校验,按照循环冗余检验算法,使用标准16位生成多项式,可对任意长度的信息字段校验出一个16位的校验码。其程序流程可描述如下:
(1)初始化一个16位寄存器,所有位进行置1。
(2)该16位寄存器与待校验数据串中第1Byte的数据进行异或,结果存回该寄存器。
(3)该16位寄存器右移一位。
(4)若该寄存器右移移出位为1,则与校验多项式0A001H异或,否则重复步骤3。
(5)重复步骤3和步骤4直到该Byte的8位数据均处理完毕。
(6)取数据串中下一个数据与该16位数据进行异或结果存回寄存器。
(7)重复步骤3~步骤6,直到待校验数据串中所有的字节数据均处理完毕。
(8)该16位寄存器中数据即CRC16的最终校验结果,加至数据帧末端。
因为STM32F103ZET6芯片内USART3无硬件FIFO的特点,所以需要软件上使用队列的数据结构作为发送缓冲和接收缓冲,以此进行串行口的收发任务。因此,在工作模式上USART3的发送采用查询式发送,一次性将发送缓冲区中的数据依次循环地发送出去,即队列的出队操作;而其接收模式为中断式,在USART3每次接收中断的响应函数中,软件按时间先后顺序将数据写入接收缓冲区内,即队列的入队操作。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议