西门子S7-1200plc05指令系统.ppt

上传人:小飞机 文档编号:5837730 上传时间:2023-08-25 格式:PPT 页数:154 大小:2.60MB
返回 下载 相关 举报
西门子S7-1200plc05指令系统.ppt_第1页
第1页 / 共154页
西门子S7-1200plc05指令系统.ppt_第2页
第2页 / 共154页
西门子S7-1200plc05指令系统.ppt_第3页
第3页 / 共154页
西门子S7-1200plc05指令系统.ppt_第4页
第4页 / 共154页
西门子S7-1200plc05指令系统.ppt_第5页
第5页 / 共154页
点击查看更多>>
资源描述

《西门子S7-1200plc05指令系统.ppt》由会员分享,可在线阅读,更多相关《西门子S7-1200plc05指令系统.ppt(154页珍藏版)》请在三一办公上搜索。

1、指令系统,S7-1200的指令从功能上大致可分为三类:基本指令、扩展指令和全局库指令。,5.1 基本指令,基本指令包括位逻辑指令、定时器、计数器、比较指令、数学指令、移动指令、转换指令、程序控制指令、逻辑运算指令以及移位和循环移位指令等。,基本逻辑指令,内部输入触点(I)的闭合与断开仅与输入映像寄存器相应位的状态有关,与外部输入按钮、接触器、继电器的常开/常闭接法无关。输入映像寄存器相应位为1,则内部常开触点闭合,常闭触点断开。输入映像寄存器相应位为0,则内部常开触点断开,常闭触点闭合。,置位域复位域指令,置位域指令将指定的地址开始的连续若干个地址置位(变为1状态并保持)。复位域指令将指定的地

2、址开始的连续若干个地址复位(变为0状态并保持)。,置位/复位指令,(1)S、R指令中的2表示从指定的Q0.0开始的两个触点,即Q0.0与Q0.1。(2)在检测到I0.0闭合的上升沿时,输出线圈Q0.0、Q0.1被置为1,并保持,而不论I0.0为何种状态。(3)在检测到I0.1闭合的上升沿时,输出线圈Q0.0、Q0.1被复位为0,并保持,而不论I0.0为何种状态。,指令说明(1)指定触点一旦被置位,则保持接通状态,直到对其进行复位操作;而指定触点一旦被复位,则变为接通状态,直到对其进行复位操作。(2)如果对定时器和计数器进行复位操作,则被指定的T或C的位被复位,同时其当前值被清0。,复位优先、置

3、位优先锁存器,复位优先锁存器、置位优先锁存器:,输出线圈可选,指令功能 RS 复位优先锁存器,当置位信号和复位信号都有效时,复位信号优先,输出线圈不接通。SR 置位优先锁存器,当置位信号和复位信号都有效时,置位信号优先,输出线圈接通。RS、SR指令均为锁存器,一个复位优先,一个置位优先。S连接置位输入,R连接复位输入。一旦输出线圈被置位,则保持置位状态直到复位输入接通。置位、复位输入均以高电平状态有效。,例:抢答器的设计抢答器有三个输入,分别为I0.0、I0.1和I0.2,输出分别为Q4.0、Q4.1和Q4.2,复位输入是I0.4。要求:三人中任意抢答,谁先按按钮,谁的指示灯优先亮,且只能亮一

4、盏灯,进行下一问题时主持人按复位按钮,抢答重新开始。,抢答器程序,边沿指令,位逻辑指令边缘检测触点指令,如果输入信号I0.6由0变为1状态(即输入信号I0.6的上升沿),则该触点接通一个扫描周期。触点下面的M4.3为边缘存储位,用来存储上一个扫描循环是I0.6的状态,通过比较输入信号的当前状态和上一次循环的状态来检测信号的边沿。边沿存储位的地址只能在程序中使用一次,它的状态不能在其他地方被改写。只能使用M、全局DB和静态局部变量来作边沿存储位,不能使用临时局部数据或I/O变量来作边沿存储位。,位逻辑指令P_TRIG与N_TRIG指令,在流进P_TRIG指令的CLK输入端的能流的上升沿,Q端输出

5、一个扫描周期的能流,使M8.1置位。P_TRIG指令与N_TRIG指令不能放在电路的开始处和结束处。,位逻辑指令3种边沿检测指令的功能,以上升沿检测为例:在P触点指令中,触点上面的地址的上升沿,该触点接通一个扫描周期,因此P触点用于检测触点上面地址的上升沿,并且直接输出上升沿脉冲。在P线圈的能流的上升沿,线圈上面的地址在一个扫描周期为1状态,因此P线圈用于检测能流的上升沿,并用线圈上面的地址来输出上升沿脉冲。P_TRIG指令用于检测能流的上升沿,并且直接输出上升沿脉冲。如果P_TRIG指令左边只有I1.0触点,可以用I1.0的P触点来代替P_TRIG指令。,例按动一次瞬时按钮I0.0,输出Q4

