西门子6ES7223-1PH22-0XA8代理订购
0、前言
随着数字信息技术和网络技术的高速发展,人类正步入一个崭新的后 PC时代。这个时代的主要特点是嵌入式系统无处不在,并不断地向科研生产及人类生活的各个方面渗透。而可编程控制器(PLC)对机床开关量信号进行控制时可靠性高,使用方便,在大多数数控机床,特别是经济型数控机床中,要求的输入输出点数不多的情况下得到广泛应用。在兼用PC机系统资源的情况下,采用非实时多任务操作系统(如bbbbbbs)时,Win32 API的设计可以满足多控制点复杂的数控功能要求,但由于bbbbbbs 的分时性,没有考虑到实时环境的开发
用途,其系统调用的效率不高,不能满足数控系统高实时场合PLC 控制的实时性要求。
VxWorks作为一运行在目标机上的高性能、可裁减的嵌入式实时操作系统,目前以其良好的可靠性和zhuoyue的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域。
本文基于 VxWorks 操作系统,提出了基于VxWorks 的嵌入式实时PLC 设计的方法与应用,利用VxWorks的开放性、模块化和可扩展性的系统结构特性以及多线程/多任务的系统环境来达到高实时要求的PLC控制,在保证实时性的实现多点位、复杂功能的PLC系统控制目标。
1、传统 PLC 系统的结构
相比较传统的的基于通用工业 PC 的工业PLC,其数控系统嵌入式PLC 硬件包括:工控机及其外围设备,基于ISA总线的开关量输入输出接口卡,光电隔离模块,继电器输出模块。其结构如图1 所示。
工控机采用 bbbbbbs 等非实时操作系统,数控系统的人机界面、数控代码处理、轨迹划、参数管理以及PLC控制都通过工控机由软件来实现,不需要独立的NC 控制器,减少了数控系统对硬件的依赖,有利于提高系统的开放性。I/O输入输出信息通过PC 机I/O 接口卡实现主机与伺服接口模块和I/O 接口模块之间的信息交换,PC 机I/O 接口卡基于ISA或PCI的总线。其相较初的单片机的控制加入了工业PC 来拓展其开放性,由于没有充分利用PC机系统资源,而开发和运行都采用的非实时多任务操作系统(如bbbbbbs,Linux)时,其设计没有考虑到实时环境的开发用途,其系统调用的效率不高,数控系统PLC
控制不能满足一些高精度场合的实时性要求。
2、基于嵌入式系统的实时PLC 系统结构
嵌入式实时 PLC 系统,一般由开发系统和实时运行系统两部分组成,是相互独立而又密不可分的两个系统,可以分别单独运行。开发系统基于PC机,建立在bbbbbbs 操作系统平台之上,提供了PLC应用程序的编写及其编译调试环境。开发系统与实时运行系统的通讯一般通过RS232接口来实现。如果嵌入式操作系统提供网络服务,也可以通过以太网、Modbus 或CAN总线进行通讯。应用程序编写完并编译调试无误后通过RS232 或TCP/IP通信协议下载到嵌入式系统。实时运行系统则用于完成系统配置、输入信号处理、循环调用PLC程序及控制信号输出等操作,并且可以通过现场总线或TCP/IP 通信协议与硬件层(I/O)
为了更好地支持实时运行系统,嵌入式系统一般要引入操作系统,嵌入式操作系统(如bbbbbbsCE,VxWorks 等)为实时运行系统提供了启动代码、串行通讯接口、内存操作(malloc/free)、ANSI 标准库、1ms的时钟滴答、调试接口等服务。如果实时运行系统整合了相应的功能,系统也可以不引入操作系统。我们所采用的嵌入式实时系统体系结构如图2所示,其实时操作系统采用VxWorks。
了其通信性能,实时能力大大提高,此结构具有完全开放性,高度兼容性,的可扩展性,使得自动控制系统的设计不受硬件的限制,可以有效地提高PLC的运行速度和可靠性,并且支持多任务的控制策略。相应的从嵌入式处理的设计与和BSP 改造方面,也做了相应的优化处理。
3、基于PPC 的嵌入式处理器设计
VxWorks 系统运行在基于PPC 的MPC860 处理器上,并作了一些有关改造以适应实时PLC 的现场总线的通信要求。主要包括4个主要模块(如图3):PowerPC 核心,系统接口单元(SIU),通信处理模块(CPM)和快速以太网控制器(FEC)。
系统接口单元(SIU)集成几乎所有32-bit 处理器系统的常用功能。MPC860 采用32 位内部总线,可以支持8,16 或32位的外设和存储器,SIU 提供功耗管理、复位控制、PowerPC减法器、PowerPC时钟基准以及实时时钟等功能。其内存控制器可以控制多达8 个存储体,只需通过很少的电路就可实现与DRAM,SRAM,Flash以及其它外围设备的无缝连接,DRAM 接口支持8,16 和32 位的端口,DRAM 控制器提供页模式下的突发传送访问;
提供4 个16 位通用定时器或者2 个32位定时器;系统集成单元集成了总线监控、软件看门狗、系统节电模式、时钟合成、实时时钟、复位控制以及支持IEEE 1149.1调试方式JTAG等。
通信处理模块(CPM)具有更强大的通信处理能力,拥有独立的简单指令集通信处理器(RISC),能够完成低层次任务以及DMA控制,使得PowerPC 内核能够空闲出来处理高层次的实时任务,从而降低了系统频率,减少功耗。
内嵌的 FEC 模块与IEEE 802.3 兼容,支持10-和100-Mbps 连接。不仅完成了以太网协议中的MAC控制功能,并且使用了突发传送DMA,从而减少了系统总线的负荷。而FEC内部接的收和发送FIFO 通过将所有的冲突碰撞局部化到FEC内部而减轻总线的负荷。FEC 采用独立的发送缓存描述符和接收缓存描述符来完成具体的收发存取。可支持Modbus,CAN,EIP等现场总线的应用。
4、BSP 的改造
BSP 即Board Support Package,通常指针对具体的硬件平台,用户所编写的启动代码和部分设备驱动程序的集合。BSP是一个VxWorks 内核运行的基础。
4.1 BSP 与VxWorks 的层次关系在 VxWorks 中,将BSP 简单描述成介于底层硬件环境和VxWorks之间的一个软件接口
它的主要功能是系统加电后初始化目标硬件,初始化OS,及提供部分硬件的驱动程序如时钟、中断、串口驱动等。其与内核、驱动程序及应用程序之间的关系如图4:
如图可见 BSP为上层软件与底层硬件之间进行交互的桥梁,为上层提供统一接口。BSP中包括的驱动程序与具体的硬件相关,在移植到不同的硬件系统的时候,要修改相关的驱动。
4.2 VxWorks BSP 的特点
在众多的商用嵌入式实时操作系统中,VxWorks是使用极为广泛的一种操作系统,它实时性强,占用空间小,提供丰富的网络协议,有众多的调试手段。
VxWorks 的BSP 可以按功能分为两大部分。
1)目标系统的系统引导部分:主要是目标系统启动时的硬件初始化,在目标系统上电后开始执行,主要是配置处理器的工作状态,初始化系统的内存等,这部分的程序一般只在系统引导时执行,为操作系统运行提供硬件环境。
2)目标系统的设备驱动程序:主要是驱动目标系统配置的各种设备,包括字符型设备、块存储设备、网络设备等,这些设备驱动程序完成对硬件的配置,操作系统通过设备驱动程序来访问硬件,从而完成读取数据和外界的交互等。
在实际应用中,为了获得更好的稳定性和执行效率,许多设备驱动程序会直接和应用程序捆绑在一起,而不是由操作系统来管理。
4.3 BSP 的设计与修改
WRS 提供了大量预制的,支持许多商业主版或评估板的BSP,减少了开发时间。
宏观来看,BSP 包括两部分:
初始化部分:CPU 初始化;目标板初始化;操作系统的初始化。
驱动程序部分:一般要包括时钟、中断、串口驱动。
具体来看,BSP 包括源文件、头文件、派生文件。主要需要修改VxWorks 源码中的以
下目录中:
/target/config/all
几个重要文件的功用如下:
1)bootConfig.c:引导ROM 映像的主要初始化和控制文件。
2)bootInit.c:引导ROM 映像的第二阶段的初始化代码。实现romStart 函数--romInit.s
中的romInit()函数执行完后跳转到romStart(),执行解压缩,代码/数据段从rom 拷到ram。
3)usrConfig.c:VxWorks 映像的主要初始化代码。
/target/config/comps/vxworks:实时内核基本模块描述(cdf)文件。
/target/config/comps/src:实时内核模块配置文件。供usrconfig.c 使用。
/target/config/bspname 该目录下的文件就是要编写的BSP 文件。
由于 BSP 系统开发的硬件相关性和处理器系列的多样性,不可能有一种通用的程序或
方法来解决每一种处理器的BSP 问题,必须具体问题具体分析,不断实践,才能使程
序运行达到比较高的效率。
5、其它
VxWorks 的多任务任务调度策略的实施也是实现嵌入式PLC的一个关键点,确保高优先级任务在确定的时间内能被执行,并对外部的异步事件作出及时响应。多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。VxWorks系统提供了多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。并具有实时系统的另一关键特性是硬件中断处理。为了获得快速可靠的中断响应,VxWorks系统的中断服务程序(ISR)有自己的上下文。鉴于篇幅关系,在本文不做详细讨论。
6、与展望
嵌入式系统已经成为历史发展的必然,其的可扩展性,对多种硬件的支持,能够提高PLC的运行速度和可靠性,并且支持多任务的控制策略,对PLC 的性能有了很大的提高。通过现场运行调试,对现场I/O设备进行监控,达到了预期的实时性要求,实现了通过现场总线或TCP/IP通信协议与硬件层(I/O)高速的响应目标。新型的基于VxWorks 的嵌入式实时PLC具有很高的性能价格比,具有市场竞争优势,有助于我国PLC 企业发展本国市场,发展自主产业的PLC。
本文作者创新点:研究了于基于VxWorks 的嵌入式实时
1引言
模糊神经网络是模糊逻辑控制和神经网络两者结合的产物。这两者单独使用时存在一定缺陷。模糊逻辑在一定的论域上具有很好的收敛性,并具有模糊量运算优势;而神经网络具有强自学习、自适应、并行运算和jingque计算的能力。这两者相结合可大大提高综合能力。
PLC在工业控制中应用广泛,功能强大,使用方便。将模糊神经网络算法应用于PLC中具有实际应用价值,使PLC在机械、民用等领域广泛应用。这里提出一种基于PLC的模糊神经网络算法实现方法。
2 模糊神经网络系统结构
模糊神经网络具有很多种结构和算法,对于不同控制对象,综合考虑运算速度和精度,模糊神经网络结构也有所不同。由于该实现方法没有实际控制对象,为了说明在PLC上能实现模糊神经网络算法,故选择模糊神经网络,如图1所示。假设其中输入两个变量X1、X2,输出变量为Y。将每个输入因子分为:NM,NS,ZO,PS,PM等5个模糊状态。
3模糊神经网络的学习步骤
选择在线学习,在线学习期间学习速度不变。在线学习终止条件是性能指标E小于等于某一数值。这个指标值随控制对象的改变而改变的。当确定控制对象时,该指标值可根据经验确定。为了便于说明问题这里设置该指标值为0.002。具体学习步骤是:①θji、σji、ωi及η的初始值在[0,1]之间随机选取,η的值为恒定值,根据经验决定。②根据模糊神经算法计算出比较理想的θji(k+1)、σji(k+1)、ωi(k+1)值。③根据模糊神经算法计算E,若E≤0.002,迭代结束。否则,令θji(k+1)、σji(k+1)、ωi(k+1)为初始值并返回②。
4 模糊神经网络算法在PLC的应用
4.1 模糊神经网络学习阶段的实现
在学习阶段实现过程中,利用上位机向下位机传输样本数据,具体运算过程是由下位机实现。
4.1.1 学习阶段上位机程序实现
根据模糊神经网络理论知识可知,样本值是根据实际控制对象的需要而定的。为了说明问题,采用含有两个输入值和一个输出期望值的较为简单的样本值。学习过程中上位机程序设计流程如图2所示,具体过程如下:
(1)初始化初始化样本值和为后续传输样本值做准备,通过PLC指令把样本值写入PLC的储存地址,赋值给发送区的数据区,并把存储个样本值地址分别赋给VD712,VD716,VD720地址指针,这样可为发送样本值做准备。因为要发送的样本值是不断变化的,发送区不能变化,故使用地址指针达到两者同步。
(2)接受请求接收下位机向上位机传送的数据,该数据是告之上位机是否向下位机传送样本值。
(3)判断VB703数据请求标志位VB703,对所接收的数据,判断其值是否等于16#FF。而16#FF是通信协议中规定上位机给下位机传送数据的标志。如果等于16#FF,则向下位机传输数据;否则就返回上一步。
(4)发送数据通过上位机通信程序向下位机发送样本值,发送完后就结束次传送样本值,启动新接收,等待下位机请求数据传送信号。
4.1.2下位机程序实现
图3为下位机程序流程,从中可以看到学习阶段下位机程序的基本构想。
针对下位机程序流程这里需要说明的是:
(1)初始化随机选取[0,1]内θji、σji、ωi及η的初始值,通过PLC指令把这些值赋给存储单元;对学习过程中用到的常数赋值,同样赋给存储单元;后,要把请求数据传送的标志位VB703置位。
(2)初始值计算由于初始化中请求数据传送,通过下位机的通信程序取得数据,并且接收样本数据后.复位VB703,告知上位机不再传送数据。接着利用初始化已赋值的组权值,计算组样本值为输入时输出值、输出值与期望输出值的差值以及后续计算所要用到的数据。
(3)权值、E(性能指标)值计算在第上一步的基础上计算权值和E值。具体算法可参考模糊神经网络算法.且易于在PLC平台上实现。
(4)E值判断把计算的E值与0.002相比较。如果E≤0.002,说明计算的函数变量、权值已达到预期目标,学习过程结束。结束的触发外接设备的开关量,利用外接设备读取这些计算结果。则需继续学习过程。并将不满足性能指标第3步计算出的函数变量、权值赋给下一步重新计算y值所需的地址内,把请求数据标志位VB703置位.并向上位机发送,从而为新y值的计算做好准备。
(5)学习过程中Y值计算由于已把请求数据标志位置位,通过通信程序先取样本,取完样本值后复位VB703,告知上位机不再传样本值,接着计算新的Y值,以便计算新的函数变量、权值以及E值。学习过程下位机主程序实现如图4所示。
4.2 模糊神经网络现场工作过程实现
当学习阶段结束后,通过现场采集数据,建立数据库并把采集的数据当做输人,运用训练好的权值和模糊神经网络算法,得到控制对象所需的控制值。要实现以上工作步骤。仍然需要上下位机合作,故而程序设计分为上位机和下位机两部分。
4.2.1上位机程序实现
现场工作中上位机程序设计功能与学习阶段相一致,主要区别;在学习阶段初始化的和需要给下位机传送的样本值变成了通过外接设备现场采集到的数值。在PLC程序的初始化中,把采集值从外接设备的地址中赋值到发送区的数据区。因为采集值是在一定的周期内变化的,是实时的。故无需地址指针使两者工作同步。
4.2.2 下位机程序实现
由图5现场工作过程中下位机程序流程可知.下位机在现场工作过程中的具体步骤:
(1)初始化下位机初始化要把学习过程训练好的θji、σji、η的值,通过PLc指令把其赋给存储单元;要对后续Y值计算过程中用到的常数赋值,同样也要赋给存储单元;后,要把请求数据传送的标志位VB703置位。并发送给上位机。
(2)接收采集值接收上位机的采集值,接着把采集的值赋给即将进行Y值运算的储存地址。将请求数据传输标志位VB703复位,并传送给上位机,要求停止继续向下位机传输采集值。
(3)输出y值计算利用上一步提供的采集数据、初始化步骤中的权值和模糊神经网络算法,以PLC为平台进行计算,将计算所得值赋给外接输出设备的存储地址.根据现场情况控制请求数据接收标志位VB703是否置位。
(4)VB703判断若VB703=16#FF,那么启动新的数据接收,即跳转到第二步。如果VB703≠16#FF,则跳转到结束。但要知道的是这两种结果是工作人员根据现场情况在第3步中已确定的。现场工作过程中下位机主程序实现如图6所示。
5结论
通过对模糊神经网络学习过程和现场工作过程的PLC程序的仿真,结果表明:学习过程的PLC程序,利用模糊神经网络自学习能力,当不满足性能指标时,系统则根据梯度下降策略自动的调整权值