• 西门子模块6ES7223-1BF22-0XA8规格齐全
  • 西门子模块6ES7223-1BF22-0XA8规格齐全
  • 西门子模块6ES7223-1BF22-0XA8规格齐全

产品描述

产品规格模块式 包装说明全新品牌西门值+ 包装说明 全新 - 产品规格子 现场安装

西门子模块6ES7223-1BF22-0XA8规格齐全

嵌入式设计已经成为工业现代化、智能化的必经之路,嵌入式产品已经深入到各行各业。嵌入式系统的**程度较高,系统的整体继承性相对较小,为了保证系统的稳定性,软件的测试成为嵌入式开发的一个重要环节。由于嵌入式软件自身的特点,传统的软件测试理论不能直接用于嵌入式软件的测试,因此,研究嵌入式软件的测试有重要意义。  
      1 基本概念简述  
     1.1 模块化设计  
      软件的设计是以一定的方法为基础的。面对越来越复杂的软件开发,人们提出了各种软件设计的模型。从用户需求和系统要实现的任务功能出发,把大型的软件划分为相对较小的模块。为了减少模块与模块之间的关联性,模块之间的逻辑结构相对独立,无函数的交叉调用,数据传递由全局变量完成,这就是模块化设计的基本思想。模块化设计的核心是模块的独立性,主要包括功能独立性和结构独立性,这使得软件开发的分工易于实现。软件测试是软件开发中的关键环节,基于模块化设计的软件测试模型简单,查错和纠错都易于实现。下面以单链路数据传递的软件模型说明模块化软件设计的软件测试的基本原则。函数F(X-Y)定义为软件模块X到软件模块Y的接口函数,用来通过终端显示由模块X进入模块Y的数据。如果模块C执行后发生错误,则由模块B和模块C的数据接口函数F(B-C)判断是否是模块B出来的数据就是错误的。如果F(B-C)不错,则证明模块C存在错误;如果F(B-C)传递数据错误,再察看F(A-B)传出的数据是否错误,如果不错则证明模块B存在错误。用此依次前推孤立错误的方法,即可以很容易地定位错误所在的模块。这就是模块化设计时软件测试的基本原则。  
      1.2 嵌入式系统  
      嵌入式系统开发有其自身的特点。一般先进行硬件部分的开发,主要包括形成裸机平台,根据需要移植实时操作系统,开发底层的硬件驱动程序等。硬件平台测试通过后,应该软件的开发调试是基于该硬件平台进行的,这同时也是对硬件平台的一个测试。因此可以说,嵌入式系统的开发过程是一个软硬件互相协调,互相反馈和互相测试的过程。一般来说,在嵌入式系统软件中,底层驱动程序、操作系统和应用程序的界线是不清晰的,根据需要甚至混编在一起。这主要是由于嵌入式系统中软件对硬件的依赖性造成的。嵌入式软件对硬件的依赖性要求,软件测试时必须较大限度地模拟被测软件的实际运行环境,以保测试的可靠性。底层程序和应用程序界限的不清晰增加了测试时的难度,测试时只有确认嵌入式系统平台及底层程序正确的情况下才能进行应用程序的测试,而且在系统测试时,错误的定位较为困难。软件的**性也是嵌入式软件的一个重要特点。由于嵌入式软件设计是以一定的目标硬件平台为基础的、面向固定的任务进行的,因此,一旦被加载到目标系统上,功能必须完全确定。这个特点决定了嵌入式应用软件的继承性较差,延长的系统的测试时间,增加了测试费用。嵌入式软件的另外一个重要特点就是实时性。这是从软件的执行角度出发说明的,也就是说嵌入式软件的执行要满足一定的时间约束。嵌入式系统中,应用软件自身算法的复杂度和操作系统任务调度,决定了系统资源的分配和消耗,因此,对系统实时性进行测试时,要借助一定的测试工具对应用程序算法复杂度和操作系统任务调度进行分析测试。可见嵌入式软件与传统的面向对象和面向过程的软件相比有其自身的特点。针对这些特点对嵌入式软件的测试进行研究是必要的,有意义的。  
      1.3 嵌入式软件测试  
      软件测试是从经济、效率的角度出发,对软件代码进行质量、正确性保证的一个过程。软件测试是软件开发中的一个重要环节,也是软件从开发过程到应用过程的关键一环。嵌入式软件也不例外,软件测试逐渐成为一门成熟的学科,前人针对面向对象和面向过程的非实时软件的测试作了大量的研究,其中大部分方法可以用到嵌入式软件的测试。  
        根据不同的指标,软件测试方法有不同的划分方法。从软件开发过程中测试所处的不同阶段可分为模块测试、集成测试和系统测试。根据是否需要运行目标代码分为动态测试和静态测试;根据目标代码的可见性可分为白盒测试(结构测试)和黑盒测试(功能测试)。在软件的测试中,每种测试方法都不是孤立的。为了较经济较有效地达到测试的目的,各种测试方法往往是互相嵌套的。例如,在软件的单元测试阶段,可以用黑盒测试和白盒测试的方法分别进行动态测试。  
       值得一提的是,近年来软件测试中,测试代码的覆盖率逐渐成为软件测试的统一标准,因此不管采用何种测试方法,尽可能地提高软件测试中的代码覆盖率是必需的。软件测试代码覆盖率是基于白盒测试方法的,因此,为了提高软件测试的代码覆盖率,测试人员必须清楚源代码的结构,拥有程序设计文档,以便设计测试用例使测试尽可能地覆盖程序内部结构的每条语句,提高代码的覆盖率。  
       2 基于模块化设计的嵌入式软件四级测试流程  
       根据嵌入式系统的开发流程,为了较经济地实现系统的功能,采用自顶向下、层层推进的方法对嵌入式系统进行测试,在四级测试中,本测试阶段以前的测试完成后,当发现错误时,可排队此测试阶段以前的错误,在本测试阶段内查找错误。这并不是一个**准确的方法,但较大限度地节了错误定位的时间。  
       2.1 系统平台测试 
      这部分包括硬件电路测试、操作系统及底层驱动程序的测试等。硬件电路的测试需要用专门的测试工具进行测试。这里不再多述。操作系统和底层驱动程序的测试主要包括测试操作系统的任务调度、实时性能、通信端口的率。该阶段测试完成后,系统应为一个完整的嵌入式系统平台,用户只需添加应用程序即可完成特定的任务。  
      2.2 模块测试  
       把大型的嵌入式软件系统划分为若干个相对较小的任务模块,由不同的程序员分别同时对其进行编码。编码完成后,把各个模块集成起来前,必须对单个模块进行测试。由于没有其它数据模块进行数据传递的支持,该阶段测试一段是在宿主机上进行的(宿主机有丰富的资源和方便的调试环境)。此阶段主要是进行白盒测试,尽可能地测试每一个函数、每一个条件分支、每一个程序语句,提高代码测试的覆盖率  
