西门子PLC300系列的设计步骤与实例_第1页
西门子PLC300系列的设计步骤与实例_第2页
西门子PLC300系列的设计步骤与实例_第3页
西门子PLC300系列的设计步骤与实例_第4页
西门子PLC300系列的设计步骤与实例_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、S7-300系列PLC应用系统设计PLC应用系统设计的内容和步骤 PLC应用系统的硬件设计 PLC应用系统的软件设计 PLC应用系统设计实例PLC应用系统设计的内容和步骤系统设计的原则与内容 1设计原则 (1) 最大限度地满足被控设备或生产过程的控制要求; (2) 在满足控制要求的前提下,力求简单、经济,操作方便; (3) 保证控制系统工作安全可靠; (4) 考虑到今后的发展改进,应适当留有进一步扩展的余地。2设计内容 (1) 拟定控制系统设计的技术条件,它是整个设计的依据; (2) 选择电气传动形式和电动机、电磁阀等执行机构; (3) 选定PLC的型号; (4) 编制PLC的输入输出分配表或

2、绘制输入输出端子接线图; (5) 根据系统要求编写软件说明书,然后再进行程序设计; (6) 重视人机界面的设计,增强人与机器之间的友善关系; (7) 设计操作台、电气柜及非标准电器元部件; (8) 编写设计说明书和使用说明书。系统设计和调试的主要步骤1深入了解和分析被控对象的工艺条件和控制要求2确定IO设备,常用的输入设备有按钮、选择开关、行程开关、传感器等,常用的输出设备有继电器、接触器、指示灯、电磁阀等。3选择合适的PLC类型, 根据已确定的用户IO设备,统计所需的输入信号和输出信号的点数,选择合适的PLC类型。4分配IO点,编制出输入输出端子的接线图。5设计应用系统梯形图程序,这一步是整

3、个应用系统设计最核心的工作。6将程序输入PLC,当使用计算机上编程时,可将程序下载到PLC中。7进行软件测试,在将PLC连接到现场设备上之前,必须进行软件测试,以排除程序中的错误。8应用系统整体调试,在PLC软硬件设计和控制柜及现场施工完成后,就可以进行整个系统的联机调试。调试中发现的问题要逐一排除,直至调试成功。9编制技术文件, 系统技术文件包括功能说明书、电气原理图、电器布置图、电气元件明细表、PLC梯形图等。PLC选型 在满足控制要求的前提下,选型时应选择最佳的性能价格比,具体应考虑以下几点。 1性能与任务相适应 2PLC的处理速度应满足实时控制的要求 3PLC应用系统结构合理、机型系列

4、应统一 4在线编程和离线编程的选择PLC容量估算 PLC容量包括两个方面:一是IO的点数,二是用户存储器的 容量。 1IO点数的估算 根据功能说明书,可统计出PLC系统的开关量IO点数及模拟量IO通道数,以及开关量和模拟量的信号类型。应在统计后得出IO总点数的基础上,增加1015的裕量。选定的PLC机型的IO能力极限值必须大于IO点数估算值,并应尽量避免使PLC能力接近饱和,一般应留有30左右的裕量。2. 存储器容量估算 用户应用程序占用多少内存与许多因素有关,如IO点数、控制要求、运算处理量、程序结构等。因此在程序设计之前只能粗略的估算。根据经验,每个IO点及有关功能器件占用的内存大致如下:

5、所需存储器容量(KB)(11.25)×(DI×10DO×8AIO×100CP×300)1024其中:DI为数字量输入总点数;DO为数字量输出总点数;AIAO为模拟量IO通道总数;CP为通信接口总数。IO模块的选择 1开关量输入模块的选择 PLC的输入模块用来检测来自现场(如按钮、行程开关、温控开关、压力开关等)电平信号,并将其转换为PLC内部的低电平信号。开关量输入模块按输入点数分,常用的有8点、12点、16点、32点等;按工作电压分,常用的有直流5 V、12 V、24 V,交流110 V、220 V等选择输入模块主要应考虑以下两点: (1)

6、根据现场输入信号(如按钮、行程开关)与PLC输入模块距离的远近来选择电压的高低。一般,24 V以下属低电平,其传输距离不宜太远。如12 V电压模块一般不超过10 m,距离较远的设备选用较高电压模块比较可靠。 (2) 高密度的输入模块,如32点输入模块,允许同时接通的点数取决于输入电压和环境温度。一般,同时接通的点数不得超过总输入点数的60。;按外部接线方式又可分为汇点输入、分隔输入等。2开关量输出模块的选择 输出模块的任务是将PLC内部低电平的控制信号转换为外部所需电平的输出信号,驱动外部负载。输出模块有三种输出方式:继电器输出、双向可控硅输出和晶体管输出。 1) 输出方式的选择 继电器输出价

