amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 75

MODBUS框架程序

  [复制链接]
(49261564)

打赏出0元收入0元

发表于 2018-12-15 23:59:16 | 显示全部楼层 |阅读模式
第一次发帖,请大家多多指教,花了2天时间写的程序,如有错误还请指出,程序大家稍微修改就可以用了,

MODBUS调试.zip

44.77 KB

程序

(49143245)

打赏出0元收入0元

发表于 2018-12-17 08:51:15 | 显示全部楼层
本帖最后由 zuu0 于 2018-12-17 08:53 编辑

如果51的话,资源有限, 3.5T和1.5T的判断,我不太喜欢用定时器做.我更喜欢用ADC,PCA来做计时,us级.比定时器好用
(34891407)

打赏出0元收入0元

 楼主| 发表于 2019-5-31 07:41:53 | 显示全部楼层
本帖最后由 lipengxu 于 2019-5-31 07:49 编辑

在原有的基础上,优化了接收时CRC检验的等待时间,使单片机能更快的响应协议,另外把发送的时间也打散了,不用等待数据发送完,才执行后面的程序。

MODBUS框架V2.0.zip

54.36 KB

(49240298)

打赏出0元收入0元

发表于 2018-12-16 05:53:42 来自手机 | 显示全部楼层
谢谢,这个用很少的代码实现,某些场合够用了。支持。
(49236205)

打赏出0元收入0元

发表于 2018-12-16 07:01:55 | 显示全部楼层
谢谢分享
(49229777)

打赏出0元收入0元

发表于 2018-12-16 08:49:03 来自手机 | 显示全部楼层
有空试下,谢谢分享
(49226868)

打赏出0元收入0元

发表于 2018-12-16 09:37:32 | 显示全部楼层
谢谢分享,下来参考一下。
(49222634)

打赏出0元收入0元

发表于 2018-12-16 10:48:06 | 显示全部楼层
這個程序很多地方可以用到呢!感謝樓主
(49222285)

打赏出0元收入0元

发表于 2018-12-16 10:53:55 | 显示全部楼层
感谢分享,
(49218748)

打赏出0元收入0元

发表于 2018-12-16 11:52:52 来自手机 | 显示全部楼层
感谢楼主分享
(49214937)

打赏出0元收入0元

发表于 2018-12-16 12:56:23 | 显示全部楼层
简洁明了,多谢分享!
(49179613)

打赏出0元收入0元

发表于 2018-12-16 22:45:07 来自手机 | 显示全部楼层
感谢楼主分享
(49178336)

打赏出0元收入0元

发表于 2018-12-16 23:06:24 | 显示全部楼层
谢谢楼主分享。收藏了。
(49147146)

打赏出0元收入0元

发表于 2018-12-17 07:46:14 | 显示全部楼层
mark,收下了
(49141730)

打赏出0元收入0元

发表于 2018-12-17 09:16:30 | 显示全部楼层
没做功能码解析么
(49141475)

打赏出0元收入0元

发表于 2018-12-17 09:20:45 | 显示全部楼层

谢谢分享,下来参考一下。
(49141395)

打赏出0元收入0元

发表于 2018-12-17 09:22:05 | 显示全部楼层
下了,感谢分享
(49141118)

打赏出0元收入0元

发表于 2018-12-17 09:26:42 | 显示全部楼层
很极致,以至于第一眼没看懂
(49139920)

打赏出0元收入0元

发表于 2018-12-17 09:46:40 | 显示全部楼层
其实还应该再完善些,不过LZ两天能做到这样也不错了。
(49138718)

打赏出0元收入0元

发表于 2018-12-17 10:06:42 | 显示全部楼层
zuu0 发表于 2018-12-17 08:51
如果51的话,资源有限, 3.5T和1.5T的判断,我不太喜欢用定时器做.我更喜欢用ADC,PCA来做计时,us级.比 ...

ADC 如何实现?能说说吗?
(49138048)

打赏出0元收入0元

发表于 2018-12-17 10:17:52 | 显示全部楼层
谢谢分享
(49137862)

打赏出0元收入0元

发表于 2018-12-17 10:20:58 | 显示全部楼层
谢谢,下载看看。
(49137261)

打赏出0元收入0元

发表于 2018-12-17 10:30:59 | 显示全部楼层
只实现了接收,实用性和可维护性还有待提高。

modbus是一问一答式的,数据接收缓存和发送缓存可以共用一个,返回的数据在收到的数据上改改,有的是原样回传。
(49135254)

打赏出0元收入0元

发表于 2018-12-17 11:04:26 | 显示全部楼层
asbzhang 发表于 2018-12-17 10:06
ADC 如何实现?能说说吗?

就是AD不是有转换周期吗,多少时间完成一次转换,在AD中断里计时,,我经常用这二个模块当定时器用,

(49131921)

打赏出0元收入0元

发表于 2018-12-17 11:59:59 | 显示全部楼层
谢谢! 很精致
(49116767)

打赏出0元收入0元

发表于 2018-12-17 16:12:33 | 显示全部楼层
感谢分享
(49029976)

打赏出0元收入0元

发表于 2018-12-18 16:19:04 | 显示全部楼层
zuu0 发表于 2018-12-17 11:04
就是AD不是有转换周期吗,多少时间完成一次转换,在AD中断里计时,,我经常用这二个模块当定时器用,

...

不错,思路很广。
(48966955)

打赏出0元收入0元

发表于 2018-12-19 09:49:25 | 显示全部楼层
zuu0 发表于 2018-12-17 11:04
就是AD不是有转换周期吗,多少时间完成一次转换,在AD中断里计时,,我经常用这二个模块当定时器用,

...

虽然这样的话通用性会变差,不过可以节约小芯片的资源,而且改改也不难。
点赞 !
(48957742)

打赏出0元收入0元

发表于 2018-12-19 12:22:58 | 显示全部楼层
ilikemcu 发表于 2018-12-19 09:49
虽然这样的话通用性会变差,不过可以节约小芯片的资源,而且改改也不难。
点赞 ! ...

恩,像51这种单片机跑modbus,用定时器判断1.5T 3.5T太吃力了,干的活不多,跑9600勉强可以,除非你不去判断3.5T,
但是用AD和PCA计时就方便多了..
如果是STM32那就随便搞了
(48949885)

打赏出0元收入0元

发表于 2018-12-19 14:33:55 | 显示全部楼层
zuu0 发表于 2018-12-19 12:22
恩,像51这种单片机跑modbus,用定时器判断1.5T 3.5T太吃力了,干的活不多,跑9600勉强可以,除非你不去 ...

定时器判断不会吃力的吧,每次收到数据都要去重新初始化一下2个字节的初值,这是唯一的额外开销,即便是12T老式51,也没多大压力啊。其它的就是超时了进中断处理数据,这个本身就是没定时器也要处理的。主要是51的定时器就那么几个,实在太宝贵了。

我用51跑115200bps的MODBUS-RTU,上位机MODBUS POLL,一次读取全部21个寄存器,上位机设置参数全部设置到软件所支持的极限速度,连续100万次的高压力测试,没有发现一次异常超时或者校验错误。而且这个时候,51的其它程序代码部分,也是特地配置到极限负荷运行。不过这个项目就是因为定时器不够用了,导致有一个速度传感器的脉冲输入计数,最后不得不采用外部中断管脚来计数,资源占用有点大,好在通过了测试。看到你的回帖,很有启发,下一稿升级版,可以考虑你的思路,看看能否改进,腾出一个定时器来。

曾经有过类似设计,用一台一体式低功耗电脑,MODBUS连续跑了24小时。非MODBUS类测试,最长纪录是17天不间断跑串口通信。这些测试到后来都是实在没心情再继续下去了,才关闭的
(48946591)

打赏出0元收入0元

发表于 2018-12-19 15:28:49 | 显示全部楼层
^_^,我觉得我要mark一下,我是mark党。
(48926907)

打赏出0元收入0元

 楼主| 发表于 2018-12-19 20:56:53 | 显示全部楼层
zuu0 发表于 2018-12-17 08:51
如果51的话,资源有限, 3.5T和1.5T的判断,我不太喜欢用定时器做.我更喜欢用ADC,PCA来做计时,us级.比 ...

你好,我这个程序,原本是想写到STC15F104W上的,没有想到怎么多,不过你的想法真的很好,过几天有空了会去试一下,谢谢你的建议
(48922440)

打赏出0元收入0元

发表于 2018-12-19 22:11:20 | 显示全部楼层
过几天有空了会去试一下
(48873501)

打赏出0元收入0元

发表于 2018-12-20 11:46:59 | 显示全部楼层
学习下!~
(46075630)

打赏出0元收入0元

发表于 2019-1-21 20:58:10 | 显示全部楼层
学习一下 谢谢
(46025024)

打赏出0元收入0元

发表于 2019-1-22 11:01:36 | 显示全部楼层
学习一下 谢谢分享
(46014308)

打赏出0元收入0元

发表于 2019-1-22 14:00:12 | 显示全部楼层
谢谢分享,下载收藏。
(45909988)

打赏出0元收入0元

发表于 2019-1-23 18:58:52 | 显示全部楼层
收藏备用,谢谢分享
(45743603)

打赏出0元收入0元

发表于 2019-1-25 17:11:57 | 显示全部楼层
PCA来做计时,us级.比定时器好用
(44521195)

打赏出0元收入0元

发表于 2019-2-8 20:45:25 | 显示全部楼层
很实用,谢谢分享
(44509997)

打赏出0元收入0元

发表于 2019-2-8 23:52:03 来自手机 | 显示全部楼层
39楼 cdwess 3 小时前 很实用,谢谢分享
(44437936)

打赏出0元收入0元

发表于 2019-2-9 19:53:04 | 显示全部楼层
谢谢分享
(43599589)

打赏出0元收入0元

发表于 2019-2-19 12:45:31 | 显示全部楼层
这个还很不成熟,只是进行简单的接收回发,并没有进行协议的解析,各个功能码的处理都没有,只完成了10-15%!
(43133160)

打赏出0元收入0元

发表于 2019-2-24 22:19:20 | 显示全部楼层
学习一下 谢谢分享,期待楼主完善功能
(42221431)

打赏出0元收入0元

发表于 2019-3-7 11:34:49 | 显示全部楼层
谢谢               
(42218867)

打赏出0元收入0元

发表于 2019-3-7 12:17:33 来自手机 | 显示全部楼层
感谢楼主分享
(42193340)

打赏出0元收入0元

发表于 2019-3-7 19:23:00 | 显示全部楼层

谢谢,下载看看。
(41932810)

打赏出0元收入0元

发表于 2019-3-10 19:45:10 | 显示全部楼层
谢谢分享
(38311778)

打赏出0元收入0元

发表于 2019-4-21 17:35:42 | 显示全部楼层
谢谢楼主分享!正在学习程序的整体思想,高度不够。
(38287791)

打赏出0元收入0元

发表于 2019-4-22 00:15:29 来自手机 | 显示全部楼层
好东西收藏了
(35049303)

打赏出0元收入0元

发表于 2019-5-29 11:50:17 来自手机 | 显示全部楼层
好东西,谢谢分享
(32980372)

打赏出0元收入0元

发表于 2019-6-22 10:32:28 | 显示全部楼层
感谢分享。学习了。
(32979373)

打赏出0元收入0元

发表于 2019-6-22 10:49:07 | 显示全部楼层
谢谢分享
(32977836)

打赏出0元收入0元

发表于 2019-6-22 11:14:44 | 显示全部楼层
zuu0 发表于 2018-12-17 08:51
如果51的话,资源有限, 3.5T和1.5T的判断,我不太喜欢用定时器做.我更喜欢用ADC,PCA来做计时,us级.比 ...

ADC,PCA这个怎么做延时???
(32956918)

打赏出0元收入0元

发表于 2019-6-22 17:03:22 来自手机 | 显示全部楼层
霸气侧漏 发表于 2019-6-22 11:14
ADC,PCA这个怎么做延时???

空闲检测更方便吧
(32539937)

