您现在的位置是:首页 > PLC技术 > PLC技术

指令系统的数据类型

来源:艾特贸易2018-01-19

简介STEP 7编程语言中大多数指令要与具有一定大小的数据对象一起进行操作。例如,位逻辑指令以二进制数执行它们的操作;装载和传送指令以字节、字或者双字来执行它们的操作。不同的


  STEP 7编程语言中大多数指令要与具有一定大小的数据对象一起进行操作。例如,位逻辑指令以二进制数执行它们的操作;装载和传送指令以字节、字或者双字来执行它们的操作。不同的数据类型具有不同的格式选择和数制。程序所用的数据可指定一种数据类型。指定数据类型时,要确定数据大小和数据的位结构。

    STEP 7中的数据可分为3种类型:基本数据类型、复合数据类型和参数类型。

    1.基本数据类型

    基本数据类型有:布尔型(BOOL,位数据)、字节数据、字数据、双字数据、16位整数、32位整数、32位浮点数等,每种数据类型在分配存储空间时有固定长度。例如,布尔数据类型为1位,一个字节(BYTE)是8位,一个字(WORD)是双字节(16位),双字是4字节(32位)。STEP 7中所支持的基本数据类型如表2-1所示。

2-1    基本数据类型说明

 表2-1 基本数据类型说明

表2-1 基本数据类型说明

    2.复合数据类型

    通过组合基本数据类型和己存在的复合数据类型可生成复合数据类型。STEP 7中的4种复合数据类型如表2-2所示。

2-2    复合数据类型说明

 表2-2 复合数据类型说明

    此外,用户可以定义复合数据类型,称为用户数据类型(User_Defined Data Types,UDT)。利用STEP 7程序编辑器(Program Editor)产生的可命名结构,通过将大量数据组织到UDT中,在生成数据块或者在变量声明表中声明变量时,利用UDT数据类型输入更加方便。

    3.参数类型

    参数类型是为在逻辑块之间传递参数的形参(Formal Parameter,形式参数)定义的数据类型。STEP 7提供以下类型的参数。

    (1)定时器(TIMER)或者计数器(COUNTER)

    指定执行逻辑块时要使用的定时器和计数器。对应的实参(Actually Parameters,实际参数)应为定时器或者计数器的编号,如T3、C21。

    (2)块(BLOCK)

指定一个块用作输入和输出,参数声明决定了使用块的类型,如FB、FC、DB等。块参数类型的实参应为同类型块的绝对地址编号(如FB2)或者符号名(如“Motor”)。

    (3)指针(POINTER)

    指针式指向一个变量的地址,即用地址作为实参。例如,P#M50.0是指向M50.0的双字地址指针。

    (4)任意参数(ANY)

    当实参的类型不能确定或者可使用任何数据类型时,可使用该参数,其占10B(字节)。

    此外,参数也可以是用户自定义的数据类型。参数类型如表2-3所示。

2-3    参数类型说明

 表2-3 参数类型说明

    4.数据的格式标记

    在程序设计中,各指令涉及的数据类型是以其标记体现的。大多数标记对应于特定的数据类型或者参数类型,有些标记可表示多种数据类型。STEP 7提供下列数据格式的标记。

    (1)时间/日期标记

    时间/日期标记如表2-4所示,这些时间/日期标记不仅用来为CPU输入日期和时间,也可为定时器赋值。

2-4    时间,日期标记说明

 表2-4 时间,日期标记说明

    (2)数值标记

    数值标记如表2-5所示,STEP 7提供了数值的不同格式,这些标记用来输入常数或者检测数据。它包括二进制格式、布尔格式(真或假)、字节格式(输入字或者双字时每个字节中的值)、计时器常数格式、十六进制、带符号的整数格式(含16位和32位)、实数格式(浮点数)。

2-5    数值标记说明

 表2-5 数值标记说明

(3)字符/文字标记

    STEP 7允许输入字符/文字信息,字符/文字标记如表2-6所示。

2-6    字符,文字标记说明

表2-6 字符,文字标记说明 

    (4)参数类型标记

    参数类型的标记如表2-7所示。

    5.指令的基本组成

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

2-7    参数类型标记

 表2-7 参数类型标记

    (1)语句指令

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

    例如:    AI1.0

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

    有些语句指令不带操作数,它们的操作对象是唯一的,故为简便起见,不再特别说明。例如,“NOT”是对逻辑操作结果(RLO)取反。

    (2)梯形逻辑指令

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

语句指令相同。    Q4.0

如图2-5所示,在该梯形逻辑指令中,“—()—”可认为是操作码,表示一个二进制赋值操作;Q4.0是操作数,表示赋值的对象。    

 图2-5梯形逻辑指令

2-5梯形逻辑指令

    梯形逻辑指令也可不带操作数,例如,“-|NOT|-”,对逻辑操作结果( RLO)取反的操作。

    6.操作数

    (1)标识符与标识参数

    一般情况下,指令的操作数位于PLC的存储器中,此时操作数由操作数标识符和标识参数组成。操作数标识符告诉CPU操作数放在存储器的哪个区域及操作数的位数;标识参数则进一步说明操作数在该存储区域内的具体位置。

    操作数的标识符由主标识符和辅助标识符组成。主标识符表示操作数所在的存储区,辅助标识符进一步说明操作数的位数长度。若没有辅助标识符则指操作数的位数是1位。主标识符有I(输入过程映像存储区)、Q(输出过程映像存储区)、M(位存储区)、PI(外部输入)、PQ(外部输出)、T(定时器)、C(计数器)、DB(数据块)、L(本地数据);辅助标识符有X(位)、B(字节)、W(字,2个字节)、D(双字,4个字节)。

    PLC的物理存储器是以字节为单元的,所以存储单元规定为字节单元。位地址参数用一个点与字节地址分开,如Ml0.1,其中“10”为位地址参数,“1”表示其字节地址。

