搜索
bottom↓
回复: 387
打印 上一主题 下一主题

【开源】自己重构的FreeModbus主机+从机协议栈

  [复制链接]

出0入198汤圆

跳转到指定楼层
1
发表于 2013-10-27 10:25:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sunnydragon 于 2013-10-27 10:30 编辑

Modbus协议在工控领域运用广泛,网上也有一些开源的协议栈,例如FreeModbus,但是都是从机的,支持主机的免费协议栈基本没有发现。
同时网上也没有关于FreeModbus在RTT上的移植文章,由于自己之前做过在Ucos上移植FreeModbus,所以也想把FreeModbus移植到RTT上,正好自己最近的项目要用到Modbus主机功能,所以直接重构了FreeModbus的源码,使其即支持从机同时也支持主机,也可以选择其中一种。
简单介绍下目前项目进展
1、目前项目已经在Github中开源,大家需要的也可以去这里https://github.com/armink/FreeModbus_Slaver-Master-RTT-STM32
2、主机的相关的框架及功能已经修改完成,初始化、配置Modbus主机相关接口与原有从机接口基本一致;
3、移植主机相关硬件配置与原有从机方式一致,需要修改FreeModbus源码中port文件夹中后缀带_m相关文件;
4、Modbus主机请求功能目前实现了所有与保持寄存器、输入寄存器、线圈及离散输入相关的功能,并测试通过;
5、目前的Modbus主机请求功能是异步模式,后期考虑方便上层调用,可以同时给上层提供同步模式的控制方法;
6、主机的异常处理任务还未添加,只留了接口,后期考虑给上层提供回调接口,相关异常功能上层也能自动做处理;
7、目前最新代码同时支持Modbus主机及Modbus从机两种模式,两者互不干涉,用户可以在/FreeModbus/modbus/mbconfig.h中自行裁剪。
8、修改后的源码完全参照FreeModbus源码的编码规范,保证其源码格式的统一性
该项目软件将采用Keil+IAR+Eclipse三大IDE同步开发,Keil方便调试,IAR作为Eclipse的编译工具,Eclipse作为最主要的编码调试平台,方便灵活快捷。更重要的是Eclipse支持强大的版本管理插件,在该项目中将采用GIT作为默认的版本管理软件。
另外我的博客http://blog.csdn.net/arminkztl/article/details/11738395上还有详细的移植介绍及测试方法,希望大家多提意见。
备注:该协议栈已经在STM32F103+RT-Thread操作系统平台测试通过,附件里为:RTT+FreeModbus 主机+从机协议栈 STM32工程源码


本帖子中包含更多资源

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

x

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入198汤圆

来自 2楼
 楼主| 发表于 2015-3-5 11:05:48 | 只看该作者
大家注意下,代码以在Github,OSChina上是最新的。建议使用最新代码,最新代码在稳定性及功能上都有增加。
Github: https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32
OSChina: http://git.oschina.net/armink/FreeModbus_Slave-Master-RTT-STM32

出0入0汤圆

3
发表于 2013-10-27 10:33:45 | 只看该作者
顶一下!

出0入0汤圆

4
发表于 2013-10-27 10:59:55 | 只看该作者
下个看看

出0入0汤圆

5
发表于 2013-10-27 11:01:34 | 只看该作者

出0入264汤圆

6
发表于 2013-10-27 11:09:44 | 只看该作者
支持,谢谢。

出0入0汤圆

7
发表于 2013-10-27 12:53:42 | 只看该作者
很好很强大

出0入198汤圆

8
 楼主| 发表于 2013-10-27 13:03:53 | 只看该作者
wzda_gundam 发表于 2013-10-27 10:59
下个看看

要是有问题,及时反馈哈~

出0入0汤圆

9
发表于 2013-10-27 13:14:30 | 只看该作者
这个可以有,下个研究一下

出0入0汤圆

10
发表于 2013-10-27 17:36:19 | 只看该作者
一直在找开源的Modbus Master ,没找到

正准备自己下手做这个,就看到楼主发布的这个好东西