打赏出0元收入0元

 楼主| 发表于 2019-6-27 12:53:03 | 显示全部楼层
lipengxu 发表于 2019-5-31 07:41
在原有的基础上,优化了接收时CRC检验的等待时间,使单片机能更快的响应协议,另外把发送的时间也打散了, ...

添加了04 03 10功能码的解析
(29913191)

打赏出0元收入0元

发表于 2019-7-27 22:32:09 | 显示全部楼层
收藏以后有用
(29792198)

打赏出0元收入0元

发表于 2019-7-29 08:08:42 来自手机 | 显示全部楼层
多谢分享,mark备用。
(25939059)

打赏出0元收入0元

发表于 2019-9-11 22:27:41 | 显示全部楼层
正好有用,多谢楼主~~~~~~~~
(15818704)

打赏出0元收入0元

发表于 2020-1-7 01:40:16 | 显示全部楼层
MODBUS MARK
(15792504)

打赏出0元收入0元

发表于 2020-1-7 08:56:56 | 显示全部楼层
参考下,感谢了!
(10057035)

打赏出0元收入0元

发表于 2020-3-13 18:08:05 来自手机 | 显示全部楼层
不错,收藏了,谢谢
(10050875)

打赏出0元收入0元

发表于 2020-3-13 19:50:45 | 显示全部楼层
感谢分享,
(2697606)

打赏出0元收入3元

发表于 2020-6-6 22:25:14 来自手机 | 显示全部楼层
最近正在做这个,用得上,谢谢!
(2660929)

打赏出0元收入0元

发表于 2020-6-7 08:36:31 | 显示全部楼层
感谢分享 思路差不多
(1950120)

打赏出0元收入0元

发表于 2020-6-15 14:03:20 来自手机 | 显示全部楼层
感谢分享!
(1940236)

打赏出0元收入0元

发表于 2020-6-15 16:48:04 | 显示全部楼层
下来看看先,谢谢
(1714978)

打赏出0元收入0元

发表于 2020-6-18 07:22:22 来自手机 | 显示全部楼层
下载下来看下思路,谢谢分享。
(1698514)

打赏出0元收入0元

发表于 2020-6-18 11:56:46 | 显示全部楼层
楼主能 花点时间 将 该 MODBUS 框架程序 移植到 STC8G8K64U-48I-LQFP48/LQFP64 上完善下给大家参考,我们 送您一套最新的 STC8H8K64U 实验箱
(1698380)

打赏出0元收入0元

发表于 2020-6-18 11:59:00 | 显示全部楼层
STC8H8K64U-48I-LQFP64,实验箱原理图,部分参考程序, 请关注, 补充中:http://www.stcmcudata.com/STC8F- ... O-CODE-20200615.ZIP
(1680543)

打赏出0元收入0元

发表于 2020-6-18 16:56:17 | 显示全部楼层
下载下来看下思路,谢谢分享。
(1678739)

打赏出0元收入1元

发表于 2020-6-18 17:26:21 | 显示全部楼层
国学芯用 发表于 2020-6-18 11:56
楼主能 花点时间 将 该 MODBUS 框架程序 移植到 STC8G8K64U-48I-LQFP48/LQFP64 上完善下给大家参考,我们  ...

还有8G8K64U这个型号啊?俺看到的DATASHEET好像都是8H
(1678641)

打赏出0元收入0元

发表于 2020-6-18 17:27:59 | 显示全部楼层
(1664380)

打赏出0元收入0元

发表于 2020-6-18 21:25:40 | 显示全部楼层
学习一下,谢谢分享。
(1662211)

打赏出0元收入0元

发表于 2020-6-18 22:01:49 来自手机 | 显示全部楼层
下载下来分析一下,在中断中对modbou  CRC进行校验,方法不错,实测可用,
(1658860)

打赏出0元收入0元

发表于 2020-6-18 22:57:40 来自手机 | 显示全部楼层
感谢楼主分享
(1520036)

打赏出0元收入0元

发表于 2020-6-20 13:31:24 | 显示全部楼层
谢谢分享
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-8 03:45

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

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