6、.0亮,再按动一次按钮,输出Q4.0灭;重复以上。,例 若故障信号I0.0为1,使Q4.0控制的指示灯以1Hz的频率闪烁。操作人员按复位按钮I0.1后,如果故障已经消失,则指示灯熄灭,如果没有消失,指示灯转为常亮,直至故障消失。,定时器,使用定时器指令可创建编程的时间延迟,S7-1200 PLC有4种定时器:TP:脉冲定时器可生成具有预设宽度时间的脉冲。TON:接通延迟定时器输出Q在预设的延时过后设置为 ON。TOF:关断延迟定时器输出 Q 在预设的延时过后重置为 OFF。TONR:保持型接通延迟定时器输出在预设的延时过后设置为ON。在使用 R 输入重置经过的时间之前,会跨越多个定时时段一直累

7、加经过的时间。RT:通过清除存储在指定定时器背景数据块中的时间数据来重置定时器。每个定时器都使用一个存储在数据块中的结构来保存定时器数据。在编辑器中放置定时器指令时可分配该数据块。,接通延迟定时器及其时序图,定时器的背景数据块结构,练习,按下瞬时启动按钮I0.0,5秒后电动机启动,按下瞬时停止按钮I0.1,10秒后电动机停止。,例用接通延时定时器设计一个周期振荡电路。,用接通延时定时器设计周期和占空比可调的振荡电路。,振荡电路的高、低电平时间分别由两个定时器的PT值确定。,保持型接通延迟定时器及其时序图,关断延迟定时器及其时序图,脉冲定时器及其时序图,例:用脉冲定时器实现一个周期振荡电路,复位

8、定时器指令,两条运输带顺序相连,为避免运送的物料在1号运输带上堆积,按下起动按钮I0.3,1号带开始运行,8s后2号带自动起动。停机的顺序与起动的顺序相反,按了停止按钮I0.2后,先停2号带,8s后停1号带。Q1.1和Q0.6控制两台电动机M1和M2。,参数 IN从0变为1将启动TP、TON 和 TONR,从1变0 将启动 TOF。ET 为定时开始后经过的时间,或称为已耗时间值(可以不为ET指定地址),它们的数值类型为32位的Time,单位为ms,最大定时时间为T#24D_20H_31M_23S_647MS。,IEC定时器和IEC计数器属于功能块,调用时需要指定配套的背景数据块,定时器和计数器

9、指令的数据保存在背景数据块中。在梯形图中输入定时器指令时,打开右边的指令窗口将“定时器操作”文件夹中的定时器指令拖放到梯形图中适当的位置,在出现的“调用选项”对话框中修改将要生成的背景数据块的名称,或采用默认的名称。点击“确定”按钮,自动生成数据块。,计数器,S7-1200有3种计数器:加计数器(CTU)、减计数器(CTD)和加减计数器(CTUD)。它们属于软件计数器,其最大计数速率受到它所在的OB的执行速率的限制。如果需要速率更高的计数器,可以使用CPU内置的高速计数器。调用计数器指令时,需要生成保存计数器数据的背景数据块。CU和CD分别是加计数输入和减计数输入,在CU或CD由0变为1是,实

10、际计数值CV加1或减1。复位输入R为1时,计数器被复位,CV被清0,计数器的输入Q变为0。,计数器指令计数器的输入输出 参数,加计数器及其时序图,CTU:参数 CU 的值从 0 变为 1 时,CTU 使计数值加 1。如果参数 CV(当前计数值)的值大于或等于参数 PV(预设计数值)的值,则计数器输出参数 Q=1。如果复位参数 R 的值从 0 变为 1,则当前计数值复位为 0。,计数器的背景数据块结构,减计数器及其时序图,CTD:参数 CD 的值从 0 变为 1 时,CTD 使计数值减 1。如果参数 CV(当前计数值)的值等于或小于 0,则计数器输出参数 Q=1。如果参数 LOAD 的值从 0

11、变为 1,则参数PV(预设值)的值将作为新的 CV(当前计数值)装载到计数器。,计数器指令加减计数器,CTUD:加计数(CU,Count Up)或减计数(CD,Count Down)输入的值从 0 跳变为 1时,CTUD 会使计数值加 1 或减 1。如果参数 CV(当前计数值)的值大于或等于参数PV(预设值)的值,则计数器输出参数 QU=1。如果参数 CV 的值小于或等于零,则计数器输出参数 QD=1。如果参数 LOAD 的值从 0 变为 1,则参数 PV(预设值)的值将作为新的 CV(当前计数值)装载到计数器。如果复位参数 R 的值从 0 变为 1,则当前计数值复位为 0。,加减计数器及其时