第一时间跟进啊~~以后就跟楼主混了

出0入0汤圆

11
发表于 2013-10-27 18:28:12 | 只看该作者
能和 PLC、、HMI 、之类的通信用么?

出0入198汤圆

12
 楼主| 发表于 2013-10-27 18:37:46 | 只看该作者
STM32_Study 发表于 2013-10-27 17:36
一直在找开源的Modbus Master ,没找到

正准备自己下手做这个,就看到楼主发布的这个好东西

呵呵~~欢迎测评哈~

出0入198汤圆

13
 楼主| 发表于 2013-10-27 18:42:10 | 只看该作者
jetli 发表于 2013-10-27 18:28
能和 PLC、、HMI 、之类的通信用么?

必须没问题哈~我10年时候就用过FreeModbus来和台达的HMI通信,HMI做主机,STM32做从机~

出110入0汤圆

14
发表于 2013-10-27 18:53:49 | 只看该作者
支持,下载代码试用……

出0入0汤圆

15
发表于 2013-10-27 19:06:10 | 只看该作者
好东西,谢谢lz了

出0入147汤圆

16
发表于 2013-10-27 19:30:27 | 只看该作者
非常不错,先顶再看!

出0入0汤圆

17
发表于 2013-10-27 19:38:06 | 只看该作者
sunnydragon 发表于 2013-10-27 18:42
必须没问题哈~我10年时候就用过FreeModbus来和台达的HMI通信,HMI做主机,STM32做从机~ ...

我反倒是希望,mcu做主机,hmi做从机,,

出0入198汤圆

18
 楼主| 发表于 2013-10-27 20:17:06 | 只看该作者
jetli 发表于 2013-10-27 19:38
我反倒是希望,mcu做主机,hmi做从机,,

原理是一样的,只要协议一致,再定义好HMI与MCU的各个寄存器、线圈等地址映射,即可搭建好测试平台

出0入0汤圆

19
发表于 2013-10-27 20:27:50 | 只看该作者
sunnydragon 发表于 2013-10-27 20:17
原理是一样的,只要协议一致,再定义好HMI与MCU的各个寄存器、线圈等地址映射,即可搭建好测试平台 ...

3Q 你的热情回复。

因为boss要求把以前的 单色屏 换成彩屏or HMI,这样就有个主从之分的 问题。
主mcu  已经带了 3~5个小mcu当作从机,再来个HMI 只能屈就原来的系统方案做 从机、了。

出0入198汤圆

20
 楼主| 发表于 2013-10-27 21:14:33 | 只看该作者
jetli 发表于 2013-10-27 20:27
3Q 你的热情回复。

因为boss要求把以前的 单色屏 换成彩屏or HMI,这样就有个主从之分的  ...

恩~那MCU必须得有Modbus主机功能了。那你可以试下我的软件,欢迎反馈哈~

出0入0汤圆

21
发表于 2013-10-27 21:38:46 来自手机 | 只看该作者
支持一下楼主!
个人拙见:FreeModbus过于追求软件的架构,一定程序上损失了性能,用于监控类的应用还好,对于实时性要求高的应用可能会出现问题;
另外,在读写线圈和寄存器时,协议栈没有提供事件触发的机制,应用时可能需要不断地查询线圈和寄存器,随着线圈和寄存器等数量的不断增大,这无疑会不断地增大系统的开销…

出0入0汤圆

22
发表于 2013-10-27 22:01:25 | 只看该作者
我也来顶起!

出0入198汤圆

23
 楼主| 发表于 2013-10-27 22:09:43 | 只看该作者
hadio 发表于 2013-10-27 21:38
支持一下楼主!
个人拙见:FreeModbus过于追求软件的架构,一定程序上损失了性能,用于监控类的应用还好, ...

1、我觉得485总线及Modbus协议自身的限制,导致过高FreeModbus通信速度受到限制。但是这样能降低软件复杂度,缩短开发周期,如果选用实时性高、速度快的总线,协议就会复杂。总之要看用户是什么样的需求了;
2、你说的这种事件触发机制,我觉得修改寄存器、线圈等在FreeModbus中相应的回调函数,增加Value判断,并把Change回传给应用,即可以实现valueChange通知~

