基于 STM32 的工业通用控制器的研究与实现

   2023-09-13 互联网2210
核心提示:    1 控制系统结构*  控制系统( 图1) 由主系统( 上位机) 和控制器( 下位机) 两部分组成,它们是相互独立而又密不可分的两

    1 控制系统结构*

  控制系统( 图1) 由主系统( 上位机) 和控制器( 下位机) 两部分组成,它们是相互独立而又密不可分的两个应用系统,可以分别单独运行。主系统可运行在 PC 机或工控机上,实现以控制系统图形化编程为基础的过程控制,主系统由工程管理模块、编辑模块、编译模块和通信模块4 部分组成。

  

  主系统设计时使用了基于控制算法的图形化编程思路,用户可根据控制算法,在编辑界面中选择不同的功能块组织形成单闭环回路、双闭环回路前馈控制或串级控制等回路,操作界面如图 2所示。在编译模块中进行程序的链接与编译,将用户程序编译生成下位机能识别和执行的目标代码,通过通信模块下载到控制器之中,完成控制过程。

  

  控制器包括通信模块、组态运算模块、I/O 模块及显示模块等部分。其中通信模块实现与上位机的通信功能,能够上传用户监测数据和接收上位机的配置信息; 组态运算模块完成用户程序的扫描,指令的解析和输入、输出数据的刷新处理;I / O模块完成现场数据的采集与控制结果的输出。

  主系统与控制器通过 RS232 进行通信。

  2 控制器的硬件

  控制器的硬件开发采用模块化设计,既要保证每一块的独立性,又能实现各个部分的相互联系。控制器( 图 3) 共有 8 路模拟量输入和两路模拟量输出,8 路数字量输入和 8 路数字量输出,一路 RS232 通信接口,并预留有两路 RS485 通信接口、一路 CAN 通信接口及工业以太网接口等。此外,为了提高控制器的抗干扰能力,在 I/O 接口处将每一路输入、输出均使用光电隔离,A/D 模块则使用了 RC 滤波,通信模块的电源和信号也采用了隔离措施,其中对信号的隔离采用了磁电隔离方式,以保证其信号传输的快速性。

  

  其 中,CPU 芯 片 选 用 嵌 入 式 微 处 理 器STM32F103ZET6 作为系统的处理器。STM32 系列微控制器采用了 ARM 公司为要求高性能、低成本和低功耗的嵌入式应用专门设计的 Cortex-M3 内核,工作频率为 72MHz,内置高速存储器( 高达 512KByte 的闪存和 64KByte 的 SRAM) 。

  3 控制器应用软件

  设计中,操作系统选用了 μC/OS-Ⅱ嵌入式实时操作系统。μC/OS-Ⅱ是一种基于固定优先级和抢占式调度的硬实时内核[2],它总是让就绪态中优先级最高的任务先运行,因此实时性比非占先式的内核要好。

  3. 1 控制器应用程序任务划分

  根据系统需要完成的功能,将用户程序划分为几个独立的任务( 表1) ,各任务间根据实际需要通过共享内存的方式进行通信。采用多任务机制[3],方便以后对控制器功能模块的扩展,并且能保证系统运行的实时性要求。

  

  对于嵌入式操作系统来说,多任务之间的同步是非常重要的。μC/OS-Ⅱ提供了多种方式来 保证任务间的同步,本设计中采用信号量实现任务间同步。

 

 3. 2 软件组态程序

  在任务调度过程中,AppTaskIn( ) 任务负责对现场模拟量、数字量或按键输入进行采集,经过调理后保存到相应的数组中; AppTaskOut( ) 任务将本次组态运算结果输出到用户指定的输出通道上。AppTaskController( ) 任务是整个控制器的核心,它实现软件组态的功能。

  在 AppTaskController( ) 任务中,先从对应的FLASH 地址中读取组态序列信息,解析出模块的输入及输出等参数,然后调用模块算法进行数据处理,存储当前模块的运算结果,接着依次运行用户在上位机已完成的组态序列,在所有的组态序列运行结束时,将输出送到用户配置的端口上,其程序流程如图 4 所示。

  

  3. 3 通信程序

  AppTaskComm( ) 通信的任务是: 从上位机下载目标代码,给上位机提供变量值、控制信息及运行状态等信息,接收上位机组态完毕的配置文件,并将组态序列信息写入到微处理器的 FLASH 地址中。

  为了能够简捷、高效地实现通信功能,在程序设计时,采用了一种有限状态机机制[4],有限状态机是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。这个模型以“事件驱动”的方式工作,驱动有限状态机的事件可以是系统外部输入信号,比如键盘中断事件及通信设备中断事件等,也可以是系统内部的驱动信号,如系统发出的各种命令。程序设计时利用有限状态机的思想将整个通信过程划分为 7 个状态,以一帧数据的起始符及结束符等作为“驱动事件”,通信程序状态的划分见表 2。

  

  下面以控制器接收上位机的组态配置信息为例,简要说明通信过程中几种状态的转换过程:AppTaskComm( ) 任务初始化时,控制器的工作状态为 STATE_IDLE 态,上位机与控制器利用一对握手信号来保持通信。正常情况下,当控制器收到上位机的请求后,工作状态会转换为 STATE_GET_ENQ,此时会发给上位机一个应答信号,控制器的工作状态由 STATE_GET_ENQ 态转换为STATE_GET_ACK 态,表示通信正常,应答信号发送成功后回到 STATE_IDLE 态等待。当控制器收到一个起始符时,工作状态转换到 STATE_GET_  STX 态,开始接收数据,程序跳入串口接收中断服务子程序中,直到串口接收到结束符,工作状态转换为 STATE_GET_ETX 态,准备接收上位机发送的校验数据,在收到上位机发送的校验符时,工作状态由 STATE_GET_ETX 态转换为 STATE_GET_CRC 态,开始对接收到的这一帧数据进行校验,若校验错误,视为这一帧数据传输时出错,放弃并清空数据接收缓冲区,工作状态直接由 STATE_GET_CRC 转换到初始 STATE_IDLE 态,等待下一帧数据; 若校验正确,工作状态由 STATE_GET_CRC 转换到 STATE_WRITE_PROGRAM ,将本次接收到的数据写入 FLASH 地址中,并转换为初始的 STATE_IDLE 态。其中,若控制器在 STATE_GET_STX 态、STATE _GET _ETX 态以及 STATE _GET_CRC 态转换过程中等待超时,将会直接转换到 STATE_IDLE 态。通信协议的状态转换如图 5所示。

  

  4 控制器组态功能的实现

  由功能模块库和组态序列相结合实现算法组态,可以满足工业现场种类繁多的控制要求。组态序列是每个特定的处理周期中应用软件所需完成的功能集合和模块之间的消息传递序列,也是功能的选择和按前后顺序方式运行的组织形式[5]。

  在 AppTaskController( ) 任务运行过程中,当从 FLASH 中读取到某一模块的配置文件时,需要从中解析出这个模块所有信息,才能保证整个控制过程的正确执行。为此,利用一帧数据来传递模块的配置信息,数据长度为 8 个字节,格式如图6 所示。

  

  其中,模块输入参数来源有模拟量输入、数字量输入、按键输入以及用户输入几种情况,所以设计了模块输入参数来源帧格式( 图 7) 。

  

  图 7 中 bit0 ~ bit3 是内部变量编号,可以有16 个输入通道。bit4 ~ bit6 为 000 则为用户输入;001 则为模拟输入; 010 为数字输入; 011 则为按键输入; 其他则为保留。bit7 为 0 时,表示其输入来源于组态序列中前面那个模块的输出; 当为 1时为特殊功能模块。

  为方便用户,控制器中还集成了多种不同的PID 算法,包括普通 PID、模糊 PID 及增量式 PID等[6]。用户可以根据不同的控制对象在上位机完成 PID 参数 Kp、Ki和 Kd的配置,然后下载到控制器中,在 FLASH 中另外开辟了一段存储空间用于存放 Kp、Ki和 Kd3 个参数的值。PID 参数编码格式如图 8 所示。

  

  5 结束语

  借助嵌入式硬件平台用软件的方法实现可进行软件组态的通用控制器,不仅具有嵌入式系统实时性、可靠性和可裁剪性特征,而且有成本低、组态灵活及结构开放等特点,能够满足中小型控制系统的应用需求,具有广泛的应用前景。此外,控制器丰富的现场总线接口和可组态的特性,既能方便用户对系统进行扩展和集成,又能根据工业现场的实际情况完成不同的控制要求。

  参 考 文 献

  [1] 段建民,焦圣伟. 基于 DSP 的可软件组态的智能控制器的研究与设计[J]. 工业仪表与自动化装置,2009,( 3) : 82 ~ 84.

  [2] 任哲. 嵌入式实时操作系统 μC/OS-Ⅱ原理及应用[M]. 第 2 版. 北京: 北京航空航天大学出版社,2009.

  [3] 陆晓春,刘修峰,任姣,等. 基于 ARM 的智能磷酸根分析仪的设计[J]. 化工自动化及仪表,2010,37( 11) : 66 ~69.

  [4] 周飚,谢晓阳. 有限状态机在 RTC 设计中的分析应用[J]. 计算机系统应用,2008,17( 5) : 77 ~80.

  [5] 陆坦,乔毅,元云飞. 基于软件组件技术的智能仪表软件系统[J]. 仪表技术与传感器,2007,( 2) :66 ~78.

  [6] 何佳佳,侯再恩. PID 参数优化算法[J]. 化工自动化及仪表,2010,37( 11) : 1 ~4.


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