《s7200指令应用实例》由会员分享,可在线阅读,更多相关《s7200指令应用实例(73页珍藏版)》请在金锄头文库上搜索。
1、例题:起动保持停止电路(起保停电路)LD I0.0起动 I0.0停止 I0.1Q0.0O Q0.0AN I0.1= Q0.0010 1例题:起动保持停止电路(起保停电路)LD I0.0起动 I0.0停止 I0.1Q0.0O Q0.0AN I0.1= Q0.001011 1LD I0.0起动 I0.0停止 I0.1Q0.0O Q0.0AN I0.1= Q0.0 101011000例题:起动保持停止电路(起保停电路)。LD I0.0O Q0.0AN I0.1= Q0.0CPU224I0.0I0.11M2ML+DC24V1LQ0.0SB1SB2AC220VKMI0.0I0.1Q0.0输入映像寄存器起
2、动停止I0.0I0.1Q0.0输出映像寄存器LD I0.0O Q0.0AN I0.1= Q0.0CPU224I0.0I0.11M2ML+DC24V1LQ0.0SB1SB2AC220VKMI0.0I0.1Q0.0输入映像寄存器起动停止I0.0I0.1Q0.0输出映像寄存器 1 0ONONONONON1LD I0.0O Q0.0AN I0.1= Q0.0CPU224I0.0I0.11M2ML+DC24V1LQ0.0SB1SB2AC220VKMI0.0I0.1Q0.0输入映像寄存器起动停止I0.0I0.1Q0.0输出映像寄存器 0 0ONONONONON1OFFLD I0.0O Q0.0AN I0.
3、1= Q0.0CPU224I0.0I0.11M2ML+DC24V1LQ0.0SB1SB2AC220VKMI0.0I0.1Q0.0输入映像寄存器起动停止I0.0I0.1Q0.0输出映像寄存器 0 1OFFOFFOFFOFFOFF0LD I0.0O Q0.0AN I0.1= Q0.0CPU224I0.0I0.11M2ML+DC24V1LQ0.0SB1SB2AC220VKMI0.0I0.1Q0.0输入映像寄存器起动停止I0.0I0.1Q0.0输出映像寄存器 0 0OFFONOFFOFFOFF02. 互锁电路输入信号I0.0和输入信号I0.1,若I0.0先接通,M0.0自保持,使Q0.0有输出,同时M
4、0.0的常闭接点断开,即使I0.1再接通,也不能使M0.1动作,故Q0.1无输出。若I0.1先接通,则情形与前述相反。因此在控制环节中,该电路可实现信号互锁。 LD I0.0O M0.0AN M0.1= M0.0LD I0.1O M0.1AN M0.0= M0.1LD M0.0= Q0.0LD M0.1= Q0.1 3. 比较电路如图4-31所示,该电路按预先设定的输出要求,根据对两个输入信号的比较,决定某一输出。若I0.0、I0.1同时接通,Q0.0有输出;I0.0、I0.1均不接通,Q0.1有输出;若I0.0不接通。I0.1接通,则Q0.2有输出;若I0.0接通,I0.1不接通,则Q0.3
5、有输出 LD I0.0= M0.0LD I0.1= M0.1LD M0.0A M0.1= Q0.0LDN M0.0AN M0.1= Q0.1LDN M0.0A M0.1= Q0.2LD M0.0AN M0.1= Q0.3 6. 抢答器程序设计(1)控制任务:有3个抢答席和1个主持人席,每个抢答席上各有1个抢答按钮和一盏抢答指示灯。参赛者在允许抢答时,第一个按下抢答按钮的抢答席上的指示灯将会亮,且释放抢答按钮后,指示灯仍然亮;此后另外两个抢答席上即使在按各自的抢答按钮,其指示灯也不会亮。这样主持人就可以轻易的知道谁是第一个按下抢答器的。该题抢答结束后,主持人按下主持席上的复位按钮(常闭按钮),则
6、指示灯熄灭,又可以进行下一题的抢答比赛。图4-35 抢答器程序设计工艺要求:本控制系统有4个按钮,其中3个常开S1、S2、S3,一个常闭S0。另外,作为控制对象有3盏灯H1、H2、H3。 (2)I/O分配表输入 I0.0 S0 /主持席上的复位按钮(常闭) I0.1 S1 /抢答席1上的抢答按钮 I0.2 S2 /抢答席2上的抢答按钮 I0.3 S3 /抢答席3上的抢答按钮输出Q0.1 H1 /抢答席1上的指示灯Q0.2 H2 /抢答席2上的指示灯Q0.3 H3 /抢答席3上的指示灯(3)程序设计抢答器的程序设计如图4-35所示。本例的要点是:如何实现抢答器指示灯的“自锁”功能,即当某一抢答席
7、抢答成功后,即使释放其抢答按钮,其指示灯仍然亮,直至主持人进行复位才熄灭;如何实现3个抢答席之间的“互锁”功能。4.2.3编程注意事项及编程技巧1.梯形图语言中的语法规定(1)程序应按自上而下,从左至右的顺序编写。(2)同一操作数的输出线圈在一个程序中不能使用两次,不同操作数的输出线圈可以并行输出。如图所示。 (3)线圈不能直接与左母线相连。如果需要,可以通过特殊内部标志位存储器SM0.0(该位始终为1)来连接,如图所示。a)不正确 b)正确(4)适当安排编程顺序,以减少程序的步数。1)串联多的支路应尽量放在上部,如图所示。a)电路安排不当 b)电路安排正确 2)并联多的支路应靠近左母线,如图
8、所示 a)电路安排不当b)电路安排正确3)触点不能放在线圈的右边。4)对复杂的电路,用ALD、OLD等指令难以编程,可重复使用一些触点画出其等效电路,然后再进行编程,如图所示。a) 复杂电路 b) 等效电路2. 设置中间单元在梯形图中,若多个线圈都受某一触点串并联电路的控制,为了简化电路,在梯形图中可设置该电路控制的存储器的位,如图所示,这类似于继电器电路中的中间继电器 。4. 外部联锁电路的设立为了防止控制正反转的两个接触器同时动作造成三相电源短路,应在PLC外部设置硬件联锁电路。5.外部负载的额定电压PLC的继电器输出模块和双向晶闸管输出模块一般只能驱动额定电压AC 220V的负载,交流接
9、触器的线圈应选用220V的。 3. 尽量减少可编程控制器的输入信号和输出信号可编程控制器的价格与I/O点数有关,因此减少I/O点数是降低硬件费用的主要措施。如果几个输入器件触点的串并联电路总是作为一个整体出现,可以将他们作为可编程控制器的一个输入信号,只占可编程控制器的一个输入点。如果某器件的触点只用一次并且与PLC输出端的负载串联,不必将它们作为PLC的输入信号,可以将它们放在PLC外部的输出回路,与外部负载串联。4.2.4 电动机控制实训n n1. 1. 实训目的实训目的n n(1 1)应用)应用PLCPLC技术实现对三相异步电动机的控制。技术实现对三相异步电动机的控制。n n(2 2)熟
10、悉基本位逻辑指令的使用,训练编程的思想和方)熟悉基本位逻辑指令的使用,训练编程的思想和方法。法。n n(3 3)掌握在)掌握在PLCPLC控制中互锁的实现及采取的措施。控制中互锁的实现及采取的措施。n n2. 2. 控制要求控制要求n n(1 1)实现三相异步电动机的正转、反转、停止控制。)实现三相异步电动机的正转、反转、停止控制。n n(2 2)具有防止相间短路的措施。)具有防止相间短路的措施。n n(3 3)具有过载保护环节。)具有过载保护环节。3. 实训内容及指导I/O分配、外部接线及程序 LD I0.2O Q0.0AN I0.3A I0.0A I0.1AN Q0.1= Q0.0LD I
11、0.3O Q0.1AN I0.2A I0.0A I0.1AN Q0.0= Q0.14.3 定时器指令n n4.3.1 4.3.1 定时器指令介绍定时器指令介绍n nS7-200S7-200系列系列PLCPLC的定时器是对内部时钟累计时间增量计时的定时器是对内部时钟累计时间增量计时的。每个定时器均有一个的。每个定时器均有一个1616位的当前值寄存器用以存放当位的当前值寄存器用以存放当前值(前值(1616位符号整数);一个位符号整数);一个1616位的预置值寄存器用以存位的预置值寄存器用以存放时间的设定值;还有一位状态位,反应其触点的状态。放时间的设定值;还有一位状态位,反应其触点的状态。n nS
12、7-200S7-200系列系列PLCPLC定时器按工作方式分三大类定时器。其指定时器按工作方式分三大类定时器。其指令格式如令格式如表表4-34-3所示。所示。LADSTL说明TON T,PTTON通电延时定时器TONR记忆型通电延时定时器TOF断电延时型定时器IN是使能输入端,指令盒上方输入定时器的编号(T),范围为T0-T255;PT是预置值输入端,最大预置值为32767;PT的数据类型:INT;PT操作数有:IW,QW,MW,SMW,T,C,VW,SW,AC,常数TONR T,PTTOF T,PT2. 时基按时基脉冲分,则有1ms、10ms、100ms 三种定时器。不同的时基标准,定时精度
13、、定时范围和定时器刷新的方式不同。(1)定时精度和定时范围。定时器的工作原理是:使能输入有效后,当前值PT对PLC内部的时基脉冲增1计数,当计数值大于或等于定时器的预置值后,状态位置1。其中,最小计时单位为时基脉冲的宽度,又为定时精度;从定时器输入有效,到状态位输出有效,经过的时间为定时时间,即:定时时间=预置值时基。当前值寄存器为16bit,最大计数值为32767,由此可推算不同分辨率的定时器的设定时间范围。CPU 22X系列PLC的256个定时器分属TON (TOF)和TONR工作方式,以及3种时基标准,如表4-4所示。可见时基越大,定时时间越长,但精度越差。表4-4 定时器的类型工作方式
14、时基(ms)最大定时范围(s)定时器号TONR132.767T0,T6410327.67T1-T4,T65-T681003276.7T5-T31,T69-T95TON/TOF132.767T32,T9610327.67T33-T36,T97-T1001003276.7T37-T63,T101-T2552)1ms、10ms、100ms定时器的刷新方式不同。1ms定时器每隔1ms刷新一次与扫描周期和程序处理无关即采用中断刷新方式。因此当扫描周期较长时,在一个周期内可能被多次刷新,其当前值在一个扫描周期内不一定保持一致。10ms 定时器则由系统在每个扫描周期开始自动刷新。由于每个扫描周期内只刷新一次
15、,故而每次程序处理期间,其当前值为常数。100ms定时器则在该定时器指令执行时刷新。下一条执行的指令,即可使用刷新后的结果,非常符合正常的思路,使用方便可靠。但应当注意,如果该定时器的指令不是每个周期都执行,定时器就不能及时刷新,可能导致出错。3. 定时器指令工作原理(1)通电延时定时器(TON)指令工作原理。程序及时序分析如图4-45所示。LD I0.0TON T37,100LD T37= Q0.0(2)记忆型通电延时定时器(TONR)指令工作原理 LD I0.0TONR T3,100LD I0.1R T3,1LD T3= Q0.0(3)断电延时型定时器(TOF)指令工作原理 LD I0.0
16、TOF T37,+30LD T37= Q0.0小结:1)以上介绍的3种定时器具有不同的功能。接通延时定时器(TON)用于单一间隔的定时;有记忆接通延时定时器(TONR)用于累计时间间隔的定时;断开延时定时器(TOF)用于故障事件发生后的时间延时。2)TOF和TON 共享同一组定时器,不能重复使用。即不能把一个定时器同时用作TOF和TON。例如,不能既有TON T32,又有TOF T32 4.3.2 定时器指令应用举例1.一个机器扫描周期的时钟脉冲发生器(1)T32为1ms时基定时器,每隔1ms定时器刷新一次当前值,输出线圈Q0.0一般不会通电 。(2)若将图中4-48的定时器T32换成T33,
17、时基变为10ms,这样输出线圈Q0.0永远不可能通电。(3)若用时基为100ms的定时器,如T37,可以输出一个断开为延时时间,接通为一个扫描周期的时钟脉冲。 (4)若将输出线圈的常闭接点作为定时器的使能输入,如图4-49所示,则无论何种时基都能正常工作。2. 延时断开电路3. 延时接通和断开图4-50 延时断开电路 4. 闪烁电路I0.0的常开触点接通后,T37的IN输入端为1状态,T37开始定时。2S后定时时间到,T37的常开触点接通,使Q0.0变为ON,同时T38开始计时。3s后T38的定时时间到,它的常闭触点断开,使T37的IN输入端变为0状态,T37的常开触点断开,Q0.0变为OFF
18、,同时使T38的IN输入端变为0状态,其常闭触点接通,T37又开始定时,以后Q0.0的线圈将这样周期性地“通电”和“断电”,直到I0.0变为OFF,Q0.0线圈“通电” 时间等于T38的设定值,“断电”时间等于T37的设定值。 4.3.3 正次品分拣机编程实训n n1. 1. 实训目的实训目的 n n(1 1)加深对定时器的理解,掌握各类定时器的使用方法。)加深对定时器的理解,掌握各类定时器的使用方法。 n n(2 2)理解企业车间产品的分拣原理。)理解企业车间产品的分拣原理。 n n2. 2. 实验器材实验器材 n n(1 1)实验装置(含)实验装置(含S7-200 CPU224S7-200
19、 CPU224)一台)一台 。n n(2 2)正次品分拣模板一块,如图)正次品分拣模板一块,如图4-504-50。n n(3 3)连接导线若干。)连接导线若干。 3. 控制要求 (1)用启动和停止按钮控制电动机M运行和停止。在电动机运行时,被检测的产品(包括正次品)在皮带上运行。 (2)产品(包括正、次品)在皮带上运行时,S1(检测器)检测到的次品,经过5s传送,到达次品剔除位置时,起动电磁铁Y驱动剔除装置,剔除次品(电磁铁通电1s),检测器S2检测到的次品,经过3s传送,起动Y,剔除次品;正品继续向前输送。正次品分拣操作流程如图4-51所示。 4. PLC I/O端口分配及参考程序输入 输出
20、SB1 I0.0 M启动按钮 M Q0.0 电动机(传送带驱动)SB2 I0.1 M 停止按钮(常闭) Y Q0.1 次品剔除 S1 I0.2 检测站1 S2 I0.3 检测站2 4.4.1 计数器指令介绍n n计数器利用输入脉冲上升沿累计脉冲个数。计数器利用输入脉冲上升沿累计脉冲个数。n n结构主要由一个结构主要由一个1616位的预置值寄存器、一个位的预置值寄存器、一个1616位的当前值位的当前值寄存器和一位状态位组成。寄存器和一位状态位组成。n n当前值寄存器用以累计脉冲个数,计数器当前值大于或等当前值寄存器用以累计脉冲个数,计数器当前值大于或等于预置值时,状态位置于预置值时,状态位置1
21、1。n nS7-200S7-200系列系列PLCPLC有三类计数器:有三类计数器:CTU-CTU-加计数器,加计数器,CTUD-CTUD-加加/ /减计数器,减计数器,CTD-CTD-减计数。减计数。1. 计数器指令格式 STLLAD指令使用说明CTU Cxxx,PV(1)梯形图指令符号中:CU为加计数脉冲输入端;CD为减计数脉冲输入端;R为加计数复位端;LD为减计数复位端;PV为预置值(2)Cxxx 为计数器的编号,范围为:C0C255(3)PV预置值最大范围:32767; PV的数据类型:INT;PV操作数为: VW, T, C, IW, QW, MW, SMW, AC, AIW, K(4
22、)CTU/CTUD/CD 指令使用要点:STL形式中 CU,CD,R,LD的顺序不能错;CU,CD,R,LD信号可为复杂逻辑关系CTD Cxxx,PV CTUD Cxxx,PV 2. 计数器工作原理分析(1)加计数器指令(CTU)。当R=0时,计数脉冲有效; 当CU端有上升沿输入时,计数器当前值加1。当计数器当前值大于或等于设定值(PV)时,该计数器的状态位C-bit置1,即其常开触点闭合。计数器仍计数,但不影响计数器的状态位。直至计数达到最大值(32767)。当R=1时,计数器复位,即当前值清零,状态位C-bit也清零。加计数器计数范围:032767。 (2) 加/减计数指令(CTUD)。当
23、R=0时,计数脉冲有效;当CU端(CD端)有上升沿输入时,计数器当前值加1(减1)。当计数器当前值大于或等于设定值时,C-bit置1,即其常开触点闭合。当R=1时,计数器复位,即当前值清零,C-bit也清零。加减计数器计数范围:3276832767。【例4-4】加减计数器指令应用示例LD I0.1 LD I0.2 LD I0.3 CTUD C50,4LD C50= Q0.0 (3)减计数指令(CTD)。当复位LD有效时,LD=1,计数器把设定值(PV)装入当前值存储器,计数器状态位复位(置0)。当LD=0,即计数脉冲有效时,开始计数,CD端每来一个输入脉冲上升沿,减计数的当前值从设定值开始递减
24、计数,当前值等于0时,计数器状态位置位(置1),停止计数。【例4-5】减计数指令应用示例。LD I0.1LD I1.0CTD C4,3LD C4= Q0.04.4.2 计数器指令应用举例1. 计数器的扩展S7-200系列PLC计数器最大的计数范围是32767,若须更大的计数范围,则须进行扩展。如图4-58所示计数器扩展电路。 2. 定时器的扩展 S7-200的定时器的最长定时时间为3276.7S,如果需要更长的定时时间,可使用图4-59所示的电路。 3. 自动声光报警操作程序自动声光报警操作程序用于当电动单梁起重机加载到1.1倍额定负荷并反复运行1h后,发出声光信号并停止运行。程序如图所示。4
25、.4.3 轧钢机的控制实训轧钢机的控制实训n n实训目的n n(1)熟悉计数器的使用。n n(2)用状态图监视计数器的计数的过程。n n(3)用PLC构成轧钢机控制系统。2. 实训内容(1)控制要求如图4-61所示。当起动按钮按下,电动机M1、M2运行,按S1表示检测到物件,电动机M3正转,即M3F亮。再按S2,电动机M3反转,即M3R亮,同时电磁阀Y1动作。再按S1,电动机M3正转,重复经过三次循环,再按S2,则停机一段时间(3s),取出成品后,继续运行,不需要按起动。当按下停止按钮时,必须按起动后方可运行。必须注意不先按S1,而按S2将不会有动作。(2)I/O分配 输入 输出 起动按钮:I
26、0.0 M1:Q0.0 停止按钮:I0.3 (常闭按钮) M2:Q0.1 S1按钮:I0.1 M3F:Q0.2 S2按钮:I0.2 M3R:Q0.3 Y1: Q0.44.5 比较指令n n比较指令是将两个操作数按指定的条件比较,操作数可以比较指令是将两个操作数按指定的条件比较,操作数可以是整数,也可以是实数,在梯形图中用带参数和运算符的是整数,也可以是实数,在梯形图中用带参数和运算符的触点表示比较指令,比较条件成立时,触点就闭合,否则触点表示比较指令,比较条件成立时,触点就闭合,否则断开。断开。n n比较触点可以装入,也可以串、并联。比较指令为上、下比较触点可以装入,也可以串、并联。比较指令为
27、上、下限控制提供了极大的方便。限控制提供了极大的方便。1. 指令格式 STLLAD说明LDxx IN1 IN 2比较触点接起始母线LD NAxxIN1 IN 2比较触点的“与”LD NOxx IN1 IN 2比较触点的“或”【例4-6】调整模拟调整电位器0,改变SMB28字节数值,当SMB28数值小于或等于50时,Q0.0输出,其状态指示灯打开;当SMB28数值大于或等于150时,Q0.1输出,状态指示灯打开。梯形图程序和语句表程序如图4-63所示。LD I0.0LPSAB= SMB28, 150= Q0.1【例4-7】如图4-64所示。整数字比较若VW0 +10000为真,Q0.2有输出。
28、程序常被用于显示不同的数据类型。还可以比较存储在可编程内存中的两个数值(VW0 VW100)。LD I0.3LPSAW VW0 +10000= Q0.2LRDAD VD6 5.001E-006= Q0.44.6 程序控制类指令4.6.1 END、STOP、WDR指令1. 结束指令LD M0.0ENDMEND2. 停止指令END/STOP指令的区别 LD SM5.0 /SM5.0为检测 到I/O 错误时置1STOP /强制转换至 STOP(停止)模式3. 警戒时钟刷新指令WDR(又称看门狗定时器复位指令)警戒时钟的定时时间为300毫秒,每次扫描它都被自动复位一次,正常工作时,如果扫描周期小于30
29、0毫秒,警戒时钟不起作用。如果强烈的外部干扰使可编程控制器偏离正常的程序执行路线, 警戒时钟不再被周期性的复位,定时时间到,可编程控制器将停止运行。若程序扫描的时间超过300毫秒,为了防止在正常的情况下警戒时钟动作,可将警戒时钟刷新指令(WDR)插入到程序中适当的地方,使警戒时钟复位。这样,可以增加一次扫描时间。指令格式如图4-68所示。 LD M2.5 / M2.5接通时WDR /重新触发WDR, 允许扩展扫描时间4.6.2 循环、跳转指令1. 循环指令(1)指令格式程序循环结构用于描述一段程序的重复循环执行。由 FOR和NEXT指令构成程序的循环体。FOR指令标记循环的开始,NEXT指令为
30、循环体的结束指令。指令格式如图4-69所示:INDX为当前值计数器,INIT为循环次数初始值,FINAL为循环计数终止值。FOR/NEXT指令必须成对使用,循环可以嵌套,最多为8层。12图4-70循环指令示例2. 跳转指令及标号(1)指令格式JMP:跳转指令,使能输入有效时,把程序的执行跳转到同一程序指定的标号(n)处执行。LBL:指定跳转的目标标号。操作数n:0255。指令格式如图所示 必须强调的是:跳转指令及标号必须同在主程序内或在同一子程序内,同一中断服务程序内,不可由主程序跳转到中断服务程序或子程序,也不可由中断服务程序或子程序跳转到主程序。(2)跳转指令示例。图中当I0.0为ON时,
31、I0.0的常开触点接通,即JMP1条件满足,程序跳转执行LBL标号1以后的指令,而在JMP1和LBL1之间的指令一概不执行,在这个过程中,即使I0.1接通Q0.1也不会有输出;此时I0.0的常闭触点断开,不执行JMP2,所以I0.2接通,Q0.2有输出。当I0.0断开时,则其常开触点I0.0断开,其常闭触点接通,此时不执行JMP1,而执行JMP2,所以I0.1接通,Q0.1有输出,而I0.2即使接通,Q0.2也没有输出。 (3)应用举例。JMP、LBL指令在工业现场控制中,常用于工作方式的选择。如有3台电动机M1M3,具有两种起停工作方式:1)手动操作方式:分别用每个电动机各自的起停按钮控制M
32、1M3的起停状态。2)自动操作方式:按下起动按钮,M1M3每隔5s依次起动;按下停止按钮,M1M3同时停止。 PLC控制的外部接线图梯形图 4.6.3 子程序调用及子程序返回指令 在程序中使用子程序,必须执行下列三项任务:建立子程序;在子程序局部变量表中定义参数(如果有);从适当的POU(从主程序或另一个子程序)调用子程序。1. 建立子程序可采用下列一种方法建立子程序:1)从“编辑”菜单,选择插入(Insert)/ 子程序(Subroutine)2)从“指令树”,用鼠标右键单击“程序块”图标,并从弹出菜单选择插入(Insert)子程序(Subroutine)3)从“程序编辑器”窗口,用鼠标右键
33、单击,并从弹出菜单选择插入(Insert) 子程序(Subroutine)。2. 在子程序局部变量表中定义参数可以使用子程序的局部变量表为子程序定义参数。注意:程序中每个POU都有一个独立的局部变量表,必须在选择该子程序标签后出现的局部变量表中为该子程序定义局部变量。编辑局部变量表时,必须确保已选择适当的标签。每个子程序最多可以定义16个输入输出参数。3. 子程序调用及子程序返回指令的指令格式LD I0.0CALL SBR_0LD I0.1CRET (1)子程序可以多次被调用,也可以嵌套(最多8层)还可以自己调自己。(2)子程序调用指令用在主程序和其他调用子程序的程序中,子程序的无条件返指令在
34、子程序的最后网络段,梯形图指令系统能够自动生成子程序的无条件返回指令,用户无须输入。4. 带参数的子程序调用指令(1)带参数的子程序的概念及用途。子程序可能有要传递的参数(变量和数据),这时可以在子程序调用指令中包含相应参数,它可以在子程序与调用程序之间传送。如果子程序仅用要传递的参数和局部变量,则为带参数的子程序(可移动子程序)。为了移动子程序,应避免使用任何全局变量符号(I、Q、M、SM、AI、AQ、V、T、C、S、AC内存中的绝对地址),这样可以导出子程序并将其导入另一个项目。子程序中的参数必须有一个符号名(最多为23个字符)、一个变量类型和一个数据类型。子程序最多可传递16 个参数。传
35、递的参数在子程序局部变量表中定义。如表4-7所示。(2)变量的类型。局部变量表中的变量有IN、OUT、IN/OUT和TEMP等4种类型。IN(输入)型:将指定位置的参数传入子程序。如果参数是直接寻址(例如VB10),在指定位置的数值被传入子程序。如果参数是间接寻址,(例如*AC1),地址指针指定地址的数值被传入子程序。如果参数是数据常量(16#1234)或地址(&VB100),常量或地址数值被传入子程序。IN_OUT(输入-输出)型:将指定参数位置的数值被传入子程序,并将子程序的执行结果的数值返回至相同的位置。输入输出型的参数不允许使用常量(例如16#1234)和地址(例如&VB100)。OU
36、T(输出)型:将子程序的结果数值返回至指定的参数位置。常量(例如16#1234)和地址(例如&VB100)不允许用作输出参数。在子程序中可以使用IN,IN/OUT,OUT类型的变量和调用子程序POU之间传递参数。TEMP型:是局部存储变量,只能用于子程序内部暂时存储中间运算结果,不能用来传递参数。 (3)数据类型。局部变量表中的数据类型包括:能流、布尔(位)、字节、字、双字、整数、双整数和实数型。能流:能流仅用于位(布尔)输入。能流输入必须用在局部变量表中其他类型输入之前。只有输入参数允许使用。在梯形图中表达形式为用触点(位输入)将左侧母线和子程序的指令盒连接起来。如图4-75中的使能输入(E
37、N)和IN1输入使用布尔逻辑。布尔:该数据类型用于位输入和输出。如图4-75中的IN3是布尔输入。字节、字、双字:这些数据类型分别用于1、2或4个字节不带符号的输入或输出参数。整数、双整数:这些数据类型分别用于2或4个字节带符号的输入或输出参数。实数:该数据类型用于单精度(4个字节)IEEE浮点数值。(4)建立带参数子程序的局部变量表。 (5)带参数子程序调用指令格式。 对于梯形图程序,在子程序局部变量表中为该子程序定义参数后(如表4-7),将生成客户化的调用指令块(如图4-75),指令块中自动包含子程序的输入参数和输出参数。LD I0.0= L60.0LD I0.1= L63.7LD L60
38、.0CALL SBR_0 L63.7 VB10 I1.0 &VB100 *AC1 VD200【例4-8】编制一个带参数的子程序,完成任意两个整数的加法。(1)建立一个子程序,并在该子程序局部变量表中输入局部变量。(2)用局部变量表中定义的局部变量编写两个整数加法的子程序。 (3)在主程序中调用该子程序,如图所示。(4)在图所示的主程序中应根据子程序局部变量表中变量的数据类型(INT)指定输入、输出变量的地址(对于整数型的变量应按字编址),输入变量也可以为常量。如图所示,便可以实现VW0+VW2=VW100的运算。4.6.4 步进顺序控制指令1. 功能流程图简介功能流程图是按照顺序控制的思想根据
39、工艺过程,根据输出量的状态变化,将一个工作周期划分为若干顺序相连的步,在任何一步内,各输出量ON/OFF状态不变,但是相邻两步输出量的状态是不同的。通常用顺序控制继电器的位S0.0S31.7代表程序的状态步。使系统由当前步进入下一步的信号称为转换条件,又称步进条件。 每步所驱动的负载,称为步动作 。 2. 顺序控制指令LADSTL说明LSCR n步开始指令,为步开始的标志,该步的状态元件的位置1时,执行该步SCRT n步转移指令,使能有效时,关断本步,进入下一步。该指令由转换条件的接点起动,n为下一步的顺序控制状态元件SCRE步结束指令,为步结束的标志在使用顺序控制指令时应注意: (1)步进控
40、制指令SCR只对状态元件S有效。为了保证程序的可靠运行,驱动状态元件S的信号应采用短脉冲。(2)当输出需要保持时,可使用S/R指令。(3)不能把同一编号的状态元件用在不同的程序中,例如,如果在主程序中使用S0.1,则不能在子程序中再使用。(4)在SCR段中不能使用JMP和LBL指令。即不允许跳入或跳出SCR段,也不允许在SCR段内跳转。可以使用跳转和标号指令在SCR段周围跳转。(5)不能在SCR段中使用FOR、NEXT和END指令。 【例4-8】使用顺序控制结构,编写出实现红、绿灯循环显示的程序(要求循环间隔时间为1s)。图4-86自动操作的功能流程图 图图5-9小车小车运动运动示意示意图、图、顺序顺序功能功能图和图和梯形梯形图图 图图5-10选择选择序列序列与并与并行序行序列的列的功能功能图和图和梯形梯形图图