12、序图,PV=4,传送带控制 一个能够电气启动的传送带。在传送带的起点有两个按钮开关:用于START的S1和用于STOP的S2。在传送带的尾部也有两个按钮开关:S3用于START,S4用于STOP。可以从任一端启动或停止传送带。另外,当传送带上的物件到达末端时,传感器S5使传送带停机。,传送带示意图,用于传送带系统符号编程的元素,控制传送带程序,风机监控程序 某设备有三台风机,当设备处于运行状态时,如果风机至少有两台以上转动,则指示灯常亮;如果仅有一台风机转动,则指示灯以0.5 Hz的频率闪烁;如果没有任何风机转动,则指示灯不亮。,输入位I0.0,I0.1,I0.2分别为风机1,2,3输入端。,

13、通过传送带电机KM1带动传送带传送物品,通过产品检测器PH检测产品通过的数量,传送带每传送24个产品机械手KM2动作1次,进行包装,机械手动作后,延时2秒,机械手的电磁铁切断。通过传送带起动按钮、传送带停机按钮控制传送带的运动。,计数器应用举例:产品数量检测,(每24个产品机械手动作1次),机械手动作后,延时2秒,机械手的电磁铁切断,测到一个产品,I0.2产生一个正脉冲,使计一个数。,C10每计24个数,机械手动作一次,3台电机顺序启动、反序停止控制 控制要求:按下启动按钮后,3台电机按M1、M2、M3的顺序隔2s启动;按下停止按钮后,3台电机按M3、M2、M1的顺序隔2s停止。,3台电机顺序

14、启动,反序停止控制程序,展厅人数控制系统 控制要求:现有一展厅,最多可容纳50人同时参观。展厅进口与出口各装一传感器,每有一人进出,传感器给出一个脉冲信号。试编程实现,当展厅内不足50人时,绿灯亮,表示可以进入;当展厅满50人时,红灯亮,表示不准进入。,展厅人数控制系统I/O分配表,展厅人数控制程序,运料车自动装、卸料控制 控制要求:某运料车如图所示,可在A、B两地分别启动。运料车启动后,自动返回A地停止,同时控制料斗门的电磁阀Y1打开,开始装料。1分钟后,电磁阀Y1断开,关闭料斗门,运料车自动向B地运行。到达B地后停止,小车底门由电磁阀Y2控制打开,开始卸料。1分钟后,运料车底门关闭,开始返

15、回A地。之后重复运行。运料车在运行过程中,可用手动开关使其停车。再次启动后,可重复中内容,图7.43 运料车自动装、卸料控制示意图,运料车自动装、卸料控制I/O分配表,比较指令,可以使用“等于”操作确定第一个比较值是否等于第二个比较值。要比较的两个值必须为相同的数据类型。该 LAD 触点比较结果为 TRUE 时,则该触点会被激活。在程序编辑器中单击该指令后,可以从下拉菜单中选择比较类型和数据类型。,可以使用“大于”操作确定第一个比较值是否大于第二个比较值。要比较的两个值必须为相同的数据类型。如果比较为真,则 RLO 为“1”。在比较字符串时,通过字符 ASCII 码比较字符(例如“a”大于“A

16、”)。从左到右执行比较。第一个不同的字符决定比较结果。如果较长字符串的左侧部分和较短字符串相同,则认为较长字符串更大。,使用 IN_RANGE 和 OUT_RANGE 指令可测试输入值是在指定的值范围之内还是之外。如果比较结果为 TRUE,则功能框输出为 TRUE。输入参数 MIN、VAL 和 MAX 的数据类型必须相同。在程序编辑器中单击该指令后,可以从下拉菜单中选择数据类型。,例:用比较和计数指令编写开关灯程序,要求灯控按钮I0.0按下一次,灯Q4.0亮,按下两次,灯Q4.0,Q4.1全亮,按下三次灯全灭,如此循环。,分析:在程序中所用计数器为加法计数器,当加到3时,必须复位计数器,这是关

