格物往事

S7-300系列PLC指令系统-附S7300视频教程

S7-300系列PLC指令系统

——指令及其结构和寻址方式



 指令是程序的最小独立单位,用户程序是由若干条顺序排列的指令构成的。对应语句表和梯形图两种编程语言,指令也有语句指令和梯形逻辑指令之分。它们的表达形式不同,但表达的内容是相同或类似的。

一、指令的组成

1、语句指令

一条指令由一个操作码和一个操作数组成,操作数由标识符和参数组成。操作码定义要执行的功能,它告诉CPU该做什么;操作数为执行该操作所需要的信息,它告诉CPU用什么去做。例如:

A  I1.0

是一条位逻辑操作指令,其中,“A”是操作码,它表示执行“与”操作;“I1.0”是操作数,它指出这是对输入继电器I1.0进行的操作。

有些语句指令不带操作数,它们操作的对象是唯一的,所以为方便起见,不再特别说明。例如:

  NOT

是对逻辑操作结果(RLO)取反。

2、梯形逻辑指令

梯形逻辑指令用图形元素表示PLC要完成的操作。在梯形逻辑指令中,其操作码是用图形元素表示的,该图形元素形象的表明CPU做什么,其操作数的表示方法与语句指令相同。例如:

         Q4.0

      -(  )

该指令中的-(  )可认为是操作码,表示一个二进制赋值操作。Q4.0是操作数,表示赋值的对象。

梯形逻辑指令也可不带操作数。例如:

     ―│NOT│―

是对逻辑操作结果取反的操作。

二、操作数

在STEP7中,操作数可以是常数、S7状态字的状态位、各种寄存器、数据块(DB)、功能块(FB和FC)、系统功能块(SFB和SFC)以及S7中的各存储单元。

三、寻址方式

寻址方式是指指令如何得到操作数的各种方式,对于操作数,在指令中可以直接给出,也可以间接给出。S7有四种寻址方式:立即寻址、直接寻址、存储器间接寻址和寄存器间接寻址。

1、    立即寻址

立即寻址的指令直接跟着它要操作的数值,或者操作数本身

也可直接包含在指令中。立即寻址用于对常数或者常量的寻址。

SET     //将RLO置“1”,RLO是result of logic operation 的缩写。

L 30    //将整数30装入累加器1中,L是load的缩写。

2、直接寻址

直接寻址是对寄存器和存储器的直接寻址,直接寻址中转据给出操作数的存储单元地址。用于直接寻址的指令具有以下两部分的地址,它们指明指令将要处理的数值单元:地址标识符(如“IB”指输入字节)和地址标识符指明的在存储区域中确切的单元地址直接指向数值的单元。如:

A I0.0     //对输入位I0.0进行“与”逻辑操作。

L IB10     //把输入字节IB10的内容装入累加器1。

3、存储器间接寻址

存储器间接寻址指令中的存储内容为操作数所在存储单元的地址,该地址也称为地址指针。用于存储器间接寻址的指令具有以下两部分的地址,它们指明指令将要处理的数值单元:地址标识符(如“IB”指输入字节)和以下指针之一:

字:包含了定时器(T)、计数器(C)、数据块(DB)、功能(FC)、功能块(FB)的编号。

双字:包含了地址标识符指明的在存储区域中确切的数值单元地址,通过指针指明数值或编号的单元。

字或双字应在位存储区(M)、背景数据块(DIB)、数据块(DB)和局部数据(L)的区域之中。

存储器间接寻址的好处是当程序执行时能动态的修改语句的地址。当用一个存放在数据块中的存储器间接寻址时,必须首先用打开数据块指令(OPEN)打开数据块,这样就可以用字或双字作为一个间接地址,如:

OPEN  DB10

A I[MD10]  //检测I位的状态,I的地址由MD10的值决定。

= Q[MD10]  //驱动Q位,Q的的地址由MD10的值决定。

上面程序中I[MD10]、Q[MD10],像这种使用存储器给定地址的寻址方式,称为存储器间接寻址。I[MD10]、Q[MD10]中的MD10称为指针,其里面的数值代表地址。

4、地址寄存器间接寻址

在用语句表编程时,有些间接寻址类型需要使用CPU中的某些寄存器。S7中有两个地址寄存器AR1和AR2。地址寄存器的内容加上偏移量形成地址指针,该指针可以指向数据所在的存储单元。寄存器间接寻址分为区域内寄存器间接寻址和区域间寄存器间接寻址两种。如:

    区域内寻址:

L    P#5.0    //将P#5.0装入累加器1

    LAR1          //将累加器1的内容传送至地址寄存器1

    A  I[ARl,P#2.2]     //对输入位I7.2进行“与”逻辑操作。P#5.0+ P#2.2=P#7.2。

=  [AR2,P#1.1]   //赋值给输出位Q6.1。P#5.0+ P#1.1=P#6.1。

区域间寻址:

    L    P#M5.O       //将输入位1 5.0的双字指针装入累加器1

    LAR1               //将累加器1的内容传送至地址寄存器1

    A [ARl,P#2.2]     //检测M7.2的状态。P#5.0+ P#2.2=P#7.2。由于地址寄存器1的值包含区域M信息。

= [AR1,P#1.1]     //赋值给输出位Q6.1。P#5.0+ P#1.1=P#6.1。由于地址寄存器1的值包含区域M信息。

如果操作数是字节、字或双字,使用地址寄存器间接寻址时,需要确保代表位地址的值为零,否则会出现寻址错误。

S7300视频教程地址:http://v.youku.com/v_playlist/f17179602o1p0.html   

视频密码:

退出移动版