搜索
bottom↓
回复: 44

stm32f103---freemodbus多从机代码(RTU)

  [复制链接]

出0入4汤圆

发表于 2015-1-9 21:05:54 | 显示全部楼层 |阅读模式
freemodbus框架写得好,可是不支持多个从机,我修改了一下代码,使之支持多个从机。
闲话少说,上传测试截图,还有程序。
本来想把主站也加进去,但个样代码显得很乱,所以作罢了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-1-9 21:10:12 | 显示全部楼层
多个从机是什么意思,每个从机不是唯一的1个地址吗?

出0入4汤圆

 楼主| 发表于 2015-1-9 21:12:21 | 显示全部楼层
embeddev_1 发表于 2015-1-9 21:10
多个从机是什么意思,每个从机不是唯一的1个地址吗?

就是改freemodbus代码使之支持多个从站。不过从站太多也没什么意思,两三个最好。

出0入76汤圆

发表于 2015-1-9 21:40:06 | 显示全部楼层
本帖最后由 foxpro2005 于 2015-1-9 21:45 编辑

每个从机的ID不是自己设的么, 这里的多从机是什么意思?
modbus不是常规从机数量都可以支持到32个么(当然还以扩展的)

出0入4汤圆

 楼主| 发表于 2015-1-9 21:46:57 | 显示全部楼层
foxpro2005 发表于 2015-1-9 21:40
每个从机的ID不是自己设的么, 这里的多从机是什么意思

标题没表述清楚,就是一个单片机里运行多个从机,
原freemodbus只支持一个从站,我改过的代码支持多个从站。
我这么说你明白了吗?

出0入76汤圆

发表于 2015-1-9 21:54:02 | 显示全部楼层
ibichao 发表于 2015-1-9 21:46
标题没表述清楚,就是一个单片机里运行多个从机,
原freemodbus只支持一个从站,我改过的代码支持多个从 ...

呵呵, 明白,你是想用于一个设备 多个串口 通信线路吧, 比如: 用两个,三个串口么

出0入0汤圆

发表于 2015-1-9 22:11:48 来自手机 | 显示全部楼层
foxpro2005 发表于 2015-1-9 21:54
呵呵, 明白,你是想用于一个设备 多个串口 通信线路吧, 比如: 用两个,三个串口么 ...

应该还是没有明白,应该是一个串口模拟出多个从站功能,也就是多个id分机

出0入4汤圆

 楼主| 发表于 2015-1-9 22:11:51 | 显示全部楼层
foxpro2005 发表于 2015-1-9 21:54
呵呵, 明白,你是想用于一个设备 多个串口 通信线路吧, 比如: 用两个,三个串口么 ...

是的,如果再加上主站就可以做协议转换了。
这个在工业上比较常见。

出0入4汤圆

 楼主| 发表于 2015-1-9 22:14:56 | 显示全部楼层
xzyang 发表于 2015-1-9 22:11
应该还是没有明白,应该是一个串口模拟出多个从站功能,也就是多个id分机
...

不是一个串口模拟,几个id分机,就几个串口。
一个串口模拟就要分时复用。

出0入0汤圆

发表于 2015-1-9 22:16:21 | 显示全部楼层
看看代码先

出0入0汤圆

发表于 2015-1-9 22:17:34 来自手机 | 显示全部楼层
看看怎么样

出0入76汤圆

发表于 2015-1-9 22:17:49 | 显示全部楼层
ibichao 发表于 2015-1-9 22:11
是的,如果再加上主站就可以做协议转换了。
这个在工业上比较常见。

见之前有一个坛友, 改过freemodbus来支持主机的, 你可以查看一下
比较忙, 没有去深入研究。 以前都是自己写的简单主机, 主要与控制板, 变频器等通信之类的。

出0入76汤圆

发表于 2015-1-9 22:24:45 | 显示全部楼层
本帖最后由 foxpro2005 于 2015-1-9 22:26 编辑
xzyang 发表于 2015-1-9 22:11
应该还是没有明白,应该是一个串口模拟出多个从站功能,也就是多个id分机
...


如果用一个串口来模拟多个是比较多个从机(分多个ID)是比较麻烦的, 要分时复用, 且这个轮询的时间要准确, 否则造成冲突就麻烦了, 容易丢包。
更何况像现在的mcu, stm32之流 都这么多的usart呢...

出0入0汤圆

发表于 2015-1-10 06:00:43 | 显示全部楼层
标记一下,这个还是很有用的,板子多modbus通讯就用得到啦,

出0入0汤圆

发表于 2015-1-10 09:04:29 来自手机 | 显示全部楼层
现在的设备都有好几个串口,多从机其实是不同串口独立执行

出0入0汤圆

发表于 2015-3-11 14:55:02 | 显示全部楼层
这个有成功移值到F4的?我移值中遇到问题了,头痛中。。。。。。

出0入0汤圆

发表于 2015-3-24 20:43:41 | 显示全部楼层
先收藏,待用

出0入0汤圆