7、格便宜,使用电压范围广,导通压降小,承受瞬间过电压和过电流的能力较强,且有隔离作用。但继电器有触点,寿命较短,且响应速度较慢,适用于动作不频繁的交直流负载。当驱动电感性负载时,最大开闭频率不得超过1 Hz。 晶闸管输出(交流)和晶体管输出(直流)都属于无触点开关输出,适用于通断频繁的感性负载。感性负载在断开瞬间会产生较高的反压,必须采取抑制措施2) 输出电流的选择 模块的输出电流必须大于负载电流的额定值,如果负载电流较大,输出模块不能直接驱动,则应增加中间放大环节。对于电容性负载、热敏电阻负载,考虑到接通时有冲击电流,故要留有足够的裕量。3) 允许同时接通的输出点数 在选用输出模块时,还要看整

8、个输出模块的满负荷能力,如OMRON公司的CQM1-OC222是16点输出模块,每个点允许通过电流2 A(AC250 VDC24 V)。但整个模块允许通过的最大电流仅8 A。分配输入输出点 一般输入点与输入信号、输出点与输出控制是一一对应的;在个别情况下,也有两个信号用一个输入点的,那样就应在接入输入点前,按逻辑关系接好线(如两个触点先串联或并联),然后再接到输入点。1. 明确IO通道范围 不同型号的PLC,其输入输出通道的范围是不一样的,应根据所选PLC型号,弄清相应的IO点地址的分配。2. 内部辅助继电器 内部辅助继电器不对外输出,不能直接连接外部器件,而是在控制其他继电器、定时器、计数器

9、时作数据存储或数据处理用。根据程序设计的需要,应合理安排PLC的内部辅助继电器,在设计说明书中应详细列出各内部辅助继电器在程序中的用途,避免重复使用。3分配定时器计数器 对用到定时器和计数器的控制系统,注意定时器和计数器的编号不能相同。若扫描时间较长,则要使用高速定时器以保证计时准确安全回路设计 安全回路起保护人身安全和设备安全的作用,它应能独立于PLC工作,并采用非半导体的机电元件以硬接线方式构成。确保系统安全的硬接线逻辑回路,在以下几种情况下将发挥安全保护作用: PLC或机电元件检测到设备发生紧急异常状态时; PLC失控时; 操作人员需要紧急干预时。 设计安全回路的任务包括以下内容: (1

10、) 确定控制回路之间逻辑和操作上的互锁关系; (2) 设计硬回路以提供对过程中重要设备的手动安全性干预手段; (3) 为PLC定义故障形式和重新启动特性。PLC应用系统的软件设计PLC应用软件设计的内容 PLC应用软件的设计是一项十分复杂的工作,它要求设计人员既要有PLC、计算机程序设计的基础,又要有自动控制的技术,还要有一定的现场实践经验。一个实用的PLC软件工程的设计通常要涉及以下几个方面的内容:(1) PLC软件功能的分析与设计;(2) IO信号及数据结构分析与设计(3) 程序结构分析与设计;(4) 软件设计规格说明书编制;(5) 用编程语言、PLC指令进行程序设计;(6) 软件测试;(

11、7) 程序使用说明书编制。PLC应用系统的软件设计步骤 根据可编程序控制器系统硬件结构和生产工艺要求,在软件规格说明书的基础上,编制实际应用程序并形成程序说明书的过程就是应用系统的软件设计。1. 制定设备运行方案 制定方案就是根据生产工艺的要求,分析各输入、输出与各种操作之间的逻辑关系,确定需要检测的量和控制的方法,并设计出系统中各设备的操作内容和操作顺序。据此便可画出流程图。2. 画控制流程图 对于较复杂的应用系统,需要绘制系统控制流程图,用以清楚地表明动作的顺序和条件。对于简单的控制系统,可省去这一步。3. 制定系统的抗干扰措施 根据现场工作环境、干扰源的性质等因素,综合制定系统的硬件和软

12、件抗干扰措施,如硬件上的电源隔离、信号滤波,软件上的平均值滤波等。4. 编写程序 根据被控对象的输入输出信号及所选定的PLC型号分配PLC的硬件资源,为梯形图的各种继电器或接点进行编号,再按照软件规格说明书(技术要求、编制依据、测试),用梯形图进行编程。5. 软件测试 刚编写好的程序难免有缺陷或错误。为了及时发现和消除程序中的错误和缺陷,需要对程序进行离线测试。经调试、排错、修改及模拟运行后,才能正式投入运行。6. 编制程序使用说明书 当一项软件工程完成后,为了便于用户和现场调试人员的使用,应对所编制的程序进行说明,说明书应包括程序设计的依据、结构、功能、流程图,各项功能单元的分析,PLC的I

