请选择 进入手机版 | 继续访问电脑版

硬汉嵌入式论坛

 找回密码
 立即注册
楼主: eric2013
收起左侧

[客户分享] 【年末福利】安富莱电子发布Modbus教程,配套STM32F103,F407,F429和H7主从机例子,含HAL和标准库两版(2022-10-03)

  [复制链接]

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2016-12-25 10:06:30 | 显示全部楼层
为什么我下载的从站程序是错误的?请问可以重新发吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2016-12-25 10:31:38 | 显示全部楼层

回 庄小p 的帖子

庄小p:为什么我下载的从站程序是错误的?请问可以重新发吗? (2016-12-25 10:06) 
从网盘下载
http://www.armbbs.cn/forum.php?mod=viewthread&tid=1285
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2016-12-30 14:13:52 | 显示全部楼层
请教网盘上的程序 可以用232串口吗,开发板用的是用串口1吗,波特率是不是115200
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2016-12-30 14:15:23 | 显示全部楼层
请教网盘上的程序 可以用232串口吗,开发板用的是用串口1吗,波特率是不是115200,
回复

使用道具 举报

29

主题

181

回帖

268

积分

高级会员

积分
268
发表于 2017-1-16 10:53:01 | 显示全部楼层
没搞明白线圈寄存器是啥玩意,难道还要接外设吗
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
发表于 2017-7-27 19:14:10 | 显示全部楼层
好东西
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
发表于 2017-8-2 14:34:10 | 显示全部楼层
[s:151]
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2017-8-6 15:16:38 | 显示全部楼层
比FREEMODBUS 的简单,稳定性如何
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2017-8-8 01:16:47 | 显示全部楼层

回 zerone 的帖子

zerone:比FREEMODBUS 的简单,稳定性如何 (2017-08-06 15:16) 
杠杠的,项目中一直在用。
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2017-10-18 16:28:15 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2017-10-28 17:46:11 | 显示全部楼层
好东西[s:152]
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2017-11-17 14:48:47 | 显示全部楼层
代码写得一般 这么写思路不好
功能实现了还好,学生学习还是可以的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2017-11-18 16:30:46 | 显示全部楼层

回 jalonfun 的帖子

jalonfun:代码写得一般 这么写思路不好
功能实现了还好,学生学习还是可以的。 (2017-11-17 14:48)
非也,经过实战的才是健壮的。
我认为写的挺好的,项目上用,效果也顶呱呱,公司那边的几款产品都是用的这个,已经经过实战验证。我们的发的很多代码基本都经过项目验证,并不是实现了功能就出来忽悠,那样的代码的是不负责的。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2018-2-2 15:51:54 | 显示全部楼层
  ModbusTCP/IP啥时出
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
发表于 2018-6-19 11:35:31 | 显示全部楼层
我用Modbus虚拟设备,用的0x03读命令,1秒读一次,一次读21个寄存器,总是读几次后超时。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2018-6-19 11:40:45 | 显示全部楼层
风动影动 发表于 2018-6-19 11:35
我用Modbus虚拟设备,用的0x03读命令,1秒读一次,一次读21个寄存器,总是读几次后超时。

推荐直接两个板子测试,并将两个板子的串口调试功能都打开。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2018-7-17 12:01:15 | 显示全部楼层
所有的功能码都实现了吗?比如0x2B功能
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2018-7-17 12:23:18 | 显示全部楼层
zerone 发表于 2018-7-17 12:01
所有的功能码都实现了吗?比如0x2B功能

常用的都加上了,自己加新的也比较方便,熟悉下代码就行。
回复

使用道具 举报

0

主题

1

回帖

14

积分

新手上路

积分
14
发表于 2018-7-17 16:02:23 | 显示全部楼层
我经历了好多
回复

使用道具 举报