出0入198汤圆

24
 楼主| 发表于 2013-10-27 22:11:47 | 只看该作者
xukai871105 发表于 2013-10-27 22:01
我也来顶起!

别只是顶哦 多提建议哈~

出0入0汤圆

25
发表于 2013-10-27 23:07:04 来自手机 | 只看该作者
支持一下…
来自:amoBBS 阿莫电子论坛 Windows Phone 7 客户端

出0入0汤圆

26
发表于 2013-10-28 00:06:01 | 只看该作者
有实现ModBus-TCP吗?正在学习freeModBus中,先虚心向楼主学习

出0入0汤圆

27
发表于 2013-10-28 06:10:35 来自手机 | 只看该作者
谢谢楼主

出50入8汤圆

28
发表于 2013-10-28 07:49:34 来自手机 | 只看该作者
顶                                 

出0入198汤圆

29
 楼主| 发表于 2013-10-28 08:00:11 | 只看该作者
sun_sky 发表于 2013-10-28 00:06
有实现ModBus-TCP吗?正在学习freeModBus中,先虚心向楼主学习

Modbus TCP 从机协议栈自身是支持的,主机协议栈后期考虑加进去~

出0入0汤圆

30
发表于 2013-10-28 08:13:12 | 只看该作者
Modbus Master确实很少有开源的,谢谢LZ

出0入0汤圆

31
发表于 2013-10-28 08:18:04 | 只看该作者
重量级的帖子。建议加精。

出0入0汤圆

32
发表于 2013-10-28 08:20:22 | 只看该作者
虽然还没看楼主的代码,但是觉得应该非常不错,曾经我自己也写过主机!  支持

出0入0汤圆

33
发表于 2013-10-28 08:36:16 | 只看该作者
支持楼主,感谢共享!

出0入198汤圆

34
 楼主| 发表于 2013-10-28 08:45:22 | 只看该作者
luxinsun 发表于 2013-10-28 08:18
重量级的帖子。建议加精。

呵呵~多谢支持,有了大家的支持我才更有动力去为坛子开源软件做更多的贡献~

出0入198汤圆

35
 楼主| 发表于 2013-10-28 08:47:48 | 只看该作者
source.ant 发表于 2013-10-28 08:20
虽然还没看楼主的代码,但是觉得应该非常不错,曾经我自己也写过主机!  支持 ...

欢迎下载试用,正好结合你之前的经验,多给提宝贵建议哈~

出0入0汤圆

36
发表于 2013-10-28 08:47:55 | 只看该作者
本帖最后由 luxinsun 于 2013-10-28 08:50 编辑

没有看到主机轮询多台从机,如何同步的功能。

出0入0汤圆

37
发表于 2013-10-28 08:53:47 | 只看该作者
楼主强大  采用Keil+IAR+Eclipse三大IDE同步开发

出0入198汤圆

38
 楼主| 发表于 2013-10-28 08:55:00 | 只看该作者
luxinsun 发表于 2013-10-28 08:47
没有看到主机轮询多台从机的功能。

在测试代码中目前只和一个从机通信,位于app_task.c的系统监控线程。协议栈是支持多个从机的,默认开启16个从机,轮训多个只要在主机请求从机接口中设置不同的从机ID即可(做好主机忙等待处理),非常容易

出0入0汤圆

39
发表于 2013-10-28 08:58:34 | 只看该作者
主机读从机数据,读到的数据是放哪个地方?

出0入198汤圆

40
 楼主| 发表于 2013-10-28 08:59:32 | 只看该作者
gamep 发表于 2013-10-28 08:53
楼主强大  采用Keil+IAR+Eclipse三大IDE同步开发

