PLC单片机嵌入式系统毕业论文.doc_第1页
PLC单片机嵌入式系统毕业论文.doc_第2页
PLC单片机嵌入式系统毕业论文.doc_第3页
PLC单片机嵌入式系统毕业论文.doc_第4页
PLC单片机嵌入式系统毕业论文.doc_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PLC单片机嵌入式系统毕业论文目 录摘 要Abstract第1章 绪论11.1 课题的提出11.2 课题研究的意义11.3 课题研究的内容21.4 本章小结3第2章 总体设计42.1 硬件总体设计42.1.1 硬件需求分析42.1.2硬件设计方案52.2 软件总体设计62.2.1上位机软件需求分析72.2.2上位机软件总体设计72.2.3下位机软件需求分析82.2.4下位机软件设计方案102.3 本章小结10第3章 硬件设计与实现113.1单片机ADuC841及其必需的外接电路113.1.1晶振电路133.1.2复位电路133.1.3电源电路133.1.4 24位地址总线及系统扩展的寻址方法143.2 外部数据存储器接口电路143.2.1 DS1486芯片简介153.2.2外部存储器接口电路153.3 通信接口电路163.4 数字量I/O模块173.4.1数字I/O扩展173.4.2数字量输入端口电路183.4.3数字量输出端口电路183.5 模拟量I/O模块193.5.1 ADuC841片上模拟接口193.5.2 ADC输入接口电路203.5.3 DAC输出接口电路213.6 人机界面模块213.6.1 LCD接口电路223.6.2薄膜键盘233.7 控制器技术规格233.8 硬件设计方案的特色243.9 本章小结25第4章 上位机软件设计与实现264.1 文本处理程序264.1.1预处理器264.1.2词法分析器274.2 指令编码294.2.1编码规则294.2.2编码器实现314.3 串口通信程序334.3.1 LabVIEW与串口通信334.3.2串口通信程序设计344.4 上位机软件设计方案的特点344.5 本章小结35第5章 下位机软件设计与实现365.1 嵌入式软件的开发方式365.1.1嵌入式软件的特点365.1.2交叉开发方法365.1.3开发工具介绍375.2下位机软件结构385.2.1软件设计方法385.2.2软件功能描述385.2.3任务划分395.2.4嵌入式实时操作系统RTX51 TINY的移植415.3下位机任务的实现425.3.1 PLC功能存储区的映射及I/O读写425.3.2 LCD显示任务455.3.3看门狗任务465.3.4串口通信任务465.3.5读写外部RAM任务475.3.6按键处理任务485.4 PLC指令解释任务的实现485.4.1 PLC指令解释原理495.4.2标准触点指令的实现505.4.3与堆栈有关的指令的实现515.4.4立即触点指令的实现525.4.5跳变触点指令的实现525.4.6输出指令与其它指令535.4.7定时器指令的实现535.4.8计数器指令的实现555.4.9程序跳转指令的实现565.5 下位机软件的特色565.6 本章小结57总 结58致 谢59参考文献6060第1章 绪论1.1 课题的提出 可编程逻辑控制器(PLC),又称为可编程控制器(PC),是为工业控制特别设计的一种专用计算机。它易于设置和编程,运行可预估,甚至在恶劣的生产环境下还可以保持正常工作,广泛应用在各种机械设备和生产过程的自动控制系统中,成为应用场合最多的工业控制装置。 在所有的PLC种类中,微型PLC是占有市场份额最大的一种。微型PLC是指I/O点数少于64点的PLC,这一类PLC主要应用于单台设备的控制,在纺织机械、数控机床、塑料加工机械等设备上运用广泛。 我国PLC市场大部分被欧美,日韩等发达国家产品所占领,国产化率很低。这主要是由于PLC的核心CPU模块被发达国家垄断。近几年来,随着微控制器技术的发展,高性能单片机层出不穷,功能日益强大,由于产量的大幅增加成本也不断降低,使我们可以考虑使用现成的高性能单片机作为CPU模块来研发具有自主知识产权的PLC。由于微型PLC的研发相对比较容易,且应用最为广泛,因此我们可以考虑从微型PLC入手,设计一个基于单片机的通用控制器,实现微型PLC的精简控制功能。 另一方面,近年来嵌入式技术的发展成果也为本课题的研究提供了便利。嵌入式技术将软、硬件的开发过程更紧密地结合起来,并将实时操作系统等高级的软件工具引入单片机的程序编制过程中,使得利用单片机能快速地开发比较复杂的软件,而且提升了软件可靠性。本课题的研究也会将嵌入式开发技术,包括嵌入式实时操作系统工具引入开发过程。1.2 课题研究的意义 设计基于高性能单片机的通用控制器,实现微型PLC的主要控制功能,具有以下几方面的意义: 1、实用价值 在工业控制中,需要小型控制系统的场合很多,如电梯的升降系统、小型包装机械的控制系统等。这些应用场合的共有特点是需要控制的点数不多,一般输入输出总和只有20点到40点,而且基本上是以逻辑控制为主。开发针对这些小型控制系统的通用控制器,具有很强的实用价值和广阔的市场前景。 2、经济价值 目前市面上各大PLC厂商都提供微型PLC用于小型控制系统,但它们的价格普遍比较高,最精简型的也在千元以上。而以单片机为核心开发的小型通用控制器,只需几百元的成本即可实现微型PLC的精简控制功能。因此开发基于单片机的通用控制器具有较大的成本优势,能实现很好的经济价值。 3、社会价值 我国PLC国内市场虽然庞大,但是90以上的市场份额都被国外品牌占据。因此,大力发展拥有自主知识产权的PLC,逐步摆脱国内PLC市场被国外厂商垄断的局面,对于推动国内PLC市场的发展具有深远意义。而要开发自己的PLC,从功能相对最简单的微型PLC入手是一个很好的突破口。 基于上述分析,研究微型PLC的设计与实现是非常有现实意义的。本文所研究的课题就是在这方面所做的一个尝试,希望能以成本最低的8位微控制器(单片机)来实现微型PLC的基本功能。1.3 课题研究的内容 本课题的主要任务是通过研究PLC系统的工作原理以及PLC编程语言的特点等,采用嵌入式开发技术,设计并实现一个通用的工业控制器,能够实现微型PLC的大多数功能,满足多种工业控制的要求。该控制器的下位机以ADuC841单片机作为控制芯片,在此硬件平台上设计尽可能多的外围接口电路,以最大限度地实现PLC的功能。下位机软件用Keil工具采用C语言开发,并引入嵌入式实时操作系统RTX51 TINY,实现多任务的管理,模拟PLC的运行方式,并能够对常用PLC指令进行解释执行。上位机软件在Windows平台下,用LabVIEW为开发工具,实现对用户程序PLC指令的编码。1.4 本章小结 本章首先介绍了本课题提出的背景、可行性等,然后从三个方面分析了本课题研究的意义,最后指出了课题研究的内容。第2章 总体设计 作为一个嵌入式系统,其设计和开发过程分硬件和软件两部分进行。但硬件和软件的开发又是相互联系、密不可分的。2.1 硬件总体设计 本节通过对针对PLC的体系结构分析系统的硬件需求,结合单片机控制系统的特点,制定基于单片机的通用控制器的硬件总体设计。 2.1.1 硬件需求分析PLC的基本结构主要包括以下几个部分:CPU模块、输入模块、输出模块和编程装置,如图2-1所示。本设计的目的是实现一个小型PLC的逻辑控制功能及与上位机进行通讯的功能,在硬件上应具有以下几个必要的模块:1、微控制器包含CPU及其存储器。存储器包括存放操作系统、驱动程序和应用程序的预编程只读存储器ROM,以及存放用户编写的程序和工作数据的随机访问存储器RAM。2、开关量输入、输出模块开关量输出模块用来控制接触器、电磁阀、电磁铁、指示灯、数字显示装置和报警装置等输出设备。3、存储器包括存放操作系统、驱动程序和应用程序的预编程只读存储器ROM,以及存放用户编写的程序和工作数据的随机访问存储器RAM。4、复位电路包括上电复位、按键复位和看门狗复位,以便在死机或紧急情况下将系统重启,保证系统正常工作。5、串口通讯模块方便控制器与PC通信,实现数据交换和用户程序的下载。6、模数转换(A/D)、数模转换(D/A)模块用于模拟量的输入输出控制。A/D模块将模拟输入转换成数字量,供CPU处理,D/A模块将控制器中的数字量转换为模拟量电压或电流,再去控制执行机构。2.1.2硬件设计方案根据前面的需求分析,设计系统的硬件框架如图2-2所示。ADuC841芯片内部已经集成了ROM、RAM、ISP、A/D和D/A等模块,简化了电路设计。但是芯片内部RAM容量有限,故增加了外部RAM,即DS1556芯片。本设计中为了充分利用外部的128K数据RAM和其它功能模块,采用24位地址寻址,由P2口分时输出高8位地址和页地址,最多可寻址16M地址空间。ADuC841片内还集成了通用串行接口UART,采用5V单电源供电的通信收发器LMS202,实现单片机的TTL电平与PC机的RS-232标准电平之间的转换。为增加I/O端口数目,采用两片82C55A芯片,扩展出24路数字量输入和24路数字量输出。加上ADuC841内部集成的8个通道12位A/D模块和两个通道的12位D/A模块,如此丰富的内部资源和外围接口足以取代一般小型PLC的功能。2.2 软件总体设计本系统的软件包括两大部分:上位机软件和下位机软件。上位机软件即PLC编程软件,用于在PC上创建、编辑和编译PLC用户程序,并将其发送至下位机。下位机软件是指固化在控制器内部的软件,包括操作系统和驱动程序、PLC指令解释模块等等,主要完成系统的初始化、PLC指令的分析和解释执行、与上位机通讯等功能。2.2.1上位机软件需求分析常用的PLC编程语言主要有两种:梯形图和指令表语言。在单片机中,梯形图和指令表程序都不能直接执行,必须先转化成单片机能识别的编码。因此本设计中上位机软件的任务就是将指令表程序转化成单片机能识别的编码,而梯形图可以先转换成指令表语言后再进行编码转换。为了使本系统尽可能通用,采用基于西门子PLC的指令集。上位机软件的开发主要包含三个方面的任务:1、指令表程序文本处理对指令表程序进行文本处理分为两个步骤:一是预处理,即删除程序文本中的注释行;二是词法分析,将输入文本分解成一个个独立的词法符号。2、PLC指令的编码对指令进行编码包括两部分:操作符编码和操作数编码。西门子PLC的操作符只需实现其中常用的几十种,可以分三种形式对操作符进行编码:无操作数、单操作数和双操作数的操作符。操作数又为两种:线圈和立即数。编码时注意两个原则:一是按固定宽度对操作符和操作数进行编码;二是在编码中包含操作符或操作数的类型信息。3、 通过串口将编码后的程序发送给下位机2.2.2上位机软件总体设计根据上一节的需求分析,上位机软件的结构框图如图2-3所示。上位机软件在Windows平台下用LabVIEW开发。第一阶段的文本处理可以用LabVIEW中的文件读写模块和字符操作模块实现,输入指令表程序,输出一个个独立的词法符号。第二阶段的编码转换可以用LabVIEW中的case结构构造一个有限状态机来实现,对上一阶段分解出来的词法符号进行分析,一一转换成对应的编码。第三阶段用LabVIEW的VISA工具包可以很方便地实现串口的读写操作。2.2.3下位机软件需求分析下位机软件的功能是使系统模拟PLC的方式工作,因此下位机软件的需求分析应该参照PLC的工作方式。PLC有两种操作模式:运行模式与停止模式。在运行模式,PLC运行用户程序;通过运行合适的应用程序响应用户命令,实现控制功能。在停止模式,可以进行用户程序的创建、编辑、下载或错误检查,不执行用户程序。PLC操作系统每次进入运行模式时执行初始化一次,然后只要PLC保持在运行模式就重复使PLC执行顺序扫描循环。这个循环主要包括三个步骤,分别处理不同的任务,如图2-4所示。 PLC以循环扫描的方式工作,在每次循环的开始将输入模块的状态读入相应的输入过程状态寄存器,在循环的结尾将输出数据存入输出映像过程寄存器,中间则顺序地逐条执行用户程序。针对本系统的设计目标,结合前面所述PLC的工作原理,下位机软件的开发工作应包括以下几个方面:1、系统初始化初始化包括端口初始化、系统功能初始化,有时候还需要对部分功能进行检查。为了使单片机模拟PLC的工作方式,还需要在单片机的RAM中建立I/O端口的映射,模拟PLC中的I/O过程映像寄存器。2、分析PLC指令指令分析部分对上位机发送过来的PLC指令进行解码,找到该指令对应的C函数。还要分析某条PLC指令是否正确,3、PLC指令的解释执行经过上一步的指令分析后,就可针对不同的指令调用相应的C函数,执行PLC指令期望的操作。这样,就可以完全地模拟PLC系统的运行过程,得到的结果也和真正的PLC无异。4、 与上位机的通信功能方便从上位机下载用户程序和实现数据交换,同时便于用户监测下位机的运行状态。2.2.4下位机软件设计方案下位机软件在Keil平台下采用C语言开发,开发过程中不必过于关注底层的细节,比汇编语言更容易编写较大的程序。而且由于模块化,用C语言编写的程序有良好的可移植性。功能化的代码能够很方便地从一个工程移植到另一个工程,从而减少了开发时间。 系统初始化方面,端口初始化和系统功能初始化可以通过设置CPU内部相应的寄存器很方便地实现。对系统所有的输入和输出端口分别声明一个对应的全局变量,实现PLC的输入和输出过程映像寄存器。 指令分析是一个查询比较的过程,即将某条指令的操作码,操作数分别与已建立的指令数据表中的数据进行比较,从而判断用户输入的指令是否正确,用有限状态机实现指令与C函数的配对。为了执行PLC指令,从逻辑指令入手,使用C51编程实现PLC的触点指令、输出指令、定时器与计数器指令等等。用户程序中的指令经过分析后,就可调用与之相对应的C51函数,完成指定的功能。2.3 本章小结本章在分析PLC的主要体系结构和工作原理的基础上,提出了基于单片机的通用控制器的设计需求和方案,使其能在硬件和软件上都能模拟PLC工作方式。第3章 硬件设计与实现硬件是整个设计的基础,后面的上位机和下位机软件的开发都要围绕着硬件平台来进行,针对硬件的特点设计最高效的实现方法。因此本章根据前一章的总体设计,先对本设计的硬件部分进行详细的介绍。3.1单片机ADuC841及其必需的外接电路ADuC841是ADI公司ADuC84X系列中性能最完善的一款微转换器,它具有单周期指令,20 MIPS的8052内核;内置一个8通道、高速420 KSPS、高精度自校正、12位逐次逼近的ADC,具有DMA控制:2通道12位DAC;2通道PWM方式-型DAC;15 ppm/高稳定电压基准;温度传感器;62 KB片内Flash/EE程序存储器;4KB的片内Flash/EE数据存储器。还包括看门狗定时器和电源监控器、ADC与数据存储器之间的DMA方式、存储保护功能、通用异步串行收发器(UART)、SPI和I2C总线接口等功能模块。ADuC841内部功能模块如图3-1所示。可见ADuC841单片机有非常卓越的性能和丰富的片内资源,保证系统稳定可靠工作的同时能最大程度地简化硬件设计。单片机ADuC841作为控制器的CPU,是整个系统的核心。图3-2所示为单片机ADuC841及其必需的外接电路原理图。由于其内部含有A/D和D/A模块、用于存储程序的大容量存储器及通信接口等,因此只需少量的外围元件就能工作。 3.1.1晶振电路单片机用晶体振荡器(简称晶振)产生准确、稳定的时钟(频率),以保证单片机内部各个部件协调、同步、稳定的运行。3.1.2复位电路复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,它的作用是使CPU和系统中其它部件都处于一个确定的初始状态,并从这个状态开始工作。 R3和C10构成单片机的上电复位电路,与C10并联的按键S2用于手动复位。S2键还可以与S1键配合产生信号使单片机进入下载程序模式。3.1.3电源电路电源电路如图3-3所示。系统接收12V直流电压,可由开关电源输入。经桥式电路整流和电容C30的滤波后输入到三端稳压器7805,输出稳定的5V电压。发光二极管D3用做电源指示,R36是限流电阻。3.1.4 24位地址总线及系统扩展的寻址方法本系统设计的控制器外接的存储器容量就有128K,再加上其它扩展芯片,64K地址总线远远不能满足要求。于是我们采用了24位地址总线。 系统扩展的寻址是指当单片机扩展了存储器、I/O接口等外围接口芯片后,如何寻找这些芯片的地址。芯片寻址目前常用的有两种方法:线选法和译码法。本系统采用译码法寻址,片选电路如图3-4所示。图中MC74HC138为3线8线译码器,当地址线的A230、A191时该芯片被选中,进而通过A20、A21、A22三根地址线的组合可选中最多8个不同的芯片。3.2 外部数据存储器接口电路PLC的CPU模块的存储器中必须包含程序和数据,PLC需要这些程序和数据来进行操作。ADuC841片内的存储器资源相对于一般单片机来说已经算非常丰富,包括62KB程序存储器、256B的RAM、2KB的XRAM和4KB的FLASH数据存储器。但是要用在工业控制中,数据存储器的容量有时候还是难以满足需要。因此必须对系统的数据存储器进行扩展。3.2.1 DS1486芯片简介DS1486为非易失静态RAM,它的数据存储容量为128KB,内部用17位地址线寻址。它还具有完备的实时时钟(RTC)、闹钟、看门狗定时器以及间隔定时器,所有存储单元均可按照单字节宽度格式访问。DS1486芯片提供的丰富资源不但完全满足了系统的数据存储需求,还大大地强化了整个系统可实现的功能,为系统在软件上的进一步扩展提供了基础。3.2.2外部存储器接口电路DS1486的接口电路如图3-5所示。图中芯片标识“DS1486-120”中的120指的是芯片的存取时间为120ns。片选信号CS2来自片选电路中译码器的输出,内部的17位地址线(A0A16)分别与相应的系统地址线按位相连。引脚输出定时中断信号,与ADuC841的外部中断0输入端连接,可设置系统以固定间隔产生中断。引脚分别输出看门狗定时信号,与ADuC841的复位端RST连接,可用于系统的看门狗复位。3.3 通信接口电路用于工业自动化的控制器,一般都具备一定的通讯功能。PLC通过串行通信连接到编程器或PC可实现对PLC的编程和配置,或进行数据的交换。本设计中的串行接口就是用来完成这些功能。ADuC841单片机的通用同步异步收发器(USART)提供全双工通用同步异步串行连接,通过引脚TxD和RxD完成串行通信的接收和发送。PC机上的串行接口采用RS-232标准,包括了按位进行串行传输的电气和机械方面的规定。电气特性的要求规定:驱动器输出电压相对于信号地线在5V15V为逻辑1电平,表示传号状态;输出电压相对于信号地线在5V15V为逻辑0电平,表示空号状态。在接收端,逻辑1电平为3V15V,逻辑0电平为3V15V,即允许发送端到接收端有2V的电压降。这样的RS-232电平和TTL逻辑电路(单片机)产生的电平是不一样的,因此,PC机与单片机之间必须经过一定的电路转换逻辑电平【2】。本系统设计中采用LMS202芯片进行电平转换,串行通信接口电路如图3-6所示。 3.4 数字量I/O模块PLC的数字I/O模块用于连接只可以控制开或关的传感器和执行器,可用单片机的扩展并行I/O口来实现。本设计参照PLC的I/O通道,设计了24路数字量输入接口和24路数字量输出接口。3.4.1数字I/O扩展 单片机内部的数字I/O端口非常有限,要模拟PLC的功能远远不够,因此必须进行扩展。8255A是最常用的可编程并行I/O扩展芯片,它的通用性强,可以方便地和单片机相连接。3.4.2数字量输入端口电路数字量输入的主要问题是隔离问题。尤其是一些开关量输入信号,如隔离不好,较强的电磁干扰就会引入到系统中,影响系统的正常工作。因此在PLC中,数字量的输入都采用光隔离器件,将现场与PLC实现电气上隔离,从而保持系统工作的可靠性。系统具有24个独立的数字量输入点,分别与两片并行I/O扩展接口芯片82C55的输入端口相连。每个端口的电路原理完全一样,每个端口均可以向系统输入电平信号。为了防止外部环境对系统的干扰,每个输入端口都采用了光电隔离技术。图3-7中画出了一路输入端口的原理图。图中的24V电源需要由外部设备提供,DIO8为输入端子,PA10为82C55A的端口。系统采用TP521-4作为光耦合器件,每片TP521-4包含四个光耦合通道,图中PC1A为TLP521-4中的一个通道,发光二极管与光敏二极管封装在一个管壳中。当二极管中有电流时发光,此时光敏晶体管才导通。靠近端口PA10的电容C3是滤波电容,可滤除输入信号中的高频干扰。当输入端口和公共端24 V的地短接时,光耦合器导通,表示输入开关处于接通状态,PA10为高电平。当CPU访问该路信号时,将该输入点对应的输入映像寄存器状态置1;当输入端口断开时光耦合器不导通,LED不亮,表示输入开关处于断开状态,此时PA10为低电平。3.4.3数字量输出端口电路在本设计中,像输入接口一样,数字量输出接口也设计了24路,分别与两片82C55A的3组输出端口相连。图3-8是其中一组,即8个输出端口的接口电路。处理输出端口的输出模块电路主要实现对输出信号的功率放大,使其有足够的功率驱动输出设备。图中的ULN2803是一个常用的驱动IC,它包含8个驱动器,每个能开关50V,0.5A(直流)。它的应用场合包括继电器驱动器,灯光驱动,显示驱动(LED型和气体填充型),线形驱动等。ULN2003A可以和TTL与5V的CMOS设备直接连接操作。3.5 模拟量I/O模块PLC的模拟I/O模块用于连接可以提供与测量值成比例的电信号的传感器,或连接根据从输出模拟模块接收到的电信号而按比例更改输出的执行器。模拟输入模块包含模数转换(ADC)芯片,把模拟直流信号转换成二进制数;模拟输出模块使用数模转换(DAC)芯片把二进制数转换成与数字值大小成比例的直流电压或电流信号。ADuC841单片机内部集成了高性能的ADC和DAC模块,能方便的实现PLC的模拟I/O模块。3.5.1 ADuC841片上模拟接口【8】1、ADC模块ADuC841片上ADC是8通道12位、单电源供电的ADC模块,转换速率为420kS/s(kilo sample/second,每秒千采样点)。该模块由多路开关、采样/保持电路、片上参考电源、校准电路和ADC本身等组成。所有这些电路都可以用3个专用寄存器进行设置。ADC有两种工作模式,单次或连接转换,可用软件设置,或直接在外部引脚加转换信号。ADuC841的定时器2也可被配置成用于AD转换的重复触发。ADC也可配置成以DMA方式执行,可以在没有CPU干预的情况下将转换结果自动地保存在外部存储器中,最大数据可达16MB。2、DAC模块ADuC841片上集成有两个通道的12位电压输出DAC,每个通道的DAC均有轨对轨(rail-to-rail)电压输出缓冲,能够驱动10k/pF的负载。每个通道都有可两个输出电压范围可选:0VREF(内部2.5V的能隙参考电压)和0VAVDD。每个通道均可以12位或8位模式工作。3.5.2 ADC输入接口电路系统设计了8个通道的模拟输入模块,各通道的结构完全一样,图3-9所示为其中一个通道的输入接口电路。图中引脚AIN1为模拟信号输入端,ADC1连接到ADuC841的一路ADC输入端,中间是模拟输入信号的调理电路。OP491为四只封装的运放组,U2C为其中的单个运放。运放U2C接成电压跟随器的形式,是因为电压跟随器具有高输入阻抗、低输出阻抗的特点,可以起到缓冲和阻抗匹配的作用。R18和C15组成抗混叠(低通)滤波器。串联二极管MMBD7000组成双向过压保护电路,当电压(无论是哪个方向的电压)超过二极管的反向击穿电压时,就会把相应的二极管击穿,形成回路,从而将电源旁路,来保护与之相连的电路上的元器件。3.5.3 DAC输出接口电路ADuC841片上的DAC输出的模拟信号不能直接驱动执行机构,必须先经过信号调理。系统有两个完全一样的模拟输出模块,如图3-10所示为其中一路DAC的输出接口电路。其中DAC1为ADuC841的一路DAC输出,AOUT1连接到执行机构。同ADC输入接口电路一样,U4A、U4B分别为OP491芯片内的单个运放。运放U4A组成电压跟随器,可以起到缓冲、隔离、提高带负载能力的作用。运放U4B组成电压放大电路,放大DAC输出电压信号。3.6 人机界面模块人机界面是在操作人员和机器设备之间做双向沟通的桥梁,用户可以自由的组合文字、按钮、图形、数字等来处理或监控管理及应付随时可能变化的多功能显示屏幕。使用人机界面能够明确指示并告知操作员机器设备目前的状况,使操作变得简单生动,并且可以减少操作上的失误。本系统设计以LCD和薄膜键盘来构成人机界面,实现方案相对简单且成本较低。3.6.1 LCD接口电路液晶显示模块(LCM)是由控制器、行驱动器、列驱动器、显示存储器和液晶显示屏等器件通过PCB组装成一体的低成本输出设备。其核心部件是液晶显示(LCD)控制器,它是可编程接口芯片,一方面提供与微控制器(MCU)的接口,一方面连接行、列驱动器。用户对LCD控制器的编程就是对LCM的操作控制3。液晶显示器(LCD)按其功能可分为笔段式和点矩阵式两种。本系统选用T6963C液晶显示控制器,是目前较常用的一种图形点阵式液晶显示控制器。T6963C把显示存储器分成3个区,分别为文本显示缓冲区、图形显示缓冲区和CGRAM(字符产生器RAM)区。单片机与LCD的接口有直接访问和间接访问两种方式。直接访问方式就是把LCD模块作为存储器或I/O设备直接挂在单片机总线上;间接访问方式就是把LCD模块与单片机的某个I/O接口相连接,单片机通过对该I/O口的操作间接实现对模块的控制。本设计采用直接访问的方式,硬件连接电路如图3-11所示。 T6963C的8位数据端口与单片机的数据总线相连,片选信号来自片选电路的CS3。用单片机的A0与T6963C的CD相连,用于控制T6963C的数据字与控制字的转换。3.6.2薄膜键盘薄膜键盘的实现非常简单,只要将其与单片机的某个输入端口按位相连,再用另一条线与地线相连,按下某个按键,就将对应的端口引脚与地短接,单片机扫描到该端口的低电平信号,就判断有键按下。因此只要将薄膜键盘直接与单片机的某个输入端口和地线相连即可。3.7 控制器技术规格这里所说的技术规格对应于PLC的CPU技术规格,它归纳了某个型号PLC所包含的硬件资源,主要是各存储区的范围与特性。本控制器要模拟PLC的功能,必须模拟PLC中的各存储区。各存储区都用识辩记号加以区分,以字节为单位。经过前面几节对硬件资源的介绍,可以总结出本控制器的技术规格如表3-1所示。存储区名称符号规格数量输入映像寄存器II0.0I3.724点输出映像寄存器QQ0.0Q3.724点模拟量输入AIAIW0AIW168通道模拟量输出AQAQW0AQW22通道变量存储器VVB0VB6364字节位存储器MM0.0M7.764字节定时器TT0T1516字计数器CC0C1516字 表3-1 本控制器的技术规格3.8 硬件设计方案的特色相比于一般的单片机控制系统,本系统的硬件设计方案具有如下两个特色:1、采用3字节地址指针,即24位地址线寻址一般的单片机系统都采用16位地址寻址:由P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据线。16地址总线最大可寻址64K地址空间,在需要扩展较多的外围设备时可能出现地址空间不足的情况。于是我们采用了24位地址总线,最多能寻址16M地址空间,足以满足小型控制系统的需要。2、设计了I/O接口复位功能系统用到片选电路的一路输出CS3与两片82C55A芯片的复位端口(RST)连接,在紧急时刻可用CS3信号将两片82C55A的输入和输出全部复位。此功能在工业控制现场很有应用价值,它使采用软件的方法使系统所有I/O端口复位成为可能。当发生紧急情况时,可以不用将整个系统复位,只需将I/O端口复位即可。3.9 本章小结本章按结构对硬件系统的各功能模块分别进行了介绍,与PLC的硬件体系结构相对应。详细说明了各部分的功能特点、设计思路和设计过程中需要注意的地方。根据控制器的硬件资源情况总结了本控制器作为PLC的技术规格。最后总结了硬件部分的特点。第4章 上位机软件设计与实现上位机软件在WINDOWS平台下用LabVIEW开发。上位机软件要实现三个任务:文本处理、编码转换和通过串口向下位机发送数据。这三个任务都能用LabVIEW比较方便地实现,本章将分别介绍。4.1 文本处理程序上位机软件的主要任务就是将PLC指令编码后发送给下位机。PLC指令由PLC编程软件生成,是一个文本文件。文本处理程序从输入的程序文本中提取出程序的词法符号,为后面的指令编码做准备,这是一个词法分析的过程。为了使词法分析更方便地进行,先进行预处理,删除程序中的注释。4.1.1预处理器在C语言等常用的基于文本的程序开发环境中,预处理器用来完成文件包含、宏替换等功能,PLC程序一般不涉及到多个文件编译和宏定义等功能,因此不需要设计这些模块。本设计中这里所谓的预处理器的功能就是删除文本中的注释行和逗号。在PLC语句表指令文本中,凡是以“/”记号开始的行都是注释语句行。因此删除注释行的功能是在输入字符流中查找“/”记号,当找到后就将该记号及其之后的字符删除,直到遇到一个换行符。重复这一过程直到输入字符流中找不到“/”记号为止。我们可以用两个Match Pattern节点来实现单行注释的删除:第一个节点查找“/”记号,输出“/”记号之后的子串;第二个节点在前一个节点输出的子串中查找换行符,输出换行符之后的子串。这样就删掉了一个注释行。将这两个节点放入while循环结构中,设置while循环结构在处理后的字符流中查找不到“/”记号时停止。预处理模块的框图程序如图4-1所示。删除逗号的功能用到了另一个节点Search and Replace String,这个节点的作用是在输入字符流中查找某个字符串并将其替换为另一个字符串。因此我们用这个节点在经过删除注释处理后的字符流中查找逗号字符,并将它们全部替换为空格符,以便于后面的词法分析。框图程序中最左边的两个节点依次为打开文件节(Open/Create/Replace File)和读文本文件节点(Read from Text File),前者用于打开PLC指令程序文本,后者从文本中读取字符流。4.1.2词法分析器词法分析是将输入的程序分解成一个个独立的词法符号。词法分析器以字符流作为输入,生成一系列的名字、关键字和标点符号,同时抛弃单词之间的空白符和注释【4】。在本文所讨论的情况中,单词即PLC语句表指令的关键字,词法分析器的任务就是要从程序文本中将这些关键字分解出来。程序文本中除了PLC指令之外,还有注释语句和空白、换行符、逗号等分隔符。在上一节中,处理注释语句和逗号的工作已经由预处理器完成,现在只需要将PLC指令关键字从空格、制表符、换行符、回车符中分离出来即可。LabVIEW的字符串运算子模块中有一个Scan String For Tokens节点,可以非常方便地完成这项工作。该节点的图标及其功能和用法如图4-2所示。 词法分析器的程序框图如图4-3所示。经过词法分析环节后输出的就是一个个PLC指令关键字,而且是按原程序中的顺序,可以直接传送至下一个环节进行编码。4.2 指令编码指令编码的目的是将PLC指令按一定的规则转化成一种便于下位存储和识别的方式。本节介绍编码规则和实现。4.2.1编码规则编码实质上是对要处理的源数据按一定的规则进行变换。变换规则就是从源数据到编码的处理模型,根据源数据符号的不同性质或不同格式采用不同的处理模型,其目的是用尽可能的简洁方式来表示复杂的信息。本设计中执行程序的主体是单片机,因此对PLC指令的编码格式特作如下要求:每条指令的编码应是字节的整数倍(这里的字是由8位二进制码组成的)。针对源数据的对象不同,其编码方法不同,由此产生不同的编码。在指令编码中,可采用两种方式的代码:固定长度码和可变长度码。不论何种类型的代码,要使编码器程序对源指令进行转化,必须保证不同的指令其编码不同。本文的设计采用固定长度编码,编码长度由指令数目决定。编码的原则如下:1、根据系统所实现的指令数目确定表示指令的字节长度。2、在确定表示指令的编码的字节长度后,对指令个数进行分析,根据不同的指令,用唯一的编码确定指令。3、在编码中尽量多的包含对应指令的类型信息,以便于下位机对其进行解析。将本系统实现的指令进行编码,如表4-1所示。指令类型操作码二进制码十六进制码指令类型操作码二进制码十六进制码无操作数指令NOP0000000000单操作数指令LDNI0001100119OLD0000000101ANI000110101AALD0000001002ONI000110111BLPS0000001103LDS000111001CLRD0000010004BITIM000111011DLPP0000010105JMP000111101EEU0000011107LBL000111111FED0000100008=0010000020NOT0000100109=I0010000121END000010100AS0010001022WDR000010110BR0010001123单操作数指令LD0001000010SI0010010024A0001000111RI0010010125O0001001012双操作数指令TON1000000080LDN0001001113TOF1000000181AN0001010014TONR1000001082ON0001010115CITIM1000001183LDI0001011016CTU1000010084AI0001011117CTD1000010185OI0001100018CTUD1000011086表4.1 指令操作码编码表除了操作码,还要对操作数进行编码,即根据操作数的类型码I、Q、V、M、T、C等等。操作数代码的编码同样遵循上述编码原则,如表4.2所示。表中x代表0或者1。 根据编码规则,各类型的操作数的取值范围都由本控制器硬件资源的情况来确定。本控制器包含24路数字输入、24路数字输出、8路模拟输入和8路模拟输出等等,对应的I、Q、AI和AQ存储区必须能容纳这些资源。对照第三章表3-1可以看出这个编码表设计的范围的依据。操作数类型二进制码十六进制码操作数类型二进制码十六进制码I000xxxxx001FT1100xxxxC0CFQ001xxxxx203FC1101xxxxD0DFV01xxxxxx407FAI11100xxxE0E7M10xxxxxx80BFAQ1110100xE8E9表4-2 操作数编码表4.2.2编码器实现 在PLC编程软件中,用户根据不同的控制要求编写了PLC梯形图,最终由软件将梯形图转化成了PLC指令程序。PLC指令程序从本质上来说是一个字符流。所要做的就是对这个字符流进行分析,提取出编码所需要的操作符和操作数,然后按照编码表中的一一对应的关系进行编码,最终将编码写入指定的文件中。现在的任务就是要将提取出的关键词一一转化成对应的编码。最直接的方法就是对每一个输入的关键词,将其与编码表中的所有操作码和操作数类型进行比较,找到其匹配的模式,然后转化成对应的编码。要特别说明的是其中操作数的编码,要分成两个部分来进行,即标识符和数字。具体的流程如图4-4所示。4.3 串口通信程序 经过前面几个环节的处理后,PLC指令就转化成了下位机可识别的编码。用户编写的程序经过前面的程序转化后就可以发送给下位机存储,这个环节要通过串口通信来完成。4.3.1 LabVIEW与串口通信串口通信是单片机与PC之间最常用的一种数据传输方式。数据交换有两种方式:并行方式和串行方式。由于单片机的口线有限,因此串行方式是单片机与PC交换数据的重要方式2。 利用LabVIEW中的VISA的串行通信子VI可以快速而方便地建立串口通信程序,共有5个控件:VISAConfigure Serial Port,VISARead,VISAWrite,VISABytes of Serial Port和VISAClose。通过对这几个功能模块进行配置和连接,就能开发出符合要求的LabVIEW串口通信软件。在LabVIEW中进行串口通信的基本步骤是5: 1、初始化端口 利用VISAConfigure Serial Portvi设定进行串口通信的端口号、波特率、停止位、校验、数据位,注意在LabVIEW7 Express中串口号是在VISAresource name中设置的。 2、读写端口 利用VISARead.vi和VISAWrite.vi,从串口中读入或输出数据。由于LabVIEW的串行通信子V1只允许对字符串的读写,因此在数据处理时,必须进行字符串与数字之间的正确转换。 3、关闭端口 用VISAClose节点实现关闭端口的功能。4.3.2串口通信程序设计 LabVIEW串口编程中最关键的就是对上述几个通信子VI属性的设置和通信流程图的连接,程序框图片断如图4-5所示。 将此串口通信程序做成子VI节点,嵌入到前面编码程序中,并将编码输出连接到此子VI的write buffer输入端口,则可以将PLC程序编码发送到串口,实现PLC指令的下载。4.4 上位机软件设计方案的特点 本章所设计的上位机工作方式,为本系统省去了编程软件和编译系统开发的工作,使用西门子编程软件所得语句表程序文本文件,或直接用记事本编辑PLC语句表程序,将指令的解释工作交由下位机完成。 要真正成为一个成熟的产品,本系统还需要在上位机软件方面努力,使之具有完整的用户程序开发功能。但在目前的研究阶段来说,本设计方案已经能够满足系统功能的需要。4.5 本章小结本章介绍上位机软件的设计,包括三部分:词法分析、编码和串口通信,最后总结了该方案的特点。整个软件在Windows平台下用LabVIEW开发,LabVIEW提供的许多强大的工具可以使程序设计过程大大地简化。第5章 下位机软件设计与实现 下位机即基于ADuC841单片机的控制器本体,下位机部分的功能就是模拟PLC运行原理,完成输入处理、目标代码的执行、输出处理等工作。下位机软件即运行于单片机内的软件,它的开发和设计需要使用嵌入式软件的开发方法。5.1 嵌入式软件的开发方式5.1.1嵌入式软件的特点嵌入式系统采用的处理器一般与PC机不同,结构较简单,功耗较低。开发基于PC的应用程序时,通常采用本机开发、本机调试、本机运行的开发方式;而嵌入式系统的软件开发绝大多数采用宿主机开发、宿主机与目标机之间交叉调试、目标机运行的开发方式。本设计中所开发的下位机软件就是在PC上用Keil C51开发、调试,然后通过串口下载到单片机上运行。在本设计中,宿主机就是PC机,目标机即控制器本体。5.1.2交叉开发方法交叉开发系统有3部分组成:主机、目标机和通信系统。其中主机执行编译、链接、定址等过程,而目标机运行嵌入式软件。交叉开发技术己成为嵌入式软件开发的主要方式。其开发步骤如下:1、在宿主机平台上面编写程序代码;2、固化监控器至目标机上;3、使宿主机与目标机连接;4、编译连接应用程序,生成可执行代码;5、将可执行代码下载到目标机(常加载至目标机的ROM中);6、开发人员使用交叉调试器进行调试;7、如果程序调试没有发现异常,则转至第11步;8、调试程序时发现错误,则利用交叉调试器定位错误;9、修改错误代码;10、重复410步;11、将目标机程序固化至目标机上。交叉调试技术的应用,降低了嵌入式软件的调试难度,提高了嵌入式软件人员的工作效率【1】。5.1.3开发工具介绍1、编程语言最广泛使用的嵌入式系统的开发语言主要有两种:汇编语言和C语言。C语言是一种结构化的高级语言。其优点是可读性好,移植容易。对于复杂系统用高级语言来开发会比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论