13、O信号,软件程序操作使用的步骤、注意事项等。PLC应用系统设计实例机械手控制系统设计 1. 工艺过程及控制要求 1) 工艺过程 图6.1所示为一简易物料搬运机械手的工艺流程图。该机械手是一个水平垂直位移的机械设备,其操作是将工件从左工作台搬运到右工作台,由光耦合器VLC来检测工作台上有没有工件。机械手通常位于原点,它的动作全部由气缸驱动,而气缸则由相应的电磁阀控制。其中,上升下降和左移右移分别由双线圈二位电磁阀控制,放松夹紧由一个单线圈二位电磁阀(称为夹紧电磁阀)控制。2) 控制要求 机械手整个搬运过程要求都能自动控制。在启动过程中能切换到手动控制及自动控制或半自动控制(又称单周期控制),以便

14、对设备进行调整和检修。图6.2是机械手控制系统的逻辑流程图。系统启动之前,机械手处于原始位置,条件是机械手在高位左位。 2. 可编程序控制器选型 1) 硬件配置 系统输入信号有3个启动按钮,4个限位开关,5个手动输入信号,1个有工件检测信号,共计14个数字量输入信号;输出信号有机械手上升下降驱动信号左移右移驱动信号和机械手夹紧驱动信号,共有5个数字量输出信号。不需模拟量模块,选择S7-300系列的CPU313,加上数字量输入模块SM321及输出模块SM322就可以满足要求,而且还有一定的裕量。2) IO地址分配 将14个输入信号、5个输出信号与PLC的IO端一一对应,编排好地址,其它地址分配(

15、1) 夹紧定时器T1,定时5 s;(2) 放松定时器T2,定时5 s;(3) 自动方式标志M0.0;(4) 单动方式标志M0.1;(5) 手动方式标志M0.2;(6) 结束标志M0.5。3. 机械手程序设计 1) 逻辑功能块(子程序) 逻辑功能块包括两个部分:自动方式或单动方式控制(FC10)和手动方式控制(FC11)。 (1) 自动方式或单动方式控制(FC10)的具体程序(梯形图表示)如图6.3所示。 (2) 手动方式控制(FC11)的具体程序(梯形图表示)如图6.4所示。2) 组织块(主程序) 组织块OB1用于设定机械手启动方式,主要负责功能块或子程序的调用,是自动运行还是单动运行,以及系

16、统的循环扫描、故障诊断和输出刷新。其梯形图如图6.5所示。5.1 编程方式与程序块5.2 数据块与数据结构5.3 S7系列PLC程序设计5.1.1 S7-300编程方式简介 S7-300系列PLC的编程语言是STEP 7。STEP 7继承了STEP 5语言结构化程序设计的优点,用文件块的形式管理用户编写的程序及程序运行所需的数据。如果这些文件块是子程序,则可以通过调用语句,将它们组成结构化的用户程序。这样,PLC的程序组织明确,结构清晰,易于修改。为支持结构化程序设计,STEP 7用户程序通常由组织块(OB)、功能块(FB)或功能块(FC)等三种类型的逻辑块和数据块(DB)组成。 组织块(OB

17、)是系统操作程序与用户应用程序在各种条件下的接口界面,用于控制程序的运行。OB块根据操作系统调用的条件(如时间中断、报警中断等)可分成几种类型,这些类型有不同的优先级,高优先级的OB可以中断低优先级的OB。每个S7 CPU包含一套可编程的OB块(随CPU而不同),不同的OB块执行特定的功能。OB1是主程序循环块,在任何情况下,它都是需要的。根据过程控制的复杂程度,可将所有程序放入OB1中进行线性编程,或将程序用不同的逻辑块加以结构化,通过OB1调用这些逻辑块,并允许块间的相互调用。块的调用指令中止当前块(调用块)的运行调用,然后执行被调用块的所有指令。一旦被调用的块被完成,执行调用指令的块继续

18、执行调用指令后的指令。调用块可以是任何逻辑块,被调用块只能是功能块(除OB外的逻辑块)。图5.1所示是一个STEP 7调用实例。除了OB1,操作系统可以调用其它的OB块以响应确定事件。其它可用的OB块随所用的CPU性能和控制过程的要求而定。功能块(FB、FC)实际上是用户子程序,分为带“记忆”的功能块FB和不带“记忆”的功能块FC。前者有一个数据结构与该功能块的参数表完全相同的数据块(DB)附属于该功能块,并随功能块的调用而打开,随功能块的结束而关闭。该附属数据块叫做背景数据块(Instance Data Block),存放在背景数据块中的数据在FB块结束时继续保持,即被“记忆”。功能块FC没