迫不得已啊,以前单片机一直使用Keil的,但是别的软件都用Eclipse开发,Eclipse上编程和版本控制都很轻松,这样能降低很多开发周期。IAR主要是因为我用做个在Eclipse上编译ARM软件,所以。。。不过现在我基本脱离的Keil,在Eclipse上调试也是非常便捷的,强烈建议大家可以试试Eclipse+IAR插件开发STM32

出0入198汤圆

41
 楼主| 发表于 2013-10-28 09:03:24 | 只看该作者
luxinsun 发表于 2013-10-28 08:58
主机读从机数据,读到的数据是放哪个地方?

所有节点数据位于/FreeModbus/port/user_mb_app.c下,在最顶部,你会看到相关数据结构定义

出0入0汤圆

42
发表于 2013-10-28 09:16:46 | 只看该作者
顶。MODUSBUS...

出0入0汤圆

43
发表于 2013-10-28 15:44:29 | 只看该作者
收藏了,留着以后用!

出0入0汤圆

44
发表于 2013-10-28 16:56:04 | 只看该作者
顶一下,谢谢楼主分享。

出0入198汤圆

45
 楼主| 发表于 2013-10-28 20:49:44 | 只看该作者
大家要是还有别的需求也可以提出来,我在后期还会做很多升级~

出0入0汤圆

46
发表于 2013-10-28 21:09:39 | 只看该作者
最近确实要用到........非常感谢!

出0入0汤圆

47
发表于 2013-10-28 21:36:52 | 只看该作者
对楼主只能膜拜

出0入0汤圆

48
发表于 2013-10-28 22:20:58 | 只看该作者
哈哈 真的是好东西 顶起来的了

出0入0汤圆

49
发表于 2013-10-28 22:31:54 来自手机 | 只看该作者
支持……

出0入0汤圆

50
发表于 2013-10-30 11:41:55 | 只看该作者
我也顶起来。

出0入0汤圆

51
发表于 2013-10-30 11:43:43 | 只看该作者
顶楼主,这个以后一定用得着。。。

出0入0汤圆

52
发表于 2013-10-30 12:35:57 | 只看该作者
好东西,谢谢楼主

出0入0汤圆

53
发表于 2013-10-30 13:49:09 | 只看该作者
标记!!!!

出0入0汤圆

54
发表于 2013-10-30 13:57:09 | 只看该作者
貌似现在主流的PLC是在做PROFINET了哇

出0入0汤圆

55
发表于 2013-10-30 15:41:04 | 只看该作者
支持一下,谢谢!

出0入0汤圆

56
发表于 2013-10-30 16:04:35 | 只看该作者
顶,有空学习一下

出0入0汤圆

57
发表于 2013-10-30 16:05:45 | 只看该作者
感觉超级牛逼啊

出0入0汤圆

58
发表于 2013-11-5 14:31:54 | 只看该作者
记号,收藏

出0入12汤圆

59
发表于 2013-11-5 15:12:04 | 只看该作者
portevent.c最好也改用RTT的通信机制吧。如果我主机通讯时间小于DELAY_MB_SLAVE_POLL,从机就丢数据了。

出0入198汤圆

60
 楼主| 发表于 2013-11-5 16:12:45 | 只看该作者
本帖最后由 sunnydragon 于 2013-11-5 16:29 编辑
waterx3 发表于 2013-11-5 15:12
portevent.c最好也改用RTT的通信机制吧。如果我主机通讯时间小于DELAY_MB_SLAVE_POLL,从机就丢数据了。 ...


首先感谢你的反馈。
另外,你说的这个问题,我有点不明白,主机的命名请求只有等主机空闲时才会发送,而主机空闲需要等待主机把当前任务处理完成,你说的“我主机通讯时间小于DELAY_MB_SLAVE_POLL,从机就丢数据”能具体举个例子吗?

出10入0汤圆

61
发表于 2013-11-6 14:20:12 | 只看该作者
定时器也是用两个,感觉这一个需要改进一下。实际上增加几个变量判断是没有问题的。至于字节间隔与帧间隔的时间并要求那么严格,所谓的1.5T或3.5T是一个大概即可。再者主从机的速度一般来讲也会一样的。

出0入198汤圆

