欢迎来到天天文库
浏览记录
ID:31431104
大小:106.00 KB
页数:5页
时间:2019-01-09
《基于单片机开发可编程控制器的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于单片机开发可编程控制器的研究 摘要:本文设计了一种基于单片机开发控制器的新方案以实现内核驱动与逻辑运算、控制分离。 关键词:单片机;梯形图;结构化数据;自编程 中图分类号:TP334文献标识码:A 一、概述 通常基于单片机开发的智能控制器,因内部程序已固化,开发完成后,其功能基本定型,只能应用于设计时的特定目标,现场如需变更控制方案也非常困难。针对这一短板,我们设计一种基于单片机开发控制器的一种新方案,实现内核驱动与逻辑运算、控制分开,并以简明梯形图语言实现运行逻辑编程,不仅扩展了控制器
2、的应用范围,而且减轻现场调试难度,控制方案的变动,只需修改梯形图逻辑即可解决。 二、原理 单片机应具备的特性:足够容量的可擦写flash程序存储器,支持IAP功能,现在大多单片机芯片都支持用户自编程IAP功能,如Atmega128、STM32F3、STM32F4系列皆能满足要求。首先将单片机flash存储器划分为3块,一部分存储实现IAP功能的BootLoader程序,一部分存储单片机内核程序,余下的部分用于存储用户程序。内核程序主要是硬件驱动及用户程序间代码接口与算法。用户程序即为用梯形图编辑工
3、具形成顺序控制逻辑,比较规则及数据输出去向等。5 内核程序周期性地扫描内外部设备内存映射地址,并调用用户区逻辑运算,将结果以数据量及消息量的方式输出到设备,如此周而复始,完成用户逻辑的控制方案。 三、具体实现 单片机如何实现硬件驱动及通信不在本议题讨论范围内,重点论述如何实现梯形图编译工具软件与单片机执行梯形图控制逻辑。 1.用户程序编辑与编译(梯形图编译工具): 梯形图的编辑元器件主要包括常开接点、常闭接点、继电器等简单元件和定时、比较等功能元器件。为了灵活应用和扩展编辑元器件,方便编程,
4、将梯形图元件数据结构定义如下: type Tmdevice=record name:string[4];//元件名称 mclass:byte;//元件类型 memo:string;//元件备注,消息变量为消息变量实体 end; 其中Mclass的取值0:开关量输入(DI),1:开关量输出(DO),2:定时器(T),3:计数器(C),4:内部继电器(M),5:数据寄存器(D),6:消息输入(MI),7:消息输出(MO)。 梯形图用户程序我们可以看成是有限个逻辑节点构成固定列宽,可扩展行数
5、的表,每个节点代表元件加逻辑操作构成的数据结构体,因此首先定义节点数据结构:5 Type Tprodata=record Opclass:byte;//节点类型(元件类型+连接类连) notop:byte;//操作码 Address:byte;//操作数内存地址 Chadd:word;//比较数 end; 依据上述约定实现绘制的梯形图,如图1所示。 2.梯形图逻辑扫描算法 梯形图语言描述一个逻辑网络自左向右的能量潮,元件的逻辑运算总是与左侧的运算“与”运算,分支总是与左侧结果“或”
6、运算,逐行扫描遇分支节点先将运算结果压入栈,扫描暂时放弃分支节点右侧元件,进行下一行扫描,如遇分支,继续执行压栈,一直扫描到没有分支时,将结果与栈顶“或”运算,执行出栈(先进先出原则),同时判断栈顶节点连接类型,决定下一步是出栈还是扫描,如遇出栈节点有右侧分支,则扫描右侧元件,并作逻辑运算,直至扫描至行结束标志节点,并将运算结果赋值与最后节点元件,因此位于结束标志点的元件一定是输出型元件。如果在扫描过程中,能量潮在开始标志与结束标志中有中断或能量潮开始与结束标志不完整,都视为梯形图编译未能通过。 我
7、们将上面元件扫描顺序及元件操作类型记录在一个顺序数据组中,这个顺序数组结构应是这样: Type5 Tprodata=record Oprate:byte;//数据运算类型 selfop:byte;//自身附加运算 Address:byte;//元件内存映射地址 Chadd:word;//比较运算值 end; 其中Oprate对应的逻辑运算,1表示与,2表示异或,4表示赋值,5表示压栈,6表示出栈,7表示栈更新,8表示定时器操作,9:定时器溢出处理,10:计数器操作,11:计算器溢出处理
8、,12:表示位操作,13:寄存器数值比较。 然后定义一个Tprodata类型变长数组,将上面梯形图扫描编译顺序结果存放在这个变长数组中,最后将这个数据数据按IntelHex格式格式化输出文件,并保存在磁硬盘中。 3.下载用户程序到单片机用户程序寄存器 单片机具有自编程(IAP)功能,将梯形图编译结果文件(IntelHex格式)下载到单片机用户程序寄存器分区,因用户程序寄存器分区是可单独通过IAP擦写,这样修改控制器运行逻辑,只需修改梯形图,编译下载
此文档下载收益归作者所有