OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

12
返回列表 发新帖
楼主: 菜鸟2

在STM32上移植FreeModbus RTU的一点经验总结

  [复制链接]

  离线 

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2016-3-7
在线时间
16 小时
发表于 2016-7-28 16:21:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

8

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-6-29
在线时间
30 小时
发表于 2016-7-29 15:44:16 | 显示全部楼层
谢谢分享,我需要这个modbus和电机驱动器通信,,不知道能不能用得上
回复 支持 反对

使用道具 举报

  离线 

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-8-1
在线时间
24 小时
发表于 2016-8-1 23:39:29 | 显示全部楼层
好厉害我也正面学这个方面的,谢谢
回复 支持 反对

使用道具 举报

  离线 

0

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2016-7-5
在线时间
43 小时
发表于 2016-8-2 17:15:25 | 显示全部楼层
学习了,谢谢楼主分享
回复 支持 反对

使用道具 举报

  离线 

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-11-23
在线时间
13 小时
发表于 2016-8-17 01:00:10 | 显示全部楼层
正点原子公众号
楼主,谢谢分享,有不明白的请教一下:
你说:至此,portserial.c处理完毕。
     porttimer.c的移植和portserial.c十分相似,但是要特别注意定时器中断的时间长度应该是3.5个字符时间,我这里只是简单粗暴的按照波特率是9600时候计算的。文件很短,直接上代码---

-----请问,为什么定时时间要设置在3.5个字符时间呢?什么理由?请回答一下,谢谢。
DIY改变世界
回复 支持 反对

使用道具 举报

  离线 

4

主题

120

帖子

1

精华

高级会员

Rank: 4

积分
756
金钱
756
注册时间
2014-8-7
在线时间
38 小时
发表于 2016-9-18 15:03:17 | 显示全部楼层
Good!!!   Mark!!!
回复 支持 反对

使用道具 举报

  离线 

0

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-4-7
在线时间
95 小时
发表于 2016-9-18 16:00:30 | 显示全部楼层
不错,收藏了,以后用的到,感谢楼主
回复 支持 反对

使用道具 举报

  离线 

5

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2014-8-31
在线时间
37 小时
发表于 2016-10-18 16:23:50 | 显示全部楼层
gaoxiaohu110 发表于 2016-1-24 00:01
第一个寄存器的数读不上来,求分析,解决!谢谢!
04:输入寄存器
/* ----------------------- Defines -- ...

ls问题解决了吗,,我也遇到你的问题了,,第一个字节读不出来啊
回复 支持 反对

使用道具 举报

  离线 

53

主题

112

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2013-4-10
在线时间
74 小时
发表于 2016-10-18 18:12:14 | 显示全部楼层
天时地利人和 发表于 2016-10-18 16:23
ls问题解决了吗,,我也遇到你的问题了,,第一个字节读不出来啊

/* ----------------------- Defines ------------------------------------------*/
#define REG_INPUT_START                 ( 1 )  //输入寄存器起始地址
#define REG_INPUT_NREGS                 ( 64 ) //输入寄存器数量

#define REG_HOLDING_START               ( 1 )   //保持寄存器起始地址
#define REG_HOLDING_NREGS               ( 200)  //保持寄存器数量

#define REG_COILS_START                 ( 1 )   //读写线圈起始地址
#define REG_COILS_SIZE                  (240)   //读写线圈数量


#define REG_DISCRETE_START              ( 1 )   //读离散线圈起始地址
#define REG_DISCRETE_SIZE               (240)   //读离散线圈数量


起始地址设置成 1,完美解决
打铁还需自身硬@ing
回复 支持 反对

使用道具 举报

  离线 

5

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2014-8-31
在线时间
37 小时
发表于 2016-10-19 09:20:08 | 显示全部楼层
gaoxiaohu110 发表于 2016-10-18 18:12
/* ----------------------- Defines ------------------------------------------*/
#define REG_INPUT ...

那数组的第0个字节是不是就没有用了?


再请教1个问题:modbus poll打开后是下面这样的,每次都得手动调,有什么好的方法让他显示的好看点吗?
1.png






回复 支持 反对

使用道具 举报

  离线 

5

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
982
金钱
982
注册时间
2015-12-28
在线时间
110 小时
发表于 2016-10-21 08:53:08 | 显示全部楼层

***********             **                       **********                           *************  
*                            **                        *           *                                              *
*                            **                        *           *                                              *
***********             **                       *            *                            ************
*                            **                        *            *                                             *
*                            **                        *            *                                             *
*                            **                        **********                           *************
越努力,越优秀;越独立,越自由
回复 支持 反对

使用道具 举报

  离线 

0

主题

0

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2014-2-12
在线时间
0 小时
发表于 2016-12-21 08:54:25 | 显示全部楼层
很不错呀,正需要
回复 支持 反对

使用道具 举报

  离线 