62
 楼主| 发表于 2013-11-6 14:43:05 | 只看该作者
huike 发表于 2013-11-6 14:20
定时器也是用两个,感觉这一个需要改进一下。实际上增加几个变量判断是没有问题的。至于字节间隔与帧间隔的 ...


感谢你的反馈
我觉得如果由两个定时器改为一个定时器确实也能实现,但是改完之后的代码复杂度及时间复杂度会增加,实时性也会降低。
毕竟STM32有很多定时器,同时使用2个定时器给Modbus主机和从机,不会占用系统很多资源。另外,/port中的源码用户可以根据自己需求相应调整,如果系统中确实定时器资源比较少,也可以根据自己系统的需求,重新移植底层,我的上层源码是不需要改动的。

出0入0汤圆

63
发表于 2013-11-22 21:44:43 | 只看该作者
顶一下,支持开源

出0入0汤圆

64
发表于 2013-11-25 16:55:34 | 只看该作者
标记一下,准备开始研究!

出0入0汤圆

65
发表于 2013-11-25 17:00:03 | 只看该作者
你这个支持多从机吗?

出0入4汤圆

66
发表于 2013-11-25 21:19:36 | 只看该作者
楼主很强,支持啊!!!

出0入0汤圆

67
发表于 2013-11-25 22:11:32 | 只看该作者
本帖最后由 worldsing 于 2013-11-25 22:14 编辑

还没有细看代码,总体上来说还不错的,

Modbus Master主要考虑的问题主要有:

1、重入保护;
2、发送和接收数据对接;
3、超时和等待处理;

有待我细看代码再发表言论。

出0入0汤圆

68
发表于 2013-11-25 22:29:38 | 只看该作者
好东西,顶一下

出0入0汤圆

69
发表于 2013-11-26 00:00:15 | 只看该作者
标记,明天细看,谢谢

出0入12汤圆

70
发表于 2013-12-2 14:41:35 | 只看该作者
怎么动态修改串口波特率?

出0入0汤圆

71
发表于 2013-12-2 14:49:31 | 只看该作者
记得 读书时mcs51课本上最后附录有个  1主多从系统设计

出0入0汤圆

72
发表于 2013-12-2 22:15:25 | 只看该作者
RTT收藏 zzz

出0入0汤圆

73
发表于 2013-12-3 08:24:39 | 只看该作者
还真没看到过主机MODEBUS的

出0入0汤圆

74
发表于 2013-12-3 10:15:41 | 只看该作者
正在学习,长知识。

出0入198汤圆

75
 楼主| 发表于 2013-12-3 22:51:52 | 只看该作者
worldsing 发表于 2013-11-25 22:11
还没有细看代码,总体上来说还不错的,

Modbus Master主要考虑的问题主要有:

恩~说的没错,期待你的测试结果,另外建议从Github下载最新源码,我会定期更新

出0入198汤圆

76
 楼主| 发表于 2013-12-3 23:02:56 | 只看该作者
waterx3 发表于 2013-12-2 14:41
怎么动态修改串口波特率?

你可以这样试试,理论上可行的,我没有测试
  1. /*功能:波特率由115200切换到19200*/
  2.         eMBInit(MB_RTU, 0x01, 1, 115200,  MB_PAR_EVEN);
  3.         eMBEnable();
  4.         /*...
  5.         ...
  6.         在此期间,modbus的波特率是115200
  7.         ...
  8.         ...*/
  9.         eMBDisable();
  10.         eMBInit(MB_RTU, 0x01, 1, 19200,  MB_PAR_EVEN);
  11.         eMBEnable();
  12.         /*...
  13.         ...
  14.         在此期间,modbus的波特率是19200
  15.         ...
  16.         ...*/
复制代码

出0入0汤圆

77
发表于 2013-12-4 11:07:07 | 只看该作者
这几天时间比较忙,还没实际跑过,看了一下楼主的代码,有几个想法:

1、应用层调用Master的某一个接口时,返回的并不是接收成功或失败,
    而是数据已经填到buf,或是总线被占用,从机有没有回复就是功能
    码的解析,但是发起者并不知道从机返回,需要额外判断数据?

