搜索
bottom↓
回复: 63

给大家分享 移植的FREE MODBUS例程

  [复制链接]

出0入0汤圆

发表于 2014-11-5 10:58:27 | 显示全部楼层 |阅读模式
本帖最后由 jiaxinhui 于 2014-11-5 13:47 编辑

实验内容:在板子上移植FREEMODBUS从机协议,在PC上用MODBUS POLL调试软件,测试几种常用功能。
实验平台:基于MINI STM32 板子
源      码:
补充说明:只测试了02、03、04、05、06等几个常用功能,均无丢包现象。有兴趣的朋友可以在此基础上,测试其他命令。
输出效果:

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2014-11-5 13:48:12 | 显示全部楼层
关于:
FreeMODBUS 是针对通用的Modbus协议栈在嵌入式系统中应用的一个实现。Modbus协议是一个在工业制造领域中得到广泛应用的一个网络协议。一个Modbus通信协议栈包括两层:定义了数据结构和功能Modbus应用协议和网络层。在FreeMODBUS的当前版本中,提供了Modbus Application Protocol v1.1a 的实现并且支持在Modbus over serial line specification 1.0中定义的RTU/ASCII传输模式。从0.7版本开始,FreeModbus也支持在TCP defined in Modbus Messaging on TCP/IP Implementation Guide v1.0a中定义的TCP传输。Freemodbus遵循BSD[1] ,这意味着本协议栈的实现代码可以应用于商业用途。目前版本的FreeModbus支持如下的功能码:
读输入寄存器 (0x04)
读保持寄存器 (0x03)
写单个寄存器 (0x06)
写多个寄存器 (0x10)
读/写多个寄存器 (0x17)
读取线圈状态 (0x01)
写单个线圈 (0x05)
写多个线圈 (0x0F)
读输入状态 (0x02)
报告从机标识 (0x11)
本实现基于最新的标准并且与标准完全兼容。接收和传输Modbus RTU/ASCII数据帧是通过一个由硬件提取层的调用来驱动状态机来实现的。这就使得该协议非常容易移植到其他的平台之上。当收到一个完整的数据帧后,该数据帧被传入Modbus应用层,数据帧的内容在该层得到解析。为例方便增加新的Modbus功能,Freemodbus在应用层通提供了Hooks。

出0入0汤圆

 楼主| 发表于 2014-11-6 09:50:44 | 显示全部楼层
                                                                       

出0入0汤圆

发表于 2014-11-6 10:00:51 | 显示全部楼层
MARK,Modbus将要用到

出0入0汤圆

发表于 2014-11-6 10:03:45 | 显示全部楼层
MARK,手上又快miniSTM32的板子。下载测试一下。

出0入0汤圆

发表于 2014-11-6 10:11:07 | 显示全部楼层
兄弟  不是和媳妇卖电脑去了么  还对技术念念不忘啊

出0入0汤圆

发表于 2014-11-6 10:13:08 | 显示全部楼层
记得之前楼主发过一个移植教程吧,学习了

出0入0汤圆

发表于 2014-11-6 10:13:52 | 显示全部楼层
我最近也在搞modbus  现在我只用到部分的功能码  后期有问题 发帖讨论下

出0入0汤圆

 楼主| 发表于 2014-11-6 10:20:57 | 显示全部楼层
Honey_comb 发表于 2014-11-6 10:13
记得之前楼主发过一个移植教程吧,学习了

那不是我的,是咱们论坛一位高手发表的,那个帖子很不错,这是链接:http://www.amobbs.com/forum.php? ... ighlight=FREEMODBUS

出0入0汤圆

 楼主| 发表于 2014-11-6 10:22:47 | 显示全部楼层
gwalle 发表于 2014-11-6 10:13
我最近也在搞modbus  现在我只用到部分的功能码  后期有问题 发帖讨论下

经过我多次的对好几个功能码测试,发现这个MODBUS 协议内核还是很稳定的。                                                   

出0入0汤圆

发表于 2014-11-6 10:26:49 | 显示全部楼层
感谢楼主,之前也看到过好几个MODBUS的帖子,收藏了

出0入0汤圆