当操作数长度是字或者双字时,标识符后给出的标识参数是字或者双字内的最低字节单元号。字节、字和双字的相互关系及表示方法如图2-6所示。当使用宽度为字或者双字的地址时,应保证没有生成任何重叠的字节分配,以免造成数据读写错误。

 图2-6 以字节单元为基准标记存储器单元

2-6  以字节单元为基准标记存储器单元

    (2)操作数的表示法

    STEP 7中,操作数有两种表示方法:物理地址(绝对地址)表示法和符号地址表示法。

    ①物理地址(绝对地址)表示法。用物理地址表示操作数时,要明确指出操作数所在的存储区,该操作数位数和具体位置。

    例如,Q4.0是用物理地址表示的操作数,其中Q表示这是一个在输出过程映像区中的输出位,具体位置是第4个字节的第O位。

    ②符号地址表示法。STEP 7允许用符号地址表示操作数。

    例如,Q4.0可用符号名MOTOR_ON来替代表示。

    符号名必须先定义后使用,而且符号必须是唯一的,不能重名。定义符号时,需要指明操作存储区、操作数的位数、具体位置及数据类型。

    采用符号地址表示法可使程序的可读性增强,并可降低编程时由于笔误造成的程序错误。

    7.寻址方式

    操作数是指令的操作或运算对象。寻址方式是指令取得操作数的方式,操作数可以直接给出或者间接给出。可用作STEP 7指令操作对象的操作数有:常数、S7状态字中的状态位、S7的各种寄存器、数据块(DB)、功能块(FB和FC)、系统功能块(SFB和SFC)和S7各存储区中的单元。

    S7的寻址方式可分为立即寻址、直接寻址、存储器间接寻址和寄存器间接寻址。

    (1)立即寻址

    立即寻址时的操作数是常数或者常量,并且操作数直接在指令中。有些指令的操作数是唯一的,为简化起见,并不在指令中写出。

    立即寻址的举例如表2-8所示。

2-8    立即寻址举例

 表2-8 立即寻址举例

    (2)直接寻址

    直接寻址包括对寄存器和存储器的直接寻址。在直接寻址的指令中,直接给出操作数的存储单元地址,包括寄存器或者存储器的区域、长度和位置。

    例如,用MW200指定位存储区中的字,地址为200; MB100表示以字节方式存取;MW100表示存取MB100、MBl01组成的字;MD100表示存取MB100~MB103组成的双字。

    直接寻址举例如表2-9所示。

2-9    直接寻址举例

 表2-9 直接寻址举例


    (3)存储器间接寻址

    在存储器间接寻址指令中给出一个指针的存储器,该存储器的内容是操作数所存单元的地址。使用存储器间接寻址可以改变操作数的地址,在循环程序中经常使用存储器间接寻址。

地址指针可以是字或者双字,定时器(T)、计数器(C)、数据块(DB)、功能块(FB)和功能(FC)的编号范围小于65535,使用字指针就够了。其他地址则要使用双字指针,如果要用双字格式的指针访问一个字、字节或者双字存储器,必须保证指针的位编号0,只有双字MD、LD、DBD和DID能作双字地址指针。字指针和双字指针的格式如图2-7所示。

 图2-7存储器间接寻址的指针格式

2-7存储器间接寻址的指针格式

    存储器间接寻址举例如表2-10所示。

2-10    存储器间接寻址举例

 表2-10 存储器间接寻址举例

    显示如何产生字或者双字指针并用其进行寻址举例如表2-11所示。

2-11    显示如何产生字或者双字指针并用其进行寻址举例

 表2-11 显示如何产生字或者双字指针并用其进行寻址举例

    (4)寄存器间接寻址

    S7中有两个地址寄存器,分别是AR1和AR2。通过地址寄存器,可以对各存储区的存储器内容实现寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,该指针指向数值所在的存储单元。

地址寄存器存储的双字地址指针的格式如图2-8所示。地址寄存器存储的双字地址指针的格式有两种,其长度均为双字。

 图2-8 寄存器间接寻址的指针格式

2-8  寄存器间接寻址的指针格式

    第一种地址指针格式包括被寻址数值所在存储单元地址的字节编号和位编号,至于对哪个存储区寻址,则在指令中直接给出。这种指针格式适用于在确定的存储区内寻址,即区内寄存器间接寻址。

    第二种地址指针格式中还包含了数值所在存储区的说明位(存储区域标志位),这样就可通过改变这些位实现跨区寻址,这种指针格式用于区域间寄存器间接寻址。区域标志位的组合状态如表2-12所示。

2-12    区域间寄存器间接寻址的区域标志位(rrr,第24~26位)

 表2-12 区域间寄存器间接寻址的区域标志位(rrr,第24~26位)

如果要用寄存器指针访问一个字节、字或者双字,则必须保证指针中位地址编号为0。下面的例子说明如何使用这两种指针格式实现间接寻址。寄存器间接寻址举例如表2-13所示。

2-13    寄存器间接寻址举例

 

 表2-13 寄存器间接寻址举例

表2-13 寄存器间接寻址举例

(部分原创文章应编辑稿费需求,每篇需要收取2元的稿费,如需查看全文请联系客服索取,谢谢理解!在线客服:艾特贸易网客服为您服务