基于STM32的FreeModbus从站协议移植

来源 :科学与财富 | 被引量 : 0次 | 上传用户:guoerxong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:FreeModbus是一种Modbus协议的实现方式,能够方便的移植到嵌入式系统中。本文阐述了FreeModbus的移植方式,并将其与STM32F446RE控制器相结合。经验证表明,其能够完成基于Modbus RTU传输方式的通讯任务,具有稳定可靠的特点,可以应用于工业场合。
  关键词:Modbus;STM32;实时通信
  一、引言
  随着工业IT技术的飞速发展以及工业控制系统复杂程度的提高,工业通讯网络的应用日益受到重视,通讯协议的标准化对工业控制系统的稳定性产生了极大的影响。Modbus是一种广泛应用的工业控制网络,其具有稳定性高、易于部署和维护等优点,适合中小规模的数据传输。FreeModbus是一种针对嵌入式系统的Modbus协议栈,支持RTU、ASCII以及TCP传输模式,并遵守BSD许可,允许用户将其应用于商业环境。
  STM32是目前广泛应用的32位嵌入式微处理器之一,具有体积小、功耗低、性能高等特点,非常适合于系统的实时控制。其中STM32F4系列是意法半导体推出的以Cortex-M4为内核的高性能控制器,能够进行复杂的计算与控制。
  本文以STM32F446RE为平台,研究了FreeModbus协议的移植方法,使STM32F446RE能够作为从站实现Modbus的通信,并支持Modbus RTU及ASCII传输模式,为未来工业控制的网络化和信息化奠定了基础。
  二、FreeModbus简介
  Modbus是一种广泛应用于工业控制中的串行通讯协议,其实现了一个单主站的主从网络结构。Modbus支持的数据类型包括浮点数、32为整型等多种数据类型。目前,西门子S7 200系列等多个系列的PLC、威纶通等不同厂家、型号的触摸屏以及组态王等软件都支持Modbus协议。
  FreeModbus是专门针对嵌入式系统设计的开源协议栈,其实现了Modbus 1.1a版的应用层协议,支持RTU与ASCII两种传输模式,在FreeModbus 0.7版后,又添加了Modbus TCP传输模式的支持。FreeModbus与IOS/OSI通讯模型的关系如表1所示:
  目前,FreeModbus支持大部分Modbus的指令,包括读输入寄存器(0x04)、读保持寄存器(0x03)、写单个寄存器(0x06)、写多个寄存器(0x10)、读写多个寄存器(0x17)、读线圈(0x01)、写单个线圈(0x05)、写多个线圈(0x0f)等多条指令。
  三、FreeModbus协议的移植
  在进行移植前,需要将FreeModbus的协议栈代码导入到当前工程中,相应的协议栈源码可以在FreeModbus官網上下载。
  1、定时器计时功能的移植
  当Modbus RTU传输的波特率高于19200 bps时,根据FreeModbus协议栈的要求,其超时时间应设定为1750微秒。STM32F446RE有不同类型的定时器十余个,可以选择其中任意定时器,设定其定时时基为50微秒,该定时器的中断时间为35倍时基,即1750微秒。
  此外,还需在协议栈的porttimer.c文件中修改相应的函数,包括:
  (1)时钟初始化函数xMBPortTimersInit:通常,时钟初始化会放到主函数中进行,因此xMBPortTimersInit函数仅修改返回值为True即可;
  (2)定时器启动函数vMBPortTimersEnable:此处需要编写定时器启动函数,例如当使用意法半导体提供的HAL库时,vMBPortTimersEnable函数需编写以下代码:
  HAL_TIM_Base_Stop_IT(&Modbus_TimHandle);
  __HAL_TIM_SET_COUNTER(&Modbus_TimHandle, 0x0000);
  HAL_TIM_Base_Start_IT(&Modbus_TimHandle);
  上述代码首先停止定时器,并初始化定时器的计数单元以保证计时准确,完成上述步骤后启动定时器开始定时;
  (3)定时器停止函数vMBPortTimersDisable:此函数需要编写定时器停止函数,如使用HAL库,则在函数中填写如下代码即可:
  HAL_TIM_Base_Stop_IT(&Modbus_TimHandle);
  2、定时器中断的移植
  FreeModbus定时器中断调用函数为prvvTIMERExpiredISR( )。通常使用意法半导体提供的STM32Cube MX进行系统构建时,其会自动将全部中断函数的实现放在stm32f4xx_it.c文件中,因此对FreeModbus定时器中断的调用函数需要添加在stm32f4xx_it.c文件中相应位置即可。
  3、串口驱动的移植
  FreeModbus RTU的物理层是基于EIA/TiA-485、EIA/TIA-232规范的,因此其需要调用STM32F446RE的串口以完成数据的传输。
  FreeModbus串口驱动的移植需修改协议栈portserial.c文件中的函数:
  (1)串口初始化函数xMBPortSerialInit:通常串口的初始化会在主函数中完成,此处只要将返回值修改为True即可;
  (2)串口使能函数vMBPortSerialEnable:此函数用于实现FreeModbus RTU串口通讯的使能,包括接收使能与发送使能。若使用意法半导体提供的HAL库,则串口的接收使能与发送使能指令为:
  __HAL_UART_ENABLE_IT(&Modbus_UartHandle, UART_IT_RXNE);   __HAL_UART_ENABLE_IT(&Modbus_UartHandle, UART_IT_TXE);
  此外,在设置接收使能后,还需要调用FreeModbus协议栈的prvvUARTTxReadyISR函数对接收到的数据进行处理;
  4、串口中断的移植
  与定时器中断相似,在使用STM32CubeMX工具的时候,相应中断的实现统一存放在stm32f4xx_it.c文件中,因此仅需要将FreeModbus协议栈的接收中断处理函数prvvUARTRxISR以及发送完成中断处理函数prvvUART TxReadyISR复制到相应由系统生成的串口中断处理函数中即可。
  5、指令处理函数的编写
  上述步骤完成了FreeModubs协议的移植,在主函数中可以编写相应的指令处理函数,例如读线圈指令、写寄存器指令的处理函数,即可实现Modubs RTU协议。
  四、系统测试
  完成FreeModbus协议栈的移植后,可以选择Modbus Poll软件进行协议栈的测试。Modbus Poll软件是Modbus协议栈的主站仿真软件,能够同时监视多个从站设备的数据,其支持Modbus RTU、ASCII以及TCP/IP传输模式。
  在使用Modbus RTU进行传输时,需要首先设定系统的串口,如图1所示:
  完成设置后点击OK,并进行从站连接,Modbus Poll即可显示STM32F446RE中各寄存器的数据。
  五、结论
  Modbus协议是一种广泛用于工业中的通讯协议。本文研究了一种基于STM32F446RE系统的Modbus协议实现方式,可以很好地應用于工业中,且有较短的开发周期,由较为广阔的应用前景。
  参考文献:
  [1]赵艳明、曾培峰. 一种基于STM32的Modbus-RS485通信方法. 智能计算机与应用,2018,8(03):50-53+56
  [2]张永伟、康兴无. 基于STM32和Modbus的串口服务器系统. 电子设计工程,2017,25(16):108-111+116
  [3]刘禹辰、张仁杰、刘虎等. STM32与上位机Modbus协议的通信方法. 电子科技,2015,28(10):27-30
  [4]陈科、蒋军. 基于STM32的MODBUS协议的实现与应用. 视听,2013,4:9-10
  [5]贺洪江、程琳. 基于STM32和Modbus的电参数采集系统. 自动化与仪表,2014,29(06):26-29
