modbus_RTU从机协议实现

      最后更新:2022-03-31 15:03:19 手机定位技术交流文章

      1. 自由模式机制概述

      这是对自由客车机制的审查。在非专用平台上,免费客车应用程序大多是一刀切的平台。Freemodbus是一种体面的开放源码机器模式。不仅代码开源,重要的是它非常牢固和可靠。

      这是对机器认知机制 自由模式的速成文本研究Freemodbus将国家机器的编程概念推向其逻辑结论。作为从机,最基本的概念是序列化。并且模布斯发送的数据的持续时间是不确定的。这一点,在Freemodbus v1.Version 5中使用串行断嘴+计时器,可以无限期接收数据。第6版Freemodbus V1。提交人也能够使用Linux软件,以便与Linux和非Linux单元系统代码兼容。数据是通过选择过程获得的。其次,通过对逐字节接收技术的实施进行建模,每接收1个字节,复位一下定时器,接收完成后,等待定时器溢出,更新状态标志。它决定它是否是其中之一。他们都通过计时器被灌满了然后更新收货完成说明。一旦接收完成后,套路是一样的,地址有效满足、功能代码过滤等等。根据不同的功能码,执行各种行动指示。

      还有一点,{fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}只是..默认值是接收能量中断 。发送中断禁止,接收完成后,包装后返回数据框 。使能串口发送中断,然后通过中断数据传输在Linux操作系统中没有使用 硬中断,它通过使用不同的符号来区分两者。接收使能时,阻止接收,发送使能时,就发送数据。
      最后就是 数据缓存

      这是一个全球数据缓存库,不仅存储收到的数据,而且存储提供的数据, 以接收国接收时收到的字节形式。

      乌库布夫,然后,将地址、功能代码、起始地址、长度等合法数据过滤出来。然后执行匹配功能代码动作。这与UcRTUBUUF的内涵没有区别。将需要返回的数据,按照协议逐个填充到 乌库布夫,当然,需要记录和计算传输的数据框架长度。然后,通过一个序列港返回东道主(客户)。我们在理解源码时,可能难以理解的一些原因如下:利用大量的当地指针变量,还有二级指针,然而,所有这些要点后来都针对ucRTUbuf。了解到这一点,源代码简单易懂
      这部分来自FreeModbus、机器、主要分析小块、猪兄弟、内嵌博客、CSDN博客、FreeModbus博客。

      2. 审查自由客运原则。

      //流程概括
      (1) 在启动一个序列端口和一个计时器后启动计时器,该计时器首先转换成接收能量,计时器的计时器超时时间为3.5T。
      (2) 更新初始定时器泄漏的时间点。
      eQueuedEvent = EV_READY;
      vMB PortTimes Disable () ; / / 此函数暂时禁用计时器, 以便保存能量并准备随后接收 。
      (3) 序列中断表明收到主机的指令数据。
      将定时器定为1有两个目的:一是评估收到的数据是否延迟,二是确定收到的数据是否完整,以便中断有效,并可在不同时期内收到数据。
      这一技术更符合Modbus的要求,不适用于其他形式的目的地管理局停工。

      2 运行 xMBRTiveFM,不经过任何处理,在接收缓存中插入序列数据。
      3 收到时,暂停计时器,活动由xMBPortPortEventPost(EV_FRAME_RECEIVED)更新。

      (4) “活动标志”由EMBPoll环绕。
      在进行电子呼吸并看到事件识别码“EV_FRAME_REEIVED”时,这是对所收到数据的筛选和处理。
      处理完成后,更改事件符号 x MBPPortEventPost (EV_EXECUTE);

      5) 在为过滤收到的数据而指定的序列中执行相关功能,或者在未读取命令时丢弃 EMB 例外 。
      eMBFuncReadHoldingRegister( UCHAR * pucFrame, USHORT * usLen ),在这个函数里,创建名为 EMBRegHoldingCB( Uchar *pucRegBuffer, USHORT UsAddress, USHORT us NRegs, emMBRegistermode eMode) 的自项目处理功能 。

      6)此时,EMBPoll使用事件信号“EV_EXECUTE”(EV_EXECUTE)eMBRTUSend (Uchar ucSlaveAddress, const Uchar *pucFrame, USHORT usLength) 应该运行 。
      这是包装要处理的数据函数,包装完成后会造成序列分布中断。
      eSndState = STATE_TX_XMIT;
      vMBPortSerialEnable( FALSE, TRUE );

      序号分配已经停止;需要进一步实施xMBRTU TransmissionFM(省略)系统。
      要答复的数据将通过序号以字节发送。
      然后应对序列港进行调整,以便再次接受中断,以便接受下一次调查并更新事件标志。
      xMBPortEventPost( EV_FRAME_SENT );
      vMBPortSerialEnable( TRUE, FALSE );
      eSndState = STATE_TX_IDLE;


      //代码分析



      这部分取自《自由摩布斯原则分析》一篇文章《猪哥》、《嵌入博客》、《CSDN博客》。

      协议机器模式

      - 不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,

      02. 硬件需要一个精确到毫秒水平的定时器。

      1个物理层端口(485/232)移植

      485/232号计时器

      二. 将指定的DI/DO与模版读写登记册匹配。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/21226.html

          热门文章

          文章分类