。由于只有单个模块正确才有整体集成的必要性,因此,单个模块测试时测试一定要充分、完整。模块测试阶段,测试用例的构造不但要测试系统正常的运行情况,还要进行边界测试。边界测试就是进行某一数据变量的较大值和较小值的测试,同时进行越界测试,即输入不该输入的数据变量测试系统的运行情况。理想的嵌入式系统是不应该由用户的信息交互导致死机的,这也是嵌入式设计的一个基本要求。因此,不论进行何种测试,系统死机都该被作为测试错误处理。在模块测试阶段,由模块化编程的基本思想,根据模块内部的紧凑程序,也可以把大的模块划分成小的模块。在程序内部,小模块之间数据传递的入口设计接口函数,用于快速地定位错误。用此模块嵌套的思想进行软件测试,需要模块内部结构清晰,数据链路简单。  
       2.3 集成测试  
      单个软件模块测试正确之后,将所有模块集成起来进行测试。本阶段主要是找出各模块之间数据传递和系统组成后的逻辑结构的错误。在宿主机上采用黑盒与白盒相结合的方法进行测试,要较大限度地模拟实际运行环境,可以屏蔽掉一些不影响系统执行的和数据传递的难以模拟的函数。集成测试是模块化设计软件的测试优点充分体现的阶段。集成测试前,应该由程序员根据模块之间的数据的输入输出编写模块接口函数,这需要负责不同软件模块的程序员共同协调完成,然后将模块接口函数集成到接收数据模块的入口处。由的分析可知,单链路数据传递的软件模块集成测试时容易定位错误所在的软件模块。一个软件模块的数据不一定只有另外一个模块提供,即软件模块的数据链路不一定只是单链路的,测试时可以把复杂链路结构的数据传递划分为单链路结构数据传送进行错误定位。修改输出数据的软件模块时,可能导致输入数据的软件模块引入新的错误,因此在这里引入关联矩阵确定修改某一模块后需要重要测试的模块。  
     定模块化设计的嵌入式系统软件由软件模块Ai(i=1,2,…,m,n)组成,m表示矩阵的行号,n表示矩阵的列号。在关联矩阵中,Aij=1表示Aj接受了Ai输出的数据,故修改了Ai重新测试Ai的同时也需重新测试Aj。集成测试是在拥有程序设计文档、程序结构和数据结构时,对软件模块在集成中出现的错误进行测试。集成测试时,根据模块接口函数定位错误修改代码,根据关联矩阵确定重新测试的软件模块。 
        2.4 系统测试  
       集成测试完成后,退出宿主机测试环境,把系统移植到目标机上来,完成应用到现场环境中,从用户的角度对系统进行黑盒测试,验证每一项具体的功能。由于测试者对程序内容程序执行情况一无所知,因此本测试阶段的错误定位比较困难。系统测试阶段应该进行意外测试和破坏性测试,即测试系统正常执行情况下不该发生的激发活动和人为的破坏性的测试,进一步验证系统性能。系统测试阶段不应该确定错误后立即修改代码,应根据一定的错误发生频率,确定测试周期,在每个测试周期结束时修改代码,进行反复测试;否则,不但增加了完全测试的任务量,而且降低了测试的可信度。  
        2.5 测试结果分析  
       测试结果的分析可以定位错误,指导程序员修改代码,同时指出测试进行的程序并进一步指明测试方向。测试结果的分析是一个由测试结果和测试预得结果进行分析、比较和定位错误的过程。测试结果的分析是一次测试的最后环节,分析时应该考虑软件的运行环境和实际运行环境的差异以及各种外界因素的影响等。  
        2.6 测试用例的构造与管理  
        测试用例是为了测试目标程序设计的包括输入项和预得结果的一种文件,根据测试环境和测试目标程序的不同,可分为某种格式的文档或某种输入行为(如一次按键)等。测试用例的构造要尽可能覆盖所有可能的取值范围,使测试尽可能地覆盖所有程序代码,提高代码的测试覆盖率,同时又不作多余、重复和无意义的测试。在嵌入式软件测试的不同阶段,要构造不同的测试用例;在系统平台测试阶段,要构造针对系统任务调度、实时性能和底层驱动程序的测试用例;在模块测试阶段,应构造针对某一模块进行测试的测试用例;在集成测试阶段,针对系统集成时数据传递、结构斜接的问题构造相应的测试用例;在系统测试阶段,要构造针对某项功能的或多项功能结合在一起的测试用例,或使用已经在同类产品上已经验证正确的测试用例。测试用例是可复用的。此外大型的软件开发过程中,测试用例的种类繁多,应该按一定的方法进行管理。用数据库的来管理测试用例是一个很好的选择。根据测试阶段将测试用例进行划分,然后用关键字一确定。这样在使用、修改和保存测试用例时都很方便,直接用查询的方式就可以调出测试用例。  
       3 数控系统软件测试  
       本数控系统采用ARM7处理器,操作系统采用μC/OS实时操作系统,是一个典型的嵌入式系统。由于数控系统较为复杂,开发过程中将任务进行了详细的划分,软件的开发采用模块化开发。开发过程中,几个模块由不同的程序员分别进行编码,分别由程序员进行模块测试,并按白盒测试的方法进行覆盖测试。最后集成测试前,根据关联矩阵,程序员协作编写了模块接口函数F(A1-A2)、F(A1-A4)、F(A1-A5)、F(A1-A6)、F(F2-A3)、F(A3-A4)、F(A4-A5)、F(F5-A6)、F(A6-A2),分析可知,一些关键模块,如译码模块和补模块的测试代码覆盖率达到90%之上。 
       4 结论  
       文章对嵌入式软件的特点和传统的测试方法作了分析之后,提出了四级测试流程和集成测试的模型。此测试方法用于工程机械控制器和数控系统开发的测试。测试的效率和可靠性满足要求。文中的单链路数据传递的错误定位、模块接口函数、关联矩阵等方法也可以用于面向对象的和面向对象的软件系统。 