17、键。灯控制程序如图所示。,梯形图程序如下:,例:在HMI设备上可以设定电动机的转速,设定值MW20的范围为100-1440转/分钟,若输入的设定值在此范围内,则延时5秒钟启动电动机Q0.0,否则Q0.1长亮提示。,使用OK和NOT_OK指令可测试输入的数据是否为符合IEEE规范754的有效实数。图中,当MD0和MD4中为有效的浮点数时,会激活“实数乘”(MUL)运算并置位输出,即将MD0的值将与MD4的值相乘,结果存储在MD10中同时Q4.0输出为1。,如果输入 IN 的值为 123.4567则输出 OUT 返回值 0.4567,移动指令,可以使用“移动块”操作将一个存储区(源区域)的内容复制

18、到另一个存储区(目标区域)。要复制到目标区域的元素个数由参数 COUNT 指定。要复制的元素的宽度由输入 IN 的元素宽度定义。复制操作沿地址升序方向进行。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。复制的数据量超出输出 OUT 存储区所提供的数据量。,可以通过“填充块”操作使用输入 IN 的值填充存储区(目标区域)。从输出 OUT 指定的地址开始填充目标区域。重复的复制操作次数由参数 COUNT 指定。执行该操作时,将选择

19、输入 IN 的值并将其按照参数 COUNT 指定的重复次数复制到目标区域。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。复制的数据量超出输出 OUT 存储区所提供的数据量。,数据复制操作规则 要复制 Bool 数据类型,请使用 SET_BF、RESET_BF、R、S 或输出线圈(LAD)要复制单个基本数据类型、结构或要复制字符串中的单个字符,请使用 MOVE 要复制基本数据类型数组,请使用 MOVE_BLK 或 UMOVE_B

20、LK要复制字符串,请使用 S_CONVMOVE_BLK 和 UMOVE_BLK 指令不能用于将数组或结构复制到 I、Q 或 M 存储区。,数据填充操作规则 要使用 BOOL 数据类型填充,请使用 SET_BF、RESET_BF、R、S 或输出线圈(LAD)要使用单个基本数据类型填充或要在字符串中填充单个字符,请使用 MOVE 要使用基本数据类型填充数组,请使用 FILL_BLK 或 UFILL_BLK FILL_BLK 和 UFILL_BLK 指令不能用于将数组填充到 I、Q 或 M 存储区。,转换指令,“转换”操作读取参数 IN 的数据,然后根据指定的数据类型对其进行转换。仅当使能输入 EN

21、 的信号状态为“1”时,才能启动“转换”操作。如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。处理过程中发生溢出之类的错误。,可以使用“取整数字值”运算将输入 IN 的值取整为最接近的整数。该运算将输入 IN 的值解释为浮点数并将其转换为最接近的双精度整数。如果输入值恰好是相邻偶数和奇数的平均数,则选择偶数。运算结果放在输出 OUT 中,可供查询。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。如果满足下列条件之

22、一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。,可以使用“浮点数向上取整”运算将输入 IN 的值向上取整为相邻整数。该运算将输入 IN 的值解释为浮点数并将其向上转换为相邻的整数。运算结果放在输出 OUT 中,可供查询。输出值可以大于或等于输入值。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。,可以使用“浮点数向下取整”运算将输入 IN 的值向下取整为相邻整数。该运算将输入 IN 的值解释为浮点数

23、并将其向下转换为相邻的整数。运算结果放在输出 OUT 中,可供查询。输出值可以小于或等于输入值。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。,可以使用“截取整数”运算得出整数而不对输入 IN 的值进行舍入。输入 IN 的值被视为浮点数。该运算仅选择浮点数的整数部分,并将其发送到输出 OUT 中,不带小数位。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”

24、。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”:输入 EN 的信号状态为“0”。,可以使用“标定”运算通过将输入 VALUE 的值映射到指定的取值范围对该值进行标定。执行“标定”运算时,会将输入 VALUE 的浮点数值标定到由参数 MIN 和 MAX 定义的取值范围。标定结果为整数,并存储在输出 OUT 中。只有使能输入端 EN 的信号状态为“1”时,才执行“标定”运算。在这种情况下,使能输出 ENO 的信号状态也为“1”。,可以使用“标准化”运算通过将输入 VALUE 的变量值映射到线性标尺对其进行标准化。可以使用参数 MIN 和 MAX 定义(应用于该标尺的)取值范围的限值

