文档章节

基于stm32的modbus协议移植

xiaocui911
 xiaocui911
发布于 2015/11/10 17:53
字数 473
阅读 1075
收藏 4

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

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


© 著作权归作者所有

xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
私信 提问
armink/FreeModbus_Slave-Master-RTT-STM32

FreeModbus V1.6 主机使用说明 一、简述 FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机源码是需要收费的。同时网上也没有发现比较好的开源的Modbus主机协议栈,所以才开发这款...

armink
2015/11/15
0
0
移植Modbus到STM32F103(2):移植FreeModbus到usart3并运行示例代码

FreeModbus是Modbus的一个被广泛移植的实现。其源码在github,最新版是1.6。 FreeModbus支持Modbus功能码里的0x01~0x06,0x0F~0x11和0x17,对其他功能码比如异常诊断和事件计数等并没有提供支...

Konstantine
02/22
176
0
STM32F103+RT-Thread从零开始(一)——点亮LED

作者:湖广午王 本文由CSDN湖广午王授权 本文出处:https://blog.csdn.net/junzia/article/details/77435725 转载请标明出处 写在开头的话: 最近心血来潮,打算重新捡起老本行,结果发现很多...

RTThread物联网操作系统
2018/08/07
0
0
SylixOS ICAN 协议移植笔记

ICAN协议简介 ICAN简介。 ICAN协议( Industrial CAN protocol )为基于现场总线 CAN-bus的应用层协议。ICAN协议为工业控制应用领域提供了一种简单可靠,易于开发的总线系统。 在市场中,Dev...

Best_CC
2017/05/19
0
0
STM32f103 USB移植之USB标准描述符

在对USB协议进行学习和移植的过程有个东西不可避免,肯定会遇到,那就是USB的设备描述符。这个东西始终在usb协议中发挥作用,从设备的枚举到设备的配置,都是由usb描述符进行修改的。今天在移...

mirco_mcu
2018/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
23分钟前
4
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
27分钟前
4
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
30分钟前
3
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
41分钟前
3
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
48分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部