庄小p 发表于 2016-12-25 10:06:30

为什么我下载的从站程序是错误的?请问可以重新发吗?

eric2013 发表于 2016-12-25 10:31:38

回 庄小p 的帖子

庄小p:为什么我下载的从站程序是错误的?请问可以重新发吗? (2016-12-25 10:06) images/back.gif

从网盘下载
http://www.armbbs.cn/forum.php?mod=viewthread&tid=1285

ruiboxu 发表于 2016-12-30 14:13:52

请教网盘上的程序 可以用232串口吗,开发板用的是用串口1吗,波特率是不是115200

ruiboxu 发表于 2016-12-30 14:15:23

请教网盘上的程序 可以用232串口吗,开发板用的是用串口1吗,波特率是不是115200,

wcyingdream 发表于 2017-1-16 10:53:01

没搞明白线圈寄存器是啥玩意,难道还要接外设吗

pangyunjian 发表于 2017-7-27 19:14:10

好东西

pangyunjian 发表于 2017-8-2 14:34:10

zerone 发表于 2017-8-6 15:16:38

比FREEMODBUS 的简单,稳定性如何

eric2013 发表于 2017-8-8 01:16:47

回 zerone 的帖子

zerone:比FREEMODBUS 的简单,稳定性如何 (2017-08-06 15:16) images/back.gif

杠杠的,项目中一直在用。

511701105 发表于 2017-10-18 16:28:15

感谢分享

ahljj 发表于 2017-10-28 17:46:11

好东西

jalonfun 发表于 2017-11-17 14:48:47

代码写得一般 这么写思路不好
功能实现了还好,学生学习还是可以的。

eric2013 发表于 2017-11-18 16:30:46

回 jalonfun 的帖子

jalonfun:代码写得一般 这么写思路不好
功能实现了还好,学生学习还是可以的。 (2017-11-17 14:48) images/back.gif

非也,经过实战的才是健壮的。
我认为写的挺好的,项目上用,效果也顶呱呱,公司那边的几款产品都是用的这个,已经经过实战验证。我们的发的很多代码基本都经过项目验证,并不是实现了功能就出来忽悠,那样的代码的是不负责的。

detective 发表于 2018-2-2 15:51:54

:lolModbusTCP/IP啥时出

风动影动 发表于 2018-6-19 11:35:31

我用Modbus虚拟设备,用的0x03读命令,1秒读一次,一次读21个寄存器,总是读几次后超时。

eric2013 发表于 2018-6-19 11:40:45

风动影动 发表于 2018-6-19 11:35
我用Modbus虚拟设备,用的0x03读命令,1秒读一次,一次读21个寄存器,总是读几次后超时。

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

zerone 发表于 2018-7-17 12:01:15

所有的功能码都实现了吗?比如0x2B功能

eric2013 发表于 2018-7-17 12:23:18

zerone 发表于 2018-7-17 12:01
所有的功能码都实现了吗?比如0x2B功能

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

var 发表于 2018-7-17 16:02:23

我经历了好多

A薰依 发表于 2018-8-29 17:01:28

void bsp_StartHardTimer(uint8_t _CC, uint32_t _uiTimeOut, void * _pCallBack)
{
    uint32_t cnt_now;
    uint32_t cnt_tar;

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

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

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

    }
    else if (_CC == 2)
    {
                s_TIM_CallBack2 = (void (*)(void))_pCallBack;

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

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

      TIM_SetCompare4(TIM_HARD, cnt_tar);              /* &Eacute;è&Ouml;&Atilde;&sup2;&para;&raquo;&ntilde;±&Egrave;&frac12;&Iuml;&frac14;&AElig;&Ecirc;&yacute;&AElig;÷CC4 */
                TIM_ClearITPendingBit(TIM_HARD, TIM_IT_CC4);
                TIM_ITConfig(TIM_HARD, TIM_IT_CC4, ENABLE);        /* &Ecirc;&sup1;&Auml;&Uuml;CC4&Ouml;&ETH;&para;&Iuml; */
    }
        else
    {
      return;
    }
}
为什么用捕获中断呢?