25、。根据标准化值在该取值范围内的位置,计算结果并以浮点数形式存储在输出 OUT 中。如果要标准化的值等于输入 MIN 的值,输出 OUT 将返回值“0.0”。如果要标准化的值等于输入 MAX 的值,输出 OUT 将返回值“1.0”。,程序控制指令,可以使用“为 1 时块中跳转(有条件)”目标程序段必须标有跳转标签。需要指定该跳转标签的名称以便执行该操作。指定的跳转标签位于该操作的上方。指定的跳转标签必须在执行该操作的块中。指定的名称在块中只能出现一次。如果该操作的输入端的逻辑运算结果 为“1”,则跳转到跳转标签所标识的程序段。跳转方向可以朝向更大或更小的程序段编号。如果该操作的输入不为真(RLO

26、=0),则程序继续在下一个程序段中执行。可以使用“跳转标签”指定跳转的目标程序段,程序应在目标程序段中继续执行。跳转标签的名称可以包含字母、数字或下划线。跳转标签以及指定了该跳转标签的操作必须位于同一个块中。跳转标签的名称在块中只能分配一次。,可以使用“为 0 时块中跳转(有条件)”操作,目标程序段必须标有跳转标签。需要指定该跳转标签的名称以便执行该操作。指定的跳转标签位于该操作的上方。指定的跳转标签必须在执行该操作的块中。指定的名称在块中只能出现一次。如果该操作的输入端的逻辑运算结果(RLO)为“0”,则跳转到跳转标签所标识的程序段。跳转方向可以朝向更大或更小的程序段编号。如果该操作的输入端

27、的逻辑运算结果为“1”,则程序在下一个程序段中继续执行。,可以使用“返回”操作停止块的执行。只有左侧接头的信号状态为“1”时,才会执行该操作。如果满足该条件,将在当前被调用块中终止程序执行并在调用块(例如,在调用 OB 中)中的调用功能后继续执行。调用功能的状态由“返回”操作的参数决定。该参数可以为以下值:TRUE:调用功能的输出 ENO 置位为“1”。FALSE:调用功能的输出 ENO 复位为“0”。:调用功能的输出 ENO 由指定操作数的信号状态决定。如果组织块被“返回”操作终止,则 CPU 继续执行系统程序。如果“返回”操作输入端的信号状态为“0”,则不执行该操作。在这种情况下,程序继续

28、在被调用块的下一个程序段中执行。,图 无条件跳转,图 条件跳转,字逻辑运算指令,可以使用“AND 逻辑运算”将输入 IN1 的值与输入 IN2 的值通过 AND 逻辑逐位运算,并通过输出 OUT 查询结果。执行该运算时,输入 IN1 的值的位 0 与输入 IN2 的值的位 0 通过 AND 逻辑进行运算。结果存储在输出 OUT 的位 0 中。对指定值的所有其它位都执行相同的逻辑运算。仅当该逻辑运算中的两个位的信号状态均为“1”时,结果位的信号状态才为“1”。如果该逻辑运算的两个位中有一个位的信号状态为“0”,则对应的结果位将复位。只有使能输入 EN 的信号状态为“1”时,才执行该操作。在这种情

29、况下,输出 ENO 的信号状态也为“1”。如果使能输入 EN 的信号状态为“0”,则使能输出 ENO 的信号状态复位为“0”。,可以使用“解码”运算在输出值中置位一个位,该位通过输入值指定。“解码”运算读取输入 IN 的值,然后在输出值中置位一个位,该位位置与读取的值一致。输出值中的其它位以零填充。只有使能输入 EN 的信号状态为“1”时,才能启动“解码”运算。如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。如果使能输入 EN 的信号状态为“0”,则使能输出 ENO 的信号状态复位为“0”。,可以使用“编码”运算读取输入值中最低有效置位位的位号并将其发送到输出 OUT。“编码”

30、运算选择输入 IN 值的最低有效位并将该位号写入输出 OUT 的变量中。只有使能输入 EN 的信号状态为“1”时,才能启动“编码”运算。如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。如果使能输入 EN 的信号状态为“0”,则使能输出 ENO 的信号状态复位为“0”。,“选择”操作依靠一个开关(参数 G)选择输入 IN0 或 IN1 中的一个并将其数据复制到输出 OUT。如果参数 G 的信号状态为“0”,则复制输入 IN0 的值。如果参数 G 的信号状态为“1”,则将输入 IN1 的值复制到输出 OUT。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果执行过程中未发

31、生错误,则输出 ENO 的信号状态也为“1”。如果使能输入 EN 的信号状态为“0”或执行该操作期间出错,将复位使能输出 ENO。,可以使用“多路复用”操作将所选输入的数据复制到输出 OUT。功能框 MUX 的可选输入数可以扩展。输入会在该功能框中自动编号。从 IN0 起开始编号,每个新输入的编号连续递增。可以使用参数 K 确定应该将哪个输入的数据复制到输出 OUT。如果参数 K 的值大于可用输入数,则将参数 ELSE 的数据复制到输出 OUT,并将使能输出 ENO 设置为信号状态“0”。只有所有输入的变量和输出 OUT 的变量具有相同数据类型时,才能执行“多路复用”操作。参数 K 例外,因为