202207281244519172844.jpg202202231632207636284.jpg

较近,笔者在某工厂大型生产线上基于现场总线的物流呼叫系统项目中发现,由于所需要显示的信息流比较大,用现有的基于AT89C51芯片组成的LED显示屏控制系统,由于受到微处理器的处理速度、体系架构、寻址范围、外围接口资源等诸多限制,已难以在要求显示较多像素、显示内容帧频较高、动态显示效果复杂的情况下,得到良好的动态视觉效果。针对以上情况,在利用现有资源的基础上,重新设计和研制了一种全新的,由32位高性能ARM微处理器组成的LED显示屏控制图1系统的硬件结构框图系统,并通过RS485接口与现场总线中的上位机进行实时数据通信,实现整个系统的信息显示。
       1 系统硬件结构
该系统的硬件组成框图如图1所示。图1中,微处理器是Atmel公司生产的AT91M42800A,它采用基于ARM7TDMI内核的高性能32位RISC架构的处理器,有着丰富的外围接口资源。AT91M42800A有2个USART外围接口,系统用USART0口和MAX485组成485接口电路,具体的接口电路如图2所示。AT91M42800A还有2个SPI口,每个SPI口有4根片选信号,通过片选均可以支持外接15个设备。该系统的做法是将2个SPI口分别接到列驱动电路和行驱动电路上,并利用各自的2个片选信号CS0和CS1完成驱动电路的信号锁存和允许输出控制,SPI的CLK输出作为驱动电路的时钟信号输入,工作频率为4 MHz。
SRAM接口电路由2块HY57V641620芯片并联组成,HY57V641620是Hynix公司生产的4 Banks×1M×16位的SDRAM芯片,单片HY57V641620存储容量为4组×16 M位(8 MB),支持自动刷新,16位数据宽度。为充分发挥32位CPU的数据处理能力,系统用2块8 ns的HY57V641620组成32位SDRAM存储器系统。Flash存储器接口电路由1块HY29LV160芯片组成。HY57V641620是Flash存储器芯片,单片存储容量为16 M图2485接口电路、A6B595和A6276级联电路原理图位(2 MB),8/16位数据宽度,本系统采用16位数据宽度的工作方式。具体的电路连接可参阅参考文献[1]。
行驱动电路由Allegro公司的36片A6B595级联组成,显示屏背面每行数据线由串入并出移位寄存器A6B595级联而成,A6B595片内集成有MOS管构成的驱动器,足够驱动发光二极管发光。列驱动电路由Allegro公司的24片A6276级联组成,A6276是16位带锁存的串入并出移位LED驱动芯片。A6B595和A6276级联时引脚和联接方法如图2所示,电路都较为简单(其中带端口框标的为AT91M42800A的相应引脚)。其他详细的性能资料,请查阅Atmel和Allegro公司的相关产品文档[2,3]。AT91M42800A的SPI口均采用16位串行输出工作方式,利用32位ARM处理器的高速性能,能够充分提高速度。

 2 工作原理
