积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> 网络协议
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 |
Modbus RTU通信协议在MCF51QE128上的实现
 
作者:无锡机电高等职业技术学校 毛新刚   来源:今日电子    点击数:278   更新时间:2008-7-23
您可以添加到网摘 让更多人关注此文章:

    

引言


工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一种通信规约。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。它已经成为主流的工业标准之一。不同厂商生产的控制设备通过Modbus协议可以连成工业网络,进行集中监控。

Modbus通信协议


1 通信传送方式


每一个数据字节包括:每个字节的位、1个起始位、8个数据位、最小的有效位先发送、1个奇偶校验位(无校验则无)、1个停止位(有校验时)、2个停止位(无校验时)。


在RTU模式下每个字节的格式(11bit)如下:
编码系统:8位二进制
字节组成:1bit起始位、8bit数据位,最低位最先发送、1bit奇偶校验位、1bit停止位(或者没奇偶校验位,就发送一个附加的停止位)。


2 数据帧结构


地址码:地址码为通信传送的第一字节。这字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。


功能码:通信传送的第二字节。ModBus通信规约定义功能号为1~127。根据实际需要只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1,则表明从机没有响应操作或发送出错。

表1 每一个完整的数据帧构成

数据区:数据区根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。


CRC码:二字节的错误检测码。冗余循环码检查(CRC)包含两字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位、起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。


在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一位,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。


这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。CRC码中的数据发送、接收时低字节在前。在实际应用中,为了提高运算速度,采用了查表的方法取代计算方法。


3 Modbus RTU数据帧结构


在RTU模式下,每一个数据帧之间的间隔至少是3.5个字符位。一个完整的数据帧必须要连续的传送,当一帧消息中两字节间的间距大于1.5字符位时,此数据帧错误,被接受方放弃。


当通信波特率小于等于19 200b/s。对1.5个字符位/3.5个字符位计算时间有严格要求。当通信波特率大于19 200b/s。1.5个字符位固定为750μs,3.5个字符位固定为1.75ms。官方的Modbus RTU规定标准为3.5个字符长周期,不同的串口设备由于使用环境不同可能在发送中出现5~10字长的间隙。对于Modbus RTU来说比较安全的设置为50ms。


4 用到的功能代码


用到的功能代码如表2所示。

表2 功能代码

MCF51QE128的主要特性


系统核心控制器采用的是Freescale公司推出的32位单片机MCF51QE128。它是一款32位ColdFire V1 MCU,特点包括:停止电流降至370nA,6μs唤醒时间,超低运行电流为50mA;50.33MHz ColdFire V1内核运行频率;25.165MHz的总线频率;最大为8KB的RAM;最高128KB的闪存;24信道的12位ADC;两个模拟比较器;2xSCI、2xI2C、2xSPI;一个6信道和两个3信道的定时器PWM模块;RTC;最多70路通用输入/输出(GPIO);系统集成频率锁定环(FLL)和软件看门狗;内部时钟源(ICS);低功耗外部32kHz振荡器;电压范围为1.8~  3.6V;增强型内部振荡器、电压调节器和实时计数器。通用开发环境是CodeWarrior for Microcontrollers 6.0。

软件设计


1 接收软件流程
如图1所示。

 

图1 从机软件流程


2 配置串口和定时器


void usart_init()

 SCI1C1=0x13;//9bit character mode,odd parity
 SCI1C2=0x2c;
 SCI1BDL=0x29;//38400bps
 SCI1BDH=0;
}
void timer3_init(void)//8MHz主时钟1333Hz中断判断命令包结束
{
 TPM3CNTH=0;
 TPM3CNTL=0;
 TPM3MODH=0x49;
 TPM3MODL=0xbe;  
 TPM3SC=0x48; 
}


3 MCF51QE128解包modbus RTU的程序


 void interrupt VectorNumber_ Vsci1rx SCI_RX_ISR(void)//字节接收程序
 {
  if(SCI1S1_PF==1)communication_error=1;//字节校验错误置通信失败标志位
  *(pointer_RX1)=SCI1D;//将数据放入缓冲队列
  pointer_RX1++;//队列指针后移
  len_RX1++;//收到字节长度加1
  timer3_reset();//定时器复位
  timer3_init();//定时器重启动
 }
 void interrupt VectorNumber_Vtpm3ovf Timer3_ISR(void)//判断命令包接收结束
 {
  timer3_cnt++;//定时器中断次数加1
  if(timer3_cnt==2)
   {   
timer3_reset();//定时器复位
pointer_RX1=Buffer_RX1;//队列指针初始化
  full_RX1=1;//收完置标志位
   }
 }


4 CRC查表产生函数


由于篇幅有限,此处不再详述,表具体内容可参照相关参考文献。

总结


笔者的设计基于MCF51QE128控制核心来实现Modbus协议,已经成功进行了实际应用,通信可靠,而且实现起来比较容易。该设计为采用MCF51QE128微控制器进行工业产品设计通信的应用提供了参考方案。



相关文章
· Modbus RTU通信协议在MCF51QE128上的实现[319]
· TM1300 DSP系统以太网接口的设计[161]
· 一种实现RS 422通信协议的接口电路[563]
· 一种实现RS422通信协议的接口电路[276]
· PL2101在路灯控制系统中的应用[195]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
电子制造业如何化危为机
谁能成为“Wii”加速度传感器的新供
AMD抨击英特尔拖延反垄断指控案作法
台湾立院通过DRAM业整并提案&nb
Vishay 推出面向工业
中航芯控:医疗领域RFID应用势在必
安森美半导体为DDR3存储器模块应用
避免危及半导体业 德出手挽
HP实验室展示集CMOS电路与忆阻器
全球第二大代工巨头伟创力瘦身应对金融
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
[原创]工业平板电脑PVT-P...
Palm软件设计前的六问...
李嘉诚传中给年轻人提出了53条...
WindRiver产品介绍...
嵌入式Linux的GDB远程调...
ARM无痛苦起步...
最豪华适用的S3C2440开发...
[推荐]10MF020以太网数...
[推荐]10MF020以太网数...
[推荐]F020以太网核心模块...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网