基于stm32的modbus协议移植

冷暖自知 提交于 2020-04-09 11:00:05

在移植过程中得益于这两篇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大家可以百度下就出来了。。

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!