发表于 2014-11-6 10:36:18 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-11-6 10:46:00 | 显示全部楼层
jiaxinhui 发表于 2014-11-6 10:22
经过我多次的对好几个功能码测试,发现这个MODBUS 协议内核还是很稳定的。                              ...

初步看了一下,我也移植下看看 遇到了问题在于LZ交流
移植好了共同分享下心得

出0入0汤圆

发表于 2014-11-6 11:31:22 | 显示全部楼层
顶下再学习

出0入0汤圆

 楼主| 发表于 2014-11-7 09:42:35 | 显示全部楼层
shizt 发表于 2014-11-6 10:26
感谢楼主,之前也看到过好几个MODBUS的帖子,收藏了

不客气。                                                                                                                                      

出0入0汤圆

 楼主| 发表于 2014-11-15 15:47:08 | 显示全部楼层
                                       

出0入0汤圆

发表于 2014-11-19 16:42:24 | 显示全部楼层
谢谢分享

出0入0汤圆

 楼主| 发表于 2014-11-20 09:30:22 | 显示全部楼层
不客气      

出0入0汤圆

发表于 2014-11-20 09:31:25 | 显示全部楼层
谢谢分享,mark

出0入0汤圆

发表于 2014-11-21 17:41:03 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-11-21 22:38:26 | 显示全部楼层
好东西,谢谢楼主

出0入0汤圆

发表于 2014-11-21 23:07:20 来自手机 | 显示全部楼层
真的感谢楼主

出0入0汤圆

 楼主| 发表于 2014-11-22 14:19:07 | 显示全部楼层
不客气。           

出0入0汤圆

发表于 2014-11-24 09:33:27 | 显示全部楼层
MAR K                        

出0入0汤圆

发表于 2014-11-24 09:33:43 | 显示全部楼层
MARK.........         

出0入0汤圆

发表于 2014-12-3 03:47:18 | 显示全部楼层
我改为串口2测试,232正常,485接收数据前后总是多出00,例如:发送》01 03 00 00 00 04 44 09接收为》00 01 03 08 10 00 20 00 30 00 40 00 AD 7B 00
帮忙分析一下!

出0入0汤圆

 楼主| 发表于 2014-12-3 10:13:54 | 显示全部楼层
zhoust 发表于 2014-12-3 03:47
我改为串口2测试,232正常,485接收数据前后总是多出00,例如:发送》01 03 00 00 00 04 44 09接收为》00 0 ...

接终端电阻了吗?                                                                              

出0入0汤圆

发表于 2014-12-3 10:30:15 | 显示全部楼层
容我来试试

出0入0汤圆

发表于 2014-12-3 20:54:46 | 显示全部楼层
jiaxinhui 发表于 2014-12-3 10:13
接终端电阻了吗?                                                                                ...

没有接,我测试用的是232转485转接卡,用串口助手试的,改为偶效验了。之前默认无效验也是这样的!用此转接卡连接其他设备都正常的!

出0入0汤圆

发表于 2014-12-3 22:40:36 | 显示全部楼层
正好要用,谢谢下了

出0入0汤圆

发表于 2014-12-3 23:14:32 来自手机 | 显示全部楼层
很好的协议,正想找

出0入0汤圆

 楼主| 发表于 2014-12-4 10:08:07 | 显示全部楼层
zhoust 发表于 2014-12-3 20:54
没有接,我测试用的是232转485转接卡,用串口助手试的,改为偶效验了。之前默认无效验也是这样的!用此转 ...

请再次检测你的硬件和软件吧   。

出0入0汤圆

发表于 2014-12-4 13:47:32 | 显示全部楼层
jiaxinhui 发表于 2014-12-4 10:08
请再次检测你的硬件和软件吧   。

嗯,好的。谢谢呀!

出0入0汤圆

 楼主| 发表于 2014-12-5 14:14:43 | 显示全部楼层
不客气。                 

出0入0汤圆

发表于 2014-12-6 05:29:32 | 显示全部楼层
本帖最后由 zhoust 于 2014-12-6 05:30 编辑


问题找到了,测试时,AB间有120欧姆终端电阻,当时没有看到,去掉终端电阻后通讯正常。

出0入0汤圆

 楼主| 发表于 2014-12-6 10:15:35 | 显示全部楼层
