基于单片机的plc编译程序设计研究毕业设计论文(编辑修改稿)内容摘要:

ency when practical application, thus has the strong usability. Key words: Monolithic microputer,programmable logic controller,piler,blind code, source program, target program 前 言 前人在单片机应用研究和 PLC应用研究方面已经取得了丰硕的成果。 当今计算机 技术发展很快,编译程序设计技术也在不断发展。 世界上现成的 PLC产品很多,每一 个 PLC产品都有一个 PLC编译程序。 我们要问,本课题“基于单片机的 PLC编译程序’’ 和其他的 PLC编译程序雷同吗 ?答案是不同。 为了大大降低成本,实现如前所述的,在 机电一体化产品和自动化装置的设计中直接用单片机芯片作为符合梯形图逻辑的逻辑控制器, 就必须设计出可以将 PLC指令源程序翻译成单片机目标程序的编译程序。 在从事这项研究时我们发现,本课题“基于单片机的 PLC编译程序设计’’在应用研究方法和具体内容上都和前人有许多不同之处。 9 (1)首先,当从市场上选来新~代的单片机芯片作为执行符合梯形图逻辑控制的 逻辑控制器,那么从总体上来看,基于该单片机芯片的 PLC编译程序的设计就和其他 PLC的编译程序设计不同,没有一个现成的编译程序可以套用,必须做创造性的工作, 独立完成基于该单片机的编译程序设计。 编写基于该单片机的 PLC编译程序,是本课题的主要工作任务之 一。 (2)其次,目标程序框架结构也不同。 因为单片机芯片不同,内部的硬件资源也 就不同,目标指令代码和目标程序框架结构也就不同。 因此在编译程序编写前,必须根据单片机芯片编程的特点设定目标程序框架结构。 有许多影响目标程序框架结构的因素,诸如 CPU初始化、内部硬件定时器设定、中断结构、接口的初始化等。 设定目标程序框架结构,是本课题的另一项主要工作任务。 (3) 本课题的一项有特色的工作是在应用研究基础上,构建基于单片机的 PLC 的源程序代码标准集合和目标程序代码集合,并且用集合和映射的方法为基于单片机的 PLC源 程序代码、目标代码以及翻译方法建模。 此外在设计中采用盲码预填及修正技术。 总之,基于单片机的 PLC编译程序设计研究是一项具有创造性的工作,需要充分吸 收前人 经验,开创创新,建立新的模型,新的结构,新的方法 1 基于单片机的 PLC的单片机程序模块研究及其目标程序框架的构建 基于单片机的 PLC编译程序的功能是将基于单片机的 PLC源程序翻译成单片机目 标程序。 为了设计出基于单片机的 PLC编译程序,首先要构建出每一条源程序指令所 对应的单片机程序模块。 基于单片机的 PLC的源程序指令采用可编程序逻辑控制器最 基 本指令的助记符,包括 AND, ANI, OR, ORI, LD, LDI, OUT, STORE, TIM, CNT, RST, PLS, DIN, SFT, END等基本逻辑指令。 但是,这些基本逻辑指令所对 应的单片机程序模块的程序长短不一,有的只有 l~2条单片机指令组成,有的则需十几条或几十条单片机指令组成。 基于单片机的 PLC常用的单片机程序模块的构建 大部分 PLC指令的单片机程序模块只需 l~2条单片机指令组成。 AND、 ANI、 OR、 ORI、 LD、 LDI、 OUT、 STORE指令的单片机程序 (指令 )如表 2. 1所示。 由 于选择 了 Atmel公司的 AT89C52单片机芯片作为处理器,所以单片机程序使用 MCS. 51单片机指令系统 (AT89C52单片机采用了 MCS. 51单片机指令系统 )。 表 1. 1 基于单片机的 PLC 10 中常用 PLC逻辑指令的单片机程序模块序号 PLC逻辑指令单片机程序模块 (指令 ) 目标程序代码 序号 PLC逻辑指令 单片机模块(指令) 目标程序代码 1 LD bit MOV C, bit A2, bit 2 LDI bit MOV C, bit CPL C A2, bit B3 3 AND bit ANL C, bit 82, bit 4 ANI bit ANL C, bit B0, bit 5 OR bit ORL C, bit 72, bit 6 ORI bit ORL C, bit A0, bit 7 STORE bit MOV C, bit 92, bit 8 OUT bit CPL C MOV bit, C B3 92, bit 表 1. 1 基于单片机的 PLC中常用 PLC逻辑指令的单片机程序模块 在表 1. 1的逻辑指令中,运算都围绕位累 加器 C进行。 表中的 bit表示位地址,它 们都是单片机中片内 RAM中可直接位寻址的位 (位地址 )。 (如延时计时器类、脉冲微分类、计数器类、移位类等 )的单片机程序模块需十几条或 几十条单片机指令组成。 下面是对此类 PLC逻辑指令的单片机程序模块建立过程的分析。 基于单片机的 PLC的 TIM Ti语句的单片机程序模块构建 1. 2. 1 围绕 TIM Ti片内硬件资源的配置 梯形图中的延时计时器通常可以有多个,它们需要有一个统一的时钟。 在基于单片机的 PLC中用 AT89C52芯片内的 T0来作统一的时钟。 TO设 定成定时 0. 1s,每隔O. 1sT0中断一次。 在 To中断服务程序中依次将多个延时计时器的软加 l计数器加 l。 实现 TIM指令所需要的片内资源有:①延时计时器的逻辑位 Ti,位地址 30H. 3FH;②延时计时器的状态标志位 Si,位地址 40H. 4FH;⑨延时计时器的软加 1计数器 Zi, Zi由两字节寄存器组成,由 TO中断服务程序对其实行加 1计数,可记录 4位 BCD数,字节 地址 50H, 51H, 52H, 53H,., 6EH, 6FH。 ④延时计时器延时时间常数寄存器 Z; 11 Z;也由两字节寄存器组成,可记录 4位 BCD数,字节地址为 30H, 31H,.., 4EH,4FH。 1. 2. 2 TIM Ti所需的 To中断服务程序 单片机初始化时,将 To设定成定时方式 l,并开放 To中断。 To的初值计算公式为: 初值Ta  st 定时间, M H zf 晶振频率, 图 1. 1 TO中断服务程序流程图 TO的定时方式和初值在单片机初始化时设定, TO中断服务程序依次扫描 16个延 fat 12)2(16  12 时计时器,先判断 Si是否为“ 1, 即该计时器是否已被开启,只对开启的计时器的软 加 1计数器 Zi实行加 1操作。 其流程见图 2. 1。 1. 2. 3 TIM Ti模块的流程分析和建立 与梯形图中延时计时器所对应的 TIM Ti逻辑指令的单片机程序模块流程见图 1. 2。 这是一个对第 i个延时计时器进行逻辑运算处理的模块,运算的依据是已知的当前逻辑运算值 (在累加器 C中 )。 开动延时计时器 (实行 Si— l的操作 )的条件是:当 C=I,同时 Si=0(第 i个延时计时器还未处于开动状态时 ),同时 Ti≠ 1(延时计时器逻 辑 位还未置“ 1)。 图 1. 2 TIM Ti逻辑指令的单片机程序模块流程图 13 1. 3 CNT Ci 语句的单片机程序模块的构建 计数器和计时器使用相同的片内资源。 在用 PLC指令编程时,同一个引用名不能 同时作计数器和计时器。 CNT指令的单片机程序模块用 Ci表示计数器的逻辑位,位地 址 30H. 3FH;用 ni表示计数器的计数脉冲前沿识别位,位地址 50H一 5FH;用 Di(双字节寄存器 )表示软加 1计数器, Di由 Di, 0和 Di, 1组成;用 D’i表示计数器的 预置值寄存器 (双字节寄存器 ), D39。 i由 D’i, 0和 D’i,i组成;另外,由 RSTC指令实现计数器的清零。 CNT Ci计数指令的单片机程序模块如下: 14 1. 4 PLS. 8 Yi 脉冲微分语句的单片机程序模块的构建 本系统共设有 8个脉冲微分寄存器。 脉冲微分类运算的单片机程序模块所占的片内资源较少。 它们分别是:①脉冲微分寄存器的逻辑位 Yi,位地址 08H. 0FH;②用于寄存前次输入的寄存器 Pi,位地址 18H. 1FH。 PLS脉冲微分的单片机程序模块流程见 15 图 2. 3。 程序中通过对本次输入 (累加器 C)和前次 输入 (Pi)进行判断,当 C=I同时 Pi=0时才产生脉冲微分信号 (Yi=1)。 由于扫描梯形图时,主程序在总体上是循环结构, 所以微分脉冲宽度等于梯形图扫描周期。 1. 5 移位类语句的单片机程序模块的构建 共提供了 4个 8位移位寄存器。 移位类运算的单片机程序模块所占的片内资源有: ①移位寄存器,用 Mi表示,字节地址分别为 2CH, 2DH, 2EH, 2FH;②移位输入暂 存位,用 Gi表示;③移位脉冲前沿识别位 Hi,位地址 28H, 29H, 2AH, 2BH。 移位类 运算程序由三个程序模块组成。 一个是对应于 DIN Mi的单片机程序模块。 其功能是将 输入端的逻辑值暂存在 Gi中,供 SFT指令使用;第二个是对应于 SFT Mi的移位操作 程序模块,其功能是依据已知的当前逻辑运算值 (在累加器 C中 ),以及 Hi的值,判断 16 移位脉冲是否到;当移位脉冲到时,将输入暂存位 Gi中的值移入移位寄存器 Mi。 第三 个是对应于 RSTS指令的移位寄存器复位程序模块。 DIN Mi指令的单片机程序模块如下: MOV Gi, C ;仅仅一条单片机指令。 SFT Mi移位操作指令的单片机程序模块如下: 1. 6 基于单片机的 PLC目标程序框架的构建 基 于单片机的 PLC编译程序的功能是将基于单片机的 PLC的源程序语句翻译成单片机的目标程序。 在基于单片机的 PLC编译问题中,目标程序框架和单片机的芯片编程相关,诸如 CPU初始化、内部硬件定时器设定、接口的初始化等。 根据基于单片机的 PLC的要求,建立目标程序框架结构,如表 1. 6所示。 其中,固定代码的编译结果基本是固定的。 活动代码是和源程序语句对应的目标程序代码。 固定代码和活动代码均采用单片机的机器指令代码。 当基于单片机的 PLC编译程序工作时,对表 1. 6中固定代码的装配过程较简单。 而活动代码的 装配则涉及到对源程序语句的识别、查错、 17 翻译生成目标代码等过程,是编译程序主要需要解决的问题。 活动代码具体装配的内容由 1. 1 –。 表 1. 6 基于单片机的 PLC目标程序框架结构 在表 1. 6所示的基于单片机的 PLC目标程序框架结构中,专用地址矢量、延时 20ms子程序、 CPU和接口初始化子程序、定时器初值设定子程序、 TO中断服务子程序、主程序开始初始化设定、输入刷新,这些均属于固定目标代码。 它们又被分为两种:一种为纯固定目标代码,例如专用地址矢量、延时 20ms子程序、 CPU和接口初始化子程序、 TO中断服务子程序、主程序开始初始化设定、输入刷新;另一种为含盲码、待修正的固定目标代码,例如定时器初值设定子程序。 0066H. 00C5H单元共 96个字节用于定时器初值设定子程序预留空间。 先用盲码 值 00H填充。 等编译程序中执行“扫描源程序文件,逐条翻译... 时,得到源程序 提供的定时器初值,再在用正式代码 (以 MOV指令目标代码的形式,并含定时器初值 ) 代替相应位置上的盲码。 关于盲码, 3. 5中还要叙述。 表 1. 6中入口符号地址 THTL处为 TO中断服务子程序。 在 2. 2. 2中已经叙 述 了 TO中断服务子程序的流程。 它们的具体程序如下: 18 19 2 基于单片机的 PLC编译程序总体设计方法 基于单片机的 PLC编译程序总体设计方法碰到的第一个问题是源程序指令模板和目标代码模板在编译程序中如何表达 ?接着第二个问题是如何根据已知的源程序指令正确的找到目标代码程序 ?如何建立单片 PLC源程序语句和目标代码之间的关系 ? 为了在编译时有一个对源程序语句的识别、查错的标准,需要就基于单片机的 PLC 的 AND、 ANI、 OR、 ORI、 LD、 LDI、 OUT、 STORE、 TIM、 CNT、 RST、 PLS、 DIN、 SFT、 END等基本逻辑指令,建立基于单片机的 PLC源程序语句标准集合。 2. 1 采用数组技术构建基于单片机的 PLC源程序语句标准集合 2. 1. 1 基于单片机的 PLC源程序语句标准集合的定义 定义 1: M是集合,在基于单片机的 PLC编译程序中用数组表示。 m iJ是其元素, m i j  M, m i j为 1字节 ASCII字符,且有子集 Mi  M Mi: {m⋯mi2, ⋯⋯, mik} (1) Mi为 M数组行元素集合,其前 k— 1个字符组成的字符串记为: String Mi=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。