搜索
bottom↓
回复: 51

STM32 移植FreeModbus 详细过程 【辅助贴视频】

  [复制链接]

出0入0汤圆

发表于 2013-8-1 23:12:47 | 显示全部楼层 |阅读模式

http://player.youku.com/player.php/sid/XNTkwNDY5Mjky/v.swf

一些软件操作的说明。
该帖子的辅助说明,希望大家喜欢。
http://www.amobbs.com/thread-5491615-1-1.html

出0入0汤圆

 楼主| 发表于 2013-8-1 23:13:38 | 显示全部楼层
没办法,大家需要先看一会广告。
软件操作方面的内容,写起来效果不一定好,操作一下就好些。

出110入0汤圆

发表于 2013-8-1 23:39:51 | 显示全部楼层
之前移植的时候参考了楼主的帖子,已经用到第二个项目上了,非常好使

出0入0汤圆

发表于 2013-8-1 23:53:44 | 显示全部楼层
mark一下  谢谢楼主分享~~

出0入0汤圆

发表于 2013-8-2 09:10:31 | 显示全部楼层
已经强势关注LZ。记得LZ在我一个帖子上留过一条言,亦很有帮助!

出0入0汤圆

发表于 2013-8-2 09:18:08 | 显示全部楼层
楼主太给力了  请允许我崇拜你吧

出0入0汤圆

发表于 2013-8-2 09:57:48 | 显示全部楼层
楼主,我的代码也改完了,很好用
我是两屏做监听,截获有效数据
并显示,不做回复,其它的都会回
复。协议栈稍微改了一下。

出0入0汤圆

发表于 2013-8-2 09:58:51 | 显示全部楼层
楼主有没有兴趣一起把FreeModbus改成支持主和从的?

出0入0汤圆

发表于 2013-8-2 11:24:22 | 显示全部楼层
BOOL xMBPortEventPost( eMBEventType eEvent )
{
    xEventInQueue = TRUE;
    eQueuedEvent = eEvent;
    return TRUE;
}

这是事件发生的处理函数
发现这不是真正的队列,
上一个没有处理,下一下来了必然会覆盖吧?

出0入0汤圆

发表于 2013-8-2 11:48:35 | 显示全部楼层
eMBPoll要调用两次才能得到真正的数据

出0入0汤圆

发表于 2013-8-2 11:52:05 | 显示全部楼层
xMBPortEventPost()是启用自己实现的部分
如果不是真队列,而发包的频率远大于eMBPol的调用频率时必将导致丢包超时l

出0入0汤圆

 楼主| 发表于 2013-8-2 12:23:26 | 显示全部楼层
Flyback 发表于 2013-8-1 23:39
之前移植的时候参考了楼主的帖子,已经用到第二个项目上了,非常好使

呵呵,看来我的努力还是有效果的

出0入0汤圆

 楼主| 发表于 2013-8-2 12:24:13 | 显示全部楼层
linlingpeng 发表于 2013-8-2 09:10
已经强势关注LZ。记得LZ在我一个帖子上留过一条言,亦很有帮助!

谢谢你的关注,我一定再接再励啊!

出0入0汤圆

 楼主| 发表于 2013-8-2 12:25:03 | 显示全部楼层
yang9769 发表于 2013-8-2 09:18
楼主太给力了  请允许我崇拜你吧

不必崇拜的,共同学习 共同进步才是真的。

出0入0汤圆

 楼主| 发表于 2013-8-2 12:26:08 | 显示全部楼层
worldsing 发表于 2013-8-2 09:58
楼主有没有兴趣一起把FreeModbus改成支持主和从的?

如果有精力的话我一定做这件事情
不过我觉得PC机做主机可能会好一些,更多的关注NMODBUS这样的PC机类库。

出0入0汤圆

 楼主| 发表于 2013-8-2 12:26:56 | 显示全部楼层
