欢迎来到天天文库
浏览记录
ID:22551364
大小:476.00 KB
页数:13页
时间:2018-10-30
《freemodbus学习笔记》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、....FreeModbus学习笔记一、FreeModbus简介FreeMODBUS一个奥地利人写的Modbus协议。它是一个针对嵌入式应用的一个免费(自由)的通用MODBUS协议的移植。Modbus是一个工业制造环境中应用的一个通用协议。Modbus通信协议栈包括两层:Modbus应用层协议,该层定义了数据模式和功能;另外一层是网络层。FreeMODBUS提供了RTU/ASCII传输模式及TCP协议支持。FreeModbus遵循BSD许可证,这意味着用户可以将FreeModbus应用于商业环境中。目前版本FreeModbus-V1.5提供如下的功能支持:表1FreeModbus-V
2、1.5功能支持代码描述是否支持备注Master主机否Slave从机是MB_RTURTU模式是MB_ASCIIASCII模式是MB_TCPTCP模式是0x01读线圈是0x02读离散输入是0x03读保持寄存器是0x04读输入寄存器是0x05写单个线圈是0x06写单个寄存器是0x07读异常状态否0x08诊断否0x0B获取事件计数器否0x0C获取事件记录否0x0F写多个线圈是0x10写多个寄存器是0x11报告从机ID是协议与文档不一致0x14读文件记录否0x15写文件记录否0x16屏蔽写寄存器否0x17读/写多个寄存器是0x18写FIFO否0x2B封装接口传输否0x2B/0x0DCANope
3、n参考请求与应答否0x2B/0x0E读设备身份表示否二、FreeModbus对硬件的需求........FreeModbus协议对硬件的需求非常少——基本上任何具有串行接口,并且有一些能够容纳modbus数据帧的RAM的微控制器都足够了。一个异步串行接口,能够支持接收缓冲区满和发送缓存区空中断。一个能够产生RTU传输所需要的t3.5字符超时定时器的时钟。对于软件部分,仅仅需要一个简单的事件队列。在使用操作系统的处理器上,可通过单独定义一个任务完成Modbus时间的查询。小点的微控制器往往不允许使用操作系统,在那种情况下,可以使用一个全局变量来实现该事件队列(AtmelAVR移植使
4、用这种方式实现)。实际的存储器需求决定于所使用的Modbus模块的多少。下表列出了所支持的功能编译后所需要的存储器。ARM是使用GNUARM编译器3.4.4使用-O1选项得到的。AVR项数值是使用WinAVR编译器3.4.5使用-Os选项编译得到的。表2FreeModbus对硬件的需求ARMRAMAVRRAMModuleARMCodeAVRCode(static)(static)ModbusRTU(Required)1132Byte272Byte1456Byte266ByteModbusASCII(Optional)1612Byte28Byte1222Byte16ByteModbus
5、Functions[1]1180Byte34Byte1602Byte34ByteModbusCore(Required)924Byte180Byte608Byte75BytePortingLayer(Required[2])1756Byte16Byte704Byte7ByteTotals7304Byte530Byte5592Byte398Byte[1]实际大小决定于可支持的Modbus功能码的多少。功能码可以在头文件mbconfig.h中进行配置。[2]决定于硬件。三、FreeModbus的移植1、物理层接口文件的修改在物理层,用户只需完成串行口及超时定时器的配置即可。具体应修改接口
6、文件portserial.c及porttimer.c。portserial.c中函数的修改:1)voidvMBPortSerialEnable(BOOLxRxEnable,BOOLxTxEnable)此函数的功能为设置串口状态。有两个参数:xRxEnable及xTxEnable。当xRxEnable为真时,应使能串口接收及接收中断。在RS485通讯系统中,还要注意将RS485接口芯片设为接收使能状态;当xTxEnable为真时,应使能串口发送及发送中断。在RS485通讯系统中,还要注意将RS485接口芯片设为发送使能状态。2)voidvMBPortClose(void)此函数的功能
7、是关闭Modbus通讯端口,具体的,应在此函数中关闭通讯端口的发送使能及接收使能。3)BOOLxMBPortSerialInit(UCHARucPORT,ULONGulBaudRate,UCHARucDataBits,eMBParityeParity)此函数的功能是初始化串行通讯端口。有四个参数:ucPORT、ulBaudRate、ucDataBits及eParity。参数ucPORT可以忽略;参数ulBaudRate是通讯端口的波特率,应根据此数值设置所
此文档下载收益归作者所有