0

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2018-8-29 17:01:28 | 显示全部楼层
  1. void bsp_StartHardTimer(uint8_t _CC, uint32_t _uiTimeOut, void * _pCallBack)
  2. {
  3.     uint32_t cnt_now;
  4.     uint32_t cnt_tar;

  5.     /*
  6.         Ö´ÐÐÏÂÃæÕâ¸öÓï¾ä£¬Ê±³¤ = 18us (ͨ¹ýÂß¼­·ÖÎöÒDzâÁ¿IO·­×ª)
  7.         bsp_StartTimer2(3, 500, (void *)test1);
  8.     */
  9.     if (_uiTimeOut < 5)
  10.     {
  11.         ;
  12.     }
  13.     else
  14.     {
  15.         _uiTimeOut -= 5;
  16.     }

  17.     cnt_now = TIM_GetCounter(TIM_HARD);            /* &para;&Aacute;&Egrave;&iexcl;&micro;±&Ccedil;°&micro;&Auml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷&Ouml;&micro; */
  18.     cnt_tar = cnt_now + _uiTimeOut;                        /* &frac14;&AElig;&Euml;&atilde;&sup2;&para;&raquo;&ntilde;&micro;&Auml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷&Ouml;&micro; */
  19.     if (_CC == 1)
  20.     {
  21.         s_TIM_CallBack1 = (void (*)(void))_pCallBack;

  22.         TIM_SetCompare1(TIM_HARD, cnt_tar);              /* &Eacute;è&Ouml;&Atilde;&sup2;&para;&raquo;&ntilde;±&Egrave;&frac12;&Iuml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷CC1 */
  23.         TIM_ClearITPendingBit(TIM_HARD, TIM_IT_CC1);
  24.                 TIM_ITConfig(TIM_HARD, TIM_IT_CC1, ENABLE);        /* &Ecirc;&sup1;&Auml;&Uuml;CC1&Ouml;&ETH;&para;&Iuml; */

  25.     }
  26.     else if (_CC == 2)
  27.     {
  28.                 s_TIM_CallBack2 = (void (*)(void))_pCallBack;

  29.         TIM_SetCompare2(TIM_HARD, cnt_tar);              /* &Eacute;è&Ouml;&Atilde;&sup2;&para;&raquo;&ntilde;±&Egrave;&frac12;&Iuml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷CC2 */
  30.                 TIM_ClearITPendingBit(TIM_HARD, TIM_IT_CC2);
  31.                 TIM_ITConfig(TIM_HARD, TIM_IT_CC2, ENABLE);        /* &Ecirc;&sup1;&Auml;&Uuml;CC2&Ouml;&ETH;&para;&Iuml; */
  32.     }
  33.     else if (_CC == 3)
  34.     {
  35.         s_TIM_CallBack3 = (void (*)(void))_pCallBack;

  36.         TIM_SetCompare3(TIM_HARD, cnt_tar);              /* &Eacute;è&Ouml;&Atilde;&sup2;&para;&raquo;&ntilde;±&Egrave;&frac12;&Iuml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷CC3 */
  37.         TIM_ClearITPendingBit(TIM_HARD, TIM_IT_CC3);
  38.                 TIM_ITConfig(TIM_HARD, TIM_IT_CC3, ENABLE);        /* &Ecirc;&sup1;&Auml;&Uuml;CC3&Ouml;&ETH;&para;&Iuml; */
  39.     }
  40.     else if (_CC == 4)
  41.     {
  42.         s_TIM_CallBack4 = (void (*)(void))_pCallBack;

  43.         TIM_SetCompare4(TIM_HARD, cnt_tar);              /* &Eacute;è&Ouml;&Atilde;&sup2;&para;&raquo;&ntilde;±&Egrave;&frac12;&Iuml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷CC4 */
  44.                 TIM_ClearITPendingBit(TIM_HARD, TIM_IT_CC4);
  45.                 TIM_ITConfig(TIM_HARD, TIM_IT_CC4, ENABLE);        /* &Ecirc;&sup1;&Auml;&Uuml;CC4&Ouml;&ETH;&para;&Iuml; */
  46.     }
  47.         else
  48.     {
  49.         return;
  50.     }
  51. }
复制代码

为什么用捕获中断呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2018-8-30 00:20:12 | 显示全部楼层
A薰依 发表于 2018-8-29 17:01
为什么用捕获中断呢?