2、Msater 和Slaver回调用一个缓冲区不太好吧,主从共用时缓冲区会不
    会被冲掉?

3、代码可以在有化一下,从机回复如果有错没有必要遍历功码表吧?

出0入0汤圆

78
发表于 2013-12-4 11:13:35 | 只看该作者
好东西,学习学习,modbus在工控太广泛了

出0入198汤圆

79
 楼主| 发表于 2013-12-4 12:00:45 | 只看该作者
本帖最后由 sunnydragon 于 2013-12-4 12:10 编辑
worldsing 发表于 2013-12-4 11:07
这几天时间比较忙,还没实际跑过,看了一下楼主的代码,有几个想法:

1、应用层调用Master的某一个接口时 ...


1、由于目前提供的主机请求接口都是异步方法,这样有利有弊,每个人需求的场合不一样,在这种情况下,主机需要通过判断主机忙等待信号及异常处理情况来得知请求的结果。后期我会提供同步方法。
2、Modbus主机和从机没有使用相同的缓冲区,以前的代码只是使用相同的回调函数罢了,回调函数内部有主从判断的。现在最新源码已经做了优化,主从回调被分离。
3、你说的没错,我一会优化一下
感谢你的反馈,如果还有建议随时可以提

出0入0汤圆

80
发表于 2013-12-22 12:16:33 | 只看该作者
本帖最后由 yx枫叶 于 2013-12-22 12:17 编辑

楼主 你好 本人菜鸟 我在使用您的代码 可是测试的时候一直为CRC ERROR 可否为我解答一下

本帖子中包含更多资源

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

x

出0入198汤圆

81
 楼主| 发表于 2013-12-22 16:52:03 | 只看该作者
yx枫叶 发表于 2013-12-22 12:16
楼主 你好 本人菜鸟 我在使用您的代码 可是测试的时候一直为CRC ERROR 可否为我解答一下 ...

你的通信有问题,请打开modbuspoll->Display->Communication,观察数据回复,检查硬件连接及串口配置,直至数据回复正常即可~
另外,你使用的是485还是232,如果使用485还需要在发送完成后稍微延迟一下会,再关闭发送使能。我这个例程目前针对是232接口。

出0入0汤圆

82
发表于 2013-12-23 11:42:07 | 只看该作者
好贴,一定要顶楼主

出0入0汤圆

83
发表于 2013-12-23 13:26:46 来自手机 | 只看该作者
异步的优点是:不会因为等从机回应阻塞CPU,缺点是不能从函数立即返回从机数据; 同步的方法正好相反,优点是可以直接从函数接口返回数据,符合常规编程习惯,缺点是从机若长时间不回应,主机会阻塞; 使用操作系统的延时API可以解决同步的阻塞问题,但这样又使得modbus主机代码离不开操作系统,不适用于裸机的应用; 折中的办法是:将主机的发送和接收分成两个函数,而等待从机回应则交给用户在应用层自己做超时判断。

出0入198汤圆

84
 楼主| 发表于 2013-12-23 14:31:26 | 只看该作者
hadio 发表于 2013-12-23 13:26
异步的优点是:不会因为等从机回应阻塞CPU,缺点是不能从函数立即返回从机数据; 同步的方法正好相反,优点 ...

恩~不错,关于异步与同步你解释的非常形象。
在操作系统方面,我更加鼓励用去使用,它会让我们的应用程序开发难度大大降低,提高开发效率,所以我的软件中使用了RT-Thread这个实时操作系统。
最新的软件,我已经集成了数据管理、值改变通知、线程池等功能,采用面向对象的开发方式,再次提高了用户应用开发的便捷程度。
从机方面就无需定时或不定时刷新需要的数据,有数据发生改变会自动通过线程池生成一个任务,调用数据对应的值改变回调函数。用户只需在自己的值改变回调函数中加入相应的处理即可。这个已经在我的产品中开始使用了。
主机方面支持定时、按照一定频率及优先级自动刷新需要的数据,如果获取数据成功并发生变化则自动通知相应的值改变回调函数,失败则会触发错误对应的回调函数。这个还正在开发。
由于以上所说都是基于面向对象思想开发的,所以即便是异步方式去实现,但是面向数据的协议栈会让用户更加容易理解,方便上层应用使用。
另外,你说的同步方式我也有考虑,这个要看我这版本(面向数据版)真正在项目中的使用情况,如果使用起来非常方便,稳定性高,那么这种面向数据协议栈就是成功的,值得推广的。否则再去开发同步方式的协议栈。