该系统与上位机的通信由AT91M42800A的USART0口与485接口电路完成,上位机仅需将要显示的数据,传送至AT91M42800A即可。开机后,AT91M42800A初始化,读入启动代码后,将保存在Flash存储器内的程序代码和所要显示的字模数据,重映射到SDRAM中,使得系统的数据存取全部在高速SDRAM中完成。在接收到上位机的数据后,AT91M42800A将要显示的数据,转换成相对应的LED屏显示驱动信号,再加入相应的动态显示效果控制程序(画面左移、上移、开幕、覆盖、闪烁和直显等)后,用SPI口分别输出给行、列驱动电路。同时,若有需要,上位机所传来的数据或图像画面,也可以保存在Flash存储器中。
显示屏采用1/16动态逐次行扫描方式,先将SPIA端口中的24个字节数据依此串行移入对应的24个A6276列驱动电路,并锁存。接着,SPIB端口再将一行行选通信号串行移入行驱动电路,完成一行的LED显示。然后依理,逐次的显示LED屏的各行。
二极管亮灭时间的占空比可用软件进行设定,以选取合适亮度,提高发光二极管的使用寿命。在现场实际安装的LED显示屏,有效显示面积约为4.6 m2,共有288×384=110 592个像素,满帧刷新时间较短可小于8 ms,换帧频率125 Hz以上,比传统的用单片机组成的显示系统提高了10倍以上的帧频,保证了动态显示时的视觉效果。同时,在相同的条件下,还可以使得实际可视像素点增多。
       3 软件部分简述