32、只能为其指定整数。只有使能输入 EN 的信号状态为“1”时,才执行该操作。如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。,移位和循环指令,可以使用“右移”操作将输入 IN 的变量数据逐位右移,并通过输出 OUT 查询结果。使用参数 N 设置指定将移位的位数。参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数向右移位。无符号值移位时,用零填充变量左侧区域中空出的位。如果指定值有符号,则用符号位的信号状态填充空出的位,可以使用“左移”操作将输入 IN 中的变量数据逐位左移,并通过输出 OUT

33、查询结果。使用参数 N 设置指定将移位的位数。参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数向左移位。用零填充变量右侧部分因移位空出的位。,可以使用“循环右移”操作将输入 IN 的变量数据逐位循环右移,并通过输出 OUT 查询结果。参数 N 指定将循环移位的位数。用挤出的位填充因循环移位空出的位。参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数进行循环移位。,可以使用“循环左移”操作将输入 IN 的变量数据逐位循环

34、左移,并通过输出 OUT 查询结果。参数 N 指定将循环移位的位数。用挤出的位填充因循环移位空出的位。参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数进行循环移位。,例 通过循环指令实现彩灯控制。编写程序如图5-30所示,其中I0.0为控制开关,M1.5为周期为1s的时钟存储器位,实现的功能为当按下I0.0,QD4中为1的输出位每秒钟向左移动1位。第1段程序的功能是赋初值,即将QD4中的Q7.0置位,第2段程序的功能是每秒钟QD4循环左移一位。,5.2 扩展指令,S7-1200的扩展指令包括日期和时间指令

35、,字符串和字符指令,程序控制指令,通信指令,中断指令,PID控制指令,运动控制指令,脉冲指令等。,日期和时间指令,使用 T_CONV 可将输入 IN 的值转换成输出 OUT 指定的数据格式。可实现下列转换:时间(TIME)到数字值(DINT)的转换数值(DINT)到时间(TIME)的转换通过选择指令输入和输出的数据类型来决定转换的类型。可通过输出 OUT 查询转换结果。,使用 T_ADD 可将输入 IN1 的时间与输入 IN2 的时间相加。通过输出 OUT 查询结果。可以对下列格式进行相加操作:时间段(TIME)与时间段(TIME)相加。结果可以输出到 TIME 格式的变量中。时间段(TIME

36、)与时间点(DTL)相加。结果可以输出到 DTL 格式的变量中。通过选择指令输入和输出的数据类型来决定输入 IN1 和输出 OUT 的格式。在输入 IN2 中,只能指定 TIME 格式的时间。,使用 T_SUB 可将输入 IN1 的时间与输入 IN2 的时间相减。通过输出 OUT 查询差值。可以对下列格式进行相减操作:时间段(TIME)与时间段(TIME)相减。结果可以输出到 TIME 格式的变量中。从某时间点(DTL)减去一个时间段(TIME)。结果可以输出到 DTL 格式的变量中。通过选择指令输入和输出的数据类型来决定输入 IN1 和输出 OUT 的格式。在输入 IN2 中,只能指定 TI

37、ME 格式的时间。,使用 T_DIFF 可将输入 IN1 的时间与输入 IN2 的时间相减。以 TIME 格式通过输出 OUT 输出结果。在输入 IN1 和 IN2 中只能指定 DTL 格式的值。如果在输入 IN2 中指定的时间大于在输入 IN1 中指定的时间,则结果将以负值的形式通过输出 OUT 输出。如果该指令的结果超出允许范围,则此结果将限制为相应的值,并且使能输出 ENO 将设置为“0”。,可使用 WR_SYS_T 设置 CPU 时钟的日期和时间。在指令的输入 IN 指定 DTL 格式的日期和时间。在输出 RET_VAL 中,可以查询指令执行期间是否出错。不能使用“WR_SYS_T”指

38、令发送有关本地时区或夏令时的信息。,可使用 RD_SYS_T 读取 CPU 时钟的当前日期和当前时间。数据以 DTL 格式放在指令的输出 OUT 中。得出的值不包含有关本地时区或夏令时的信息。在输出 RET_VAL 中,可以查询指令执行期间是否出错。,可使用 RD_LOC_T 从 CPU 时钟读取当前本地时间,并在输出 OUT 以 DTL 格式输出该值。在 CPU 时钟的组态中设置的时区和夏令时开始时间以及标准时间,其相关信息均包括在本地时间信息中。,字符串转换指令,使用 S_CONV 可将输入 IN 的值转换成在输出 OUT 中指定的数据格式。可实现下列转换:字符串(STRING)转换为数字