出0入0汤圆

85
发表于 2013-12-23 14:35:32 | 只看该作者
感谢分享!

出0入0汤圆

86
发表于 2013-12-23 15:40:40 | 只看该作者
顶,+10W个赞

出0入0汤圆

87
发表于 2013-12-23 22:56:51 | 只看该作者
学习了。

出0入0汤圆

88
发表于 2013-12-24 10:48:18 | 只看该作者
sunnydragon 发表于 2013-12-22 16:52
你的通信有问题,请打开modbuspoll->Display->Communication,观察数据回复,检查硬件连接及串口配置,直 ...

我用的是485接口  232接口我测试过没有问题了 能在麻烦您指明延时应放在何处吗 我试过放在此处 没有用 变成了timeout error

本帖子中包含更多资源

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

x

出0入198汤圆

89
 楼主| 发表于 2013-12-24 11:39:18 | 只看该作者
本帖最后由 sunnydragon 于 2013-12-24 11:40 编辑
yx枫叶 发表于 2013-12-24 10:48
我用的是485接口  232接口我测试过没有问题了 能在麻烦您指明延时应放在何处吗 我试过放在此处 没有用 变 ...


请看截图,修改/port/portserial.c,另附Delay源码
  1. void Delay(vu32 nCount)
  2. {
  3.   for(; nCount > 0;nCount--);
  4. }
复制代码

本帖子中包含更多资源

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

x

出0入0汤圆

90
发表于 2013-12-24 14:23:40 | 只看该作者
sunnydragon 发表于 2013-12-24 11:39
请看截图,修改/port/portserial.c,另附Delay源码

万分感谢楼主  成功了  

出0入198汤圆

91
 楼主| 发表于 2013-12-24 17:17:07 | 只看该作者
yx枫叶 发表于 2013-12-24 14:23
万分感谢楼主  成功了

恭喜你~~
再多试试吧,欢迎反馈~

出0入0汤圆

92
发表于 2013-12-25 16:02:56 | 只看该作者
mark一下,,谢谢,

出0入0汤圆

93
发表于 2013-12-25 16:16:43 | 只看该作者
这个要顶。牛叉。

出0入0汤圆

94
发表于 2013-12-25 16:21:50 | 只看该作者
厉害   佩服! 希望有机会试试

出0入0汤圆

95
发表于 2013-12-25 20:50:09 | 只看该作者
想学学modbus,感谢分享

出0入0汤圆

96
发表于 2013-12-27 10:54:39 | 只看该作者
sunnydragon 发表于 2013-12-24 17:17
恭喜你~~
再多试试吧,欢迎反馈~

另外在请问下楼主  如果把您的代码移植到不带有操作系统的平台上协议本身不需要修改吧?

出0入198汤圆

97
 楼主| 发表于 2013-12-27 11:04:22 | 只看该作者
yx枫叶 发表于 2013-12-27 10:54
另外在请问下楼主  如果把您的代码移植到不带有操作系统的平台上协议本身不需要修改吧? ...

不需要修改的。保证eMBPoll()能够及时轮训即可!

出0入0汤圆

98
发表于 2013-12-27 13:19:09 | 只看该作者
支持开源 定了

出0入0汤圆

99
发表于 2013-12-27 19:47:09 | 只看该作者
非常不错,支持

出0入0汤圆

100
发表于 2013-12-27 20:03:57 | 只看该作者
关注~ 支持~

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-24 04:15

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

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