本系统的软件采用μC/OSII操作系统,使得系统具有强大的多任务管理、定时器管理、中断管理、存储管理等功能,通过对相关寄存器的实时监控,可以大大提高系统的稳定性,这些是以往用单片机和部分DSP处理器所无法实现的。
显示应用程序采用定时器中断方法,通过设置合适的进入中断时间常数,即可以得到**40 Hz的LED刷新帧频,使人眼得到稳定的动态视觉效果。
画面的实时动态处理,即各种动态显示方式均以子程序形式编写,每种显示方式都是独立的子程序。具体的动态显示方式有:画面左、右移,上、下移,拉幕,覆盖,闪烁,直显等多种方式。
      4 本系统的优点
① 使用高性能32位RISC架构的ARM微处理器,硬件上克服了传统8/16位单片机在处理能力、系统架构、寻址范围和外围接口能力上的不足;软件上使用实时多任务操作系统,使系统的管理功能强大,可进行实时监控,实现复杂的程序控制,程序的开发和扩展也很方便。和以往单片机组成的类似系统相比,本系统的软件稳定性和可靠性都得到了很大提高。
② 该系统省去了传统做法中LED显示部分的总线驱动和译码电路,不像其他一些单片机系统,为提高显示速度而采用多处理器,使用双端口RAM,或是采用将LED屏分为多块的方案。系统使用AT91M42800A的SPI接口直接实现LED显示逻辑驱动,不仅电路简单,并且简化了软件的相关编程,节省了MCU的GPIO硬件资源。

③ AT91M42800A的SPI接口可以采用16位传输方式,配以A6276高速的16位**LED驱动芯片,使得LED的显示刷屏速度比传统的单片机有了极大提高。
       结语
由32位嵌入式 RISC微处理器组成的大屏幕 LED显示系统,与传统的基于 8/16位单片机的 LED显示系统相比,在不显著增加系统成本的情况下,性能有了极大提高。而与采用DVI接口方式的显示系统相比,省去了视频处理的相关电路,又具有硬件结构简单、廉等优势。采用本设计方案,可节省单片机的端口资源,有效简化显示屏的电路结构,提高了整个显示系统的可靠性。在单色视频、动画、文字等LED信息显示方面,本系统有一定的应用价值。经过在某大型物流生产线上的长期实际运行,证明其设计方案是



http://zhangqueena.b2b168.com

产品推荐