freemodbus 从机 原理分析小结

栏目: IT技术 · 发布时间: 6年前

内容简介:在之前的文章《Freemodbus原理分析》,结合代码对 freemodbus 进行了分析,这里对 freemodbus机制做一下分析小结。freemodbus 的应用场景 主要是在 非linux下的 单片机系统,当然了,freemodbus 1.6 版本也开始支持了 linux,不过在linux下,如果不是一定要移植源码的话,个人觉得 libmodbus 相比 freemodus 还是更方便一些,功能更加灵活而且丰富。当然如果是 普通单片机系统,freemodbus 是一个不错的 开源modbus 从机

在之前的文章《Freemodbus原理分析》,结合代码对 freemodbus 进行了分析,这里对 freemodbus机制做一下分析小结。freemodbus 的应用场景 主要是在 非 linux 下的 单片机系统,当然了,freemodbus 1.6 版本也开始支持了 linux,不过在linux下,如果不是一定要移植源码的话,个人觉得 libmodbus 相比 freemodus 还是更方便一些,功能更加灵活而且丰富。当然如果是 普通单片机系统,freemodbus 是一个不错的 开源modbus 从机 功能,不仅代码开源,重要的是非常稳定可靠。

这里先简单的 从文字的角度 来分析一下 freemodbus 从机的 实现机制,freemodbus 将状态机 的编程思想 用到了机制,作为从机,最基本的就是串口接收,而modbus通信的数据 接收长度是不定的,这一点,freemodbus v1.5 版本是采用

串口中断 + 定时器 的方式实现 接收不定长数据的。在freemodbus V1.6版本中,作者为了兼容linux和非linux 单片机系统代码统一,通过select机制进行接收数据,然后再 重新的 模拟实现 逐字节的 接收 机制,每接收1个字节,复位一下定时器,接收完成后,等待定时器溢出,更新状态标志。也就是不管是1.5版本还是1.6版本,都是通过 定时器溢出,然后更新接收完成标志,一旦接收完成后,套路是一样的,地址校验、功能码筛选,根据不同的功能码,执行不同的动作指令。

还有一点,就是串口的收、发都是通过中断,默认是接收中断使能,发送中断禁止,接收完成后,打包好 返回的数据帧,使能串口发送中断,然后通过 发送中断 发送数据。在linux 系统下,没有使用 硬中断,而是采用 通过不同的标志来区分的,接收使能时,通过select 阻塞接收,发送使能时,就发送数据。

最后就是

volatile UCHAR  ucRTUBuf[MB_SER_PDU_SIZE_MAX];

它是一个全局的 数据缓存,不仅存放 接收的数据,还存放 发送的数据,具体表现为,当处于接收状态时,将接收的字节存放到

ucRTUBuf 中,然后 筛选出 地址、功能码、起始地址、长度等有效数据,然后进行对应功能码的 操作,到这里 ucRTUBuf里的内容就不重要了,将需要返回的数据,按照协议逐个填充到 ucRTUBuf 中,当然要记录并计算出 要发送的 数据帧长度,然后再通过串口返回给 主机(客户端)。我们在理解源码时,部分可能难以理解的原因就是,使用了很多的局部 指针变量,还有二级指针,但是这些指针最终都是 指向 ucRTUBuf的,了解到这一点,就便于我们 去理解源码了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网站转换率优化之道

网站转换率优化之道

[美] Khalid Saleh、[美] Ayat Shukairy / 顾 毅 / 人民邮电出版社 / 2012-4 / 45.00元

内容简介: 怎样才能将访问者转化为顾客? 本书提供了一些切实可行的建议,比如如何说服访问者作出购买决定,如何避免用户因信息过量或导航繁琐而离开网站等。不论你是在设计或营销大型电子商务网站,还是在管理中小型在线业务,都可以从本书学会怎样使用市场营销原则、设计方法、可用性原则和分析数据来持续提升网站的转换率。 作者帮助过众多公司吸引在线顾客,有着丰富的实战经验,在书中细致讨论了从访问......一起来看看 《网站转换率优化之道》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具