14

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2016-6-2
在线时间
80 小时
发表于 2016-12-21 09:16:52 | 显示全部楼层
支持!Mark一下。
回复 支持 反对

使用道具 举报

  离线 

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-5-29
在线时间
19 小时
发表于 2017-1-8 14:55:29 | 显示全部楼层
看了楼主的贴,我已经移植成功,谢谢
回复 支持 反对

使用道具 举报

  离线 

9

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-12-5
在线时间
11 小时
发表于 2017-1-9 08:28:39 | 显示全部楼层
MARK,留用。。
回复 支持 反对

使用道具 举报

tdnx611g 该用户已被删除
发表于 2017-1-24 14:17:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

  离线 

2

主题

5

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2015-12-28
在线时间
17 小时
发表于 2017-1-30 13:44:42 | 显示全部楼层
移植好后编译没通过,我一个一个改后,改到这卡住了,请问这个怎么改?
Build target 'Target 1'
compiling mbfunccoils.c...
compiling mbfuncdisc.c...
compiling mbfuncholding.c...
compiling mbfuncinput.c...
compiling mbfuncother.c...
compiling mbutils.c...
compiling mbrtu.c...
..\modbus\rtu\mbrtu.c(153): warning:  #550-D: variable "xFrameReceived" was set but never used
compiling mb.c...
compiling portevent.c...
compiling portserial.c...
compiling porttimer.c...
linking...
..\OBJ\USART.axf: Error: L6218E: Undefined symbol TIMERExpiredISR (referred from stm32f10x_it.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBRegCoilsCB (referred from mbfunccoils.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBRegDiscreteCB (referred from mbfuncdisc.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBRegHoldingCB (referred from mbfuncholding.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBRegInputCB (referred from mbfuncinput.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBASCIIInit (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBASCIIReceive (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBASCIISend (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBASCIIStart (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol eMBASCIIStop (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol xMBASCIIReceiveFSM (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol xMBASCIITimerT1SExpired (referred from mb.o).
..\OBJ\USART.axf: Error: L6218E: Undefined symbol xMBASCIITransmitFSM (referred from mb.o).
Target not created
回复 支持 反对

使用道具 举报

  离线 

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-12-24
在线时间
8 小时
发表于 2017-2-15 15:49:57 | 显示全部楼层
学习啦,非常感谢。。
回复 支持 反对

使用道具 举报

  离线 

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-1-19
在线时间
22 小时
发表于 2017-2-27 13:58:15 | 显示全部楼层
Passmeby 发表于 2017-1-30 13:44
移植好后编译没通过,我一个一个改后,改到这卡住了,请问这个怎么改?
Build target 'Target 1'
compili ...

.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol prvvTIMERExpiredISR (referred from usart.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol prvvUARTRxISR (referred from usart.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol prvvUARTTxReadyISR (referred from usart.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol eMBRegCoilsCB (referred from mbfunccoils.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol eMBRegDiscreteCB (referred from mbfuncdisc.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol eMBRegHoldingCB (referred from mbfuncholding.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol eMBRegInputCB (referred from mbfuncinput.o).
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from mbutils.o).
我也是
活在当下,静心坚持。
回复 支持 反对

使用道具 举报

  离线 

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-1-19
在线时间
22 小时
发表于 2017-2-27 14:10:53 | 显示全部楼层
spfanlost 发表于 2017-2-27 13:58
.\Flash\Obj\output.axf: Error: L6218E: Undefined symbol prvvTIMERExpiredISR (referred from usart.o ...

1声明函数上面声明的static没有删除;2MicroLib并不支援assert(),target中钩掉USE MicroLIB编译就可以通过了
活在当下,静心坚持。
回复 支持 反对

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2016-9-11
在线时间
5 小时
发表于 2017-3-14 17:49:06 | 显示全部楼层
不错,谢谢分享
回复 支持 反对

使用道具 举报

  离线 

13

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2013-10-2
在线时间
18 小时
发表于 2017-3-23 17:43:51 | 显示全部楼层
请问楼主调试时串口是用的485还是232?
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

0

精华

新手入门

积分
41
金钱
41
注册时间
2017-3-23
在线时间
6 小时
发表于 2017-3-23 17:48:25 | 显示全部楼层
liu01551108 发表于 2017-3-23 17:43
请问楼主调试时串口是用的485还是232?

modbus支持485,也支持232啊。
modbus物理层无关的
包括红外,蓝牙,无线都行,无所谓。
>>> 友情推荐 >>> 《Modbus软件开发实战指南》
清华出版社: http://t.cn/RiFOFSc
回复 支持 反对

使用道具 举报

  离线 

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-12-28
在线时间
48 小时
发表于 2017-3-23 21:03:31 | 显示全部楼层
mark
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

2

主题

155

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2016-6-26
在线时间
156 小时
发表于 2017-3-25 09:06:45 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

  离线 

38

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
626
金钱
626
注册时间
2016-7-22
在线时间
197 小时
发表于 2017-4-12 09:32:00 | 显示全部楼层
mark...........
回复 支持 反对

使用道具 举报

  离线 

0

主题

12

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1162
金钱
1162
注册时间
2016-5-7
在线时间
100 小时
发表于 2017-6-20 20:52:52 | 显示全部楼层
下载学习学习,不错
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2017-6-29
在线时间
1 小时
发表于 2017-6-29 16:40:34 | 显示全部楼层
准备学习一年了,终于开动了,从今天开始 ,认真学习
回复 支持 反对

使用道具 举报

  离线 

3

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-1-16
在线时间
12 小时
发表于 2017-7-3 11:16:10 | 显示全部楼层
很不错 收藏了
回复 支持 反对

使用道具 举报

  离线 

3

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-1-16
在线时间
12 小时
发表于 2017-7-4 10:02:21 | 显示全部楼层
收藏 好好好好好
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手入门

积分
38
金钱
38
注册时间
2016-9-13
在线时间
9 小时
发表于 2017-7-8 16:54:46 | 显示全部楼层
我正在移植中,感谢大家分享经验!
回复 支持 反对

使用道具 举报

  离线 

11

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1081
金钱
1081
注册时间
2016-7-19
在线时间
166 小时
发表于 2017-7-18 13:29:20 | 显示全部楼层
mark 现在正好用到
回复 支持 反对

使用道具 举报

  离线 

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2016-9-20
在线时间
28 小时
发表于 2017-7-18 16:43:06 | 显示全部楼层
mark   备用
回复 支持 反对

使用道具 举报

  离线 

29

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2333
金钱
2333
注册时间
2014-7-19
在线时间
340 小时
发表于 2017-7-18 17:42:22 | 显示全部楼层
mark!
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2017-8-16
在线时间
0 小时
发表于 2017-8-16 09:52:30 | 显示全部楼层
MARK!!!!!
回复 支持 反对

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2017-7-31
在线时间
3 小时
发表于 2017-11-1 14:10:08 | 显示全部楼层
mark  要验证邮箱,,好麻烦
回复 支持 反对

使用道具 举报

  离线 

5

主题

23

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2014-4-1
在线时间
3 小时
 楼主| 发表于 2017-11-6 22:13:32 | 显示全部楼层
lyly8 发表于 2016-8-17 01:00
楼主,谢谢分享,有不明白的请教一下:
你说:至此,portserial.c处理完毕。
     porttimer.c的移植和po ...

协议要求的,可以参考协议说明文档
回复 支持 反对

使用道具 举报

  离线 

14

主题

164

帖子

0

精华

高级会员

Rank: 4

积分
639
金钱
639
注册时间
2017-5-30
在线时间
119 小时
发表于 2018-2-2 11:16:19 | 显示全部楼层
请问一下楼主,输入寄存器函数、读写保持寄存器函数、读写线圈函数和读离散寄存器函数我都写了,但是只有01 03可以用,楼主方便帮忙分析一下吗
回复 支持 反对

使用道具 举报

  离线 

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-2-4
在线时间
1 小时
发表于 2018-2-6 17:21:12 | 显示全部楼层
mark,正在学习中
回复 支持 反对

使用道具 举报

  离线 

4

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2018-1-29
在线时间
61 小时
发表于 2018-2-7 05:19:53 | 显示全部楼层
感谢大神分享!
回复 支持 反对

使用道具 举报

  离线 

0

主题

6

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2018-2-6
在线时间
3 小时
发表于 2018-2-7 13:19:49 | 显示全部楼层

mark ,学习学习!
回复 支持 反对

使用道具 举报

  离线 

21

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2016-3-25
在线时间
61 小时
发表于 2018-2-28 19:47:18 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-1-27
在线时间
2 小时
发表于 2018-3-31 09:41:19 | 显示全部楼层
感谢楼主的分享,我也是折腾了几天,终于调试通过了。
折腾的原因跟这个是因为我在modbus的处理中加了打印输出,因为打印输出的造成了它在原有定时器时长下的处理。
在添加了打印输出后,只有9600和19200的波特率能够正常通信,更高波特率会有规律性的丢失接收字节
在去掉modbus中添加的打印输出后,从9600-115200波特率都可正常工作。
回复 支持 反对

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-9-8
在线时间
4 小时
发表于 2018-4-16 09:40:57 | 显示全部楼层
那个PORT文件用FreeRTOS文件夹下面的吗
回复 支持 反对

使用道具 举报

  离线 

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2018-4-8
在线时间
9 小时
发表于 5 天前 | 显示全部楼层
好人一生平安
回复 支持 反对

使用道具 举报

  离线 

1

主题

30

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2018-4-18
在线时间
1 小时
发表于 前天 10:22 | 显示全部楼层
谢谢楼主分享~我也分享一个阻容感采购群:567145302
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-4-26 23:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */