lipengxu 发表于 2018-12-15 23:59:16

分享我的MODBUS框架程序

第一次发帖,请大家多多指教,花了2天时间写的程序,如有错误还请指出,程序大家稍微修改就可以用了,

zuu0 发表于 2018-12-17 08:51:15

本帖最后由 zuu0 于 2018-12-17 08:53 编辑

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

lipengxu 发表于 2019-5-31 07:41:53

本帖最后由 lipengxu 于 2019-5-31 07:49 编辑

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

moment 发表于 2018-12-16 05:53:42

谢谢,这个用很少的代码实现,某些场合够用了。支持。

kxb 发表于 2018-12-16 07:01:55

谢谢分享

NM2012 发表于 2018-12-16 08:49:03

有空试下,谢谢分享

huntermax110 发表于 2018-12-16 09:37:32

谢谢分享,下来参考一下。

unicode 发表于 2018-12-16 10:48:06

這個程序很多地方可以用到呢!感謝樓主

fenjinzhe 发表于 2018-12-16 10:53:55

感谢分享,

eliterxzgxu 发表于 2018-12-16 11:52:52

感谢楼主分享

XTXB 发表于 2018-12-16 12:56:23

简洁明了,多谢分享!

xml2028 发表于 2018-12-16 22:45:07

感谢楼主分享

hidden 发表于 2018-12-16 23:06:24

谢谢楼主分享。收藏了。

gonggu8181 发表于 2018-12-17 07:46:14

mark,收下了

Ray______ 发表于 2018-12-17 09:16:30

没做功能码解析么

不舍的六年 发表于 2018-12-17 09:20:45


谢谢分享,下来参考一下。

dianyuan 发表于 2018-12-17 09:22:05

下了,感谢分享

xzhiwei 发表于 2018-12-17 09:26:42

很极致,以至于第一眼没看懂{:lol:}

foxpro2005 发表于 2018-12-17 09:46:40

其实还应该再完善些,不过LZ两天能做到这样也不错了。

asbzhang 发表于 2018-12-17 10:06:42

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

ADC 如何实现?能说说吗?

TKZXJ 发表于 2018-12-17 10:17:52

谢谢分享

留声而过 发表于 2018-12-17 10:20:58

谢谢,下载看看。

zhanan 发表于 2018-12-17 10:30:59

只实现了接收,实用性和可维护性还有待提高。

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

zuu0 发表于 2018-12-17 11:04:26

asbzhang 发表于 2018-12-17 10:06
ADC 如何实现?能说说吗?

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

interstellar_tr 发表于 2018-12-17 11:59:59

谢谢! 很精致

holdkcsxym 发表于 2018-12-17 16:12:33

感谢分享

asbzhang 发表于 2018-12-18 16:19:04

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

...

不错,思路很广。

ilikemcu 发表于 2018-12-19 09:49:25

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

...

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

zuu0 发表于 2018-12-19 12:22:58

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

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

ilikemcu 发表于 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天不间断跑串口通信。这些测试到后来都是实在没心情再继续下去了,才关闭的{:lol:}

powerlabor001 发表于 2018-12-19 15:28:49

^_^,我觉得我要mark一下,我是mark党。

lipengxu 发表于 2018-12-19 20:56:53

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

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

yaonen 发表于 2018-12-19 22:11:20

过几天有空了会去试一下

changshs 发表于 2018-12-20 11:46:59

学习下!~

chun_hua82 发表于 2019-1-21 20:58:10

学习一下 谢谢

atonghua 发表于 2019-1-22 11:01:36

学习一下 谢谢分享

y1z2f4 发表于 2019-1-22 14:00:12

谢谢分享,下载收藏。

zmh169 发表于 2019-1-23 18:58:52

收藏备用,谢谢分享

bingshuihuo888 发表于 2019-1-25 17:11:57

PCA来做计时,us级.比定时器好用

cdwess 发表于 2019-2-8 20:45:25

很实用,谢谢分享{:handshake:}

xml2028 发表于 2019-2-8 23:52:03

39楼 cdwess 3 小时前 很实用,谢谢分享

magiczero 发表于 2019-2-9 19:53:04

谢谢分享{:handshake:}

光明星1号 发表于 2019-2-19 12:45:31

这个还很不成熟,只是进行简单的接收回发,并没有进行协议的解析,各个功能码的处理都没有,只完成了10-15%!

sailing8 发表于 2019-2-24 22:19:20

学习一下 谢谢分享,期待楼主完善功能

完美幸 发表于 2019-3-7 11:34:49

{:lol:}谢谢               

eliterxzgxu 发表于 2019-3-7 12:17:33

感谢楼主分享

pengtaoABC 发表于 2019-3-7 19:23:00


谢谢,下载看看。

chun_hua82 发表于 2019-3-10 19:45:10

谢谢分享

