首页 > 数据库技术 > 详细

基于stm32的modbus协议移植

时间:2015-11-10 19:40:36      阅读:571      评论:0      收藏:0      [点我收藏+]

在移植过程中得益于这两篇blog,大家可以参考下。

http://ntn314.blog.163.com/blog/static/161743584201233084434579/

http://bbs.eeworld.com.cn/thread-362508-1-1.html

这两篇博客上对modbus协议以及移植解释的很清楚,这里就不在啰嗦了。

首先,要下载一个freemodbus,自己写的modbus协议也可以,但考虑到时间和可扩展性还是选择开源的比较妥当些。这个协议最核心部分我感觉就是对寄存器的读写,当然如果涉及到PLC当然还有继电器等,其他部分已经把接口给你了,然后自己就按照说明去添加就可以。对了,在移植中当时对这个过程        

          *pucRegBuffer++ = ( uint8_t )( usRegHoldingBuf[iRegIndex] >> 8 );
          *pucRegBuffer++ = ( uint8_t )( usRegHoldingBuf[iRegIndex] & 0xFF );

有点模糊,但在纸上画一下就豁然开朗了。其他的就没有难度了。下面就进入正文:

首先需要改动的部分还主要是

eMBRegInputCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNRegs)、

eMBRegHoldingCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNRegs,

eMBRegisterMode eMode)、

eMBRegCoilstCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNCoils,

eMBRegisterMode eMode)、

eMBRegInputCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNDiscrete)

这四个函数,其他部分主要是对portserial.c和porttimer.c这两个文件(相对于你下载的freemodbus-v1.5.0)的改动。而main函数你可以把下载的freemodbus文件中的demo文件下有一个BARE文件,这个文件夹有一个demo.c程序直接把main函数copy过来就大功告成了。。

好了,附工程文件

http://www.oschina.net/code/snippet_2241389_52045

至于freemodbus大家可以百度下就出来了。。

第一篇博客,如有错误希望大家相互讨论。


基于stm32的modbus协议移植

原文:http://my.oschina.net/u/2241389/blog/528631

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!