内江S7-1200PLC西门子代理商原装现货 内江西门子S7-1200PLC代理,内江西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
西门子PLC局部变量表与子程序使用技巧有哪些
局部变量表
1.局部变量与全局变量
程序中的每个POU(Program OrganizationalUnit,程序组织单元)均有白己的由64字节L存储器组成的局部变量表。它们用来定义有范围限制的变量,局部变量只在它被创建的POU中有效。与之全局符号在各POU中均有效,只能在符号表/全局变量表中定义。全局符号与局部变量名称相在定义局部变量的POU中,该局部变量的定义优先,该全局定义则在儿它POU中使用。
局部变量适用于以下两种情况:
(1)在子程序中只用局部变量,不用**地址或全局符号,子程序可移植到别的项目去。
(2)如果使用临时变量(TEMP),同一片物理存储器可在不同的程序中重复使用。
内江S7-1200PLC西门子代理商原装现货 内江西门子S7-1200PLC代理,内江西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
西门子S7-1200作为IO设备与另一台作为控制器的1200在不同项目下的通信
一、要完成的功能任务
1. S7-1200 CPU (控制器) 将通讯数据区 QB100至QB109 中的 10个字节的数据发送到 S7-1200CPU (IO设备) 的接收数据区 IB100至IB109中;
2. S7-1200 CPU (IO设备) 将发送数据区 QB200至QB209 中的 10 个字节的数据发送到 S7-1200CPU (控制器) 的接收数据区 IB100至IB109 中。
二、硬件设备
1. CPU 1214C DC/DC/DC,V4.4
2. CPU 1214C DC/DC/DC,V4.4
三、软件
西门子plc编程软件:TIA 博途V16
四、实现方法
1. 组态IO设备端,使用 STEP7 V16 创建一个名为IO设备的项目,并通过“添加新设备组态一个 S7-1200作为IO设备,选择 CPU1214C DC/DC/DC V4.4,在设备组态的设备视图中建立新子网并设置IP地址。
2. 点选“操作模式”,在右边的操作模式选项下勾选IO设备,因与IO控制器不在同一项目下,“已分配的IO控制器”选择“未分配”.
3. 配置与IO控制器的传输区域。组态了两个传输区域,1为接收区域IB100一个字节,2为发送区域QB100一个字节.
4.导出GSD文件。在导出GSD文件之前必须点“编译”选项,否则“导出”按钮为灰色不可选,如上图3所示。编译无误后,“导出”按钮变为黑色可操作,这时点击“导出”,按给出的提示选择GSD文件的保存路径,本例保存在桌面上,
如果不是上述两种情况,不需要使用局部变量。通过在符号表(SIMATIC)或全局变量表(IEC)中进行定义,可使符号成为全局变量。
2.局部变量的类型
TEMP(临时变量):暂时保存在局部数据区中的变量。只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再使用临时变量的数值。在主程序或中断程序中.局部变量表只包含TEMP变量。子程序中的局部变量表还有下面的3种变量:
IN(输人变量):由调用它的POU提供的输人参数。
OUT(输出变量);返回给调用它的POU的输出参数。
IN_OUT(输人/输出变量);其初始值由调用它的POU提供,被子程序修改后返问给调用它的POU。
3.局部变量的赋值
在局部变量表中赋值时,只需指定声明局部变量的类型(TEMP,IN,IN_OUT或OUT)和数据类型(参见SIMATIC和IEC1131-3的数据类型),但不指定存储器地址,程序编辑器自动地在L存储区中为所有局部变量指定存储器位置。
4.在局部变量表中增加新的变量
对于主程序与中断程序,局部变量表显示一组已被预先定义为TEMP(临时)变量的行。要向表中增加行,只需用右键单击表中的某一行,选择“插人→行"指令,在所选行的上部插人新的行,选择“插人→行下"指令,在所选行的下部插人新的行。
对于子程序,局部变量表显示数据类型被预先定义为IN、IN_OUT.OUT和TEMP的一系列行,不能改变它们的顺序。如果要增加新的局部变量,必须用鼠标右键单击已有的行,并用弹出菜单在所击行的上下插人相同类型的另一局部变量。
5.局部变量数据类型检查内江S7-1200PLC西门子代理商原装现货 内江西门子S7-1200PLC代理,内江西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
局部变量作为参数向子程序传递时,在该子程序的局部变量表中指定的数据类型必须调用POU中的数据类型值匹配。
例如从主程序0B1调用子程序SBR0,使用名为INPUT1的全局符号作为子程序的输人参数。在SBRO的局部变量表中,已经定义了一个名为FIRST的局部变量作为该输入参数,当0B1调用SBR0时,INPUTI的数值被传人FIRST,INPUTI和FIRST的数据类型必须匹配。
6.显示或隐藏局部变量表
2. 错误的分类
被S7 CPU检测到并且用户可以通过组织块对其进行处理的错误分为两个基本类型∶
1)异步错误是与PLC的硬件或操作系统密切相关的错误,与用户程序的执行无关。异步错误的后果一般都比较严重。异步错误对应的组织块为OB70~OB73和OB80~OB87(见表4-9),具有*高的优先级。
2)同步错误是与程序执行有关的错误,OB121和OB122用于处理同步错误,它们的优先级与出现错误时被中断的块的优先级相同,即同步错误OB中的程序可以访问块被中断时累加器和状态寄存器的内容。对错误进行适当处理后,可以将处理结果返回被中断的块。
3.时间错误处理组织块(OB80)
循环时间的默认值为150ms,时间错误包括实际循环时间超过设置的循环时间、因为向前修改时间而跳过时间中断、处理优先级时延迟太多等。
为OB80编程时应判断是哪个时间中断被跳过,使用SFC29“CAN_TINT”可以取消被跳过的时间中断。只有新的时间中断才会被执行。
4 电源故障处理组织块(OB81)
电源故障包括后备电池失效或未安装,S7-400的CPU机架或扩展机架上的DC24V电源故障。电源故障出现和消失时操作系统都要调用OB81。
5.诊断中断处理组织块(OB82)
OB82、OB85和OB86的功能将在7.1.1节详细介绍。
6.插入/拔出模块中断组织块(OB83)
S7-400和某些型号的ET200在RUN、STOP或STARTUP模式下带电拔出和插入模块时,将产生插入/拔出模块中断。在这些操作模式不能拔出CPU模块、电源模块、接口模块和适配器模块。在下列情况下调用0B83被组态的模块插入或拔出,用STEP7修改了模块的参数,并且在RUN模式时将它下载。
将水平分裂条拉至程序编辑器视窗的倾部,则不再疑示局部变量表,但它仍然存在。将分裂条下拉,将显示局部变量表。
7.在局部变量表中进行赋值
在程序中使用符号名时,程序编辑器检查有关POU的局部变量表,检查符号表/全局变量表。如果某符号名在两处都没有定义,程序编辑器则将其视为全局符号,程序编辑器指定一条绿色波浪状下画线,并将名称括在双引号中,例如"UndefinedLocalVar(未定义的局部变量)。如果后来对该符号名赋了值,程序编辑器不会自动读取局部变量表并修改它。为了将该符号名作为局部变量使用,必须手工删除程序代码中的引号,并在符号名前插人#号,例如改为#UndefinedLocalVar。
各子程序*多可调用16个输人/输出参数,如果超出16个,将返回错误。
选择希望的变量类型所在的行,并在名称域中键人变量名称,在数据类型城中键人数据类型。不需在局部变量表中的安量名称前加并号,#号只在程序代码中的局部变量名之前使用。
局部变量名可包含数字、字母和下画号(“_”),也可以包含扩展字符(ASII128-ASCII255)。第一个字符必须是字可或扩展字符,关键字不能作为符号名。
局部变量表中的变量名被下载和存储在CPU存储器中,使用较长的变量名将占用较多的存储空问。