zhoust 发表于 2014-12-6 05:29
问题找到了,测试时,AB间有120欧姆终端电阻,当时没有看到,去掉终端电阻后通讯正常。 ...

感谢你给大家分享你的经验。                                                                 

出0入0汤圆

发表于 2014-12-7 21:20:02 来自手机 | 显示全部楼层
直接复制

出0入0汤圆

发表于 2014-12-7 23:47:44 | 显示全部楼层
很强大啊,看来要好好看看,不懂的还要请教啊

出0入0汤圆

发表于 2014-12-8 08:43:04 | 显示全部楼层
Mark,谢谢楼主分享

出0入0汤圆

 楼主| 发表于 2014-12-9 16:22:29 | 显示全部楼层
不客气。                        

出0入0汤圆

发表于 2014-12-9 16:33:09 | 显示全部楼层
多谢分享!!

出0入0汤圆

 楼主| 发表于 2014-12-12 16:51:27 | 显示全部楼层
不客气。         

出0入0汤圆

发表于 2014-12-13 11:38:00 | 显示全部楼层
最近正在做485的modbus通讯,很有用处,谢谢分享~

出0入0汤圆

发表于 2014-12-13 21:02:19 | 显示全部楼层
正在学modbus,不知从何下手,特来学习

出0入0汤圆

发表于 2014-12-15 14:10:24 | 显示全部楼层
mark 谢谢分享

出0入0汤圆

 楼主| 发表于 2014-12-16 16:14:02 | 显示全部楼层
不客气。                                 

出0入0汤圆

发表于 2015-2-3 21:31:32 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2015-2-12 20:18:20 | 显示全部楼层
谢谢 分享。。

出0入0汤圆

发表于 2015-3-21 09:59:01 | 显示全部楼层
为什么我的 time out error

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2015-3-22 12:42:28 | 显示全部楼层
zhoust 发表于 2014-12-6 05:29
问题找到了,测试时,AB间有120欧姆终端电阻,当时没有看到,去掉终端电阻后通讯正常。 ...

请问为什么要把120R的电阻去掉呢? 我的也是去掉就好了。

出0入0汤圆

 楼主| 发表于 2015-4-9 09:26:03 | 显示全部楼层
sunday640 发表于 2015-3-22 12:42
请问为什么要把120R的电阻去掉呢? 我的也是去掉就好了。

不是所有情况下都需要120R电阻的。

出5入42汤圆

发表于 2015-4-9 11:13:32 | 显示全部楼层
MARK留名,freemodbus很好用。TCP从机实现过,主机还没搞过。

出0入0汤圆

发表于 2015-4-9 11:31:01 | 显示全部楼层
不错,准备把free modbus 应用到一个项目中去。学习一下。

出0入0汤圆

 楼主| 发表于 2015-4-10 09:08:32 | 显示全部楼层
不客气,能用就行。

出0入0汤圆

 楼主| 发表于 2015-4-15 11:13:59 | 显示全部楼层

出0入0汤圆

发表于 2015-4-21 10:32:52 | 显示全部楼层
MODBUS 协议还是比较好的,但编程注意 1。接收到不是标准协议数据后,怎样处理。超时怎样处理

出0入0汤圆

发表于 2015-4-30 13:16:33 | 显示全部楼层
不知道主机怎么实现  

出0入0汤圆

 楼主| 发表于 2015-7-16 15:43:34 | 显示全部楼层
                                                

出0入0汤圆

 楼主| 发表于 2015-8-17 10:55:43 | 显示全部楼层
usnmyrj 发表于 2015-4-21 10:32
MODBUS 协议还是比较好的,但编程注意 1。接收到不是标准协议数据后,怎样处理。超时怎样处理 ...

是这样的

出0入0汤圆

 楼主| 发表于 2015-9-23 10:49:19 | 显示全部楼层
主机的后续会研究

出0入0汤圆

发表于 2015-10-26 14:24:44 | 显示全部楼层
有没有modbus主站程序,嘿嘿

出0入0汤圆

 楼主| 发表于 2015-11-10 14:12:09 | 显示全部楼层
上面是从站的,主站的没有。

出0入0汤圆

 楼主| 发表于 2015-12-23 08:18:31 | 显示全部楼层
                                                

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-18 22:20

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

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