19、有背景数据块,当FC完成操作后数据不能保持。 数据块(DB)是用户定义的用于存取数据的存储区,可以被打开或关闭。DB可以是属于某个FB的情景数据块,也可以是通用的全局数据块,用于FB或FC。S7 CPU还提供标准系统功能块(SFB、SFC),它们是预先编好的,经过测试后集成在S7 CPU中的功能程序库。用户可以直接调用它们,高效地编制自己的程序。由于它们是操作系统的一部分,因此不需将其作为用户程序下载到PLC。与FB块相似,SFB需要一个背景数据块,并需将此DB块作为程序的一部分安装到CPU中。不同的CPU提供不同的SFB、SFC功能。 系统数据块(SDB)是为存放PLC参数所建立的系统数据存

20、储区。用STEP 7的S7组态软件可以将PLC组态数据和其它操作参数存放于SDB中。功能块编程及调用 功能块由两个主要部分组成:一部分是每个功能块的变量声明表,变量声明表声明此块的局部数据;另一部分是逻辑指令组成的程序,程序要用到变量声明表中给出的局部数据。 当调用功能块时,需提供块执行时要用到的数据或变量,也就是将外部数据传递给功能块,这被称为参数传递。参数传递的方式使得功能块具有通用性,它可被其它的块调用,以完成多个类似的控制任务。1. 变量声明表(局部数据) 每个逻辑块前部都有一个变量声明表,在变量声明表中定义逻辑块用到的局部数据。局部数据分为参数和局部变量两大类,局部变量又包括静态变量

21、和临时变量(暂态变量)两种。参数是在调用块和被调用块间传递的数据。静态变量和临时变量是仅供逻辑块本身使用的数据。表5.1给出了局部数据声明类型,表中内容的排列顺序也是在变量声明表中声明变量的顺序和变量在内存中的存储顺序。在逻辑块中不需使用的局部数据类型,可以不必在变量声明表中声明。表5.1 局部数据类型变 量 名 类 型 说 明输入参数 In 由调用逻辑块的块提供数据,输入给逻辑块的指令输出参数 Out 向调用逻辑块的块返回参数,即从逻辑块输出结果数据IO参数 In_Out 参数的值由调用块的块提供,由逻辑块处理修改,然后返回静态变量 Stat 静态变量存储在背景数据块中,块调用结束后,其内容

22、被保留临时变量 Temp 临时变量存储在L堆栈中,块执行结束变量的值因被其它内容覆盖而丢掉对于功能块FB,操作系统为参数及静态变量分配的存储空间是背景数据块。这样参数变量在背景数据块中留有运行结果备份。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。操作系统在L堆栈中给FB的临时变量分配存储空间。 对于功能块FC,操作系统在L堆栈中给FC的临时变量分配存储空间。由于没有背景数据块,因而FC不能使用静态变量。输入、输出、IO参数以指向实参的指针形式存储在操作系统为参数传递而保留的额外空间中。 对于组织块OB来说,其调用是由操作系统管理的,用户不能参与。因此,OB只有定义在L堆栈中的

23、临时变量。1) 形参 为保证功能块对同一类设备控制的通用性,用户在编程时就不能使用具体设备对应的存储区地址参数(如不能使用I1.0等),而是使用这类设备的抽象地址参数。这些抽象参数称为形式参数,简称形参。将该设备的相应实际存储区地址参数(简称实参)传递给功能块,功能块在运行时以实参替代形参,从而可通过调用功能块实现对具体设备的控制。当对另一设备控制时,同样也可通过调用实参将其传递给功能块。形参需在功能块的变量声明表中定义,实参在调用功能块时给出。在功能块的不同调用处,可为形参提供不同的实参,但实参的数据类型必须与形参一致。用户程序可定义功能块的输入值参数或输出值参数,也可定义一参数作为输入输出

24、值。参数传递可将调用块的信息传递给被调用块,也能把被调用块的运行结果返回给调用块。2) 静态变量 静态变量在PLC运行期间始终被存储。S7将静态变量定义在背景数据块中,当被调用块运行时,能读出或修改静态变量;被调用块运行结束后,静态变量保留在数据块中。由于只有功能块FB有关联的背景数据块,因此只能为FB定义静态变量。功能块FC不能有静态变量。 3) 临时变量 临时变量仅在逻辑块运行时有效,逻辑块结束时存储临时变量的内存被操作系统另行 分配。S7将临时变量定义在L堆栈中,L堆栈是为存储逻辑块的临时变量而专设的。当块程序运行时,在L堆栈中建立该块的临时变量,一旦块执行结束,堆栈重新分配,因而信息丢

