编程实例概述实际应用本手册中描述的每个梯形图指令都会触发一个特定操作。将这些指令组合到一个程序中时,便可完成多种自动化任务。本章提供梯形图指令实际应用的以下实例:•控制传送带 - 使用位逻辑指令•检测传送带的移动方向 - 使用位逻辑指令•生成时钟脉冲 - 使用定时器指令•跟踪存储空间 - 使用计数器和比较指令•使用整数数学运算指令解决问题•设置加热烘炉的时间长度使用的指令 助记符程序元素目录WAND_W字逻辑指令WOR_W字逻辑指令--- ( CD )计数器--- ( CU )计数器---( R )位逻辑指令---( S )位逻辑指令---( P )位逻辑指令ADD_I浮点指令DIV_I浮点指令MUL_I浮点指令CMP <=I, CMP >=I比较枛| |枛位逻辑指令枛| / |枛位逻辑指令枛( )位逻辑指令---(JMPN)跳转---(RET)程序控制MOVE传送---( SE )定时器描述(字)与运算 (字)或运算 降值计数器线圈 升值计数器线圈 重置线圈 置位线圈 RLO上升沿检测 整数加 整数除 整数乘比较整数 常开触点 常闭触点 输出线圈 若非则跳转 返回 分配值扩展脉冲定时器线圈 实例:实例:整型数学运算指令解决数学问题 解决数学实例程序显示了如何使用三个整数数学运算指令来产生与下列方程式相同的结果:MW4 = ((IW0 + DBW3) x 15) / MW0梯形图程序 程序段1:打开数据块DB1。DB1OPN程序段2:输入字IW0加到共享数据字DBW3(必须定义和打开数据块),总和被载入存储器字MW100。然后,MW100乘以15,结果存储到存储器字MW102中。MW102除以MW0,结果存储到MW4中。ADD_IENIW0DBW3IN1IN2OUTENOMW100MW10015MUL_IENIN1IN2OUTENOMW102MW102MW0DIV_IENIN1IN2OUTMW4ENO实例:实例:计数器和比较指令带计数器和比较器的存储区域下图显示了具有两个传送带且在传送带之间有临时存储区域的系统。传送带1将包裹传送到存储区域。存储区域附近的传送带1末端的光电屏障确定向存储区域传送的包裹数量。传送带2会将包裹从临时存储区域传输到装载码头,而卡车在此将包裹发送给客户。存储区域附近的传送带2末端的光电屏障确定离开存储区域而转向装载码头的包裹数量。带五个指示灯的显示面板将指示临时存储区域的填充量。 Display PanelStorage areaempty(Q 12.0)Storage areanot empty(Q 12.1)Storage area 50% full(Q 15.2)Storage area90% full(Q 15.3)Storage areaFilled to capacity(Q 15.4)Packages inI 12.0Temporarystorage areafor 100packagesI 12.1Packages outConveyor belt 1Photoelectric barrier 1Conveyor belt 2Photoelectric barrier 2激活显示面板上的指示灯的梯形图程序 程序段1:计数器C1对输入CU处每次从\"0\"到\"1\"的信号改变都进行正计数,而对输入CD处每次从\"0\"到\"1\"的信号改变都进行倒计数。对于输入S处从\"0\"到\"1\"的信号改变,计数器值被设置为值PV。输入R处从\"0\"到\"1\"的信号改变将计数器值复位为\"0\"。MW200包含C1的当前计数器值。Q12.1指示\"存储区域非空\"。I 12.0I 12.1C1S_CUDCUCDQQ 12.1I 12.2SC#10I 12.3RCV_BCDMW200PVCVMW210程序段2:Q12.0表明\"存储区域为空\"。 Q 12.1 Q 12.0 程序段3:如果50小于等于计数器值(换句话说,如果当前计数器值大于等于50),则表示\"存储区域50%满\"的指示灯变亮。CMP<= I50MW210IN1IN2Q 15.2程序段4:程序段4:如果计数器值大于或等于90,则表示\"存储区域90%满\"的指示灯变亮。CMP>= IMW21090IN1IN2Q 15.3程序段5:如果计数器值大于或等于100,则表示\"存储区域满\"的指示灯变亮。 CMP>= IMW210100IN1IN2Q 15.4实例:实例:定时器指令时钟脉冲发生器时钟脉冲当需要生成定期重复的信号时,可使用时钟脉冲发生器或闪烁继电器。时钟脉冲发生器在控制指示灯闪烁的信号系统中很常见。 当使用S7-300时,您可用特殊组织块中的时间处理功能来执行时钟脉冲发生器功能。但下列梯形图程序中显示的实例说明的是使用定时器功能产生时钟脉冲。实例程序显示如何通过使用定时器实现任意的时钟脉冲发生器。 产生时钟脉冲(脉冲占空比1:1)的梯形图程序程序段1:如果定时器T1的信号状态为0,将时间值250毫秒载入T1,并将T1作为扩展脉冲定时器启动。M0.2T1SES5T#250MS程序段2:该定时器的状态临时保存在一个辅助存储器符号中。T1M0.2程序段3:如果定时器T1的信号状态为1,则跳转至跳转标签M001。M0.2M001JMP程序段4:定时器T1超时后,存储器字100增加1。ADD_IENMW1001IN1IN2ENOOUTMW100程序段5:MOVE指令允许在输出Q12.0到Q13.7输出不同的时钟频率。M001MOVEENMW100INENOOUTAW12信号检查 定时器T1的信号检查为opener M0.2生成以下逻辑运算(RLO)结果。10250 ms一旦定时时间到,就会重新启动定时器。因此,由 枛| / |枛 M0.2进行的信号检查只简单产生信号状态1。RLO取反(反向):10250 ms每隔250毫秒RLO位为0。忽略跳转且存储器字MW100的内容增加1。实现特定频率通过存储器字节MB101和MB100的单个位,可以实现下列频率:MB101/MB100的位M 101.0M 101.1M 101.2M 101.3M 101.4M 101.5频率(赫兹)2.01.00.50.250.1250.0625持续时间0.5s1 s2s4s8s16s(250毫秒开/ 250毫秒关)(0.5秒开/ 0.5秒关)(1秒开/ 1秒关)(2秒开/ 2秒关)(4秒开/ 4秒关)(8秒开/ 8秒关)M 101.6M 101.7M 100.0M 100.1M 100.2M 100.3M 100.4M 100.5M 100.6M 100.70.031250.0156250.00781250.00390620.00195310.00097650.00048820.00024410.0001220.00006132s64s128 s256 s512 s1024 s2048 s4096 s8192 s(16秒开/ 16秒关)(32秒开/ 32秒关)(64秒开/64秒关)(128秒开/128秒关)(256秒开/256秒关)(512秒开/512秒关)(1024秒开/1024秒关)(2048秒开/2048秒关)(4096秒开/4096秒关)16384 s(8192秒开/8192秒关)存储器MB 101的位信号状态扫描周期0123456789101112第7位0000000000000第6位0000000000000第5位0000000000000第4位0000000000000第3位0000000011111第2位0000111100001第1位0011001100110第0位0101010101010时间值(单位:毫秒)250250250250250250250250250250250250250MB 101 (M 101.1)第1位的信号状态频率 = 1/T = 1/1 s = 1赫兹TM 101.110Time0250 ms 0.5 s 0.75 s 1 s 1.25 s 1.5 s实例:实例:位逻辑指令实例1:控制传送带下图显示可用电动方式激活的传送带。在传送带的开始位置有两个按钮开关:用于启动的S1和用于停止的S2。在传送带末端也有两个按钮开关:用于启动的S3和用于停止的S4。可从任何一端启动或停止传送带。此外,当传送带上的部件到达终点时,传感器S5将停止传送带。Sensor S5MOTOR_ONS1S2O StartO StopS3S4O StartO Stop绝对地址和符号编程您可编写程序使用绝对地址绝对地址或代表传送带系统各种组件的符号符号来控制传送带。 绝对地址符号需要制定一个符号表,以建立所选择的符号与绝对地址的联系(参见STEP 7在线帮助)。系统组件按钮启动开关按钮停止开关按钮启动开关按钮停止开关传感器电机绝对地址I 1.1I 1.2I 1.3I 1.4I 1.5Q 4.0符号S1S2S3S4S5MOTOR_ON符号表I 1.1 S1I 1.2 S2I 1.3 S3I 1.4 S4I 1.5 S5Q 4.0 MOTOR_ON控制传送带的梯形图程序程序段1:按下任一启动开关打开电机。S1I 1.1Q 4.0SS3I 1.3程序段2:按下任一停止开关或打开传送带尾部的常闭触点以关闭电机。S2I 1.2Q 4.0RS4I 1.4S5I 1.5实例2:检测传送带方向 下图显示配备两个光电屏障(PEB1和PEB2)的传送带,这两个光电屏障专用于检测包裹在传送带上移动的方向。每个光电屏障的功能类似常开触点。Q 4.0PEB2PEB1Q 4.1绝对地址和符号编程您可编写程序以使用绝对地址绝对地址或代表传送带系统各种组件的符号符号来激活传送带系统的方向显示。 绝对地址符号需要制定一个符号表,以建立所选择的符号与绝对地址的联系(参见STEP 7在线帮助)。系统组件光电屏障1光电屏障2显示向右移动绝对地址I 0.0I 0.1Q 4.0符号PEB1PEB2RIGHT符号表I 0.0 PEB1I 0.1 PEB2Q 4.0 RIGHT显示向左移动脉冲存储器位1脉冲存储器位2Q 4.1M 0.0M 0.1LEFTPMB1PMB2Q 4.1 LEFTM 0.0 PMB1M 0.1 PMB2用于检测传送带方向的梯形图程序程序段1:如果输入I 0.0处信号状态从0过渡到1(上升沿),与此同时,输入I 0.1处信号状态为0,则传送带上的包裹向左移动。PEB1I 0.0PMB1M 0.0PPEB2I 0.1LEFTQ 4.1S程序段2:如果输入I 0.1处信号状态从0过渡到1(上升沿),与此同时,输入I 0.0处信号状态为0,则传送带上的包裹向右移动。如果光电屏障之一被中断,则表明屏障之间有包裹。PEB2I 0.1PMB2M 0.1PPEB1I 0.0RIGHTQ 4.0S程序段3:如果两个光电屏障都未中断,则表明屏障之间没有包裹。方向指针关闭。PEB1I 0.0PEB2I 0.1RIGHTQ 4.0RLEFTQ 4.1R实例:实例:字逻辑指令加热烘炉烘炉操作员通过按启动按钮来启动烘炉加热。操作员可用图中所示的码盘开关来设置加热的时间。操作员设置的值以二进制编码的十进制(BCD)格式显示,单位为秒。 Thumbwheels for setting BCD digitsOven4HeatQ 4.07....X X X XIB0Start push button I 0.7...00 0 0 17...1 0 0 144...00 0 0 1BitsIW0BytesIB1系统组件启动按钮个位码盘十位指轮开关百位码盘加热启动绝对地址 I 0.7I 1.0 到 I 1.3I 1.4 到 I 1.7I 0.0 到 I 0.3Q 4.0梯形图程序 程序段1:如果定时器正在运行,则打开加热器。 T1Q 4.0程序段2:如果定时器正在运行,返回返回指令结束此处的处理。返回T1RET程序段3:屏蔽输入位I 0.4到I 0.7 (即,将它们复位为0)。指轮开关输入的这些位未被使用。16位指轮开关输入根据(字)与运算指令与W#16#0FFF组合。结果载入存储器字MW1中。为了设置时间基准的与运算秒数,预设值根据(字)或运算指令与W#16#2000组合,将位13设置为1,并将位12复位为0。或运算WAND_WENIW0W#16#FFFIN1IN2ENOOUTMW1MW1W#16#2000WOR_WENIN1IN2ENOOUTMW2程序段4:如果按下启动按钮,则将定时器T1作为扩展脉冲定时器启动,并作为预设值存储器字MW2装载(来自于上述逻辑)。I 0.7T1SEMW2实例:实例:字逻辑指令加热烘炉烘炉操作员通过按启动按钮来启动烘炉加热。操作员可用图中所示的码盘开关来设置加热的时间。操作员设置的值以二进制编码的十进制(BCD)格式显示,单位为秒。 Thumbwheels for setting BCD digitsOven4HeatQ 4.07....X X X XIB0Start push button I 0.7...00 0 0 17...1 0 0 144...00 0 0 1BitsIW0BytesIB1系统组件启动按钮个位码盘十位指轮开关百位码盘加热启动绝对地址 I 0.7I 1.0 到 I 1.3I 1.4 到 I 1.7I 0.0 到 I 0.3Q 4.0梯形图程序 程序段1:如果定时器正在运行,则打开加热器。 T1Q 4.0程序段2:如果定时器正在运行,返回返回指令结束此处的处理。返回T1RET程序段3:屏蔽输入位I 0.4到I 0.7 (即,将它们复位为0)。指轮开关输入的这些位未被使用。16位指轮开关输入根据(字)与运算指令与W#16#0FFF组合。结果载入存储器字MW1中。为了设置时间基准的与运算秒数,预设值根据(字)或运算指令与W#16#2000组合,将位13设置为1,并将位12复位为0。或运算WAND_WENIW0W#16#FFFIN1IN2ENOOUTMW1MW1W#16#2000WOR_WENIN1IN2ENOOUTMW2程序段4:如果按下启动按钮,则将定时器T1作为扩展脉冲定时器启动,并作为预设值存储器字MW2装载(来自于上述逻辑)。I 0.7T1SEMW2实例:实例:整型数学运算指令解决数学问题 解决数学实例程序显示了如何使用三个整数数学运算指令来产生与下列方程式相同的结果:MW4 = ((IW0 + DBW3) x 15) / MW0梯形图程序 程序段1:打开数据块DB1。DB1OPN程序段2:输入字IW0加到共享数据字DBW3(必须定义和打开数据块),总和被载入存储器字MW100。然后,MW100乘以15,结果存储到存储器字MW102中。MW102除以MW0,结果存储到MW4中。ADD_IENIW0DBW3IN1IN2OUTENOMW100MW10015MUL_IENIN1IN2OUTENOMW102MW102MW0DIV_IENIN1IN2OUTMW4ENO实例:实例:计数器和比较指令带计数器和比较器的存储区域下图显示了具有两个传送带且在传送带之间有临时存储区域的系统。传送带1将包裹传送到存储区域。存储区域附近的传送带1末端的光电屏障确定向存储区域传送的包裹数量。传送带2会将包裹从临时存储区域传输到装载码头,而卡车在此将包裹发送给客户。存储区域附近的传送带2末端的光电屏障确定离开存储区域而转向装载码头的包裹数量。带五个指示灯的显示面板将指示临时存储区域的填充量。 Display PanelStorage areaempty(Q 12.0)Storage areanot empty(Q 12.1)Storage area 50% full(Q 15.2)Storage area90% full(Q 15.3)Storage areaFilled to capacity(Q 15.4)Packages inI 12.0Temporarystorage areafor 100packagesI 12.1Packages outConveyor belt 1Photoelectric barrier 1Conveyor belt 2Photoelectric barrier 2激活显示面板上的指示灯的梯形图程序 程序段1:计数器C1对输入CU处每次从\"0\"到\"1\"的信号改变都进行正计数,而对输入CD处每次从\"0\"到\"1\"的信号改变都进行倒计数。对于输入S处从\"0\"到\"1\"的信号改变,计数器值被设置为值PV。输入R处从\"0\"到\"1\"的信号改变将计数器值复位为\"0\"。MW200包含C1的当前计数器值。Q12.1指示\"存储区域非空\"。I 12.0I 12.1C1S_CUDCUCDQQ 12.1I 12.2SC#10I 12.3RCV_BCDMW200PVCVMW210程序段2:Q12.0表明\"存储区域为空\"。 Q 12.1 Q 12.0 程序段3:如果50小于等于计数器值(换句话说,如果当前计数器值大于等于50),则表示\"存储区域50%满\"的指示灯变亮。CMP<= I50MW210IN1IN2Q 15.2程序段4:程序段4:如果计数器值大于或等于90,则表示\"存储区域90%满\"的指示灯变亮。CMP>= IMW21090IN1IN2Q 15.3程序段5:如果计数器值大于或等于100,则表示\"存储区域满\"的指示灯变亮。 CMP>= IMW210100IN1IN2Q 15.4实例:实例:定时器指令时钟脉冲发生器时钟脉冲当需要生成定期重复的信号时,可使用时钟脉冲发生器或闪烁继电器。时钟脉冲发生器在控制指示灯闪烁的信号系统中很常见。 当使用S7-300时,您可用特殊组织块中的时间处理功能来执行时钟脉冲发生器功能。但下列梯形图程序中显示的实例说明的是使用定时器功能产生时钟脉冲。实例程序显示如何通过使用定时器实现任意的时钟脉冲发生器。 产生时钟脉冲(脉冲占空比1:1)的梯形图程序程序段1:如果定时器T1的信号状态为0,将时间值250毫秒载入T1,并将T1作为扩展脉冲定时器启动。M0.2T1SES5T#250MS程序段2:该定时器的状态临时保存在一个辅助存储器符号中。T1M0.2程序段3:如果定时器T1的信号状态为1,则跳转至跳转标签M001。M0.2M001JMP程序段4:定时器T1超时后,存储器字100增加1。ADD_IENMW1001IN1IN2ENOOUTMW100程序段5:MOVE指令允许在输出Q12.0到Q13.7输出不同的时钟频率。M001MOVEENMW100INENOOUTAW12信号检查 定时器T1的信号检查为opener M0.2生成以下逻辑运算(RLO)结果。10250 ms一旦定时时间到,就会重新启动定时器。因此,由 枛| / |枛 M0.2进行的信号检查只简单产生信号状态1。RLO取反(反向):10250 ms每隔250毫秒RLO位为0。忽略跳转且存储器字MW100的内容增加1。实现特定频率通过存储器字节MB101和MB100的单个位,可以实现下列频率:MB101/MB100的位M 101.0M 101.1M 101.2M 101.3M 101.4M 101.5频率(赫兹)2.01.00.50.250.1250.0625持续时间0.5s1 s2s4s8s16s(250毫秒开/ 250毫秒关)(0.5秒开/ 0.5秒关)(1秒开/ 1秒关)(2秒开/ 2秒关)(4秒开/ 4秒关)(8秒开/ 8秒关)M 101.6M 101.7M 100.0M 100.1M 100.2M 100.3M 100.4M 100.5M 100.6M 100.70.031250.0156250.00781250.00390620.00195310.00097650.00048820.00024410.0001220.00006132s64s128 s256 s512 s1024 s2048 s4096 s8192 s(16秒开/ 16秒关)(32秒开/ 32秒关)(64秒开/64秒关)(128秒开/128秒关)(256秒开/256秒关)(512秒开/512秒关)(1024秒开/1024秒关)(2048秒开/2048秒关)(4096秒开/4096秒关)16384 s(8192秒开/8192秒关)存储器MB 101的位信号状态扫描周期0123456789101112第7位0000000000000第6位0000000000000第5位0000000000000第4位0000000000000第3位0000000011111第2位0000111100001第1位0011001100110第0位0101010101010时间值(单位:毫秒)250250250250250250250250250250250250250MB 101 (M 101.1)第1位的信号状态频率 = 1/T = 1/1 s = 1赫兹TM 101.110Time0250 ms 0.5 s 0.75 s 1 s 1.25 s 1.5 s实例:实例:位逻辑指令实例1:控制传送带下图显示可用电动方式激活的传送带。在传送带的开始位置有两个按钮开关:用于启动的S1和用于停止的S2。在传送带末端也有两个按钮开关:用于启动的S3和用于停止的S4。可从任何一端启动或停止传送带。此外,当传送带上的部件到达终点时,传感器S5将停止传送带。Sensor S5MOTOR_ONS1S2O StartO StopS3S4O StartO Stop绝对地址和符号编程您可编写程序使用绝对地址绝对地址或代表传送带系统各种组件的符号符号来控制传送带。 绝对地址符号需要制定一个符号表,以建立所选择的符号与绝对地址的联系(参见STEP 7在线帮助)。系统组件按钮启动开关按钮停止开关按钮启动开关按钮停止开关传感器电机绝对地址I 1.1I 1.2I 1.3I 1.4I 1.5Q 4.0符号S1S2S3S4S5MOTOR_ON符号表I 1.1 S1I 1.2 S2I 1.3 S3I 1.4 S4I 1.5 S5Q 4.0 MOTOR_ON控制传送带的梯形图程序程序段1:按下任一启动开关打开电机。S1I 1.1Q 4.0SS3I 1.3程序段2:按下任一停止开关或打开传送带尾部的常闭触点以关闭电机。S2I 1.2Q 4.0RS4I 1.4S5I 1.5实例2:检测传送带方向 下图显示配备两个光电屏障(PEB1和PEB2)的传送带,这两个光电屏障专用于检测包裹在传送带上移动的方向。每个光电屏障的功能类似常开触点。Q 4.0PEB2PEB1Q 4.1绝对地址和符号编程您可编写程序以使用绝对地址绝对地址或代表传送带系统各种组件的符号符号来激活传送带系统的方向显示。 绝对地址符号需要制定一个符号表,以建立所选择的符号与绝对地址的联系(参见STEP 7在线帮助)。系统组件光电屏障1光电屏障2显示向右移动绝对地址I 0.0I 0.1Q 4.0符号PEB1PEB2RIGHT符号表I 0.0 PEB1I 0.1 PEB2Q 4.0 RIGHT显示向左移动脉冲存储器位1脉冲存储器位2Q 4.1M 0.0M 0.1LEFTPMB1PMB2Q 4.1 LEFTM 0.0 PMB1M 0.1 PMB2用于检测传送带方向的梯形图程序程序段1:如果输入I 0.0处信号状态从0过渡到1(上升沿),与此同时,输入I 0.1处信号状态为0,则传送带上的包裹向左移动。PEB1I 0.0PMB1M 0.0PPEB2I 0.1LEFTQ 4.1S程序段2:如果输入I 0.1处信号状态从0过渡到1(上升沿),与此同时,输入I 0.0处信号状态为0,则传送带上的包裹向右移动。如果光电屏障之一被中断,则表明屏障之间有包裹。PEB2I 0.1PMB2M 0.1PPEB1I 0.0RIGHTQ 4.0S程序段3:如果两个光电屏障都未中断,则表明屏障之间没有包裹。方向指针关闭。PEB1I 0.0PEB2I 0.1RIGHTQ 4.0RLEFTQ 4.1R