《嵌入式系统硬件平台的软件PLC实现方法.docx》由会员分享,可在线阅读,更多相关《嵌入式系统硬件平台的软件PLC实现方法.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统硬件平台的软件PLC实现方法网络转载导语:嵌入式软PLC最突出的特点是,借助于嵌入式系统的硬件平台用软件的方法实现标准PLC的功能,代替专用控制器,构造开放,开发周期短、本钱低,具有良好的应用前景。1嵌入式软的总体构造嵌入式软PLC与嵌入式系统分享一个CPU,PLC和嵌入式系统之间没有多余的导线连接,增加了系统的可靠性,易于实现很多高级功能。PLC中的信息也能通过嵌入式系统的显示屏显示,通过嵌入式系统的编辑键可方便地对PLC进展编辑操纵。1.1嵌入式软PLC的硬件构造外部输入的开关量经过光电隔离后连接到FPGA的I/O口,通过FPGA地址译码,FPGA通过数据地址总线与CPU相连。这
2、样CPU就可以通过数据地址总线获得和设置输入量的工作状态,硬件原理框图如图1所示。1.2嵌入式软PLC的软件构造嵌入式软PLC程序包括两类:一类是编辑状态,实现PLC程序的输入和编译功能;另一类是面向消费经过的应用程序。系统软件构造由4局部组成,分别是编辑模块、编译模块、执行模块和监控模块。软件PLC系统模块间的数据流程如图2所示。2系统关键组成局部的设计与实现2.1梯形图编辑器Qt/Embedded是著名的Qt库开发商Trolltech推出的面向嵌入式系统的Qt版本。Qt/Embedded具有可移植性强和支持跨平台开发等优点。本系统采用Qt编写界面,梯形图编辑器的界面如图3所示。2.1.1梯
3、形图的数据构造设计梯形图编辑具有方便、逻辑直观的特点,梯形图编辑器借助于梯形图的内部数据构造来实现显示、插入、删除、代码转化等功能。PLC语言中,各种元素包括单个节点如常开触点、常闭触点等和逻辑块如与逻辑块、或者逻辑块,它们都含有一样的操纵,如插入、删除、绘图等。可以把组成梯级的各个逻辑块看成组成梯级的各个局部,把组成逻辑块的子逻辑块和单个节点看成是组成逻辑块的各个局部,符合“局部一整体的层次构造。可以采用面向对象的设计思想,使用composite形式递归地创立树状构造。使用组合构造,可以把一样的操纵应用在组合和个别的对象上。大多数情况下,可以忽略对象组合和个别对象之间的差异,简化程序代码,增
4、强了软件的可维护性。采用composite形式的类图如图4所示。图中:LadderElement是一个抽象类,为组合对象的接口。代表梯形图语言的任何一个图形元素,它既可以代表元件又可以代表逻辑块,在适当的情况下可以实现所有类共同的缺省行为,如绘图和代码转换等;LadderCell为所有元件类如常开触点、常闭触点、输出、置位、复位的基类;LadderBlock为所有逻辑块如与逻辑块类、或者逻辑块类等的基类。图5为一个梯级和它对应的数据构造,OrBlock为或者逻辑块类的对象,AndBloek为与逻辑块类的对象,Rung为梯级类的对象。此外,为了可以方便地进展绘图和编辑,引入了一个空元件类。它的作
5、用是梯形图中的程度连接线,实现方法是继承LadderCell类,重新实现成员函数Draw来画一条程度的线段。2.1.2编辑功能的设计与实现定义构造体:将屏幕分割成一定数目的小的区域,并创立含有一样数目的二维数组。当绘制元件时,将元件、元件所在的逻辑块和元件所在的梯级指针保存到数组中,通过光标在屏幕上的坐标可以获得二维数组的下标,进而可以获得光标所在的元件、逻辑块和梯级在内存中与之相对应的对象。梯形图的编辑通过改变其在内存中的数据构造来实现,在数据构造被改变后,重新绘图。对梯形图的编辑包括:插入元件、插入分支、插入梯级、删除元件和删除梯级等。篇幅所限只作扼要介绍。删除元件:删除LadderBlo
6、ck中的一个元件Ladder一CellA后,假如LadderBlock中只剩下一个LadderCellB时,LadderCellB取代LadderBlock的位置,插入到LadderBlock的父LadderBlock中;假如LadderBlock中只剩下一个LadderBlockB,那么将LadderBlockB的所有LadderElement插入到LadderBlock的父LadderBlock中。图5中的梯级删除元件X004后梯形图和其数据构造变为图6所示的情况。插入分支:通过光标在屏幕上两次选择分支的起始和完毕位置,这两个位置必须属于同一个AndBlockA。起始和完毕位置选择后,将两
7、个位置间的LadderElement作为分支构成一个AndBlockB并计算出AndBlockB所占的列数n,然后新建一个表示插入分支的AndBlockC,AndBlockC中插入n个空元件。建一个OrBlock并将AndBlockB和AndBlockC插入到0rBlock中。OrBlock即表示插入分支后的或者逻辑块。OrBlock取代两次选中之间的元素在它们的父逻辑块中的位置,然后根据修改后的数据构造画图得到插入分支后的梯形图。图7为在M001和X006插入分支前后梯形图的变化。2.2指令表编译器的设计与实现实现对PLC编程语言的高效、可靠的编译,是研制开发嵌入式PLC系统的一项关键性任务
8、。传统的开发方法是用高级语言自行开发专用的PLC指令编译器,需要对每个程序字和程序规那么编写识别和相应的处理程序,工作量大、开发周期长,轻易产陌生漏,可维护性很差。为了进步软件的开发效率,保证软件质量,增强软件的可维护性,采用通用编译工具Lex8LYacc开发PLC指令编译器。2.2.1LexYacc简介Lex8LYacc是美国贝尔实验室用C语言研制的词法分析程序和语法分析程序的自动生成工具,是目前使用最广泛的编译软件之一。Lex是词法分析程序生成器,Yacc是语法分析程序生成器。它们可以根据用户提供的词法、语法标准文件,自动转化为多种高级语言源代码,如C或者C+等。2.2.2编译器总体构造所
9、谓“遍,是对源程序或者其等价的中间语言程序从头到尾扫描并完成规定任务的经过。本系统的编译经过包含三遍,分别进展词法分析、语法分析和代码转换。2.2.3词法分析器设计指令表源程序可以简单地被看成一个多行的字符串。词法分析器从上到下、从左到右逐个字符地对源程序进展扫描,产生一个个单词符号,把字符串的源程序改造成为单词符号串的中间程序,用于随后的语法分析。本系统的词法分析器有两种工作状态:一是从头到尾对源程序进展扫描,检查出所有的词法错误;二是当没有词法错误时,从头到尾对源程序进展扫描,将识别出的单词符号输入给语法器。2.2.4语法分析器设计1PLC指令表语言的语法描绘分析PLC指令程序构造,提取隐
10、藏在指令代码中的构造信息,这种信息中往往会有操纵指令被隐含地表达出来。例如:指令OR/0RB与梯形图中的并联构造对应,而AND/ANB那么与梯形图中的串联构造对应。局部PLC指令语句的文法用巴科斯范式描绘如下:按照yacc的语法规那么,对应于巴科斯范式描绘写出yacc源程序后,用“yacc-dvplcil.y指令转换成语法分析器的C语言源程序yyparse。2将PLC指令表转换为二进制代码PLC指令表源程序的二进制文件格式为:每条指令的二进制编码占32位,操纵符的编码与元件编码相加作为目的代码的高16位,低16位为元件的编号。例如,操纵符LD的编码为0xFF00,元件X的编码为Ox01,指令L
11、DX1的编码为0xFF010001。指令表编译器的代码转换功能由yacc源程序规那么的动作局部来实现。当语法分析器识别出一条完好的指令时,就将其对应的二进制代码保存到文件中。3将PLC指令表转换为树形构造Yacc语法分析程序通过寻找可以匹配目前为止所看到的标记的规那么来工作。Yacc处理语法分析程序时创立了一组状态,每个状态都反映一个或者多个局部地被分析的规那么中的一个可能的位置。当语法分析程序读取标记时,每次它读取一个没完成规那么的标记,就把它压入内部堆栈中并切换到一种反映它刚刚读取的标记的新状态。这个动作称为移进shift。当它发现组成某条规那么右侧的全部符号时,它就把右侧符号弹出堆栈,而
12、将左侧符号压入堆栈中,并且切换到反映堆栈上新符号的新状态。这个动作成为规约reduction。当yacc规约规那么时,它都执行与这条规那么有关的用户代码。利用堆栈的思想实现指令表语言向梯形图树形构造的转换。自定义一个栈Stack,可以压入和弹出指向LadderElement类型的对象的指针。在进展代码转换时,栈Stack动作与语法分析栈的动作不同。当yacc解析到如LD/LD1、AND/ANI等含有元件的指令语句时,将这些指令中的元件入栈如上述代码中的B、C行,逻辑块的构造在其对应的语法规那么的动作局部实现。2.3执行模块的设计与实现2.3.1逻辑运算算法推导下面列一段简单的PLC程序来介绍逻
13、辑运算算法的推导经过:LDX10RX6ORIM1OUTY5LDIY5ANDX7ORM2ANIX100RIM3OUTM4END定义0R、ORI、ORB的或者操纵为加法“+,AND、ANI、ANB的与操纵为乘法“*,取反操纵为“。那么上述程序清单中的输出Y5和M103分别即是:上式的所有运算符只会连接两个变量或一个变量和一个表达式。由于扫描经过是顺序执行的,因此可以为上述计算经过建立计算堆栈。建立递增的堆栈,那么计算经过和堆栈中的数据变化如表1所列。2.3.2执行模块的实现本系统的执行模块是由RTLinux的实时线程模块来实现的,它运行于内核态。系统开机立即加载执行模块,并将PLC的二进制代码从文件中复制到分享内存中,执行模块解释分享内存中的PLC指令表的二进制代码,按照用户输入的逻辑,完成开关量的控制,工作流程如图8所示。3小结嵌入式软PLC最突出的特点是,借助于嵌入式系统的硬件平台用软件的方法实现标准PLC的功能,代替专用控制器,构造开放,开发周期短、本钱低,具有良好的应用前景。固然文中PLC指令采用的是日本三菱公司FX2N可编程控制器系列指令,但是只需稍作修改即可用于其他厂商的产品。目前该嵌入式软PLC已成功应用于数控铣床中,完全知足控制要求。