25、失。逻辑块局部数据的数据类型 在变量声明表中,要明确局部数据的数据类型,这样操作系统才能给变量分配确定的 存储空间。局部数据可以是基本数据类型或复式数据类型,也可以是专门用于参数传递 的所谓的“参数类型”。参数类型包括定时器、计数器、块的地址或指针等,见表5.2。表5.2 参数类型变量参数类型 大 小 说 明定时器(Timer) 2 B 在功能块中定义一个定时器形参,调用时赋予定时器实参计数器(Counter) 2 B 在功能块中定义一个计数器形参,调用时赋予计数器实参块:Block_FBBlock_FCBlock_DBBlock_SDB 2 B 在功能块中定义一个功能块或数据块形参变量,调用

26、时给功能块类或数据块类形参赋予实际的功能块或数据块编号,如FC 101、DB 42指针(Pointer) 6 B 在功能块中定义一个形参,该形参说明的是内存的地址指针。例如,调用时可给形参赋予实参P#M50.0,以访问内存M50.0ANY 10 B 当实参的数据类型未知时,可以使用该类型1) 定时器或计数器参数类型 在功能块中定义一个定时器或计数器类型的形参,功能块就能使用一个定时器或计数器,而不需明确具体的定时器或计数器,等到调用该功能块时再确定定时器或计数器号。这使用户程序能灵活性地分配和使用定时器或计数器。当给定时器或计数器参数类型形参分配实参时,在“T”或“C”后跟一个有效整数,如T

27、100。2) 块参数类型 当定义一个作为输入输出的块时,参数声明决定了块的类型(FB、FC、DB等)。当为块参数类型形参分配实参时,可以使用物理地址,如FC 101,也可使用符号地址,如“valve3) 指针参数类型 一个指针给出的是变量的地址,而不是变量的数值大小。在有些功能块中,可能使用指针编程更为方便。用定义指针类型的形参,就能在功能块中先使用一个虚设的指针,待调用功能块时再为其赋予确定的地址。当为指针参数类型形参分配实参时,需要指明内存地址,例如P#M50.0。3. 块调用过程及内存分配 CPU提供块堆栈(B堆栈)来存储与处理被中断块的有关信息。当发生块调用或有来自更高优先级的中断时,

28、就有相关的块信息存储在B堆栈里,并影响部分内存和寄存器。图5.2显示了调用块时B堆栈与L堆栈的变化。图5.3提供了关于STEP 7的块调用情况。1) B堆栈与L堆栈 B堆栈是CPU系统内存中的一部分,它存储以下被中断块的数据:(1) 块号、块类型、优先级、被中断块的返回地址;(2) 块寄存器DB、DI被中断前的内容;(3) 临时变量的指针(被中断块的L堆栈地址)。STEP 7中可使用的B堆栈大小是有限制的,对于S7-300 CPU,则可在B堆栈中存储8个块的信息。因此,块调用嵌套深度也是有限制的,最多可同时激活8个块。 L堆栈是CPU内存中的一部分,它在块调用时被重新分配。L堆栈用来存储逻辑块

29、中定义的临时变量,也分配给临时本地数据使用。梯形图的方块指令与标准功能块也可能使用L堆栈存储运算的中间结果。2) 调用功能块FB 当调用功能块FB时,会有以下事件发生: (1) 调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈; (2) 数据块DB寄存器内容与DI寄存器内容交换; (3) 新的数据块地址装入DI寄存器; (4) 被调用块的实参装入DB和L堆栈上部; (5) 当功能块FB结束时,先前块的现场信息从块堆栈中弹出,临时变量弹出L堆栈; (6) DB和DI寄存器内容交换。当调用功能块FB时,STEP 7并不一定要求给FB形参赋予实参,除非参数是复式数据类型的IO形参或参

30、数类型形参。如果没有给FB形参赋予实参,则功能块FB就调用背景数据块内的数值。该数值是在功能块的变量声明表内或背景数据块内设置的形参初始数值。3) 调用功能块FC 当调用功能块FC时会有以下事件发生: (1) 功能块FC实参的指针存到调用块的L堆栈; (2) 调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈; (3) 功能块存储临时变量的L堆栈区被推入L堆栈上部; (4) 当被调用功能块FC结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。 因为功能块FC不用背景数据块,不能分配初始数值给功能块FC的局部数据,所以必须给功能块FC提供实参。STEP 7为功能块FC提供了一个

31、特殊的返回值输出参数(关键字:RET_VAL)。当在文本文件中创建功能块FC时,你可以在定义功能块FC命令后输入数据类型(如BOOL或INT)。对文本文件进行编译时,STEP 7会自动生成RET_VAL输出参数。当用STEP 7的程序编辑器(Program Editor)以增量模式创建功能块FC时,可在FC的变量声明表中声明一个输出参数RET_VAL,并指明其数据类型。功能块编程与调用举例 对功能块编程分两步进行:第一步是定义局部变量(填写局部变量表);第二步是编写要执行的程序,可以用梯形图或语句表两种形式编程,并在编程过程中使用定义了的局部变量(数据)。 定义局部变量的工作内容包括: (1)