tianfish871216 发表于 2019-4-21 17:35:42

谢谢楼主分享!正在学习程序的整体思想,高度不够。

yanjian305 发表于 2019-4-22 00:15:29

好东西收藏了

zhangfuhg 发表于 2019-5-29 11:50:17

好东西,谢谢分享

mafeimafei 发表于 2019-6-22 10:32:28

感谢分享。学习了。

linbo411 发表于 2019-6-22 10:49:07

谢谢分享

霸气侧漏 发表于 2019-6-22 11:14:44

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

ADC,PCA这个怎么做延时???

laujc 发表于 2019-6-22 17:03:22

霸气侧漏 发表于 2019-6-22 11:14
ADC,PCA这个怎么做延时???

空闲检测更方便吧

lipengxu 发表于 2019-6-27 12:53:03

lipengxu 发表于 2019-5-31 07:41
在原有的基础上,优化了接收时CRC检验的等待时间,使单片机能更快的响应协议,另外把发送的时间也打散了, ...

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

xuwuhan 发表于 2019-7-27 22:32:09

收藏以后有用

WWC 发表于 2019-7-29 08:08:42

多谢分享,mark备用。

llysc 发表于 2019-9-11 22:27:41

正好有用,多谢楼主~~~~~~~~

jetbo 发表于 2020-1-7 01:40:16

MODBUS MARK

tt98 发表于 2020-1-7 08:56:56

参考下,感谢了!

Feco 发表于 2020-3-13 18:08:05

不错,收藏了,谢谢

yangwm2012 发表于 2020-3-13 19:50:45

感谢分享,

cheng-8yang 发表于 2020-6-6 22:25:14

最近正在做这个,用得上,谢谢!

留声而过 发表于 2020-6-7 08:36:31

感谢分享 思路差不多

xuqingtian 发表于 2020-6-15 14:03:20

感谢分享!

穿越时空 发表于 2020-6-15 16:48:04

下来看看先,谢谢

eddia2012 发表于 2020-6-18 07:22:22

下载下来看下思路,谢谢分享。

国学芯用 发表于 2020-6-18 11:56:46

楼主能 花点时间 将 该 MODBUS 框架程序 移植到 STC8G8K64U-48I-LQFP48/LQFP64 上完善下给大家参考,我们 送您一套最新的 STC8H8K64U 实验箱

国学芯用 发表于 2020-6-18 11:59:00

STC8H8K64U-48I-LQFP64,实验箱原理图,部分参考程序, 请关注, 补充中:http://www.stcmcudata.com/STC8F-DATASHEET/STC8H8K64U-DEMO-CODE-20200615.ZIP

fhl323225577 发表于 2020-6-18 16:56:17

下载下来看下思路,谢谢分享。

makesoft 发表于 2020-6-18 17:26:21

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

还有8G8K64U这个型号啊?俺看到的DATASHEET好像都是8H{:smile:}

国学芯用 发表于 2020-6-18 17:27:59

makesoft 发表于 2020-6-18 17:26
还有8G8K64U这个型号啊?俺看到的DATASHEET好像都是8H

http://www.stcmcudata.com/STC8F-DATASHEET/STC8G-20200615.pdf

http://www.stcmcudata.com/STC8F-DATASHEET/STC8H-20200615.pdf

wlmwwx 发表于 2020-6-18 21:25:40

学习一下,谢谢分享。

eddia2012 发表于 2020-6-18 22:01:49

下载下来分析一下,在中断中对modbouCRC进行校验,方法不错,实测可用,

eliterxzgxu 发表于 2020-6-18 22:57:40

感谢楼主分享

gmezl 发表于 2020-6-20 13:31:24

谢谢分享

男神经 发表于 2020-7-10 09:14:37

感谢分享

llaywei 发表于 2020-8-24 09:01:01

谢谢分享

VegeBird 发表于 2020-8-24 09:35:06

谢谢分享,参考一下

aosuntech 发表于 2020-8-24 12:11:47

感谢分享

cc大神 发表于 2020-8-24 13:48:35

收藏一下,学习。

dadaohyb 发表于 2020-10-13 10:50:23

lipengxu 发表于 2019-6-27 12:53
添加了04 03 10功能码的解析

没有看见04 10功能码的解析呀?

古调独弹 发表于 2020-10-14 13:39:50

收藏学习~感谢分享好的思路好的程序

wiisir 发表于 2021-1-30 21:27:49

谢谢分享,我就是写不出来这么好的代码

fengyunyu 发表于 2021-1-30 23:15:52

也收藏一下

chengtina 发表于 2021-2-26 09:06:00

收藏一下,要接触这个东西了。感谢LZ

k123456ei 发表于 2021-7-6 09:59:52

谢谢分享,学习一下。
页: [1]
查看完整版本: 分享我的MODBUS框架程序