产品描述
西门子模块6ES7368-3BB01-0AA0参数方式
为了便于对工业设备的运作进行统一监控,生产上经常需要通过一台PC与多台PLC(Programmable Logic Controller)进行数据交换,特别是通过PLC将现场设备的一些关键参数传输到PC上并显示出来。为了迎合顾客的这个需求,各大PLC生产厂家都花大力气开发出了一系列以各类协议为基准的功能强大的管理软件,譬如Siemens公司开发的WINCC应用软件,其功能就令人眼花缭乱。
但同时应该指出的是,这些软件大都价格昂贵,而且其繁多的功能在许多小规模的生产场合或是教学使用中也并不十分必要,种种实际因素的限制使得购买这些软件对于很大一部分用户来说是不合算的。在这样一个背景下,开发一个简易实用的通信程序就体现出一定的。
本设计的主要目的是要满足中小用户及教学中利用PC对PLC进行监控的需要。在实现通信的过程中,PLC被设置为Freeport自由口通信模式,所以用户只需要使用普通的PC和PLC,以PC/PPI电缆外加双绞线将其依次连接就可以了。另外本设计中用到的PC至少要有一个串行通信口,PLC方面则主要是以带DP口的Siemens S7 200 系列PLC为例进行说明。
本软件在功能上主要包括PLC->PC和PC->PLC两部分,在实际编写时PC和PLC两方面均须编程。其中PC程序用Visual Basic6.0编写,以其自带的MSComm通信控件作主要的通信控制,PLC程序则在STEP7 MicroWIN环境中编写。同时定一台PC与七台PLC进行通信。
整个软件实现的基本功能就是当用户需要读取数据时,在控制界面(如图1)上选择某台PLC并点击“接收数据”按钮后,相应PLC将会把存储在发送区的数据发送过来,发送结束后,数据接收框显示“数据接收完”;当用户需要发送数据给某台PLC时,也先选择需要的PLC,再在数据发送框中填入要发送的数据,点击“发送数据”按钮,PC就会将用户填入的数据送到PLC中接收数据区,PLC同时还会把接收到的这个数据显示出来。并且整个程序可以很方便地进行功能扩展。
下面就分别从PC和PLC两个方面具体说明通信的实现过程。
这里,PC程序是占主导地位的,其流程图示于图2。由PC程序来传达用户究竟是要进行读还是写操作,以及具体对哪台PLC进行操作。这几项命令在软件中由一个控制字来表达,其定义如图3。
当PC方面程序开始运行后,MSComm控件将把串口初始化,而后程序等待用户选择要进行操作的PLC并点击“发送数据”或“接收数据”按钮。根据用户的操作,程序会自动生成一个相应的控制字,并将其传送给PLC。如果此时用户是要读取某台PLC的数据,则PC在发送完控制字后会停下来等待相应PLC将数据发送过来。一旦接收到数据,PC会判断是否结束帧,如不是,就将此数据装入数据接收区,然后发送确认帧给PLC,并把接收到的数据在控制界面上的接收数据框中显示出来提供给用户。如果是结束帧,PC就会显示在数据接收框中显示出“数据接收完”,而后程序停止运行直至用户再次进行操作。
如果用户是要向某台PLC发送数据,PC将会在发送完相应控制字后打开一个定时器,时间到后便读取PLC已经送来的EOF文件结束字符(ASCII码为26)。读取这个字符可以触发MSComm的OnComm事件,并使其CommEvent属性值为comEvEOF。这样,通过一个以CommEvent为表达式的条件分支语句就可以使程序转入发送有效数据(即用户写入控制界面上发送数据框的数据)的操作。这里设置定时器的目的会在下面介绍PLC方面程序时予以具体说明。PC执行完发送程序段就会暂停下来等待用户的下一步指示。
PLC在初始化结束之后就根据PC送来的控制字进行相应的操作,其程序流程图如图4所示。PLC将接收到的控制字拆分,判断出用户的具体要求,然后调用相应的子程序。如用户需要读取数据,PLC将会把存储在发送缓冲区的数据依次发送过来。每次发送完一个数据后,PLC就等待PC发一个确认帧过来,只有接收到这个确认帧,PLC才会将下一个数据发送出去,以此保通信双方保持同步。并且,PLC在每次发送数据前要检验一下这个数据是不是结束帧,由于在预处理PLC的发送表时将其统统装入了结束帧,而后才从头依次装入有效数据,故一旦有效数据发完,PLC必然会发出一个结束帧。当PLC检测到要发送的是结束帧后将会把这个结束帧发出,然后程序暂停运行直至PC再次送来读/写指令。
如果用户是要进行写操作,PLC在对控制字进行相应判断后,将会发送一个EOF给PC,以此触发PC发送有效数据。提到了在PC程序中设置定时器,其目的是要保证PC能够地读到PLC发来的EOF,由于程序的运行是需要一定时间的,故PLC不可能在PC发送完控制字后立即回送EOF。根据笔者的测试,设置定时器在2s左右是比较合适的。PLC在接收完数据后就会停下来等待PC发送新的控制字。
由于采用了事件驱动的Visual Basic为编程语言,并且还用到了它自带的MSComm通信控件进行对的主要控制,整个软件体系思路清晰,代码易于编写,并且在功能上很容易进行扩展。以此设计中软件为蓝本,用户可以方便地根据自身具体需要开发出加符合自己要求的软件,而在硬件方面就根本不需要添加什么设备。
1嵌入式软PLC的总体结构
嵌入式软PLC与嵌入式系统共享一个CPU,PLC和嵌入式系统之间没有多余的导线连接,增加了系统的性,易于实现许多功能。PLC中的信息也能通过嵌入式系统的显示屏显示,通过嵌入式系统的编辑键可方便地对PLC进行编辑操作。
1.1 嵌入式软PLC的硬件结构
外部输入的开关量经过光电隔离后连接到FPGA的I/O口,通过FPGA地址译码,FPGA通过数据地址总线与 CPU相连。这样CPU就可以通过数据地址总线获得和设置输入量的工作状态,硬件原理框图如图1所示。
1.2嵌入式软PLC的软件结构
嵌入式软PLC程序包括两类:一类是编辑状态,实现PLC程序的输入和编译功能;另一类是面向生产过程的应用程序。系统软件结构由4部分组成,分别是编辑模块、编译模块、执行模块和监控模块。
软件PlC系统模块间的数据流程如图2所示。
2 系统关键组成部分的设计与实现
2.1梯形图编辑器
Qt/bbbbbded 是的Qt库开发商Trolltech推出的面向嵌入式系统的Qt版本。Qt/bbbbbded具有可移植性强和支持跨平台开发等优点。本系统采用Qt 编写界面,梯形图编辑器的界面如图3所示。
2.1.1梯形图的数据结构设计
梯形图编辑具有方便、逻辑直观的特点,梯形图编辑器借助于梯形图的内部数据结构来实现显示、插入、删除、代码转化等功能。
PLC语言中,各种元素包括单个节点(如常开触点、常闭触点等)和逻辑块(如与逻辑块、或逻辑块),它们都含有相同的操作,如插入、删除、绘图等。可以把组成梯级的各个逻辑块看成组成梯级的各个部分,把组成逻辑块的子逻辑块和单个节点看成是组成逻辑块的各个部分,符合“部分一整体”的层次结构。可以采用面向对象的设计思想,使用composite模式递归地创建树状结构。使用组合结构,能够把相同的操作应用在组合和个别的对象上。大多数情况下,可以忽略对象组合和个别对象之间的差别,简化程序代码,增强了软件的可维护性。采用composite模式的类图[1]如图4所示。
图中:LadderElement是一个抽象类,为组合对象的接口。代表梯形图语言的任何一个图形元素,它既可以代表元件又可以代表逻辑块,在适当的情况下可以实现所有类共同的缺省行为,如绘图和代码转换等;LadderCell为所有元件类(如常开触点、常闭触点、输出、置位、复位)的基类;LadderBlock为所有逻辑块(如与逻辑块类、或逻辑块类等)的基类。
图 5为一个梯级和它对应的数据结构,OrBlock为或逻辑块类的对象,AndBlock为与逻辑块类的对象,Rung为梯级类的对象。
此外,为了能够方便地进行绘图和编辑,引入了一个空元件类。它的作用是梯形图中的水平连接线,实现方法是继承LadderCell类,重新实现成员函数Draw()来画一条水平的线段。
2.1.2编辑功能的设计与实现
将屏幕分割成一定数目的小的区域,并创建含有相同数目的二维数组。当绘制元件时,将元件、元件所在的逻辑块和元件所在的梯级指针保存到数组中,通过光标在屏幕上的坐标可以获得二维数组的下标,从而可以获得光标所在的元件、逻辑块和梯级在内存中与之相对应的对象。
梯形图的编辑通过改变其在内存中的数据结构来实现,在数据结构被改变后,重新绘图。对梯形图的编辑包括:插入元件、插入分支、插入梯级、删除元件和删除梯级等。篇幅所限只作简要介绍。
删除元件:删除LadderBlock中的一个元件 Ladder—Cell(A)后,如果LadderBlock中只剩下一个LadderCell(B)时,LadderCell(B)取代 LadderBlock的位置,插入到LadderBlock的父LadderBlock中;如果LadderBlock中只剩下一个 LadderBlock(B),则将LadderBlock(B)的所有LadderElement插入到LadderBlock的父 LadderBlock中。图5中的梯级删除元件X004后梯形图和其数据结构变为图6所示的情况。
插入分支:通过光标在屏幕上两次选择分支的起始和结束位置,这两个位置属于同一个AndBlock(A)。起始和结束位置选择后,将两个位置问的LadderElement作为分支构成一个AndBlock(B)并计算出AndBlock(B)所占的列数n,然后新建一个表示插入分支的AndBlock(C),AndBlock(C)中插入n个空元件。建一个 OrBlock并将AndBlock(B)和AndBlock(C)插入到OrBlock中。OrBlock即表示插入分支后的或逻辑块。OrBlock 取代两次选中之间的元素在它们的父逻辑块中的位置,然后根据修改后的数据结构画图得到插入分支后的梯形图。图7为在M001和X006插入分支前后梯形图的变化。
2.2指令表编译器的设计与实现
实现对PLC编程语言的、的编译,是研制开发嵌入式PLC系统的一项关键性任务。传统的开发方法是用语言自行开发的PLC指令编译器,需要对每个程序字和程序规则编写识别和相应的处理程序,工作量大、开发周期长,容易产生疏漏,可维护性很差。为了提高软件的开发效率,保证软件质量,增强软件的可维护性,采用通用编译工具 Lex&Yacc:开发PLC指令编译器。
2.2.1Lex&Yacc简介
Lex&Yacc是美国贝尔实验室用C语言研制的词法分析程序和语法分析程序的自动生成工具,是目前使用广泛的编译软件之一。Lex是词法分析程序生成器,Yacc’是语法分析程序生成器。它们可以根据用户提供的词法、语法规范文件,自动转化为多种语言源代码,如C或C++等。[2]
2.2.2编译器总体结构
所谓“遍”,是对源程序或其等价的中间语言程序从头到尾扫描并完成规定任务的过程[2]。本系统的编译过程包含三遍,分别进行词法分析、语法分析和代码转换。
2.2.3词法分析器设计
指令表源程序可以简单地被看成一个多行的字符串。词法分析器从上到下、从左到右逐个字符地对源程序进行扫描,产生一个个单词符号,把字符串的源程序改造成为单词符号串的中间程序,用于随后的语法分析。
本系统的词法分析器有两种工作状态:一是从头到尾对源程序进行扫描,检查出所有的词法错误;二是当没有词法错误时,从头到尾对源程序进行扫描,将识别出的单词符号输入给语法器。
2.2.4语法分析器设计
(1)PLC指令表语言的语法描述
分析PLC指令程序结构,提取隐藏在指令代码中的结构信息,这种信息中往往会有操作指令被隐含地表达出来。例如:指令OR/ORB与梯形图中的并联结构对应,而AND/ANB 则与梯形图中的串联结构对应。
部分PLC指令语句的文法用巴科斯范式描述如下
按照yacc的语法规则,对应于巴科斯范式描述写出yacc源程序后,用 “yacc-dv plcil.y”指令转换成语法分析器的C语言源程序yyparse。
(2)将PLC指令表转换为二进制代码
PLC 指令表源程序的二进制文件格式为:每条指令的二进制编码占32位,操作符的编码与元件编码相加作为目标代码的高16位,低16位为元件的编号。例如,操作符LD的编码为0xFF00,元件X的编码为Ox01,指令LD X1的编码为OxFF010001。
指令表编译器的代码转换功能由 yacc源程序规则的动作部分来实现。当语法分析器识别出一条完整的指令时,就将其对应的二进制代码保存到文件中。
(3)将PLC指令表转换为树形结构
Yacc语法分析程序通过寻找可以匹配目前为止所看到的标记的规则来工作。Yacc处理语法分析程序时创建了一组状态,每个状态都反映一个或多个部分地被分析的规则中的一个可能的位置。当语法分析程序读取标记时,每次它读取一个没完成规则的标记,就把它压入内部堆栈中并切换到一种反映它刚刚读取的标记的新状态。这个动作称为移进(shift)。当它发现组成某条规则右侧的全部符号时,它就把右侧符号弹出堆栈,而将左侧符号压入堆栈中,并且切换到反映堆栈上新符号的新状态。这个动作成为规约(reduction)。当yacc规约规则时,它都执行与这条规则有关的用户代码。[4]
利用堆栈的思想实现指令表语言向梯形图树形结构的转换。自定义一个栈Stack,可以压入和弹出指向Lad— derElement类型的对象的指针。在进行代码转换时,栈Stack动作与语法分析栈的动作不同。当yacc解析到如LD/IDI、AND/ANI等含有元件的指令语句时,将这些指令中的元件入栈(如上述代码中的B、C行),逻辑块的构造在其对应的语法规则的动作部分实现。
2.3执行模块的设计与实现
2.3.1逻辑运算算法推导
下面列一段简单的PIC程序来介绍逻辑运算算法的推导过程:
①LDX1
②ORX6
③ORIM1
④OUT Y5
⑤LDIY5
⑥AND X7
⑦ORM2
⑧ANI X10
⑨ORIM3
⑩OUT M4
⑩END
定义OR、ORI、ORB的或操作为加法“+”,AND、ANI、ANB的与操作为乘法“*”,取反操作为“[]”。则上述程序清单中的输出Y5和M103分别等于:
Y5=X4+X6+[M1]
M4=([Y5]*x7+M2)*[X10]+[M3]
上式的所有运算符只会连接两个变量或者一个变量和一个表达式。由于扫描过程是顺序执行的,因此可以为上述计算过程建立计算堆栈。建立递增的堆栈,则计算过程和堆栈中的数据变化如表1所列。
2.3.2执行模块的实现
本系统的执行模块是由RTLinux的实时线程模块来实现的,它运行于内核态。系统开机立即加载执行模块,并将PLC的二进制代码从文件中复制到共享内存中,执行模块解释共享内存中的PLC指令表的二进制代码,按照用户输入的逻辑,完成开关量的控制,工作流程如图8所示。
3 小结
嵌入式软PLC的特点是,借助于嵌人式系统的硬件平台用软件的方法实现标准PLC的功能,代替控制器,结构开放,开发、,具有良好的应用前景。虽然文中PLC指令采用的是日本三菱公司 Fx2N可编程控制器系列指令,但是只需稍作修改即可用于其他厂商的产品。目前该嵌入式软PLC已成功应用于数控铣床中,满足控制要求。
随着社会老龄化的日益加剧,对老年人健康的关心已经成为重要的社会问题。另外,一些突发性疾病和家庭保健,如疾病、孕妇、胎儿、婴儿、幼儿的保健也需要长期的家庭监护。所以,研究基于公用网络的家庭医疗监护,建立小区医疗网络,从而组成一个医院护理系统网络,不仅可以增加病人的性和人们的生活质量,还能使医院有效地提高管理人员、医生和护士的工作效率,协调相关部门有序工作。
在某些情况下,使用有线方式的监护系统的实施成本将远远过购买监护设备所花费的费用。例如,在一个多社区医疗监护网络中,把实时监护病人的生理参数传输到远程监控及所有数据的远程备份,都是一笔庞大的开支,维护成本是惊人。虽然引入无线监护网络,可以解决一些问题,但基于蓝牙、GPRS 等技术的社区医疗监护系统存在相应的不足之处,如无线辐射的性、无线终端的快速移动、无缝漫游和无线网络成本等等。
ZigBee 技术的出现为传感器信号的无线传输提供了新的解决方案。ZigBee节点有几十米的覆盖范围,且可以增加路由节点,扩展覆盖范围,另外它还具无线辐射小、传输数据和等优点,因此适用于家庭住宅。同时由于生理监护信号的流量不大,传输速率为250kbit/s的ZigBee能够满足生理要求。ZigBee传感节点可自由灵活地加入和离开网络,具有低功耗和的特点。此外,电力线具有高速(骨干网速度已经达到了上百Gbit/s)、以电力输电线路作为传输载体(目前我国拥有全世界长度排名二的电力输电线路)等优点,并且电力线载波通信被国外传媒喻为“未被挖掘的金山”。我们可以看到,如果把ZigBee和PLC技术的结合起来,它不仅现有社区医疗监护系统的一些弊端,缓解了居民对医疗监护的需求,还很符合并不富裕的中国。
社区监护系统的总体构架
该社区监护系统主要分为三部分,如图1所示。部分由若干个基于ZigBee无线网络的家庭监护单元组成,其中,无线通讯节点根据功能不同分为:无线传感器节点和PAN协调节点,无线传感器节点具有用户随身携带和可移动性的特征,主要负责采集人体的重要生理参数;而PAN协调节点主要负责收集重要生理参数,并通过二部分,也就是电力线网络部分将这些参数发送到监护(即三部分),这样,由的医护人员来实现对数据的统计和观察,提供相关咨询务,达到远程医疗的目的。
2009-12-21 11:12:39 上传下载附件 (19.34 KB)
社区监护系统的硬件结构分为:无线传感器节点、PAN协调节点(包括射频通信模块和电力线传输模块)和监护。系统的结构示意图如图2所示。
2009-12-21 11:12:39 上传下载附件 (14.72 KB)
社区监护系统的硬件设计
ZigBee传感节点的硬件设计
基于ZigBee无线网络的家庭监护单元由于应用环境主要是家庭,网络覆盖范围小,因此可直接采用星型拓扑结构,即网络主要由 3~5 个传感器节点,即 RFD 节点(Reduce Function Device,简称 RFD)和一个主节点,即FFD 节点(Full Function Device)组成。虽然 RFD 节点和 FFD 节点实现具体功能的不同,但为了增加通用性和方便维护,传感器节点的基本电路相同。本文采用Freescale公司推出符合ZigBee 标准的MC13192射频芯片。由于MC13192的射频信号采用差分方式,而倒F型天线为单端天线,所以在芯片和天线之间使用巴伦电路,以达到收发效果。本方案使用了巴伦电路芯片LDB212G4020C。UPG2012TK是射频开关,工作频率为0.5~2.5GHz,具有非常低的介入损耗和很高的隔离性能;封装形式为6引脚的短引脚小型贴片封装,可减小电路板占用面积。
另外,由于TI MSP430 系列单片机是一种低功耗的混号控制器,其中包括一系列器件,针对不同的应用而由不同的模块组成。这些微控制器可用电池供电,而且使用时间长。具有 16 位 RISC 结构,CPU 中的16个寄存器和常数发生器使 MSP430 微控制器能达到的代码效率;灵活的时钟源可以使器件达到的功耗;数字控制的振荡器(DCO)可使器件从低功耗模式唤醒,在少于6s的时间内到活跃的工作方式。是一种低功耗类型的单片机,特别适合于电池应用的场合或手持设备。其中,MSP430F449单片机内部集成了60kB FLASH 存储模块,2kB RAM,6个I/O端口以及12位模数转换模块ADC12等。较小的封装和低的功耗使其可以理想地与MC13192 结合,作为基于ZigBee 技术的无线传感器网络节点。
MSP430F449和MC13192 通过SPI 总线连接。MSP430F449的SPI 接口工作在主机模式,是的控制方;MSP430F449设为从机模式。MSP430F449通过4 线SPI接口对MC13192 的内部寄存器进行读写操作,从而完成对MC13192 的控制以及数据通信。
电力线调制解调器
力合微电子具有电力线通信与控制基于多载波快速跳频的技术,专门针对国内电网环境而设计,具有较好的抗干扰性能,实现电力线与控制。其芯片LME2200使用灵活、方便,为各种电力线通信与控制应用提供了一款优化的芯片方案。因此本文采用了LME2200芯片,调制解调器的硬件框图如图3所示。
2009-12-21 11:12:39 上传下载附件 (14.48 KB)
该电路由信号发送电路、信号接收电路和过零检测电路等组成,基本电路如图4所示。
2009-12-21 11:12:39 上传下载附件 (27.95 KB)
从图4可以看出,发送电路由一个低通滤波器和一个功放构成。低通滤波器的作用是滤除高频信号成分并平滑DAC输出信号的波形,功率放大器 (PA)的输出通过一个耦合变压器连接到电力线上,滤波器的带宽由使用的载波频率所决定。对功率放大器的要求是经过变压器后在2~100欧姆的阻抗下获得 1-2Vrms的信号电平。另外,LME2200C支持半双工工作模式。当发送时(TX_BUSY低电平)用于打开功放,而在接收时(TX_BUSY为高电平)关闭功放以提高接收阻抗。而在接收通路中,经耦合变压器获得的信号送片内放大器放大,然后经片外带通滤波器后送芯片RXIN输入端,由片内完成数据包的接收。过零电路输出一个方波信号,它的上升沿在工频信号的过零处,此信号被用作LME2200C的SYNC同步输入,并作为收发同步的基准。
软件设计
① ZigBee传感节点的软件设计
ZigBee传感节点主要负责采集被监护人的生理数据,并将这些数据传送给协调器,同时,接收来自协调器的相关指令,并根据这些指令进行相关操作(包括自动发送生理参数命令以及提示按时服药等命令)。当没有执行相关指令时,转入休眠模式,节点功耗降到。ZigBee传感节点的软件流程如图5所示。
②PAN协调节点的软件设计
PAN协调节点作为整个网络中的协调器,按功能可分为两个部分,网络维护功能和功能。网络维护方面主要是负责组建ZigBee网络、分配网络地址及维护绑定表。
方面主要转发监护对ZigBee传感节点的命令,以及定时要求地ZigBee传感节点将生理数据发送数据给它,并转发到监护。PAN协调节点基本流程,如图6所示。
③监护软件设计
由于本系统还处于实验阶段,所示只是把监护软件作为性能测试的演示系统。只是采用VC++6.0对该系统用户界面和数据库部分进行编程,它采用循环轮询的方式显示各个监护终端设备发来的生理参数,主界面如图7所示。
结语
社区监护系统在小规模实验中的调试结果表明:该系统能够准确地实现家庭医疗监护功能,通信稳定,抗干扰能力强,功耗小,,个人监护终端设备体积小巧。在实验室内,网络协调设备和个人监护终端设备之间的距离可达70m,并且满足的实时性、性的要求。本文社区监护系统的实现,为社区监护系统的研究和发展提供了实验平台,也为其发展奠定了一定的基础。
产品推荐