05_STEP 7数据类型和变量 [只读]
- 格式:pdf
- 大小:414.41 KB
- 文档页数:28
STEP7中有关时间、日期的数据类型TIME, DA TE and TIMER in STEP 7SLC A&D CSJune 20041.西门子自动化与驱动产品的在线技术支持 (3)2.如何获得西门子自动化与驱动产品的资料 (4)3.需设备选型及订货 (4)4.西门子技术支持热线 (4)5.西门子自动化产品的其它网站 (5)6.缩写词含义 (5)7.如何使用STEP 7软件的在线帮助 (5)7.1.查找某个关键字或功能 (5)7.2.想了解某个FB/FC的功能及管脚的定义 (6)8.STEP 7中有关时间、日期的数据类型 (8)9.需要相关数据类型的详细描述 (8)10.S5TIME (Time Duration) 的格式及访问 (9)10.1.S5TIME的格式 (9)10.2.通过上位机访问PLC中S5TIME类型的数据 (10)10.3.S5TIME和TIME的转换 (11)11.DATE_AND_TIME的格式 (11)12.STEP 7相关功能块调用例程 (13)13.STEP 7中定时器的使用 (14)13.1.S7 TIMER的使用 (14)13.2.IEC TIMER的使用 (14)14.如何访问CPU的Clock Memory (14)1. 西门子自动化与驱动产品的在线技术支持首先,建议您访问Siemens A&D的产品与技术支持网站http://www4.ad.siemens.de/在主页的Product Support中选择您关心的产品或信息,或利用Search引擎直接输入关键字搜索。
您还可以访问西门子(中国)自动化与驱动集团的主页,如下图所示。
该网站同样可以提供大量的产品和系统的信息。
2. 如何获得西门子自动化与驱动产品的资料首先,建议您通过Siemens A&D的网站搜索并下载。
您还可以致电010-********转3785 /3726索取资料。
Step7-数据类型详细说明总结汇总STEP7中的基本数据类型⑴位(BOOL)位数据的数据类型为BOOL(布尔)型,在软件编程中BOOL 变量的值1和0常用英语词TURE(真)和FALSE(假)来表示,对应二进制数中的“1”和“0”,常用于开关量的逻辑运算,存储空间为1位。
⑵字节(BYTE)字节数据长度为8位,数据格式为B#16#,B代表BYTE,表示数据长度为一个字节(8位),#16#表示十六进制,取值范围为B#16#0~B#16#FF。
⑶字(WORD)字数据长度为16位,这种数据可采用4种方法进行描述。
二进制:二进制的格式为2#,如2#101,取值范围为2#0~2#1111_1111_1111_1111,书写时每4位可用下划线隔开,也可直接表示为2#111111111111。
十六进制:十六进制的格式为W#16#,W代表WORD,表示数据长度为16位,#16#表示十六进制,数据取值范围为W #16#0~W#16#FFFF。
BCD码:BCD码的格式为C#,取值范围为C#0~C#999。
BCD码是用4位二进制表示1位十进制数,4位二进制中的0000~1001组合分别表示十进制中的0~9,4位二进制中的1010~1111组合放弃不用。
BCD码的最高4位用来表示符号,十六位BCD码的取值范围为-999~+999。
在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。
无符号十进制数:无符号十进制数的格式为B#(×,×),取值范围为B#(0,0)~B#(255,255),无符号十进制数是用十进制的0~255对应二进制数中的0000_0000~1111_1111(8位),16位二进制数就需要两个0~255的数来表示,例如:B#(12,254)=2#0000_1100_1111_111012 254上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。
STEP7程序块的类型及区别(总结转)_天外小屋STEP7 程序块的类型及区别(总结)在SIEMENS S7-300/400系列PLC中有多种程序块,如下图(在管理器右边的空白区域点击右键),主要有:组织块(OB),功能块(FB),功能(FC),数据块(DB)及系统功能(SFC)和系统功能块(SFB)等。
注:快捷菜单中的其它两项:数据类型和变量表。
数据类型(UDT)用于指定程序中数据元素的大小与格式;变量表(VAT)用来在程序调试和运行时修改和监视变量的内容(在地址栏中输入地址后,符号栏中会自动显示在符号表中定义的符号)。
这几种程序块的功能简要说明如下:说明:调用程序块:OB,FB,FC(可以调用除OB块外的其它程序块);被调用程序块:FB,FC,SFB,SFC。
1、组织块OBOB由系统自动调用,并执行用户在OB块中编写的程序,所以OB的基本作用是调用用户程序。
在OB块中编写程序的最大容量,S7-300是16KB,S7-400是64KB。
除主程序循环OB1外,其它OB均是由事件触发的中断。
2、函数FC函数FC有两个作用:(1)作为子程序用;(2)作为函数用,函数中通常带形参。
函数中程序的最大容量,S7-300是16KB,S7-400是64KB。
F C的形参通常也称为接口区,参数类型分为输入参数,输出参数,输入/输出参数和临时数据区。
在编写函数FC的输出参数时,应避免没有直接输出(否则,可能输出一个随机值,影响程序的判断)。
可以在函数的开始,将字输出参数清0,位输出参数复位。
3、函数块FBFB与FC相比,FB每次调用都必须分配一个背景数据块,用来存储接口数据区(TEMP类型除外)和运算的中间数据。
其它程序可以直接使用背景数据区中的数据。
FB中程序的最大容量,S7-300是16KB,S7-400是64KB。
FB的接口区比FC多了一个静态数据区(STAT),用来存储中间变量。
程序调用FB时,形参不像FC那样必须赋值,可以通过背景数据块直接赋值。
STEP 7 Struct是什么数据类型请问STEP7Struct是什么数据类型在什么样的情况下需要用到Struct数据类型!!最佳答案Struct(结构性类型)是由不同数据类型组成的、属于复合型数据类型,它是用来定义一组相关的数据,其长度由用户定义,它与数组(Array)类型相反(ARRAY是由相同类型的数据组成的数组)。
许多关于结构类型的书籍中提到的关于电机控制系统中,把一个电机所有控制元素,如运行速度、额度电流、起动电流和运行方向等作为参数或逻辑块的局部变量,并且在全局数据块中声明,这样利用它可以结构化大量的数据并且可以用符号进行处理,由于访问结构的元素包含结构的名称,使程序更容易读,指令编写更清晰。
如电机的一组不同类型的数据(称为元素)组成的结构命名为Motor_Data,并且放在共享数据块DB1中,为了用符号访问结构中的一个元素,需要给数据块分配一个符号名,如Drive_1.结构的关键字是“STRUCT“,结构的结束用END_STRUCT.这样在打开数据块DB1(符号名Drive_1),可以看到上面变量声明表为:Address(地址)Name(名称)Type(类型)InitialValue (初始值)0.0Struct0.0Motor_Data(电机数据)Struct0.0Operating_speed(运行速度)INT2.0Rated_current(额定电流)REAL6.0Start_current(起动电流)REAL10.0Max_temperature(最大温度)REAL14.0Turning_direction(转动方向)BOOL=16.0END_STRUCT=16.0END_STRUCT如果访问上述结构中的某个元素,如Rated_current(额度电流),可以直接用下列指令:L“Drive_1”.Motor_data.Rated_current其中,“Drive_1”是数据块的符号名,该数据块包含结构、结构名称(用点分割)在数据块的后面。
S t e p7-数据类型详细说明总结汇总STEP7中的基本数据类型⑴位(BOOL)位数据的数据类型为BOOL(布尔)型,在软件编程中BOOL变量的值1和0常用英语词TURE (真)和FALSE(假)来表示,对应二进制数中的“1”和“0”,常用于开关量的逻辑运算,存储空间为1位。
⑵字节(BYTE)字节数据长度为8位,数据格式为B#16#,B代表BYTE,表示数据长度为一个字节(8位),#16#表示十六进制,取值范围为B#16#0~B#16#FF。
⑶字(WORD)字数据长度为16位,这种数据可采用4种方法进行描述。
二进制:二进制的格式为2#,如2#101,取值范围为2#0~2#1111_1111_1111_1111,书写时每4位可用下划线隔开,也可直接表示为2#111111111111。
十六进制:十六进制的格式为W#16#,W代表WORD,表示数据长度为16位,#16#表示十六进制,数据取值范围为W#16#0~W#16#FFFF。
BCD码:BCD码的格式为C#,取值范围为C#0~C#999。
BCD码是用4位二进制表示1位十进制数,4位二进制中的0000~1001组合分别表示十进制中的0~9,4位二进制中的1010~1111组合放弃不用。
BCD码的最高4位用来表示符号,十六位BCD码的取值范围为-999~+999。
在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。
无符号十进制数:无符号十进制数的格式为B#(×,×),取值范围为B#(0,0)~B#(255,255),无符号十进制数是用十进制的0~255对应二进制数中的0000_0000~1111_1111(8位),16位二进制数就需要两个0~255的数来表示,例如:B#(12,254)=2#0000_1100_1111_111012 254上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。
STEP7的基本数据类型及其用法汇总STEP7有3种数据类型:1. 基本数据类型2. 由基本数据类型组合而成的复合数据类型;3. 用来传送FB块和FC块参数的参数数据类型本文首先介绍一下基本数据类型。
STEP7的基本数据类型总共有7种,分别为:位(bit)、字节(Byte)、字(Word)、双字(Double Word)、整型数(INT)、双整型数(DINT)以及实数(REAL)。
1. 位(bit)取值:1、0寻址方式:地址标识符+字节地址+位地址。
图1 基本数据类型:位(bit)2. 字节(Byte)8位二进制数组成一个字节。
其中,第0位为最低位(LSB),第7位为最高位(MSB)。
寻址方式:地址标识符+B+字节地址,其中,'B'即代表字节。
图2 基本数据类型:字节(Byte)3. 字(Word)相邻的两个字节组成一个字,16位。
字用来表示无符号数,范围:[0000,FFFF]16进制,或[0,65535]10进制寻址方式:地址标识符+W+首字节地址,其中,'W'代表字。
图3 基本数据类型:字(Word)4. 双字(Double Word)相邻的两个字组成一个双字,32位。
双字也用来表示无符号,范围:[00000000,FFFFFFFF]16进制寻址方式:地址标识符+D+首字节地址,其中,'D'代表双字。
图4 基本数据类型:双字(Double Word)5. 整型数(INT)整数是有符号数,占16位。
最高位为符号位,0:正数;1:负数。
取值范围为:[-32768,32767]。
6. 双整型数(DINT)双整数也是有符号数,占32位。
最高位为符号位,0:正数;1:负数。
取值范围为:[-2147483648,2147483647]。
7. 浮点数(REAL)标准的浮点数格式如图5所示,占32位。
最高位为符号位,0:正数;1:负数。
图5 基本数据类型:浮点数(REAL)浮点数的优点是用32位的空间可以表示非常大和非常小的数。
STEP7中的基本数据类型W^(BGGL)位数据的数据类型为BOOL (布尔)型,在软件编程中BGGL 变量的值1和0常用英语单词TURE (真)和FALSE (假)来表示,对应二进制数中的“1”和“0”,常用于开关量的逻辑运算,存储空间为1位。
⑵字节(BYTE)字节数据长度为8位,数据格式为B#16#,B代表BYTE, 表示数据长度为一个字节(8位),#16#表示十六进制,取值范围为B#16#0〜B#16#FF。
⑶字(WORD)字数据长度为16位,这种数据可采用4种方法进行描述。
二进制:二进制的格式为2#,如2#101,取值范围为2#0〜2#1111_1111_1111_1111,书写时每4位可用下划线隔开,也可直接表示为2#111111111111。
十六进制:十六进制的格式为W#16#,W代表WORD, 表示数据长度为16位,#16#表示十六进制,数据取值范围为W#16#0〜W#16#FFFF。
BCD码:BCD码的格式为C#,取值范围为C#0〜C #999。
BCD码是用4位二进制表示1位十进制数,4位二进制中的0000〜1001组合分别表示十进制中的0〜9, 4位二进制中的1010〜1111组合放弃不用。
BCD码的最高4位用来表示符号,十六位86口码的取值范围为一999〜+999。
在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。
无符号十进制数:无符号十进制数的格式为B#(X, 义),取值范围为B#(0, 0)〜B#(255, 255),无符号十进制数是用十进制的0〜255对应二进制数中的0000_0000〜1111_1111 (8位),16位二进制数就需要两个0〜255的数来表示,例如:B# (12, 254)=2#0000_1100_1111_111012 254上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。
例如,如果想得到二进制数0000100110000111,可以使用2#0000_1001_1000_0111,也可以使用W#16#987,还可以使用C#987或者8#(9,135)。
内容页码变量及数据类型的含义 (2)变量特性及变量声明 (3)STEP 7数据类型概述 (4)STEP 7中的基本数据类型 (5)复杂数据类型的重要性 (6)STEP 7中的复杂数据类型 (7)STEP 7中的参数类型 (8)变量建立的区域 (9)本地数据堆栈工作方式 (10)示例:暂存器的替换 (11)数据块(DB ) (12)数据类型:ARRAY (13)ARRAY 的声明和初始化 (14)在存储器中存储ARRAY 变量 (15)数据类型:STRUCT (16)STRUCT 的声明 (17)在存储器中存贮STRUCT 变量 (18)用户自定义数据类型:UDT (19)UDT 的使用 (20)数据类型:DATE_AND_TIME (21)处理DT 型变量的功能 (22)数据类型:STRING (23)存储器中STRING 变量的存储 (24)处理STRING 变量的功能 (25)示例5.1:复杂数据类型的使用 (26)示例5.2:复杂数据类型的访问 (27)附加练习5.3:使用SFC 1(READ_CLK )读取日时间................................28概述现代计算机系统的发展,简化和加速了对那些复杂而耗时的计算任务的处理。
计算机对庞大信息的处理、存储以及可持续访问的能力,在大多数的应用中扮演着十分重要的角色。
控制器可用的信息由那些有关“现实世界”的并经过筛选的信息组成。
数据是对现实的一种抽象,因为对于特定的问题,忽略了相关对象的那些非主要和非重要的属性。
数据类型确定如何将数据表示出来常常是相当困难的。
您的选择通常要受到各种因素的限制,一方面,数据必须能够正确地反映所描述对象的属性,另一方面,使用该数据必须能够执行过程管理所必须的指令。
数据类型决定了数据可以接受哪些值,使用该数据能够执行哪些指令。
数据类型唯一地定义了:•允许的数据范围•允许使用的指令数据类型也是最终存贮在存储器中的各个位的潜在表示(格式)形式的抽象。
变量的含义除了指令,变量是编程系统中最为重要的元素。
变量的任务就是在程序中保存数值,以便后来使用或者做进一步处理。
变量的值可以存储在PLC 存储器中“任何”位置。
“传统”变量在传统的PLC 编程中,可以通过指定存储区域(比如:M=位(Bit )存储区,I=输入存储区,等。
)、访问宽度(比如:B=字节,W=字,等等)或通过指定字节(位)地址,直接访问PLC 存储器地址。
这些使用地址寻址的存储器区域在程序中有不同的用处,如,用作一个整型数(比如DINT 型)、用作浮点数(比如REAL 型)、或者只是用于收集单个信号(比如REAL 型)。
截至目前,程序员一直都需要记住各个存储单元的格式和用途。
这样就很容易产生有缺陷的程序,因为使用这种方法,不可避免地会在指令中不小心错误使用了某些存储器地址或格式。
声明变量稍早一些时候的PLC 系统(比如:STEP 5)允许使用符号来进行编程,以增强程序的可读性。
STEP 7则更进一步支持使用变量编程,取代PLC 地址和符号。
通过对变量进行显式声明,可确定变量的如下属性:•变量的符号名•变量的数据类型•变量的有效范围声明了一些变量之后,程序编辑器就可使用数据类型信息来检查指令许可,如:块调用中的参数赋值。
有效范围在全局符号表中或在全局数据块中声明的变量,可被程序文件夹中的所有块所访问。
因此这些变量称为全局变量。
在逻辑块的声明部分声明的变量和参数称为局域变量和参数,只能在同一个块的指令段中使用。
概述使用计算机进行任务的自动化解决,是基于这样一种处理规则,即处理来自传感器的信号,以便向执行机构输出新的控制值。
程序就是这种算法的基本形式,该算法依赖特定的数据或数据结构表示方法。
基本数据类型基本数据类型构成了每一种编程系统的“原子”。
选择一个编程系统的数据类型与面向的应用领域有很大关系。
在STEP 7中,基本数据类型按照IEC 61131-3而预先定义。
以这种方式选择的数据类型,除了可支持完成PLC 的天生任务如二进制和模拟信号的处理之外,也可以实现简单的信号传输系统及时间戳管理等任务。
使用基本数据类型时,数据类型决定了一个变量所需要的存储空间的数量。
在STEP 7中,基本数据类型的长度不会超过32位,可以完全装载到累加器中去并由STEP 7指令进行处理。
复杂数据类型数据结构的基本概念在于高级结构与基本数据类型之间的区别,基本数据类型是构成符合数据类型的原子数据单位。
在STEP 7中,复杂数据类型只能用于连接在全局DB 或本地数据堆栈中所声明的变量。
复杂数据类型不能够完全装载到一个累加器中去并进行处理。
用户自定义复杂数据类型没有数据类型标识符,因此就不能为参数或变量声明反复使用。
有了用户自定义数据类型(UDT ),就可以创建独一无二结构化的数据类型,并根据需要,频繁地用于其它参数或变量声明。
BOOL, BYTE, WORD 布尔BOOL 数据类型的变量包含一个位,而BYTE 、WORD 、DWORD 类型的DWORD, CHAR 数据变量依次由8位、16位和32位组成。
不能对这些数据类型的单个位进行评估。
这些数据类型中的特殊形式是BCD 数据、用于连接计数功能的计数值,以及以ASCII 码形式表示一个字符的CHAR 类型。
INT, DINT, REAL这些数据类型的变量表示的数字可以用于数学计算。
S5TIME S5TIME 数据类型的变量,用于在定时器功能(S5定时器功能)中指定定时值。
可以分别以小时、分钟、秒或毫秒为单位指定时间值。
向定时器输入时间值时,可以使用带下划线(1h_4m )的值,也可以使用不带下划线(1h4m )的值。
IEC 功能块(IEC Function Blocks )库中的功能FC 33和功能FC40分别将S5TIME 格式转换成TIME 格式、把TIME 格式转换成S5TIME 格式。
TIME TIME 数据类型变量占据双字的地址空间,这种变量用以在IEC 定时器功能中指定定时值。
这种变量的内容被视为一个以毫秒为单位的DINT 数字,并且可正可负(比如:T#-1s=L#-1 000, T#24d20h31m23s647msw = L#214748647)。
DATE DATE 数据类型变量是以无符号整数形式存储在一个字的地址空间中,其内容表示的是自1990年01月01日以来的天数值(例如:D#2168-12-31 = W#16#FF62)。
TIME_OF_DAYTIME_OF_DAY 数据类型变量占据双字的地址空间,它包含了自当日起(零点)所经过时间的毫秒值,该值是一个无符号整型数(例如:TOD#23:59:59.999 = DW#16#0526_5B77)。
数组和结构借助于ARRAY (域),可以将几个相同类型的对象组合到一个数据类型中,ARRAY 是一种包含固定数量的特定数据类型元素的数据类型。
数组中的每个元素都分配有一个索引,该索引用于访问数组的数据元素。
例如,一个ARRAY 可以是由固定数目的单个测量值所组成的一系列测量值。
数组允许将相同类型的元素组合成更高级的单元,同理,STRUCT (结构)数据类型则允许将不同数据类型的元素组合起来。
复杂数据类型是预先定义的,DATE_AND_TIME 具有64位的长度,而数据类型ARRAY 、STRUCT 和STRING 的长度则由用户自定义。
用户自定义数据类型借助于用户自定义数据类型(UDT ),就可定义特殊的数据类型(结构),并根据需要随意频繁地用于参数或变量声明中。
数据结构存储在UDT 块内(UDT1 ... UDT65535),并可在OB 、FC 、FB 及DB 的变量数据类型或参数声明中,像一个“模板”一样使用。
当相同的结构需要多次使用的时候,使用用户自定义数据类型UDT ,可以节省键入时间。
示例:假如同一结构在一个块中需要使用10次,首先,定义一个结构并将其保存为UDT 1,例如:在DB 中,定义一个变量“Drive ”,该变量是一个具有10个UDT 1类型元素的数组:Drive :array[1..10]UDT 1这样您就创建了10个具有UDT 1中所定义的结构的数据项,而无需额外的“键入”操作。
参数类型除了基本和复杂数据类型,也可以为FC 及FB 的参数定义参数类型。
使用这种形式参数,就可像使用实际地址一样,来执行同样的指令。
在块调用期间这些形式参数必须赋以相关的实际参数值。
TIMER 及这种参数类型为TIMER 或COUNTER 类型定义了一个形式参数。
COUNTER BLOCK_xx 借助于BLOCK_FB 或Block_FC 参数类型,可以将程序块作为参数传递到被调用块。
但是,必须注意,只有那些本身没有参数或静态变量(BLOCK_FB )的块(FB ,FC ),才能以这种方式传递。
逻辑块只有在被调块内部通过指令UC 或CC (不是CALL )予以调用。
这里对数据块(DB ,SDB )的传递及相关的指令(比如,OPN …)没有限制。
POINTER 当实际参数的数据类型可能为任意一种数据类型的时候,采用POINTER 数据类型。
POINTER 包含了实际参数的完整起始地址(DB 号,数据区域,字节地址和位地址)。
可通过给出实际参数地址的方式为POINTER 形式参数赋值:如P#M50.0。
ANY当实际参数的数据类型可能为ANY 数据类型的时候,采用ANY 数据类型。
ANY类型指针不仅传递完整的起始地址,而且还传递数据类型和长度的有关信息。
P#M10.0 Byte 10(从MB 10开始的10个BYTE 数据类型元素的域)。
PII概述除了程序块以外,用户程序也包含那些有关过程状态、信号等信息的数据,这些数据按照不同的指令,在用户程序中处理。
变量可在过程映像中、位存储器区域中或者数据块中拥有一个永久存储单元,变量也可以在运行期间在(局部堆栈)L Stack中动态建立。
PII, PIQ, 位(Bit)基本变量可以在程序文件夹中的全局符号表中声明,声明时,除了要给出变量的存储器, I/O符号名以外,还要给出存储区域(由区域标识符和长度组成)以及数据类型(比如:FullCrate MW 10 INT)。
与STEP 5(分配表)中相应的符号表不同的是,程序编辑器不仅允许使用符号名替代绝对地址,还监视块调用中分配参数时是否正确使用变量(类型检查)。
在全局符号表中声明的变量为全局变量,程序文件夹中的所有块都可以对其进行访问。
本地数据堆栈本地数据堆栈(L stack)用以存储:•逻辑块的临时变量,包括组织块OB的开始信息。
•调用功能时,所要传递的实际参数•LAD程序中的中间逻辑结果本地数据堆栈(L stack)中的变量区域,是在块的运行期间动态建立的,而且在块执行完毕以后允许再次使用。