西门子S7-1200plc指令系统.ppt_第1页
西门子S7-1200plc指令系统.ppt_第2页
西门子S7-1200plc指令系统.ppt_第3页
西门子S7-1200plc指令系统.ppt_第4页
西门子S7-1200plc指令系统.ppt_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

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

文档简介

指令系统,S7-1200的指令从功能上大致可分为三类:基本指令、扩展指令和全局库指令。,5.1 基本指令,基本指令包括位逻辑指令、定时器、计数器、比较指令、数学指令、移动指令、转换指令、程序控制指令、逻辑运算指令以及移位和循环移位指令等。,基本逻辑指令,内部输入触点(I)的闭合与断开仅与输入映像寄存器相应位的状态有关,与外部输入按钮、接触器、继电器的常开/常闭接法无关。输入映像寄存器相应位为1,则内部常开触点闭合,常闭触点断开。输入映像寄存器相应位为0,则内部常开触点断开,常闭触点闭合。,置位域复位域指令,置位域指令将指定的地址开始的连续若干个地址置位(变为1状态并保持)。 复位域指令将指定的地址开始的连续若干个地址复位(变为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。,复位优先、置位优先锁存器,复位优先锁存器、置位优先锁存器:,输出线圈可选,指令功能 RS 复位优先锁存器,当置位信号和复位信号都有效时,复位信号优先,输出线圈不接通。 SR 置位优先锁存器,当置位信号和复位信号都有效时,置位信号优先,输出线圈接通。 RS、SR指令均为锁存器,一个复位优先,一个置位优先。S连接置位输入,R连接复位输入。一旦输出线圈被置位,则保持置位状态直到复位输入接通。 置位、复位输入均以高电平状态有效。,例:抢答器的设计 抢答器有三个输入,分别为I0.0、I0.1和I0.2,输出分别为Q4.0、Q4.1和Q4.2,复位输入是I0.4。要求:三人中任意抢答,谁先按按钮,谁的指示灯优先亮,且只能亮一盏灯,进行下一问题时主持人按复位按钮,抢答重新开始。,抢答器程序,边沿指令,位逻辑指令边缘检测触点指令,如果输入信号I0.6由0变为1状态(即输入信号I0.6的上升沿),则该触点接通一个扫描周期。 触点下面的M4.3为边缘存储位,用来存储上一个扫描循环是I0.6的状态,通过比较输入信号的当前状态和上一次循环的状态来检测信号的边沿。边沿存储位的地址只能在程序中使用一次,它的状态不能在其他地方被改写。只能使用M、全局DB和静态局部变量来作边沿存储位,不能使用临时局部数据或I/O变量来作边沿存储位。,位逻辑指令P_TRIG与N_TRIG指令,在流进P_TRIG指令的CLK输入端的能流的上升沿,Q端输出一个扫描周期的能流,使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.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 输入重置经过的时间之前,会跨越多个定时时段一直累加经过的时间。 RT:通过清除存储在指定定时器背景数据块中的时间数据来重置定时器。 每个定时器都使用一个存储在数据块中的结构来保存定时器数据。 在编辑器中放置定时器指令时可分配该数据块。,接通延迟定时器及其时序图,定时器的背景数据块结构,练习,按下瞬时启动按钮I0.0,5秒后电动机启动,按下瞬时停止按钮I0.1,10秒后电动机停止。,例 用接通延时定时器设计一个周期振荡电路。,用接通延时定时器设计周期和占空比可调的振荡电路。,振荡电路的高、低电平时间分别由两个定时器的PT值确定。,保持型接通延迟定时器及其时序图,关断延迟定时器及其时序图,脉冲定时器及其时序图,例:用脉冲定时器实现一个周期振荡电路,复位定时器指令,两条运输带顺序相连,为避免运送的物料在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计数器属于功能块,调用时需要指定配套的背景数据块,定时器和计数器指令的数据保存在背景数据块中。 在梯形图中输入定时器指令时,打开右边的指令窗口将“定时器操作”文件夹中的定时器指令拖放到梯形图中适当的位置,在出现的“调用选项”对话框中修改将要生成的背景数据块的名称,或采用默认的名称。点击“确定”按钮,自动生成数据块。,计数器,S7-1200有3种计数器:加计数器(CTU)、减计数器(CTD)和加减计数器(CTUD)。它们属于软件计数器,其最大计数速率受到它所在的OB的执行速率的限制。 如果需要速率更高的计数器,可以使用CPU内置的高速计数器。 调用计数器指令时,需要生成保存计数器数据的背景数据块。 CU和CD分别是加计数输入和减计数输入,在CU或CD由0变为1是,实际计数值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 变为 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。,加减计数器及其时序图,PV = 4,传送带控制 一个能够电气启动的传送带。在传送带的起点有两个按钮开关:用于START的S1和用于STOP的S2。在传送带的尾部也有两个按钮开关:S3用于START,S4用于STOP。可以从任一端启动或停止传送带。另外,当传送带上的物件到达末端时,传感器S5使传送带停机。,传送带示意图,用于传送带系统符号编程的元素,控制传送带程序,风机监控程序 某设备有三台风机,当设备处于运行状态时,如果风机至少有两台以上转动,则指示灯常亮;如果仅有一台风机转动,则指示灯以0.5 Hz的频率闪烁;如果没有任何风机转动,则指示灯不亮。,输入位I0.0,I0.1,I0.2分别为风机1,2,3输入端。,通过传送带电机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台电机顺序启动,反序停止控制程序,展厅人数控制系统 控制要求:现有一展厅,最多可容纳50人同时参观。展厅进口与出口各装一传感器,每有一人进出,传感器给出一个脉冲信号。试编程实现,当展厅内不足50人时,绿灯亮,表示可以进入;当展厅满50人时,红灯亮,表示不准进入。,展厅人数控制系统I/O分配表,展厅人数控制程序,运料车自动装、卸料控制 控制要求:某运料车如图所示,可在A、B两地分别启动。运料车启动后,自动返回A地停止,同时控制料斗门的电磁阀Y1打开,开始装料。1分钟后,电磁阀Y1断开,关闭料斗门,运料车自动向B地运行。到达B地后停止,小车底门由电磁阀Y2控制打开,开始卸料。1分钟后,运料车底门关闭,开始返回A地。之后重复运行。 运料车在运行过程中,可用手动开关使其停车。再次启动后,可重复中内容,图7.43 运料车自动装、卸料控制示意图,运料车自动装、卸料控制I/O分配表,比较指令,可以使用“等于”操作确定第一个比较值是否等于第二个比较值。 要比较的两个值必须为相同的数据类型。该 LAD 触点比较结果为 TRUE 时,则该触点会被激活。 在程序编辑器中单击该指令后,可以从下拉菜单中选择比较类型和数据类型。,可以使用“大于”操作确定第一个比较值是否大于第二个比较值。 要比较的两个值必须为相同的数据类型。 如果比较为真,则 RLO 为“1”。 在比较字符串时,通过字符 ASCII 码比较字符(例如“a”大于“A”)。 从左到右执行比较。 第一个不同的字符决定比较结果。 如果较长字符串的左侧部分和较短字符串相同,则认为较长字符串更大。,使用 IN_RANGE 和 OUT_RANGE 指令可测试输入值是在指定的值范围之内还是之外。 如果比较结果为 TRUE,则功能框输出为 TRUE。输入参数 MIN、VAL 和 MAX 的数据类型必须相同。在程序编辑器中单击该指令后,可以从下拉菜单中选择数据类型。,例:用比较和计数指令编写开关灯程序,要求灯控按钮I0.0按下一次,灯Q4.0亮,按下两次,灯Q4.0,Q4.1全亮,按下三次灯全灭,如此循环。,分析:在程序中所用计数器为加法计数器,当加到3时,必须复位计数器,这是关键。灯控制程序如图所示。,梯形图程序如下:,例:在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,移动指令,可以使用“移动块”操作将一个存储区(源区域)的内容复制到另一个存储区(目标区域)。 要复制到目标区域的元素个数由参数 COUNT 指定。 要复制的元素的宽度由输入 IN 的元素宽度定义。复制操作沿地址升序方向进行。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。 复制的数据量超出输出 OUT 存储区所提供的数据量。,可以通过“填充块”操作使用输入 IN 的值填充存储区(目标区域)。 从输出 OUT 指定的地址开始填充目标区域。 重复的复制操作次数由参数 COUNT 指定。 执行该操作时,将选择输入 IN 的值并将其按照参数 COUNT 指定的重复次数复制到目标区域。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。 复制的数据量超出输出 OUT 存储区所提供的数据量。,MOVE 指令将单个数据元素从 IN 参数指定的源地址复制到 OUT 参数指定的目标地址。 MOVE_BLK 和 UMOVE_BLK 指令具有附加的 COUNT 参数。 COUNT 指定要复制的数据元素个数。 每个被复制元素的字节数取决于 PLC 变量表中分配给 IN 和 OUT 参数变量名称的数据类型。 MOVE_BLK 和 UMOVE_BLK 指令在处理中断的方式上有所不同: 在 MOVE_BLK 执行期间排队并处理中断事件。 在中断 OB 子程序中未使用移动目标地址的数据时,或者虽然使用了该数据,但目标数据不必一致时,使用 MOVE_BLK指令。 如果 MOVE_BLK 操作被中断,则最后移动的一个数据元素在目标地址中是完整并且一致的。 MOVE_BLK 操作会在中断 OB 执行完成后继续执行。 在 UMOVE_BLK 完成执行前排队但不处理中断事件。 如果在执行中断 OB 子程序前移动操作必须完成且目标数据必须一致,则使用 UMOVE_BLK 指令。,转换指令,“转换”操作读取参数 IN 的数据,然后根据指定的数据类型对其进行转换。 仅当使能输入 EN 的信号状态为“1”时,才能启动“转换”操作。 如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。 处理过程中发生溢出之类的错误。,可以使用“取整数字值”运算将输入 IN 的值取整为最接近的整数。 该运算将输入 IN 的值解释为浮点数并将其转换为最接近的双精度整数。 如果输入值恰好是相邻偶数和奇数的平均数,则选择偶数。 运算结果放在输出 OUT 中,可供查询。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。,可以使用“浮点数向上取整”运算将输入 IN 的值向上取整为相邻整数。 该运算将输入 IN 的值解释为浮点数并将其向上转换为相邻的整数。 运算结果放在输出 OUT 中,可供查询。 输出值可以大于或等于输入值。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。,可以使用“浮点数向下取整”运算将输入 IN 的值向下取整为相邻整数。 该运算将输入 IN 的值解释为浮点数并将其向下转换为相邻的整数。 运算结果放在输出 OUT 中,可供查询。 输出值可以小于或等于输入值。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。,可以使用“截取整数”运算得出整数而不对输入 IN 的值进行舍入。 输入 IN 的值被视为浮点数。 该运算仅选择浮点数的整数部分,并将其发送到输出 OUT 中,不带小数位。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果运算执行过程中未发生错误,则输出 ENO 的信号状态为“1”。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: 输入 EN 的信号状态为“0”。,可以使用“标定”运算通过将输入 VALUE 的值映射到指定的取值范围对该值进行标定。 执行“标定”运算时,会将输入 VALUE 的浮点数值标定到由参数 MIN 和 MAX 定义的取值范围。 标定结果为整数,并存储在输出 OUT 中。 只有使能输入端 EN 的信号状态为“1”时,才执行“标定”运算。 在这种情况下,使能输出 ENO 的信号状态也为“1”。,可以使用“标准化”运算通过将输入 VALUE 的变量值映射到线性标尺对其进行标准化。 可以使用参数 MIN 和 MAX 定义(应用于该标尺的)取值范围的限值。 根据标准化值在该取值范围内的位置,计算结果并以浮点数形式存储在输出 OUT 中。 如果要标准化的值等于输入 MIN 的值,输出 OUT 将返回值“0.0”。 如果要标准化的值等于输入 MAX 的值,输出 OUT 将返回值“1.0”。,程序控制指令,可以使用“为 1 时块中跳转(有条件)” 目标程序段必须标有跳转标签。 需要指定该跳转标签的名称以便执行该操作。 指定的跳转标签位于该操作的上方。 指定的跳转标签必须在执行该操作的块中。 指定的名称在块中只能出现一次。 如果该操作的输入端的逻辑运算结果 为“1”,则跳转到跳转标签所标识的程序段。 跳转方向可以朝向更大或更小的程序段编号。 如果该操作的输入不为真 (RLO = 0),则程序继续在下一个程序段中执行。 可以使用“跳转标签”指定跳转的目标程序段,程序应在目标程序段中继续执行。 跳转标签的名称可以包含字母、数字或下划线。 跳转标签以及指定了该跳转标签的操作必须位于同一个块中。 跳转标签的名称在块中只能分配一次。,可以使用“为 0 时块中跳转(有条件)”操作,目标程序段必须标有跳转标签。 需要指定该跳转标签的名称以便执行该操作。 指定的跳转标签位于该操作的上方。 指定的跳转标签必须在执行该操作的块中。 指定的名称在块中只能出现一次。 如果该操作的输入端的逻辑运算结果 (RLO) 为“0”,则跳转到跳转标签所标识的程序段。 跳转方向可以朝向更大或更小的程序段编号。 如果该操作的输入端的逻辑运算结果为“1”,则程序在下一个程序段中继续执行。,可以使用“返回”操作停止块的执行。 只有左侧接头的信号状态为“1”时,才会执行该操作。 如果满足该条件,将在当前被调用块中终止程序执行并在调用块(例如,在调用 OB 中)中的调用功能后继续执行。 调用功能的状态由“返回”操作的参数决定。 该参数可以为以下值: TRUE: 调用功能的输出 ENO 置位为“1”。 FALSE: 调用功能的输出 ENO 复位为“0”。 : 调用功能的输出 ENO 由指定操作数的信号状态决定。 如果组织块被“返回”操作终止,则 CPU 继续执行系统程序。 如果“返回”操作输入端的信号状态为“0”,则不执行该操作。 在这种情况下,程序继续在被调用块的下一个程序段中执行。,图 无条件跳转,图 条件跳转,字逻辑运算指令,可以使用“AND 逻辑运算”将输入 IN1 的值与输入 IN2 的值通过 AND 逻辑逐位运算,并通过输出 OUT 查询结果。 执行该运算时,输入 IN1 的值的位 0 与输入 IN2 的值的位 0 通过 AND 逻辑进行运算。 结果存储在输出 OUT 的位 0 中。 对指定值的所有其它位都执行相同的逻辑运算。 仅当该逻辑运算中的两个位的信号状态均为“1”时,结果位的信号状态才为“1”。 如果该逻辑运算的两个位中有一个位的信号状态为“0”,则对应的结果位将复位。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 在这种情况下,输出 ENO 的信号状态也为“1”。 如果使能输入 EN 的信号状态为“0”,则使能输出 ENO 的信号状态复位为“0”。,可以使用“解码”运算在输出值中置位一个位,该位通过输入值指定。 “解码”运算读取输入 IN 的值,然后在输出值中置位一个位,该位位置与读取的值一致。 输出值中的其它位以零填充。 只有使能输入 EN 的信号状态为“1”时,才能启动“解码”运算。 如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。 如果使能输入 EN 的信号状态为“0”,则使能输出 ENO 的信号状态复位为“0”。,可以使用“编码”运算读取输入值中最低有效置位位的位号并将其发送到输出 OUT。 “编码”运算选择输入 IN 值的最低有效位并将该位号写入输出 OUT 的变量中。 只有使能输入 EN 的信号状态为“1”时,才能启动“编码”运算。 如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。 如果使能输入 EN 的信号状态为“0”,则使能输出 ENO 的信号状态复位为“0”。,“选择”操作依靠一个开关(参数 G)选择输入 IN0 或 IN1 中的一个并将其数据复制到输出 OUT。 如果参数 G 的信号状态为“0”,则复制输入 IN0 的值。 如果参数 G 的信号状态为“1”,则将输入 IN1 的值复制到输出 OUT。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。 如果使能输入 EN 的信号状态为“0”或执行该操作期间出错,将复位使能输出 ENO。,可以使用“多路复用”操作将所选输入的数据复制到输出 OUT。 功能框 MUX 的可选输入数可以扩展。 输入会在该功能框中自动编号。 从 IN0 起开始编号,每个新输入的编号连续递增。 可以使用参数 K 确定应该将哪个输入的数据复制到输出 OUT。 如果参数 K 的值大于可用输入数,则将参数 ELSE 的数据复制到输出 OUT,并将使能输出 ENO 设置为信号状态“0”。 只有所有输入的变量和输出 OUT 的变量具有相同数据类型时,才能执行“多路复用”操作。 参数 K 例外,因为只能为其指定整数。 只有使能输入 EN 的信号状态为“1”时,才执行该操作。 如果执行过程中未发生错误,则输出 ENO 的信号状态也为“1”。,移位和循环指令,可以使用“右移”操作将输入 IN 的变量数据逐位右移,并通过输出 OUT 查询结果。 使用参数 N 设置指定将移位的位数。 参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。 当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数向右移位。 无符号值移位时,用零填充变量左侧区域中空出的位。 如果指定值有符号,则用符号位的信号状态填充空出的位,可以使用“左移”操作将输入 IN 中的变量数据逐位左移,并通过输出 OUT 查询结果。 使用参数 N 设置指定将移位的位数。 参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。 当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数向左移位。 用零填充变量右侧部分因移位空出的位。,可以使用“循环右移”操作将输入 IN 的变量数据逐位循环右移,并通过输出 OUT 查询结果。 参数 N 指定将循环移位的位数。 用挤出的位填充因循环移位空出的位。 参数 N 的值为“0”时,输入 IN 的值将被复制到输出 OUT 的变量中。 当参数 N 的值大于位数时,输入 IN 的变量值将按其可用位数进行循环移位。,可以使用“循环左移”操作将输入 IN 的变量数据逐位循环左移,并通过输出 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的扩展指令包括日期和时间指令,字符串和字符指令,程序控制指令,通信指令,中断指令,PID控制指令,运动控制指令,脉冲指令等。,日期和时间指令,使用 T_CONV 可将输入 IN 的值转换成输出 OUT 指定的数据格式。 可实现下列转换: 时间 (TIME) 到数字值 (DINT) 的转换 数值 (DINT) 到时间 (TIME) 的转换 通过选择指令输入和输出的数据类型来决定转换的类型。 可通过输出 OUT 查询转换结果。,使用 T_ADD 可将输入 IN1 的时间与输入 IN2 的时间相加。 通过输出 OUT 查询结果。 可以对下列格式进行相加操作: 时间段 (TIME) 与时间段 (TIME) 相加。 结果可以输出到 TIME 格式的变量中。 时间段 (TIME) 与时间点 (DTL) 相加。 结果可以输出到 DTL 格式的变量中。 通过选择指令输入和输出的数据类型来决定输入 IN1 和输出 OUT 的格式。 在输入 IN2 中,只能指定 TIME 格式的时间。,使用 T_SUB 可将输入 IN1 的时间与输入 IN2 的时间相减。 通过输出 OUT 查询差值。 可以对下列格式进行相减操作: 时间段 (TIME) 与时间段 (TIME) 相减。 结果可以输出到 TIME 格式的变量中。 从某时间点 (DTL) 减去一个时间段 (TIME)。 结果可以输出到 DTL 格式的变量中。 通过选择指令输入和输出的数据类型来决定输入 IN1 和输出 OUT 的格式。 在输入 IN2 中,只能指定 TIME 格式的时间。,使用 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”指令发送有关本地时区或夏令时的信息。,可使用 RD_SYS_T 读取 CPU 时钟的当前日期和当前时间。 数据以 DTL 格式放在指令的输出 OUT 中。 得出的值不包含有关本地时区或夏令时的信息。 在输出 RET_VAL 中,可以查询指令执行期间是否出错。,可使用 RD_LOC_T 从 CPU 时钟读取当前本地时间,并在输出 OUT 以 DTL 格式输出该值。 在 CPU 时钟的组态中设置的时区和夏令时开始时间以及标准时间,其相关信息均包括在本地时间信息中。,字符串转换指令,使用 S_CONV 可将输入 IN 的值转换成在输出 OUT 中指定的数据格式。 可实现下列转换: 字符串 (STRING) 转换为数字值: 在输入 IN 中指定的字符串的所有字符都将进行转换。 允许的字符为数字 0 到 9、小数点以及加号和减号。 字符串的第一个字符可以是有效数字或符号。 前导空格和指数表示将被忽略。 无效字符可能会中断字符转换。 此时,使能输出 ENO 将设置为“0”。 可通过选择输出 OUT 的数据类型来决定转换的输出格式。 数字值转换为字符串 (STRING): 通过选择输入 IN 的数据类型来决定要转换的数字值格式。 必须在输出 OUT 中指定一个有效的 STRING 数据类型的变量。 转换后的字符串长度取决于输入 IN 的值。 由于第一个字节包含字符串的最大长度,第二个字节包含字符串的实际长度,因此转换的结果从字符串的第三个字节开始存储。 输出正数字值时不带符号。 复制字符串: 如果在指令的输入和输出均输入 STRING 数据类型,则输入 IN 的字符串将被复制到输出 OUT。 如果输入 IN 字符串的实际长度超出输出 OUT 字符串的最大长度,则将复制 IN 字符串中完全适合 OUT 的字符串的那部分,并且使能输出 ENO 将设置为“0”值。,使用 STRG_VAL 可将字符串转换为数字值。 在输入 IN 中指定要转换的字符串。 可通过选择输出 OUT 的数据类型来决定输出值的格式。 通过输出 OUT 查询结果。 从参数 P 中指定位置的字符开始转换。 例如,如果参数 P 中指定的值为“1”,则将从指定字符串的第一个字符开始转换。 转换允许的字符为数字 0 到 9、小数点、逗号小数点、符号“E”和“e”以及加号和减号字符。 无效字符可能会中断转换。 此时,使能输出 ENO 将设置为“0”。 使用参数 FORMAT 可指定要如何解释字符串中的字符。 也可以使用“STRG_VAL”指令来转换和表示指数值。 只能为参数 FORMAT 指定 USINT 数据类型的变量。,使用 VAL_STRG 可将数字值转换为字符串。 在输入 IN 中指定要转换的值。 通过选择数据类型来决定数字值的格式。 通过输出 OUT 查询转换结果。 通过参数 P 可指定从字符串中的哪个字符开始写入结果。 例如,如果参数 P 中指定的值为“2”,则将从字符串的第二个字符开始保存转换值。 通过参数 SIZE 可以指定字符串中写入的字符数。 这要从参数 P 中指定的字符开始算起。 如果由参数 P 和 SIZE 定义的长度不够,则使能输出 ENO 将设置为“0”。 如果输出值比指定长度短,则结果将以右对齐方式写入字符串。 空字符位置将填入空格。 转换允许的字符为数字 0 到 9、小数点、逗号小数点、符号“E”和“e”以及加号和减号字符。 无效字符可能会中断转换。 此时,使能输出 ENO 将设置为“0”。 使用参数 FORMAT 可指定在转换期间如何解释数字值以及如何将其写入字符串。 只能为参数 FORMAT 指定 USINT 数据类型的变量。,字符串操作指令,STRING 类型的变量包含两个长度: 最大长度和当前长度(即当前有效字符的数量)。 每个变量的字符串最大长度在 STRING 关键字的方括号中指定。 当前长度表示实际使用的字符位置数。 当前长度必须小于或等于最大长度。 字符串占用的字节数为最大长度加 2。 可使用“LEN”指令查询在输入 IN 中指定的字符串的当前长度,并在输出 OUT 以数字值的形式将其输出。 空字符串 () 的长度为零。 如果操作处理期间出错,则将输出空字符串。,CONCAT 连接字符串参数 IN1 和 IN2 以形成一个字符串,并放在 OUT 中。 目标字符串必须足够长,否则结果字符串将被截短并且使能输出 ENO 将设置为“0”值。 如果指令处理期间出错并且可以写入到输出 OUT,则将输出空字符串。,可使用 LEFT 从输入 IN 字符串的第一个字符开始提取出一部分字符串。 通过参数 L 指定要提取的字符数。 以 STRING 格式通过输出 OUT 输出提取的字符。 如果要提取的字符数大于字符串的当前长度,则输出 OUT 将返回输入字符串。 参数 L 的值为“0”时或者输入值为空字符串时都将返回空字符串。 如果参数 L 的值为负值,则将输出空字符串并且使能输出

温馨提示

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

评论

0/150

提交评论