32、 分别定义形参、静态变量和临时变量(FC块中不包括静态变量);(2) 确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type),还要为变量设置初始值(Initial Value)(尽管对有些变量初始值不一定有意义)。如果需要还可为变量注释(Comment)。在增量编程模式下,STEP 7将自动产生局部变量地址(Address)。写功能块程序时,可以用以下两种方式使用局部变量: (1) 使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。 (2) 直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。 在调用FB

33、块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。在增量方式下,调用FB块时,STEP 7会自动提醒并生成背景数据块。此时也为背景数据块设置了初始值,该初始值与变量声明表中的相同。当然也可以为背景数据块设置当前值(Current Value),即存储在CPU中的数值。1二分频器 假设功能块FC10是二分频器产生程序,功能是对不同的输入位进行二分频处理。以下给出了FC10的变量声明表和语句表程序。在程序中使用了跳变沿检测指令。 1) FC10的变量声明表(见表5.3)Address Decl. Symbol Data Type Initial Value C

34、omment0.0 In INP BOOL FALSE 脉冲输入信号1.0 Out OUTP BOOL FALSE 脉冲输出信号2.0 In_Out ETF BOOL FALSE 跳变沿标志2) 语句表程序 Network 1 A #INP 对脉冲输入信号产生RLO FP #ETF 对前面的RLO进行跳变沿检测,若有正跳沿则RLO1,否则RLO0 NOT 取反RLO BEC 若RLO1(没有正跳沿),结束块;若RLO0(有正跳沿),继续执行下一条指令 AN #OUTP #OUTP 输出信号反转 BEU 无条件结束块 在功能块FCl0中定义了三个形参,程序中以引用变量名方式使用了形参变量。也可以

35、为FC10在符号表中定义一个符号名,如“BINARY”,并选用以下两种方式之一调用功能块FC10。调用时为形参分别赋予实参I0.0、Q4.0和M10.0,以对输入位I0.0进行二分频以产生输出脉冲Q4.0。调用方式1 调用方式2 CALL FC10 CALL BINARY INP: I0.0 INP: I0.0 OUTP: Q4.0 OUTP: Q4.0 ETF: M10.0 ETF: M10.02读模拟输入量程序 一些S7-300的应用系统中,使用8通道模拟量模块采集信号,当模块数量较多时,读模拟输入量就很繁琐。下面给出一个通用程序FC100,利用它可以方便地把模拟量读回并顺序存入数据块,因

36、为模入模块的起始地址、通道数、存储数据块号及数据在数据块中的存储起始位置均是可变的,所以可在调用FC100时灵活确定。 Address Decl. Symbol Data Type Initial Value Comment0.0 In PIW_Addr INT 模入模块通道起始地址2.0 In CH_LEN INT 要读入的通道数4.0 In DB_No INT 存储数据块号6.0 In DBW_Addr INT 存储在数据块中的字地址Network 1 L #DB_No T LW0 OPN DBLW 0 打开存储数据块 L #PIW_Addr SLD 3 形成模入模块地址指针 T LD4

37、在临时本地数据双字LD 4中存储模入模块地址指针 L #DBW_Addr SLD 3 形成数据块存储地址指针 T LD8 在临时本地数据双字LD 8中存入数据块存储地址指针 L #CH_LEN 以要读入的通道数为循环次数,装入累加器12读模拟输入量程序 一些S7-300的应用系统中,使用8通道模拟量模块采集信号,当模块数量较多时,读模拟输入量就很繁琐。下面给出一个通用程序FC100,利用它可以方便地把模拟量读回并顺序存入数据块,因为模入模块的起始地址、通道数、存储数据块号及数据在数据块中的存储起始位置均是可变的,所以可在调用FC100时灵活确定。 Address Decl. Symbol Da

38、ta Type Initial Value Comment0.0 In PIW_Addr INT 模入模块通道起始地址2.0 In CH_LEN INT 要读入的通道数4.0 In DB_No INT 存储数据块号6.0 In DBW_Addr INT 存储在数据块中的字地址Network 1 L #DB_No T LW0 OPN DBLW 0 打开存储数据块 L #PIW_Addr SLD 3 形成模入模块地址指针 T LD4 在临时本地数据双字LD 4中存储模入模块地址指针 L #DBW_Addr SLD 3 形成数据块存储地址指针 T LD8 在临时本地数据双字LD 8中存入数据块存储地