其他文献
摘 要:随着城市化建设规模的不断扩大,城市人口数量的不断增加,住宅小区的建设数量与建设规模同样在随之增加。当前住宅小区主要是以大型化建设为主,无论是其占地面积,人口容量等都不断增大,因此电力的使用也在增加。基于此,本文对当前大型住宅小区的供配电设计展开研究,以此促进小区的安全用电,为房屋住宅的建设提供更好的建设保障。  关键词:大型住宅区;供电方案;配电设计  随着城市中大型小区建设数量的不断增多
期刊
摘 要:随着配电线路状态检修技术的进一步发展,我国逐渐加强了对于供电企业配电线路状态检修技术的管理。因此,本文将对配电线路状态的检测进行分析,并探讨检修技术。  关键词:配电线路;状态检修;检修技术  利用新的检测技术和试验技术,能够科学地对输电线路运行的数据和运行状况进行判断,继而对线路检修项目与时间进行确定。然而长时间发展以来,由于检修方法与诊断技术所带来的限制,加之,具体应用过程中必修制度的
期刊
摘 要:单螺杆泵在油田集输系统中已经发展为不可缺少的部分,因具有结构简单、投资少,效率高,节约能源的特点,使其在油气输送过程中被广泛应用.然而,螺杆泵的选择也极其重要,在油气输送过程所需泵的排量、进口流量、排量和杨程等因素,都直接关系到螺杆泵的工作效率。  关键词:单螺杆泵;集输系统;结构原理;流量排量;工作效率  1引言  在油气田开发过程中,用于输送油气介质的单螺杆泵通常被称混输泵它是一种内合
期刊
摘 要:电力企业发展中需要做好营销工作,增加自身的经济收益。电费电价分析是营销管理工作开展中的重要内容,研究工作开展中对电价与电费之间的关系进行分析,重点研究了电力营销电费与电价中存在的问题,并提出合理的建议,这样可以更好的开展电力营销工作。  关键词:电力营销;电价;电费  电力销售是电力企业收入的重要来源,随着社会的进步,电力使用量不断增加,这就为电力企业的发展提供了一个良好的发展环境。营销管
期刊
摘 要:随着社会进步,很多服务领域已经实现了智能化服务,比如银行系统等等。电力企业作为人们生活休戚相关的能源提供商,应该改变以往的工作模式,实现智能化服务,其中电力营销工程计量改造,就是为了实现计量、收费的自动化,节省消费者时间,满足人们对高品质生活的需求,特别是生产企业对供电的需求。只是在操作工程中,遇到了一些具体问题,对这些问题形成对应的解决措施,决定了计量改造工作的进度。  关键词:电力营销
期刊
摘 要:本文首先论述了天然气分布式能源的相关知识,然后通过企业实践分析,进而提出燃气分布式能源的创新发展思路。  关键词:企业实践;天然气分布式能源;发展思路  近年来,随着国家在联合国气候大会上的屡屡承诺,环境问题也越来越受到人们的重视,严峻的节能减排任务则是国家兑现承诺的具体表现。而作为清洁能源的天然气分布式能源也逐渐发展起来,同时政府也出台了相应的鼓励政策,一时之间,天然气分布式能源成为各能
期刊
摘 要:滑系统的作用是连续不断地把干净的机油送到柴油机需要润滑的各个部件,减少零件的磨损,延长零件的使用寿命?如果润滑系统出现故障而没有及时得到排除,必将影响才柴油机的使用寿命?大马力柴油机冷却系统的作用是保证大马力柴油机处于既不过热又不冷却的状态下正常运转。本文总结了大马力柴油机两种冷却方式的特点,针对大马力柴油机水温过高的原因,提出大马力柴油机冷却系统故障的排除方法。  关键词:大马力;柴油机
期刊
摘 要:油田开采安全问题是企业生产过程非常重视的一个问题,在开采环节一旦出现安全问题就会引起安全事故,基于此,结合实际,总结了油田生产过程容易出现的问题现状,并且针对问题现状给出相关的处理措施,目的在于提高油田開采安全水平。  关键词:油田;开采;安全问题;解决措施  0前言  社会的高速发展和进步,人们对于安全性的重视逐渐提升,但是在很多工程实践中却存在严重的安全意识不足的情况,从而使得了油田企
期刊
摘 要:为了规范中国注册会计师职业行为,提高职业道德水准,维护职业形象,中国注册会计师协会制定了《中国注册会计师职业道德守则》。同时,审计质量是注册会计师行业生存和发展的基本要素。注册会计师只有提供高质量的审计服务,发表恰当的审计意见,才能满足社会公众利益的需要,这是注册会计师(行业)赖以生存的必要条件。那么,注册会计师职业道德与审计质量之间存在怎样的关系?目前,对审计质量概念缺乏较为广泛性适用的
期刊
摘 要:现阶段随着时代不断快速的发展与进步,不仅促使我国不断增加人均的经济收入,也促使不断的大幅度的提高相关的生产制造业,而且能够确保大力推动水利工程技术的快速发展。同时在水利工程的施工过程中,因为在水下对基础进行建设较为困难,所以需要通过利用一定的技术对其进行支持,可以通过利用围堰技术对水下部分施工进行挡水,从而确保为水利工程进行施工时提供极其便利的条件。并且围堰技术作为水利工程建设过程中极其重
期刊