eric2013 发表于 2018-8-30 00:20:12

A薰依 发表于 2018-8-29 17:01
为什么用捕获中断呢?
这种方式可以方便的实现单次定时。修改CCR寄存器的值就可以实现新的中断,非常方便。

Sokit2 发表于 2018-9-20 10:14:57

:):)谢谢!!!

xinfeng 发表于 2018-10-11 10:23:51

非常感谢,专业,专注。

家定不举棋 发表于 2018-11-13 13:06:43

大赞啊!!!!

Author_zero 发表于 2018-11-26 15:59:47

哇,非常感谢。东西很全面 很好:loveliness:

yxr201314 发表于 2018-11-29 16:39:56

将modbus移入RXT系统中失败了,弄了好多天没弄好,如何把modbus 程序中的三个系统中断替换掉,没整明白

eric2013 发表于 2018-11-30 02:07:15

yxr201314 发表于 2018-11-29 16:39
将modbus移入RXT系统中失败了,弄了好多天没弄好,如何把modbus 程序中的三个系统中断替换掉,没整明白

这里有移植好的
http://www.armbbs.cn/forum.php?mod=viewthread&tid=17330&extra=page%3D1

王海靖 发表于 2018-12-27 15:31:01

请问下硬汉哥,如何实现一个MODBUS协议栈实现多个串口进行协议通讯。
比如,使用了串口1 串口2,都使用主站。协议栈本身内部的处理不用管,那么实现针对不同设备呢?是通过修改收发的API吗?

eric2013 发表于 2019-1-9 01:32:42

王海靖 发表于 2018-12-27 15:31
请问下硬汉哥,如何实现一个MODBUS协议栈实现多个串口进行协议通讯。
比如,使用了串口1 串口2,都使用主 ...

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

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

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

王海靖 发表于 2019-1-9 08:36:31

eric2013 发表于 2019-1-9 01:32
不好意思,忘了及时回复了。

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


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

冰朔 发表于 2019-1-16 17:11:08

请问一下,我目前在调试从机,用开发板测试,发送 05H :0x 01 05 01 01 00 01 5C 36 命令,显示的是这样的
串口也没有信息打印出来:


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

TiAmo 发表于 2019-6-17 10:58:19

stm32的每一个地址是4个字节,modbus协议地址两个字节,怎么对应起来?

eric2013 发表于 2019-6-18 10:52:49

TiAmo 发表于 2019-6-17 10:58
stm32的每一个地址是4个字节,modbus协议地址两个字节,怎么对应起来?

你可以自定义。

wdliming 发表于 2019-8-9 14:02:04

终于恢复了~~~

∩_∩ 发表于 2019-8-15 08:20:24

我是新手有个事情不是很明白.nrf24l01能不能用这个模块代替串口

jackli9000 发表于 2019-9-7 21:15:36

非常支持。希望做得更好

caicaptain2 发表于 2019-9-9 08:23:49

最近用这个有点点不方便,能否在“读寄存器值”的旁边加上16进制和10进制的显示选项?

eric2013 发表于 2019-9-9 09:31:37

caicaptain2 发表于 2019-9-9 08:23
最近用这个有点点不方便,能否在“读寄存器值”的旁边加上16进制和10进制的显示选项?

这个可以有。

caicaptain2 发表于 2019-9-9 14:36:01

eric2013 发表于 2019-9-9 09:31
这个可以有。

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

eric2013 发表于 2019-9-9 15:12:45

caicaptain2 发表于 2019-9-9 14:36
能否让armfly的工程师尽快升级个版本?

会为H7-TOOL配套一个新版,届时使用即可。暂时他们没有时间升级这个。
页: 1 [2] 3 4 5
查看完整版本: 【年末福利】安富莱电子发布Modbus教程,配套STM32F103,F407,F429和H7主从机例子,含HAL和标准库两版(2022-10-03)