西门子6ES7232-0HD22-0XA0详细使用
UN200 CPU具有集成的、硬件高速计数器。
UniMATCPU224和CPU226可以使用6个30kHz单相高速计数器或4个20kHz的两相高速计数器。
高速计数器可以被配置为12种模式中的任意一种,但并不是所有计数器都能使用每一种模式。在正交模式下,你可以选择一倍速或者四倍速计数速率。对于操作模式相同的计数器,其计数功能是相同的。
计数器共有四种基本类型:带有内部方向控制的单相计数器,带有外部方向控制的单相计数器,带有两个时钟输入的双相计数器和A/B相正交计数器。
高速计数器的实际输入要根据用户选择的高速计数器号和模式来确定,如上表。例:如果你选择了HSC0的模式1,则你的外部高速计数输入点应接在I0.0,外部复位点应接在I0.2。
如果用户使用了多个高速计数器,则被某一高速计数器占用了的输入点,其它高速计数器不能再使用。如HSC0的模式3已经占用了I0.1作为外部方向控制点,那么HSC3高速计数器就不能再使用了,因为它的计数输入点也是I0.1,与之冲突了。
高速计数器的具体编程及相关的中断和其它参数,请参见《S7-200系统手册》,上面有详细的阐述及例程。
STEP 7-Micro/WIN提供了一个方便实用的高速计数器指令编程向导,用户可以简单快速地配置自己的高速计数器功能。
高速计数器模式 12:
UniMAT CPU224和CPU226均支持高速计数器模式12。
只有 HSC0 和 HSC3 支持模式12。 HSC0 计数高速脉冲输出Q0.0;HSC3 计数高速计数脉冲输出 Q0.1。
用户既可以自己编程使用模式12,也可以在配置高速脉冲输出功能时,通过简单的设置使用模式12。
实时图像处理技术在工业、医学、军事和商业等领域有广泛的应用。基于FPGA+DSP架构的视频处理系统充分发挥了各自器什的长处,不仪设计周期短,开发费用低,设计灵活,更改方便,功耗较低,便于实现系统的小型化。对基与FPGA+DSP架构的视频处理系统进行研究和设计具有重要的意义。
0 引言
本系统采用基于FPGA与DSP协同工作进行视频处理的方案,实现视频采集、处理到传输的整个过程。
实时视频图像处理中,低层的预处理算法处理的数据量大,对处理速度要求高,但算法相对比较简单,适合于用FPGA进行硬件实现,这样能兼顾速度及灵活性。高层的处理算法结构复杂,适用于运算速度高、寻址方式灵活、通信机制强的DSP芯片宋实现。
DSP+FPGA架构的大特点是结构灵活、有较强的通用性、适合于模块化设计,从而能够提高算法效率,其开发周期短、系统易于维护和升级,适合于实时视频图像处理。
系统采用模块化的设计方法,将整个系统划分为三部分:视频采集单元、视频处理单元和视频传输单元。
整个系统以FPGA作为核心控制单元并完成视频信号的中值滤波工作;以DSP作为整个系统的核心处理单元对采集的视频图像信息进行JPEG压缩;在视频传输单元设计了以PDIUSBD12芯片为基础的USB总线,负责视频信号的传输。
1 系统硬件总体架构
一个完整的视频处理系统,主要由视频采集单元、视频处理单元及视频传输单元三部分组成。在进行系统设计时须确保各部分的无缝衔接。
图像采集单元由FPGA和MB86S02视频采集芯片组成,包括视频信号的采集和预处理,把输入的视频信号转换成系统能够处理的数字图像数据,并按照一定的格式存储在确定的存储区域。
图像处理单元是本系统的核心,对图像数据进行压缩处理,实现系统要达到的功能。
图像传输单元采用FPGA+USB的方式实现视频数据的传输,通过基于PDIUSBD12芯片的USB总线,将压缩后的视频图像信息发送到接收端,在接收端使用在PC上编写的应用程序将图像解压缩并显示出来。
整个硬件系统由FPGA和DSP两个分系统组成,FPGA作为视频采集单元,将采集到的视频信号预处理后传给DSP,DSP作为图像处理单元是本系统的核心,对FPGA预处理后的视频图像信息进行JPEG压缩处理,DSP单元的性能决定着整个系统的性能,DSP完成图像处理任务后,将把结果返回给FPGA,FPGA将经过压缩处理后的图像信息写入接口控制芯片的数据缓冲区,由接口控制芯片负责信息的传输,系统总体框图如图1所示。
如图1所示,MB86S02视频图像传感器在FPGA的控制下进行视频图像信息的采集,在收到PC机的采集命令后MB86S02开始视频信号的采集FPGA作为系统的核心控制单元不仅负责视频图像的采集,负责视频图像信息的预处理和系统各单元模块之间的数据交互。针对视频图像数据量大的特点,为了保证系统的实时性要求,系统采用大容量的片外SDRAMR对采集到的视频图像信息进行缓存,SDRAM控制器由FPGA实现,视频图像信息经过SDRAM缓存后要由FPGA对其进行滤波处理,以消除图像信息中的噪声干扰,本系统中采用中值滤波的方式对采集到的视频信息进行处理,滤波后的数据通过FPGA内部FIFO进入DSP进行下一步的压缩处理。DSP上电后进行引导程序的自加载,等待FPGA发送请求,在收到FPGA的请求后,DSP建立EDMA通道从FPGA获取视频数据,存满一帧后,开始对视频图像进行JPEG压缩处理,压缩处理后的视频图像信息经过FIFO缓存后,在FPGA的控制下写入USB接口控制器的数据缓存区,等待PC机的读数请求,USB接口控制器在收到PC机的读数请求后将数据写入PDIUSBD12的端口1,以便PC机下一步读取数据。
2 系统软件总体设计
系统的软件设计根据硬件结构的总体划分,也可以分为两大部分来描述。整个系统的运行如图2所示,FPGA和DSP各自的程序独立运行,通过中断信号完成数据的实时交互。FPGA向DSP方向的指令是通过FPGA发送一个EDMA请求,DSP通过响应EDMA请求,建立EDMA通道,开始从FIFO中进行预处理后数据的读取,DSP向FPGA传输数据时,通过向FPGA发送一个中断信号,让其从FIFO中把压缩后的图像数据读出来。
如图2所示,整个系统工作流程可以简单描述如下:系统上电后,DSP由flash实现自举,并运行引导程序,之后转入EDMA等待状态,FPGA初始化后等待外部图像采集命令,收到图像采集命令后开始进行图像采集,并对采集到的图像进行预处理,预处理后的图像经过FIFO缓冲,在存储一定量的数据之后,FPGA通过半满信号向DSP发送EDMA请求,等待DSP响应,DSP一旦收到来自FPGA的EDMA请求,立即建立EDMA通道,从FIFO中读取数据到L2存储器,存满一帧图像后DSP开始图像压缩,等待一幅图像压缩完成之后,DSP会向FPGA发送中断信号,FPGA在收到中断信号后开始从FIFO中读取压缩后的图像数据。一帧数据读完后,判断编码信号是否有效,如果有效则按同样的规则对下一帧图像进行压缩,如果无效则通知DSP结束。
1.1在CPU上电之后,启动块OB100/101/102先启动一次。(调用哪一个OB块由系统的启动模式配置决定)
1.2启动块执行完毕后,系统的循环监视时间就被激活了(这个时间可以在STEP7的硬件配置中设置,如果循环时间超出则PLC停机)
1.3之后,CPU会从输入模块及其它过程映象设备读取所有的输入状态
1.4接着下来便到了主循环程序的执行
1.4.1主循环执行也是按照语句顺序执行,如图所示,当OB1执行个语句CallFB,则此时程序进入所调用FB块顺序执行FB块的语句
1.4.2若在所调用的FB块,在某一语句中执行了CallFB/FC,则程序又进入下一级的FC中依次执行块中语句,依此类推
1.4.3当调用的下一级FC所有语句执行完成后,程序回到CallFC的这一语句,继续执行后面的语句
1.4.4当所Call的FB也执行完成后,程序回到OB1的CallFB处,继续执行后面的语句。
1.4.5直至后,完成OB1的所有程序,则主循环结束。
1.4.6在OB1执行的过程中,循环中断(如OB35)、故障中断(如OB86)等可以插入执行,执行完成后会回到中断的地方继续主循环的执行。
1.5主循环执行完成后,PLC将过程映象的输出写到输出模块
1.6完成1.5的步骤之后一个完整的循环就结束了,此时跳至1.2步骤,重新开始新一循环的监视时间,如此周而复始。
2.程序块类型
知道了PLC循环程序如何执行后,我们再来看一看STEP7的程序块有哪些类型
2.1用户块
用户块包括程序代码和用户数据。在结构化程序中,一些块循环调用处理,一些块需要时才调用。
2.1.1组织块
OB块构成了S7CPU和用户程序的接口。可以把全部程序存在OB1中,让它连续不断地循环处理。也可以把程序放在不同的块中,用OB1在需要的时候调用这些程序块。除OB1外。操作系统根据不同的事件可以调用其他的OB块,例如:
2.1.1.1时间-日期中断
2.1.1.2周期时间中断
2.1.1.3诊断中断
2.1.1.4硬件中断
2.1.1.5故障处理中断
2.1.1.6硬件启动
2.1.2功能块(FB)
功能块是在逻辑操作块内的功能或功能组,在操作块内分配有存储器,并存储有变量。FB需要这个背景数据块形式的辅助存储器。通过背景数据块传递参数,一些局部参数也保存在此区。其他的临时变量存在局部堆栈中。保存在背景数据块内的数据,当功能块关闭时数据仍保持。而保存在局部堆栈中的数据不能保存。
2.1.3功能(FC)
功能是类似于功能块的逻辑操作块,其中不分配存储区。FC不需要背景数据块。临时变量保存在局部堆栈中,直到功能结束。当FC执行结束时,使用的变量要丢失。
2.1.4数据块(DB)
数据块是一个分配的区域,其中保存其他功能的数据或信息。数据块是可读/写区,并做为用户程序的一部分转入CPU。
2.2系统块
系统块是在CPU操作系统中预先定义好的功能和功能块。这些块不占用用户程序空间。用户程序调用系统块,在整个系统中这些块具有相同的接口、相同的标示和相同的号。用户程序可以容易地转换到不同的CPU或PLC。
2.2.1系统功能块(SFC)
系统功能是集成在S7CPU中的已经编程并调试过的功能。这些块支持的一些任务是设置模块参数、数据通讯和拷贝功能等。用户程序可以不用装载直接调用SFC。SFC不需要分配数据块。
2.2.2系统功能块(SFB)
系统功能块是S7CPU的集成功能。由于SFB是操作系统的一部分,用户程序可以不用装载直接调用SFB。SFB需要分配背景数据块DB,数据块必须作为用户程序的一部分下装到CPU。
2.2.3系统数据块(SDB)
系统数据块是由不同STEP7工具产生的程序存储区,其中存有操作控制器的必要数据。SDB中存有一些信息,例如:组态数据、通讯连接和参数。
3.编程方法
前面大致了解了一下PLC程序的一个循环是如何执行的,并了解了一下程序中块的类型,下面再来看看有哪些编程方法组织这些块。
每一个西门子的编程人员都会有自已的编程习惯和方法。STEP7为设计程序提供了三种方法。基于这些方法,可以选择适合于你的应用的程序设计方法。
3.1线性化编程
所有的程序都在一个连续的指令块中。这种结构和PLC所代替的固定接线的继电器线路类似。系统按照顺序处理各个指令。
3.2模块化编程
程序分成不同的块,每个块包含了一些设备和任务的逻辑指令。组织块中的指令决定是否调用有关的控制程序模块。例如,一个模块程序包含有一个被控加工过程的各个操作模式。
3.3结构化编程
结构化程序包含有带有参数的用户自定义的指令块。这些块可以设计成一般调用。实际的参数(输入和输出的地址)在调用时进行赋值。