39、址指针 L #CH_LEN 以要读入的通道数为循环次数,装入累加器1NEXT:T LW 0将累加器1的值,装入循环次数计数器LW0(临时本地数据字) L LD4 LARl 将模入模块地址指针装入地址寄存器1 L PIWARl,P#0.0 读模入模块装入累加器1 T LW2 将累加器1的内容暂存入缓冲器LW2 L LD8 LARl 将数据块存储地址指针装入地址寄存器1 L LW2 将数据缓冲器中的内容装入累加器1 T DBWARl,P#0.0 将累加器的内容存入数据块中L LD4 AR1+P#2.0AR1+ L#16 ACC1+(_0001_0 000)T LD4 调整模入模块地址指针,指向下一

40、通道Acc1+(bb bbbb bxxx)L LD8+ L#16T LD8 调整数据块存储地址指针,指向下一存储地址L LW0 将循环次数计数器LW0的值装入累加器1LOOP NEXT 若累加器1的值不为0,将累加器减1继续循环;若累加 器为0,则结束 在FC100中,寄存器间接寻址指令OP NDBLW0使用了临时本地数据LW0,变量表中定义的临时变量虽然也在L堆栈中,但不能用于存储器间接寻址,从这里也可看出临时本地数据与临时变量的区别。程序中LW2、LD4和LD8起的作用也可用临时变量替代。 下面举例说明如何使用FC100。在某应用中,机架0的4号槽位安装了一个8模入模块(地址256开始),

41、若要将前6个模入模块信号读回,存入DB50.DBW10开始的6个字单元中,可按下列形式调用FC100:CALL FC100 PIW_Add:= 256 CH_LEN:= 6 DB_No:= 50 DBW_Addr:= 10 数据块 数据块定义在S7 CPU存储器中,用户可在存储器中建立一个或多个数据块。每个数据块可大可小,但CPU对数据块数量及数据总量有限制,如对于CPU314,用作数据块的存储器最多为8 KB(8192 B),用户定义的数据总量不能超出这个限制。对数据块必须遵循先定义后使用的原则,否则,将造成系统错误。1. 定义数据块 在编程阶段和运行程序中都能定义数据块。大多数数据块是在编

42、程阶段用STEP 7开发软件包定义的,定义内容包括数据块号及块中的变量(包括变量符号名、数据类型以及初始值等),定义完成后,数据块中变量的顺序及类型决定了数据块的数据结构,变量的数量决定了数据块的大小。数据块在使用前,必须作为用户程序的一部分下载到CPU中。 如果确实需要,还可以在程序运行中动态定义一个数据块。动态定义时,数据块号是自动产生的,数据块在存储器中的位置是动态分配的。由于要定义的数据块有可能大于CPU存储器(用于数据块的部分)的剩余空间,因此动态定义过程有可能失败2访问数据块 在用户程序中可能定义了许多数据块,而每个数据块中又有许多不同类型的数据,因此,访问时需要明确数据块号和数据

43、块中的数据类型与位置。根据明确数据块号的不同方法,可以用多种方法访问数据块中的数据。 直接在访问指令中写明数据块号,如: L DB5.DBW10 T DB10.DBW20 L Motor_1.Speed 符号地址另一种方法是“先打开后访问”。在访问某数据块中的数据前,先“打开”这个数据块,也就是将数据块号(数据块的起始地址)装入数据块寄存器。这样,存放在数据块中的数据就可利用数据块起始地址加偏移量的方法来访问。如:OPN DB5L DBW10OPN DB10T DBW20在打开一个数据块时,先打开的数据块会自动关闭(没有专门的数据块关闭指令)。由于有两个数据块寄存器(DB和DI寄存器),因此,

44、最多可同时打开两个数据块。一个作为背景数据块,数据块的起始地址存储在DI寄存器中;另一个作为共享数据块,数据块的起始地址存储在DB寄存器中。打开背景数据块,在调用FB时可以自动实现。由于调用FB时使用DI寄存器,因此,一般不在FB程序中用OPN DI n指令打开数据块。3. 背景数据块和共享数据块 背景数据块和共享数据块有不同的用途。任何FB、FC或OB均可读写存放在共享数据块中的数据。背景数据块是FB运行时的工作存储区,它存放FB的部分运行变量。调用FB时,必须指定一个相关的背景数据块。作为规则,只有FB块才能访问存放在背景数据块中的数据。一般情况下,每个FB都有一个对应的背景数据块,一个F

45、B也可以使用不同的背景数据块。如果几个FB需要的背景数据完全相同,为节省存储器,则可以定义成一个背景数据块,供它们分别使用。通过多重背景数据,也可将几个FB需要的不同的背景数据定义在一个背景数据块中,以优化数据管理。各数据块在CPU的存储器中是没有区别的,只是由于打开方式不同,才在打开时有背景数据块和共享数据块之分。原则上,任何一个数据块都可以当作共享数据块或背景数据块使用,实际上,一个数据块由FB当作背景数据块使用时,必须与FB的要求格式相符。数据结构 STEP 7数据块中的数据结构形式比较丰富,数据块中的数据既可以是基本数据类型,又可以是复式数据类型。所谓复式数据类型,是指位数超过32位的