这种方式可以方便的实现单次定时。修改CCR寄存器的值就可以实现新的中断,非常方便。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2018-9-20 10:14:57 | 显示全部楼层
谢谢!!!
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2018-10-11 10:23:51 | 显示全部楼层
非常感谢,专业,专注。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2018-11-13 13:06:43 | 显示全部楼层
大赞啊!!!!
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2018-11-26 15:59:47 | 显示全部楼层
哇,非常感谢。东西很全面 很好
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2018-11-29 16:39:56 | 显示全部楼层
将modbus  移入RXT系统中失败了,弄了好多天没弄好,如何把modbus 程序中的三个系统中断替换掉,没整明白
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2018-11-30 02:07:15 | 显示全部楼层
yxr201314 发表于 2018-11-29 16:39
将modbus  移入RXT系统中失败了,弄了好多天没弄好,如何把modbus 程序中的三个系统中断替换掉,没整明白

这里有移植好的
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2018-12-27 15:31:01 | 显示全部楼层
请问下硬汉哥,如何实现一个MODBUS协议栈实现多个串口进行协议通讯。
比如,使用了串口1 串口2,都使用主站。协议栈本身内部的处理不用管,那么实现针对不同设备呢?是通过修改收发的API吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2019-1-9 01:32:42 | 显示全部楼层
王海靖 发表于 2018-12-27 15:31
请问下硬汉哥,如何实现一个MODBUS协议栈实现多个串口进行协议通讯。
比如,使用了串口1 串口2,都使用主 ...

不好意思,忘了及时回复了。

可以重新封装一套API,实现新的例化。

或者对API做重入支持,这个好像麻烦一些。
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2019-1-9 08:36:31 | 显示全部楼层
eric2013 发表于 2019-1-9 01:32
不好意思,忘了及时回复了。

可以重新封装一套API,实现新的例化。

这个可能得研究freemodebus的源码了,挺复杂的。最简单的应该也是封装一层API,工作量还是不小。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2019-1-16 17:11:08 | 显示全部楼层
请问一下,我目前在调试从机,用开发板测试,发送 05H :  0x 01 05 01 01 00 01 5C 36 命令,显示的是这样的 TIM截图20190116170807.png
串口也没有信息打印出来:
1.png

两个串口都是没有问题的,打印信息都是正常的,请问一下可能是什么原因?

回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2019-6-17 10:58:19 | 显示全部楼层
stm32的每一个地址是4个字节,modbus协议地址两个字节,怎么对应起来?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2019-6-18 10:52:49 | 显示全部楼层
TiAmo 发表于 2019-6-17 10:58
stm32的每一个地址是4个字节,modbus协议地址两个字节,怎么对应起来?

你可以自定义。
回复

使用道具 举报

73

主题

1185

回帖

1404

积分

至尊会员

积分
1404
发表于 2019-8-9 14:02:04 | 显示全部楼层
终于恢复了~~~
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2019-8-15 08:20:24 | 显示全部楼层
我是新手有个事情不是很明白.nrf24l01能不能用这个模块代替串口
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2019-9-7 21:15:36 | 显示全部楼层
非常支持。希望做得更好
回复

使用道具 举报

330

主题

2024

回帖

3019

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3019
发表于 2019-9-9 08:23:49 | 显示全部楼层
最近用这个有点点不方便,能否在“读寄存器值”的旁边加上16进制和10进制的显示选项?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2019-9-9 09:31:37 | 显示全部楼层
caicaptain2 发表于 2019-9-9 08:23
最近用这个有点点不方便,能否在“读寄存器值”的旁边加上16进制和10进制的显示选项?

这个可以有。

回复

使用道具 举报

330

主题

2024

回帖

3019

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3019
发表于 2019-9-9 14:36:01 | 显示全部楼层

能否让armfly的工程师尽快升级个版本?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
105942
QQ
 楼主| 发表于 2019-9-9 15:12:45 | 显示全部楼层
caicaptain2 发表于 2019-9-9 14:36
能否让armfly的工程师尽快升级个版本?

会为H7-TOOL配套一个新版,届时使用即可。暂时他们没有时间升级这个。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-3-29 20:27 , Processed in 0.333168 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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