您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400系列PLC赋值指令
来源:艾特贸易2018-01-24
简介LAD编程语言MOVE(赋值)指令将输入端IN指定地址中的值或者常数赋值到输出端OUT指定的地址中。MOVE最多可以赋值4Byte的变量,用户定义的数据类型(例如数组或者结构)必须使用系统功
LAD编程语言MOVE(赋值)指令将输入端IN指定地址中的值或者常数赋值到输出端OUT指定的地址中。MOVE最多可以赋值4Byte的变量,用户定义的数据类型(例如数组或者结构)必须使用系统功能“BLKMOVE”(SFC 20)进行赋值。在STL编程语言中,使用装载和传递指令实现相同功能,装载功能实现将一个最大4Byte的常数、变量或者地址寄存器传送到累加器;传递功能实现将累加器中的值传送到变量。除此之外,装载和传递指令中还包含对地址寄存器操作的指令。
CPU内部寄存器中有两个地址寄存器,分别以AR1、AR2表示,每个地址寄存器占有32位地址空间。地址寄存器存储区域内部和区域交叉地址指针,用于地址的间接寻址、地址寄存器及指针的使用,在地址指针章节中将详细介绍。赋值指令如表2-33所示。
表2-33 赋值指令
从指令表中可以看到,使用LAD编程语言只有赋值指令,使用STL编程语言指令分为装载和传递指令,其中包含地址寄存器的处理指令。
1.LAD赋值指令
赋值指令是数值的传递,所有指令的输入、输出端的数据类型没有限制。例如输入端是一个字节,输出端可以是一个字节、字、双字,也可以是一个整数、双整数,数值的类型可以自动转换(已经定义的数据类型不能转换)。赋值指令的使用如图2-16所示。
图2-16赋值指令
在图2-14所示的程序中,程序段1将常数123传送到变量MW200中,将MB10中的数值传送到变量MB20中。程序段2将变量MB30中的数值传送到变量MW32中,字节传送到字中,数值不会溢出,如果将变量MD40传送到变量MB44中,则传送的数值大于255,出现溢出(实际将MB43传送到变量MB44,如果MD40的值为DW#16#1234,指令执行后MB44的值为B#16#34),运算出现错误,编程时应注意。
2.STL装载、传送指令
STL的赋值指令分为装载和传送指令,指令介绍如下。
(1)L(装载)指令与T(传送)指令
L指令将数值传送给累加器1,T指令将累加器1中的数值传送到变量,指令使用的示例程序如下:
LIB 10 //将IB10装载到累加器1中
TQB 1 //将累加器1中的值(IB10)传送到QB1
LMB 120 //将MB120装载到累加器1中
TDBB 100 //将累加器1中的值(MB120)传送到DBB100
LDIW 6 //将DIW16装载到累加器1中
TDIW 80 //将累加器1中的值(DIW16)传送到DIW80
LLD 252 //将临时变量LD 252装载到累加器1中
TMD 40 //将累加器1中的值(LD 252)传送到MD40
LP#1 8.7 //将指针P#18.7装载到累加器1中
TMD 80 //将累加器1中的值(指针为P#18.7)传送到MD80
装载指令L与传送指令T配合使用,装载指令也可以将累加器1中的值堆栈到累加器2中,例如:
LMB 10 //将MB10装载到累加器1中
LMB 11 //将MB11装载到累加器1中,MB10自动进入累加器2
TDBB 100 //将累加器1中的值(MB11)传送到DBB100
传送指令T只能将累加器1中的值传送到变量中。
(2) LSTW与T STW指令
L STW指令装载状态字到累加器1中,但是不能将S7-300 CPU的/FC、STA、OR状态位装载到累加器;T STW指令将累加器1中的值传送到状态字中。指令使用的示例程序如下:
LSTW //将当前的状态字装载到累加器1中
TMW 40 //将累加器1中的值(状态字)传送到MW140进行分析判断
L2#111111111 //将2#111111111装载到累加器1中
TSTW //将状态字中所有状态位置1
L STW指令与T STW指令可以在程序中对状态字进行监控,但在实际的编程应用中很少使用。
(3) LAR1与TAR1指令
LAR1指令将累加器1中的值装载到地址寄存器1中,TAR1指令将地址寄存器1中的值传送到累加器1中,指令使用的示例程序如下:
LP#120.0 //将指针P# 120.0装载到累加器1中
LAR1 //将累加器1中的值(指针P# 120.0)装载到地址寄存器1
TAR1 //将地址寄存器1中地址(指针P# 120.0)传送到累加器1中
TMD 80 //将累加器1中的值(指针P# 120.0)传送MD80
上面的示例程序实现对地址寄存器1的读写操作,程序实际将指针P#120.0传送到变量MD80中。
(4) LAR2与TAR2指令
LAR2、TAR2指令与指令LAR1、TARI使用方式相同,实现对地址寄存器2的读写操作。
(5) LAR1<D>与TAR1<D>指令
与LAR1相比,LAR1<D>指令直接将地址指针装载到地址寄存器1中,同样,TAR1<D>直接将地址寄存器1中的地址指针传送到变量中。指令中的<D>表示寄存器地址指针的双整数变量或指针常数。指令使用的示例程序如下:
LAR1DBD 24 //将数据块变量DBD24存储的地址指针直接装载到地址寄存器
AR1中
LAR1 LD 100 //将区域变量LD100存储的地址指针直接装载到地址寄存器AR1中
LAR1 MD 40 //将变量MD40存储的地址指针直接装载到地址寄存器AR1中
LAR1 P#M 100.0 //将地址指针常数P#Ml00.0直接装载到地址寄存器AR1中
TAR1 DBD 20 //将地址寄存器AR1中的值,直接传送到变量DBD20中
TAR1 DID 30 //将地址寄存器AR1中的值,直接传送到变量DID30中
TAR1 LD 180 //将地址寄存器AR1中的值,直接传送到变量LD180中
TAR1 MD 24 //将地址寄存器AR1中的值,直接传送到变量MD24中
(6) LAR2<D>与TAR2<D>指令
LAR2<D>、TAR2<D>指令与指令LAR1<D>、TAR1<D>使用方式相同,实现对地址寄存器2的直接读写操作。
(7) LARIAR2与TAR AR2指令
LAR1 AR2指令将地址寄存器AR2中的值,直接装载到地址寄存器AR1中;TAR1AR2指令将地址寄存器AR1中的值,直接传送到地址寄存器AR2中,指令使用的示例程
序如下:
LAR1 P#10.0 //将地址寄存器P#10.0,直接装载到地址寄存器AR1中
TAR1 AR2 //将地址寄存器AR1中的值,直接装载到地址寄存器AR1中
LAR1 AR2 //将地址寄存器AR2存储的地址直接装载到地址寄存器AR1中
TAR1l MD 100 //将地址寄存器AR1中的值直接传送到变量MD100中
A IMD 100] //如果I10.0为1,Q1.1输出为1
= Q1.1
(8) CAR指令
CAR指令将地址寄存器1与地址寄存器2中存储的地址指针相互交换,指令使用的示例程序如下:
LAR1 P#10.0 //降低至指针常数P#10.0直接装载到地址寄存器AR1中
LAR2 P#11.0 //将地址指针常数P#11.0直接装载到地址寄存器AR2中
CAR //AR1与AR2地址指针交换,AR1中装载地址指针P#11.0,AR2
中装在地址指针P#IO.O
TAR1 MD 100 //将地址寄存器AR1中的值直接传送到变量MD100中,MD100中
存储地址指针P#ll.0
CAR //AR1与AR2地址指针交换,AR1中装载地址指针P#10.0,AR2
中装载地址指针P#11.0
TAR1 MD 104 //将地址寄存器AR1中的值直接传送到变量MD104中,MD104中
存储地址指针P#10.0
A M [MD 100] //如果M11.0为1,M10.0输出为1
= M [MD 104]
(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:)
点击排行
