首页 理论教育 深入了解数制和数据类型

深入了解数制和数据类型

时间:2023-06-23 理论教育 版权反馈
【摘要】:表4-2 不同数制的数的表示方法2.数据类型数据是程序处理和控制的对象,在程序运行过程中,数据是通过变量来存储和传递的。STEP7中的数据类型分为3大类:基本数据类型、复杂数据类型和参数数据类型。复杂数据类型复杂数据类型是一种由其他数据类型组合而成的,或者长度超过32位的数据类型,STEP 7中的复杂数据类型共有7类。其长度最多有254个字符的组。

深入了解数制和数据类型

1.数制

PLC的是一种特殊的计算机,学习计算机必须掌握数制,PLC更是如此。

(1)二进制

二进制数的1位(bit)只能取0和1两个不同的值,可以用来表示开关量的两种不同的状态,例如触点的断开和接通、线圈的通电和断电以及灯的亮和灭等。在梯形图中,如果该位是1可以表示常开触点的闭合和线圈的得电,反之,该位是0可以表示常开触点的断开和线圈的断电。二进制用2#表示,例如2#1001 1101 1001 1101就是16位二进制常数。十进制的运算规则是逢10进1,二进制的运算规则是逢2进1。

(2)十六进制

十六进制的十六个数字是0~9和A~F(对应于十进制中的10~15),每个十六进制数字可用4位二进制表示,例如16#A用二进制表示为2#1010。B#16#、W#16#和DW#16#分别表示十六进制的字节、字和双字。十六进制的运算规则是逢16进1。掌握二进制和十六进制之间的转化对于学习西门子PLC来说是十分重要的。

(3)BCD码

BCD码用4位二进制数(或者1位十六进制数)表示一位十进制数,例如一位十进制数9的BCD码是1001。4位二进制有16种组合,但BCD码只用到前十个,而后六个(1010~1111)没有在BCD码中使用。十进制的数字转换成BCD码是很容易的,例如十进制数366转换成十六进制BCD码则是W#16#0366。

关键点十进制数366转换成十六进制数是W#16#16E,这是要特别注意的。

BCD码的最高4位二进制数用来表示符号,16位BCD码字的范围是-999~+999。32位BCD码双字的范围是-9999999~+9999999。不同数制的数的表示方法见表4-2。

4-2 不同数制的数的表示方法

978-7-111-58358-5-Chapter04-4.jpg

2.数据类型

数据是程序处理和控制的对象,在程序运行过程中,数据是通过变量来存储和传递的。变量有两个要素:名称和数据类型。对程序块或者数据块的变量声明时,都要包括这两个要素。

数据的类型决定了数据的属性,例如数据长度和取值范围等。STEP7中的数据类型分为3大类:基本数据类型、复杂数据类型和参数数据类型。

(1)基本数据类型

基本数据类型是根据IEC61131-3(国际电工委员会指定的PLC编程语言标准)来定义的,每个基本数据类型具有固定的长度且不超过32位。

基本数据类型有12种,每一种数据类型都具备关键字、数据长度、取值范围和常数表等格式属性。STEP 7的基本数据类型见表4-3。

4-3 STEP7的基本数据类型

978-7-111-58358-5-Chapter04-5.jpg

(续)

978-7-111-58358-5-Chapter04-6.jpg

【关键点】有的书上称WORD(字)为非负整数,而INT为整数,即有正负;称DWORD(双字)为非负双整数,而DINT为双整数,即有正负;这非常贴切,也正好解释了字和整数以及双字和双整数的区别。

(2)复杂数据类型

复杂数据类型是一种由其他数据类型组合而成的,或者长度超过32位的数据类型,STEP 7中的复杂数据类型共有7类。

1)Date_And_Time(日期时间类型)。其长度为64bit(8B),此数据类型以二进制编码的十进制的格式保存。取值范围是DT#1990-1-1-0∶0∶0.0~D#2089-12-31-59∶59.999。

2)STRING(字符串)。其长度最多有254个字符的组(数据类型CHAR)。为字符串保留的标准区域是256个字节长。这是保存254个字符和两个字节的标题所需要的空间。可以通过定义即将存储在字符串中的字符数目来减少字符串所需要的存储空间(例如:string[9]Siemens)。

3)ARRAY(数组类型)。定义一个数据类型(基本或复杂)的多维组群。例如:“AR-RAY[1..2,1..3]OFINT”定义2×3的整数数组。使用下标(“[2,2]”)访问数组中存储的数据。最多可以定义6维数组。下标可以是任何整数(-32768~32767)。

4)STRUCT(结构类型)。该类型是由不同数据类型组成的复合型数据,通常用来定义一组相关数据。例如电动机的一组数据可以按照如下方式定义:

Motor:STRUCT(www.xing528.com)

Speed:INT

Current:REAL

END_STRUCT

5)UDT(用户自定义数据类型)。UDT是由不同数据类型组成的复合型数据,与STRUCT不同的是,UDT是一个模版,可以用来定义其他的变量。它在STEP7中以块的形式存储,称为UDT块。在S7的SIMATIC管理器中,先选中“块”,再单击菜单栏的“插入”→“S7块”→“数据类型”,如图4-2所示,弹出数据类型对话框,便可定义新的数据类型。自定义数据类型在后续章节还要介绍。

6)FB和SFB(功能块类型)。确定分配的实例数据块的结构,并允许在一个实例DB中传送数个FB调用的实例数据,在后续章节会重点讲解。

(3)参数数据类型

参数数据类型是一种用于FC或者FB的参数的数据类型。参数数据类型主要包括以下几种:

●Timer,Counter:定时器和计数器类型。

●BLOCK_FB,BLOCK_FC,BLOCK_DB,BLOCK_SDB:块类型。

978-7-111-58358-5-Chapter04-7.jpg

图4-2 定义UDT块的路径

●Pointer:6B指针类型,传递DB块号和数据地址

●Any:10B指针数据类型,传递DB块号、数据地址、数据数量以及数据类型。

使用这些参数类型,可以把定时器、计数器、程序块、数据块以及一些不确定类型和长度的数据通过参数传递给FC和FB。参数类型为程序提供了很强的灵活性,可以实现更通用的控制功能。

(4)常数

在S7-300/400的许多指令中都用到常数,常数有多种表示方法,如二进制、十进制和十六进制等。在表述二进制和十六进制时,要在数据前分别加“2#”或“16#”格式如下:

二进制常数:2#1100,十六进制常数:16#234B1。其他的数据表述方法举例如下:

ASCII码:“HELLOW”,实数:-3.1415926,十进制数:234。对于不同品牌的PLC,常数的表示方法有较大的区别,这点要注意。

几个错误表示方法:八进制的“33”表示成“8#33”,十进制的“33”表示成“10#33”,“2”用二进制表示成“2#2”,这些错误读者要避免。

【关键点】常数可以用二进制、十进制和十六进制表示。为了阅读方便,当用二进制和十六进制表示时,可以在每4位之间加下划线,例如W#16#FFFF_FFFF和W#16#FFFFFFFF实际是相等的。

【例4-1】请指出以下数据的含义,L#58、S5t#58S、58、C#58、t#58以及P#M0.0BYTE10。

1)L#58:表示双整数58。

2)S5t#58S:表示S5和S7定时器中的定时时间58s。

3)58:表示整数58。

4)C#58:表示计数器中的预置值58。

5)t#58s:表示IEC定时器中定时时间58s。

6)P#M0.0BYTE10:表示从MB0开始的10个字节。

【关键点】理解【例4-1】中的数据表示方法至关重要,无论对于编写程序还是阅读程序都是必须要掌握的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