图5-5 例5-5题图
令实现)。梯形图程序和语句表程序如图5-5所示。 LD SM0.1 //首次扫描时 MOVB 1, QB0 //置8位彩灯初态 LD I0.0 //T37产生周期为 AN T37 0.5s的移位脉冲 TON T37, +5
LD T37 //每来一个脉冲
RLB QB0, 1 彩灯循环左移1位
3. 移位寄存器指令(SHRB)
移位寄存器指令是可以指定移位寄存器的长度和移位方向的移位指令。其指令格式如图5-6所示。
说明:(1)移位寄存器指令SHRB将DATA数值移入移位寄存器。梯形图中,EN为使能输入端,连接移位脉冲信号,每次使能有效时,整个移位寄存器移动1位。DATA为数据输入端,连接移入移位寄存器的二进制数值,执行指令时将该位的值移入寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的长度和移位方向,移位寄存器的最大长度为64位,N为正值表示左移位,输入数据(DATA)移入移位寄存器的最低位(S_BIT),并移出移位寄存器的最高位。移出的数据被放置在溢出内存位(SM1.1)中。N为负值表示右移位,输入数据移入移位寄存器的最高位中,并移出最低位(S_BIT)。移出的数据被放置在溢出内存位(SM1.1)中。
(2)DATA和S-BIT的操作数为I, Q, M, SM, T, C, V, S, L 。数据类型为:BOOL变量。N的操作数为VB, IB, QB, MB, SB, SMB, LB, AC, 常量。数据类型为:字节。
(3)使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),0092(计数区错误)。 (4)移位指令影响特殊内部标志位:SM1.1(为移出的位值设置溢出位)。 【例5-6】移位寄存器应用举例。程序及运行结果如图5-7所示。 ?溢出位(SM1.1)
S-BIT I0.1 S-BIT I0.1 S-BIT
I0.1
溢出位(SM1.1) 溢出位(SM1.1) 溢出位 第一次移位 第一次移位后 第二次移位后 第一次移位前
时序图 MB10
M10.7 M10.6 M10.5 M10.2 M10.4 M10.3 M10.1 M10.0 ?MB10 ?MB10
?I0.0 ?I0.1
图5-7 例5-6梯形图、语句表、时序图及运行结果
【例5-7】用PLC构成喷泉的控制。用灯L1~L12分别代表喷泉的12个喷水注。
(1)控制要求:按下起动按钮后,隔灯闪烁,L1亮0.5秒后灭,接着L2亮0.5秒后灭, 接着L3亮0.5秒后灭,接着L4亮0.5秒后灭,接着L5、L9亮0.5秒后灭,接着L6、L10亮0.5秒后灭,接着L7、L11亮0.5秒后灭,接着L8、L12亮0.5秒后灭,L1亮0.5秒后灭,如此循环下去,直至按下停止按钮。如图5-8所示。
?图5-8 喷泉控制示意图 (2)I/O分配
输入 输出
(常开)起动按钮:I0.0 L1:Q0.0 L5、L9: Q0.4 (常闭)停止按钮:I0.1 L2:Q0.1 L6、L10:Q0.5
L3:Q0.2 L7、L11:Q0.6 L4:Q0.3 L8、L12:Q0.7
(3)喷泉控制梯形图
梯形图程序如图5-10所示。
分析:应用移位寄存器控制,根据喷泉模拟控制的8位输出(Q0.0~Q0.7),须指定一个8位的移位寄存器(M10.1~M11.0),移位寄存器的S-BIT位为M10.1,并且移位寄存器的每一位对应一个输出。如图5-9所示。
M11.0 Q0.7 Q0.6 Q0.5 Q0.4 Q0.3 Q0.2 Q0.1 Q0.0 DATA
图5-9 移位寄存器的位与输出对应关系图
在移位寄存器指令中,EN连接移位脉冲,每来一个脉冲的上升沿,移位寄存器移动一位。移位寄存器应0.5s移一位,因此需要设计一个0.5s产生一个脉冲的脉冲发生器(由T38构成)。
M10.0为数据输入端DATA ,根据控制要求,每次只有一个输出,因此只需要在第一个移位脉冲到来时由M10.0送入移位寄存器S-BIT位(M10.1)一个“1”,第二个脉冲至第八
T38构成0.5s产生一个机器扫描周期脉冲的脉冲发生器 8位的移位寄存器 移位寄存器的每一位 对应一个输出
?图5-10 例5-7喷泉模拟控制梯形图
个脉冲到来时由M10.0送入M10.1的值均为“0”,这在程序中由定时器T37延时0.5s导通一个扫描周期实现,第八个脉冲到来时M11.0置位为1,同时通过与T37并联的M11.0常开触点使M10.0置位为1,在第九个脉冲到来时由M10.0送入M10.1的值又为1,如此循环下去,直至按下停止按钮。按下常闭停止按钮(I0.1),其对应的常闭触点接通,触发复位指令,使M10.1~M11.0的8位全部复位。
5.1.4 转换指令
转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。
不同功能的指令对操作数要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD码与整数之间的转换等。
1. 字节与字整数之间的转换
字节型数据与字整数之间转换的指令格式见表5-7所示。
表5-7 字节型数据与字整数之间转换指令
LAD STL 操作数及数据类型 型:字节 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC,数据类型:整数 功能及 说明 BTI指令将字节数值(IN)转换成整数值,并将结果置入OUT指定的存储单元。因为字节不带符号,所以无符号扩展 BTI IN,OUT IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, 数据类 ITB IN,OUT IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,数据类型:整数 OUT:VB, IB, QB, MB, SB, SMB, LB, AC, 数据类型:字节 ITB指令将字整数(IN)转换成字节,并将结果置入OUT指定的存储单元。输入的字整数0至255被转换。超出部分导致溢出,SM1.1=1。输出不受影响 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 2. 字整数与双字整数之间的转换
字整数与双字整数之间的转换格式、功能及说明,如表5-8所示。 3. 双整数与实数之间的转换
双整数与实数之间的转换的转换格式、功能及说明,如表5-9所示。
表5-8 字整数与双字整数之间的转换指令
LAD STL 操作数及数据类型 ITD IN,OUT 常量, 数据类型:整数 OUT:VD, ID, QD, MD, SD, SMD, LD, AC,数据类型:双整数 DTI IN,OUT 数据类型:双整数 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, 数据类型:整数 DTI指令将双整数值(IN)转换成整数值,并将结IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, IN:VD, ID, QD, MD, SD, SMD, LD, HC, AC,常量,功能及 说明 ITD指令将整数值(IN)转换成双整数值,并将结果置入OUT指定的存储单元。符号被扩展 果置入OUT指定的存储单元。如果转换的数值过大,则无法在输出中表示,产生溢出SM1.1=1,输出不受影响 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 表5-9 双字整数与实数之间的转换指令
LAD STL DTR IN,OUT LD, HC, AC, 常量 ROUND IN,OUT LD, AC, 常量 数据类型:实数 LD, AC 数据类型:双整数 ROUND指令按小数部分四舍五入的原则,将实数(IN)转换成双整数值,并将结果置入OUT指定的存储单元 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 TRUNC IN,OUT LD, AC, 常量 数据类型:实数 LD, AC 数据类型:双整数 TRUNC(截位取整)指令按将小数部分直接舍去的原则,将32位实数(IN)转换成32位双整数,并将结果置入OUT指定存储单元 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 IN:VD, ID, QD, MD, SD, SMD, IN:VD, ID, QD, MD, SD, SMD, IN:VD, ID, QD, MD, SD, SMD, 操作数及数据类型 数据类型:双整数 SMD, LD, AC 数据类型:实数 DTR指令将32位带符号整数IN转换成32位实数,并将结果置入OUT指定的存储单元 OUT:VD, ID, QD, MD, SD, OUT:VD, ID, QD, MD, SD, SMD, OUT:VD, ID, QD, MD, SD, SMD, 功能及 说明 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 值得注意的是:不论是四舍五入取整,还是截位取整,如果转换的实数数值过大,无法在输出中表示,
则产生溢出,即影响溢出标志位,使SM1.1=1,输出不受影响。
4. BCD码与整数的转换
BCD码与整数之间的转换的指令格式、功能及说明,如表5-10所示。
表5-10 BCD码与整数之间的转换的指令
LAD STL 操作数及数据类型 BCDI OUT IBCD OUT IN :VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC IN/OUT数据类型:字 BCD-I指令将二进制编码的十进制数IN转换成整数,并将结果送入OUT指定的存储单元。IN的有效范围是BCD码 0至9999 I-BCD指令将输入整数IN转换成二进制编码的十进制数,并将结果送入OUT指定的存储单元。IN的有效范围是0至9999 功能及 说明 ENO=0的错误条件 0006 间接地址,SM1.6 无效BCD数值,SM4.3 运行时间 注意:(1)数据长度为字的BCD格式的有效范围为:0~9999(十进制),0000~9999(十六进制)0000 0000 0000 0000~1001 1001 1001 1001(BCD码)。 (2)指令影响特殊标志位SM1.6(无效BCD)。
(3)在表5-10的LAD和STL指令中,IN和OUT的操作数地址相同。若IN和OUT操作数地址不是同一个存储器,对应的语句表指令为: MOV IN OUT
BCDI OUT
5. 译码和编码指令
译码和编码指令的格式和功能如表5-11所示。
表5-11 译码和编码指令的格式和功能
LAD STL DECO IN,OUT IN:VB, IB, QB, MB, SMB, LB, SB, AC, 常量。数据 ENCO IN,OUT IN:VW, IW, QW, MW, SMW, LW, SW, AIW, T, C, AC, 常量。数据类型: 字 型:字节 编码指令将输入字(IN)最低有效位(其值为1)的位号写入输出字节(OUT)的低4位中 操作数及数据类型 类型:字节 数据类型:字 OUT:VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC。OUT:VB, IB, QB, MB, SMB, LB, SB, AC。数据类功能及 说明 译码指令根据输入字节(IN)的低4位表示的输出字的位号,将输出字的相对应的位,置位为1,输出字的其他位均置位为0 ENO=0的错误条件 0006 间接地址, SM4.3 运行时间 【例5-8】译码编码指令应用举例。如图5-11所示。