39、值:在输入 IN 中指定的字符串的所有字符都将进行转换。允许的字符为数字 0 到 9、小数点以及加号和减号。字符串的第一个字符可以是有效数字或符号。前导空格和指数表示将被忽略。无效字符可能会中断字符转换。此时,使能输出 ENO 将设置为“0”。可通过选择输出 OUT 的数据类型来决定转换的输出格式。数字值转换为字符串(STRING):通过选择输入 IN 的数据类型来决定要转换的数字值格式。必须在输出 OUT 中指定一个有效的 STRING 数据类型的变量。转换后的字符串长度取决于输入 IN 的值。由于第一个字节包含字符串的最大长度,第二个字节包含字符串的实际长度,因此转换的结果从字符串的第三个

40、字节开始存储。输出正数字值时不带符号。复制字符串:如果在指令的输入和输出均输入 STRING 数据类型,则输入 IN 的字符串将被复制到输出 OUT。如果输入 IN 字符串的实际长度超出输出 OUT 字符串的最大长度,则将复制 IN 字符串中完全适合 OUT 的字符串的那部分,并且使能输出 ENO 将设置为“0”值。,使用 STRG_VAL 可将字符串转换为数字值。在输入 IN 中指定要转换的字符串。可通过选择输出 OUT 的数据类型来决定输出值的格式。通过输出 OUT 查询结果。从参数 P 中指定位置的字符开始转换。例如,如果参数 P 中指定的值为“1”,则将从指定字符串的第一个字符开始转换

41、。转换允许的字符为数字 0 到 9、小数点、逗号小数点、符号“E”和“e”以及加号和减号字符。无效字符可能会中断转换。此时,使能输出 ENO 将设置为“0”。使用参数 FORMAT 可指定要如何解释字符串中的字符。也可以使用“STRG_VAL”指令来转换和表示指数值。只能为参数 FORMAT 指定 USINT 数据类型的变量。,使用 VAL_STRG 可将数字值转换为字符串。在输入 IN 中指定要转换的值。通过选择数据类型来决定数字值的格式。通过输出 OUT 查询转换结果。通过参数 P 可指定从字符串中的哪个字符开始写入结果。例如,如果参数 P 中指定的值为“2”,则将从字符串的第二个字符开始

42、保存转换值。通过参数 SIZE 可以指定字符串中写入的字符数。这要从参数 P 中指定的字符开始算起。如果由参数 P 和 SIZE 定义的长度不够,则使能输出 ENO 将设置为“0”。如果输出值比指定长度短,则结果将以右对齐方式写入字符串。空字符位置将填入空格。转换允许的字符为数字 0 到 9、小数点、逗号小数点、符号“E”和“e”以及加号和减号字符。无效字符可能会中断转换。此时,使能输出 ENO 将设置为“0”。使用参数 FORMAT 可指定在转换期间如何解释数字值以及如何将其写入字符串。只能为参数 FORMAT 指定 USINT 数据类型的变量。,字符串操作指令,STRING 类型的变量包含

43、两个长度:最大长度和当前长度(即当前有效字符的数量)。每个变量的字符串最大长度在 STRING 关键字的方括号中指定。当前长度表示实际使用的字符位置数。当前长度必须小于或等于最大长度。字符串占用的字节数为最大长度加 2。可使用“LEN”指令查询在输入 IN 中指定的字符串的当前长度,并在输出 OUT 以数字值的形式将其输出。空字符串()的长度为零。如果操作处理期间出错,则将输出空字符串。,CONCAT 连接字符串参数 IN1 和 IN2 以形成一个字符串,并放在 OUT 中。目标字符串必须足够长,否则结果字符串将被截短并且使能输出 ENO 将设置为“0”值。如果指令处理期间出错并且可以写入到输

44、出 OUT,则将输出空字符串。,可使用 LEFT 从输入 IN 字符串的第一个字符开始提取出一部分字符串。通过参数 L 指定要提取的字符数。以 STRING 格式通过输出 OUT 输出提取的字符。如果要提取的字符数大于字符串的当前长度,则输出 OUT 将返回输入字符串。参数 L 的值为“0”时或者输入值为空字符串时都将返回空字符串。如果参数 L 的值为负值,则将输出空字符串并且使能输出 ENO 将设置为“0”值。,可使用 MID 将输入 IN 字符串的一部分提取出来。可通过参数 P 指定要提取的第一个字符的位置。通过参数 L 指定要提取的字符串长度。提取的部分字符串通过输出 OUT 输出。执行