46、数据或由其它数据类型构成的数据组。基本数据类型在第4章中已有过介绍,本节专门说明复式数据类型。STEP 7允许4种复式数据类型,如表5.5所示。名 称 类 型 说 明日期-时间 DATE_AND_TIME 长度为8 B(64位)。按BCD码格式顺序存储以下信息:年(字节0)、月(字节1)、日(字节2)、小时(字节3)、分(字节4)、秒(字节5)、毫秒(字节6和7的高半字节)、星期(字节7的低半字节)字符串 STRING 字符串是一组ASCII码,一个串内可定义最多254个字符,占用256 B内存。串中每个字符占用1 B,内存中头两个字节存储串的长度信息。第一个字节存放此串的定义长度(默认值为2

47、54个字符),第二个字节存放字符串实际长度。例如,String7定义长度为7的字符串,占用内存9 B(2+7)。若不定义长度,则默认为254个字符数组 ARRAY 由一种数据类型组成的数据集合,数据类型可以是基本数据类型或复式数据类型。通过下标访问数组中的数据。可定义到6维数组构造 STRUCT 由多种数据类型组成的数据集合另一种复式数据类型称为“用户数据类型(UDT)”,它是利用STEP 7“程序编辑器”产生的,可命名构造。将大量数据组织到UDT中,在生成数据块或在变量声明表中声明变量时将变得更加方便。用户还可为UDT声明符号名。 日期-时间数据类型的名称、位数及格式是由操作系统定义的,用户

48、不可改变,并且该类型在S7-300中必须用标准功能块SFC才能访问。其它复式数据类型则由用户在逻辑块变量声明表或数据块中定义。1. 数组 一个数组将同种数据类型组合成整体,但不能建立数组的数组。图5.4表示一个二维 整数数组。数组的符号名是“Op_temps”,用符号名加下标可访问数组中的数据。以图5.4为例,第一个整数是Op_temps1,1,第三个为Op_tempsl,3,第四个为Op_temps2,1,第六个为Op_temps2,3。1) 建立数组 在数据块或变量声明表中可定义数组。在声明数组时,首先给数组命名,接着使用关键字(ARRAY),然后在方括号中给出数组的大小及维数。可以定义多

49、达6维的数组,并用下标来标识数组的大小。在方括号中放下标,各维之间用逗号隔开,每一维的首尾之间用双点隔开。一个下标可以为任何一个整数值(范围:32 76832 767),并包括负数。如用ARRAY13, 12, 13, 23, 3032, 14来定义变量Op_temps为6维数组。该数组的第一个整数为Op_temps1, 1, 1, 2, 30, 1;最后一个为Op_temps3, 2, 3, 3, 32, 4。图5.5显示了建立名字为Heat_2×3的二维数组(与图5.4中的数组相似)。2) 赋初始值 在建立数组时,STEP 7允许以两种方法给数组的元素赋初始值。对图5.5中的数组

50、,可以为6个元素赋初始值:17,23,45,556,3342,0;若初始值中有顺序相同的元素,写法可以简化,如要数组的头两个元素设特定数值,其余4个为10,则可简写为17,23,4(10),其中4为重复系数,10为要重复的数值。3) 访问数组 利用数组中指定元素的下标可以访问数组数据,这时数据块、数组符号名及下标一起 使用。如图5.5中声明的数组在DB20(符号名:MOTOR)的第一个字节处开始,用以下地址访问数组中的第二个元素: MOTOR. Heat_2×31,2 4) 利用数组传递参数 将数组作为参数传递时,要求形式参数和实际参数必须有同样的数据组织结构、相同 的数据类型,并按

51、相同的顺序排列。2. 构造 构造将不同数据类型组合成一个整体,见图5.6。构造的元素可以是任何基本数据类型或复式数据类型,有数组或构造元素的构造能嵌套8层。因此,STEP 7允许用户将过程中的各种关联数据统一组织在一个构造中,也为统一处理不同类型数据或参数提供了可能性1) 建立构造 构造(STRUCT)只能在数据块或变量声明表中定义。图5.7所示为由整数(存放数量)、字节(存放原始数据)、字符(存放控制码)、浮点数(存放温度)、布尔数(完成标志信号)组成的构造。该构造的名称为Stack_1。2) 赋初始值 按每个元素的类型和名称给构造的每个元素赋初始值。并将其写入图5.8中Initial Va

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论