worldsing 发表于 2013-8-2 11:24
BOOL xMBPortEventPost( eMBEventType eEvent )
{
    xEventInQueue = TRUE;

是的,你的理解是对的。

出0入0汤圆

发表于 2013-8-2 12:28:06 | 显示全部楼层
但是,有时不一定连接PC
就得需要有一个主机吧

出0入0汤圆

 楼主| 发表于 2013-8-2 12:28:22 | 显示全部楼层
worldsing 发表于 2013-8-2 11:52
xMBPortEventPost()是启用自己实现的部分
如果不是真队列,而发包的频率远大于eMBPol的调用频率时必将导 ...

我有一点不接,为什么RS232或RS485接收数据的速率大于 freemodbus协议处理的速率。

是不是你用的MCU主频太低了,不适合做大数据量处理

出0入0汤圆

 楼主| 发表于 2013-8-2 12:30:26 | 显示全部楼层
worldsing 发表于 2013-8-2 12:28
但是,有时不一定连接PC
就得需要有一个主机吧

有的时候我也遇到了需要主机的情况。

后来我也仔细分析了这种需求,之后我把目光转移到了CANOPEN上。

出0入0汤圆

发表于 2013-8-2 12:31:51 | 显示全部楼层
xukai871105 发表于 2013-8-2 12:28
我有一点不接,为什么RS232或RS485接收数据的速率大于 freemodbus协议处理的速率。

是不是你用的MCU主频 ...

我只是假设而以,
如果CPU资源够时应该建一个真正的FIFO
这个问题就能解决。

出0入0汤圆

发表于 2013-8-2 12:36:33 | 显示全部楼层
FreeModbus在M8上跑起来有点吃力,Flash吃了一半了。

出0入0汤圆

发表于 2013-8-2 13:32:50 | 显示全部楼层
Flyback 发表于 2013-8-1 23:39
之前移植的时候参考了楼主的帖子,已经用到第二个项目上了,非常好使

兄台,可有主机解决方案?

另外,我用这个程序,15命令,写多个线圈时,数据是不对的。你的呢

出110入0汤圆

发表于 2013-8-2 13:41:13 | 显示全部楼层
mcuzxc 发表于 2013-8-2 13:32
兄台,可有主机解决方案?

另外,我用这个程序,15命令,写多个线圈时,数据是不对的。你的呢 ...

主机程序也在寻找中,读写线圈没有问题

出0入0汤圆

发表于 2013-8-2 13:45:30 | 显示全部楼层
你看我的现象:http://www.amobbs.com/forum.php? ... emodbus&page=12
443楼
可否把你的程序发来我对比下下啊。谢谢

出0入0汤圆

发表于 2013-8-2 18:46:13 | 显示全部楼层
avr M8 上跑freeModbus有点浪费资源了

正在把其它没用的代码去了,只留RTU

出0入0汤圆

发表于 2013-8-2 18:47:49 | 显示全部楼层
整理中。。。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-8-2 18:54:25 | 显示全部楼层
把改完的代码测试一下

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-8-2 19:00:44 | 显示全部楼层
楼上是来炫耀的吗?

出0入0汤圆

发表于 2013-8-2 20:07:59 | 显示全部楼层


开始学习Modbus啦,看过原帖,受益匪浅,有几个地方请教楼主:
红色方框内的.c是不是不需要修改了,直接搬运,蓝色方框内,修改portevent事件修改,portserial换成STM32的串口配置,porttimer改成32的定时器,再把main.c copy一下,是不是就ok了,有什么地方疏忽了么?

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-8-2 20:14:41 | 显示全部楼层
MARK一下!!!!谢谢!!!

出0入0汤圆

 楼主| 发表于 2013-8-2 22:24:53 | 显示全部楼层
worldsing 发表于 2013-8-2 18:47
整理中。。。

您可真节约啊!

出0入0汤圆

 楼主| 发表于 2013-8-2 22:25:38 | 显示全部楼层
linlingpeng 发表于 2013-8-2 20:07
开始学习Modbus啦,看过原帖,受益匪浅,有几个地方请教楼主:
红色方框内的.c是不是不需要修改了,直接 ...

你的做法应该是正确的,大致方向上没有问题,可能是一些细节出了问题。

出0入0汤圆

 楼主| 发表于 2013-8-2 22:26:42 | 显示全部楼层
worldsing 发表于 2013-8-2 18:54
把改完的代码测试一下

建议把整理的代码发上来,大家一起分享一下。

出0入0汤圆

发表于 2013-8-3 09:11:36 | 显示全部楼层
xukai871105 发表于 2013-8-2 22:26
建议把整理的代码发上来,大家一起分享一下。

测试完成后我会上传上代码的

出0入0汤圆

发表于 2013-8-3 09:13:07 | 显示全部楼层
mcuzxc 发表于 2013-8-2 19:00
楼上是来炫耀的吗?

FreeModbus占的Flahs和ram不少
我只是想改改尽量减少flasht ram
你怎么说都可以

出0入0汤圆

发表于 2013-8-3 09:15:02 | 显示全部楼层
ATMEGA8 8K Flash /1K RAM 自己的代码空间没多少了

又不舍得放去FreeModBus

出0入0汤圆

发表于 2013-8-3 14:37:29 | 显示全部楼层
正式开始移植Freemodbus,按照老大的指示,把.c .h copy完以后,发现老出现
  1. Build target 'Template'
  2. compiling usart.c...
  3. linking...
  4. ..\OBJ\Template.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced
  5. Target not created
复制代码
然后我发现原来的usart.c 里有这么一句话,我注释掉就正常了
  1. //加入以下代码,支持printf函数,而不需要选择use MicroLIB         
  2. #if 1
  3. //#pragma import(__use_no_semihosting)
复制代码
个人感觉是和串口的printf 有关!而且,要把这个勾去掉!


虽然不知道是什么情况,但就是正常了!

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2013-8-3 16:46:27 | 显示全部楼层
linlingpeng 发表于 2013-8-3 14:37
正式开始移植Freemodbus,按照老大的指示,把.c .h copy完以后,发现老出现然后我发现原来的usart.c 里有这 ...

我平时用IAR,看别人的代码才使用Keil

可能是IAR和Keil的区别造成的。

出0入0汤圆

发表于 2013-8-8 17:53:58 | 显示全部楼层
RTU精简版本

出0入0汤圆

发表于 2013-8-8 17:59:59 | 显示全部楼层
测试环境:IAR for avr 5.40 + M128

目前只优化了ModBusPort.c和ModBusRTU.c

ModBusPort.c  
  566 bytes of CODE memory (+ 19 bytes shared)
  4 bytes of DATA memory (+ 13 bytes shared)

ModBusRTU.c  
   1 677 bytes of CODE memory (+ 14 bytes shared)
   821 bytes of DATA memory (+  1 byte  shared)

ModbusFun.c  
   1 582 bytes of CODE memory

ModbusUser.c  
   548 bytes of CODE memory (+ 14 bytes shared)
  30 bytes of DATA memory


有时间优化一下


出0入0汤圆

发表于 2013-8-12 20:46:20 来自手机 | 显示全部楼层
mark……
顶一个…

出0入8汤圆

发表于 2013-12-30 13:07:58 | 显示全部楼层
感谢楼主的努力!!!!!!!!!!!1

出0入0汤圆

发表于 2014-1-21 11:55:14 | 显示全部楼层
Well done!

出0入0汤圆

发表于 2014-1-21 16:48:31 | 显示全部楼层
谢谢了~~

出0入0汤圆

发表于 2014-1-21 17:21:00 | 显示全部楼层
不错 支持一下

出0入0汤圆

发表于 2014-5-16 10:22:46 | 显示全部楼层

楼主太给力了

出0入0汤圆

发表于 2014-6-29 14:23:58 | 显示全部楼层
不错,准备学习一下

出0入0汤圆

发表于 2014-7-8 16:23:10 | 显示全部楼层
持续再关注你,项目中用到CC2530无线和RS485有线.这几天在学习UCOS操作系统和MODBUS,想把它们融合在一块就不知努力是否白费,因为项目要求紧本人也很菜。谢谢你的分享

出0入0汤圆

发表于 2014-7-17 21:55:32 | 显示全部楼层
mcuzxc 发表于 2013-8-2 13:32
兄台,可有主机解决方案?

另外,我用这个程序,15命令,写多个线圈时,数据是不对的。你的呢 ...

你好,你的问题解决了吗,我现在也遇到了你这样的问题,能告知我下是什么原因吗,谢谢

出0入0汤圆

发表于 2015-1-22 14:53:40 | 显示全部楼层
XIUQIN 发表于 2014-7-8 16:23
持续再关注你,项目中用到CC2530无线和RS485有线.这几天在学习UCOS操作系统和MODBUS,想把它们融合在一块就 ...

请问融合完了吗

出0入0汤圆

发表于 2015-4-13 17:02:45 | 显示全部楼层
mark   留个记号

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-8 12:58

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

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