45、该指令时应遵守以下规则:如果要提取的字符数超出输入 IN 字符串的当前长度,则将输出从字符位置 P 开始到该字符串末尾的这一部分字符串。如果通过参数 P 指定的字符位置超出输入 IN 字符串的当前长度,则将通过输出 OUT 输出空字符串并且使能输出 ENO 将设置为“0”值。如果参数 L 或 P 的值等于零或为负值,则将通过输出 OUT 输出空字符串并且使能输出 ENO 将设置为“0”值。,可使用 DELETE 将输入 IN 字符串的一部分删除。可通过参数 P 指定要删除的第一个字符的位置。可使用参数 L 指定要删除的字符数。剩余部分的字符串通过输出 OUT 以 STRING 格式输出。执行该

46、指令时应遵守以下规则:如果参数 L 或 P 的值等于零,则输出 OUT 将返回输入字符串。如果参数 P 的值大于输入 IN 字符串的当前长度,则输出 OUT 将返回输入字符串。如果要删除的字符数大于输入 IN 字符串的长度,则将输出空字符串。如果参数 L 或 P 的值为负值,则将输出空字符串并且使能输出 ENO 将设置为“0”值,从字符串 1 的某个字符位置开始插入字符串 2,并将结果存储在目标字符串中。可使用参数 P 指定要插入字符的字符位置。以 STRING 格式通过输出 OUT 输出结果。执行该指令时应遵守以下规则:如果参数 P 的值超出输入 IN1 字符串的当前长度,则输入 IN2 的

47、字符串将附加到输入 IN1 的字符串的后面。如果参数 P 的值为负值或等于零,则将通过输出 OUT 输出空字符串。使能输出 ENO 将设置为“0”值。如果结果字符串比在输出 OUT 中指定的变量长,则结果字符串将被限制为有效长度。使能输出 ENO 将设置为“0”值。,可使用 REPLACE 将输入 IN1 的字符串替换为输入 IN2 的字符串。可通过参数 P 指定要替换的第一个字符的位置。通过参数 L 指定要替换的字符数。以 STRING 格式通过输出 OUT 输出结果。执行该指令时应遵守以下规则:如果参数 L 的值等于零,则输出 OUT 将返回输入 IN1 的字符串。如果 P 等于 1,则将

48、从输入 IN1 字符串的第一个字符开始(包括该字符)对其进行替换。如果参数 P 的值超出输入 IN1 字符串的当前长度,则输入 IN2 的字符串将附加到输入 IN1 的字符串的后面。如果参数 P 的值为负值或等于零,则将通过输出 OUT 输出空字符串。使能输出 ENO 将设置为“0”值。如果结果字符串比在输出 OUT 中指定的变量长,则结果字符串将被限制为有效长度。使能输出 ENO 将设置为“0”值。,可使用 FIND 来搜索输入 IN1 的字符串以查找特定字符或特定字符串。在输入 IN2 中指定要搜索的值。搜索从左向右进行。将通过输出 OUT 输出第一个搜索结果的位置。如果搜索未返回任何匹配

49、值,则将通过输出 OUT 输出“0”值。如果指令处理期间出错,则将输出空字符串。,某十字路口,东西方向车流量较小,南北方向车流量较大。东西方向上绿灯亮30秒,南北方向上绿灯亮40秒,绿灯向红灯转换中间黄灯亮5秒且闪烁,红灯在最后5秒闪烁。十字路口红绿灯示意图如图所示。试利用PLC进行控制,并编写梯形图程序。,执行机构与动作过程,虽然十字路口有12只红绿灯,但同一个方向上的同色灯(如灯1与灯7)同时动作,应作为一个输出,所以共有6个输出。,由于一个方向上亮绿灯或黄灯时,另一个方向上肯定亮红灯,所以亮红灯可不作为一个单独的时间状态。,十字路口红绿灯工作为循环方式,循环周期为80秒。由4部分组成:4

50、0秒5秒30秒5秒。,程序控制指令,TSEND_C 是异步指令且具有以下功能:设置并建立通信连接:TSEND_C 可设置并建立 TCP 或 ISO-on-TCP 通信连接。设置并建立连接后,CPU 会自动保持和监视该连接。在参数 CONNECT 中指定的连接描述用于设置通信连接。要建立连接,参数 CONT 的值必须设置为“1”。连接成功建立后,参数 DONE 在一个周期内设置为“1”。若 CPU 转到 STOP 模式,将终止现有连接并删除所设置的相应连接。必须再次执行 TSEND_C,才能重新设置并建立该连接。通过现有通信连接发送数据:通过参数 DATA 可指定要发送的区域。这包括要发送数据的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号