发表于 2015-5-17 10:55:08 | 显示全部楼层
很好,感谢楼主分享

出0入0汤圆

发表于 2015-7-19 03:04:56 | 显示全部楼层
正好要用到,拿来参考一下,谢谢。
求教LZ,可不可以把你修改的过程讲一讲呢?求科普。

出0入0汤圆

发表于 2015-10-6 08:40:51 | 显示全部楼层
意思是一台硬件实物,虚拟出好几个来,让主机看到的也是好几个对吧

出0入0汤圆

发表于 2016-7-26 09:12:21 | 显示全部楼层
这个好啊

出0入0汤圆

发表于 2017-8-9 23:07:54 | 显示全部楼层
大神,小弟移植您的代码,可是没有成功。。。

额,可能水平不够,暂时还没有找到原因,恳请大神指教下。。。谢谢

出0入0汤圆

发表于 2017-8-10 06:21:49 来自手机 | 显示全部楼层
这个看下,freemodbus多从机,感谢

出0入12汤圆

发表于 2017-9-16 14:50:09 | 显示全部楼层
能不能同时支持RTU和TCP?

出0入4汤圆

 楼主| 发表于 2017-9-16 18:53:11 | 显示全部楼层
waterx3 发表于 2017-9-16 14:50
能不能同时支持RTU和TCP?

no,目前没时间去研究

出0入0汤圆

发表于 2018-3-19 16:12:30 | 显示全部楼层
ibichao 发表于 2017-9-16 18:53
no,目前没时间去研究

stm32f103---freemodbus多从机代码 请教

出0入0汤圆

发表于 2018-7-17 15:47:44 | 显示全部楼层
ibichao 发表于 2017-9-16 18:53
no,目前没时间去研究

您提到,多从机,单主机可以做协议转换了,请问这种场合一般是用在什么地方

我个人认为,单从机,多主机的情况下是可以作为网关一样用的,像以太网的交换机或者路由器一样

出0入0汤圆

发表于 2018-7-19 16:37:18 | 显示全部楼层
我研究了楼主代码,多从机支持通过增加多份代码的方法实现,如果代码使用了全局变量,就增加一个代码拷贝

不过用修改成数组的方法可能会更方便一些,如果是真的有好多从机的话,不过这个其实可能性不太大

正如我前一条评论所言,几乎没有这样的场合说一个设备会是多个从机

出0入0汤圆

发表于 2018-10-18 16:40:18 | 显示全部楼层
看看代码先

出0入0汤圆

发表于 2018-11-6 14:47:23 | 显示全部楼层
功能码04 协议规范里最大可读125个寄存器,但Freemodbus 里好像只能读124个。
if( ( usRegCount >= 1 )    && ( usRegCount < MB_PDU_FUNC_READ_REGCNT_MAX ) )    那个应该是<=吧?

出0入0汤圆

发表于 2019-1-14 18:51:52 | 显示全部楼层
谢谢,学习下

出0入0汤圆

发表于 2019-3-5 12:47:41 | 显示全部楼层
非常感谢,学习了  

出0入0汤圆

发表于 2019-3-28 11:43:13 | 显示全部楼层
这个程序用在485通信上有问题, 因为使能脚没处理好,导致最后一个字节发不出去。

        //发送中断
        if (USART_GetITStatus(ucSerialPortNr, USART_IT_TXE) == SET){
                 xMBRTUTransmitFSM(&ucRTU_DCB);
        }
   // TXE,是寄存器为空的中断

出0入0汤圆

发表于 2019-5-11 22:29:31 | 显示全部楼层
谢谢提供的思路

出0入0汤圆

发表于 2019-8-21 10:34:59 | 显示全部楼层
学习了,多谢楼主

出0入0汤圆

发表于 2019-8-21 10:56:58 | 显示全部楼层
这个应该比较有用。

出0入0汤圆

发表于 2020-9-29 17:00:01 | 显示全部楼层
谢楼主提供的思路的源码

出0入0汤圆

发表于 2020-9-29 17:33:55 | 显示全部楼层
感谢楼主分享~~~

出0入135汤圆

发表于 2020-9-29 18:57:02 来自手机 | 显示全部楼层
思路很好啊

出0入0汤圆

发表于 2020-10-25 13:39:12 | 显示全部楼层
freemodbus多从机代码(RTU) ,学习了。

出0入0汤圆

发表于 2020-10-25 21:53:41 | 显示全部楼层
学习一下                                                               

出0入0汤圆

发表于 2020-10-26 23:51:28 | 显示全部楼层
这个其实就是两个串口中,定义了两份。

出0入0汤圆

发表于 2020-10-27 00:19:52 来自手机 | 显示全部楼层
学习了,正需要,谢谢

出0入0汤圆

发表于 2020-10-29 14:15:13 | 显示全部楼层
感谢分享,花时间研究一下

出0入0汤圆

发表于 2020-11-23 11:38:38 | 显示全部楼层
感谢分享,花时间研究一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 19:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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