plc 数据类型.docx
《plc 数据类型.docx》由会员分享,可在线阅读,更多相关《plc 数据类型.docx(7页珍藏版)》请在冰豆网上搜索。
plc数据类型
在STEP7-Micro/WIN中编程时,在下列两种情况下您必须识别并使用数据类型:
?
如果您以IEC1131-3模式编程,则必须为全局符号表中的所有数值选择数据类型。
?
如果您在局部变量表中赋值,则必须为每个局部变量定义数据类型。
当您明确地为数值指定数据类型时,您为STEP7-Micro/WIN提供清晰的指令,指明需要为数值分配多少内存空间(例如,数值100可被存储为字节、字或双字)以及如何表示数值(将0视作布尔值还是数字值?
)。
每个SIMATIC和IEC1131-3指令或参数化子程序均由精确定义识别。
该定义可被称为签名。
对于所有的标准指令,每个指令操作数允许使用的数据类型集均从签名获得。
对于参数化子程序,用户通过局部变量表建立子程序签名。
STEP7-Micro/WINV3.0编程软件为SIMATIC模式执行简单的数据类型检查,为IEC1131-3模式执行细致的数据类型检查。
这意味着为局部或全局变量指定一种数据类型时,软件在下表所列的每个等级中确保操作数数据类型与指令签名相匹配。
基本数据类型数据类型大小说明范围
布尔1位布尔0至1
字节8位不带符号的字节0至255
字节8位带符号的字节(SIMATIC模式仅限用于SHRB指令)-128至+127
字16位不带符号的整数0至65,535
整数16位带符号的整数-32768至+32767
双字32位不带符号的双整数0至4294967295
双整数32位带符号的双整数-2147483648至+2147483647
实数32位IEEE32位浮点+1.175495E-38至+3.402823E+38-1.175495E-38至3.402823E+38
字符串2至255字节ASCII字符串照原样存储在PLC内存中,形式为1字符串长度接ASCII数据字节ASCII字符代码128至255
复杂数据类型说明范围
TON打开接通延时定时器1ms10ms100msT32,T96T33-T36,T97-T100T37-T63,T101-T255
TOF关闭接通延时定时器1ms10ms100msT32,T96T33-T36,T97-T100T37-T63,T101-255
TP脉冲定时器(参阅注释1)1ms10ms100msT32,T96T33-T36,T97-T100T37-T63,T101-255
CTU向上计数器0至255
CTD向下计数器0至255
CTUD向上/向下计数器0至255
SR设置主要双稳态触发器无关
RS复原主要双稳态触发器无关
STEP7-Micro/WIN提供三级数据类型检查
1.IEC编辑器具有细致数据类型检查。
在该模式中,参数数据类型必须与符号或变量的数据类型完全匹配。
欲支持细致数据类型检查,过载指令除外,每个正式参数只有一种数据类型。
例如,SRW(字向右移位)指令的IN参数的数据类型为字。
在细致数据类型检查中,只有被指定字数据类型的变量才能成功编译。
使用细致数据类型检查时,数据类型为整数的变量对字指令参数无效。
细致数据类型检查仅在IEC1131-3模式中进行。
用户选择的数据类型等同数据类型
布尔布尔
字节字节
字字
整数整数
双字双字
双整数双整数
实数实数
字符串字符串
2.处于SIMATIC模式中的局部变量表具有简单数据类型检查。
在该模式中,当符号或变量被指定一个数据类型时,同时自动指定与所选数据类型位大小相匹配的所有数据类型。
例如,如果用户选择双整数作为数据类型,局部变量会自动指定数据类型双字,因为二者均为32位数据类型。
不自动指定实数数据类型,虽然实数也是32位数据类型。
实数数据类型被定义为无其他等同数据类型,总是独特的类型。
使用局部变量时,只在SIMATIC模式中执行简单数据类型检查。
用户选择的数据类型等同数据类型
布尔布尔
字节字节
字字、整数
整数字、整数
双字双字、双整数
双整数双字、双整数
实数实数
字符串字符串
3.SIMATIC符号编辑器无数据类型检查。
该模式仅限用于无法选择数据类型的SIMATIC全局变量。
在该模式中,所有相同大小的数据类型被自动指定给符号。
例如,编程软件将自动为赋予VD100地址的符号指定下列数据类型:
双字、双整数和实数。
为SIMATIC全局符号由大小决定的数据类型
用户选择的地址指定等同的数据类型
V0.0布尔
VB0字节、字符串
VW0字、整数
VD0双字、双整数、实数
数据类型检查的益处
数据类型检查的益处是帮助用户避免常见编程错误。
例如,如果指令支持带符号的数字,则在使用不带符号的数字作为指令操作数时,软件为该用法设置旗标会有益处。
例如,关系比较
但当
在程序运行时,对于
程序员需确保对带符号的指令使用不带符号的数字不会超越正负数界限,否则会出现无法预测的结果。
警告您应当确保带符号的数字用作不带符号的指令时不得超出正负数界限。
若无法确保不带符号的数字用作带符号的指令时不超出正负数界限,可能致使程序或控制器操作出现无法预测的结果。
无法预测的控制器操作可能导致人员死亡或严重伤害及/或财产严重损坏。
请务必核实不带符号的数字用作带符号的指令时不得超出正负数界限。
总之,在IEC1131-3编辑模式中,细致数据类型检查通过对指令的非法数据类型生成错误,帮助程序员在编译过程中发现这些错误。
SIMATIC编辑器不具有此一功能。
在SIMATIC与IEC1131-3之间移植程序
因为IEC1131-3属于细致数据类型,而SIMATIC不属于此一类型,STEP7-Micro/WIN不提供在两种不同编辑模式之间移动程序的能力。
程序员必须选择一种希望使用的编辑模式。
过载指令
过载指令支持一系列数据类型。
仍然应用细致数据类型检查,在成功编译指令之前所有的操作数数据类型必须匹配。
例如,请参阅下表中用于IEC过载ADD(加)指令。
指令允许使用的数据类型(细致数据类型检查)允许使用的数据类型(数据类型检查)编译指令
ADD整数字、整数ADD_I(加整数)
ADD双整数双字、双整数ADD_D(加双整数)
ADD实数实数ADD_R(加实数)
当所有操作数的数据类型均为双整数时,编译器生成"加双整数"指令。
如果过载指令数据类型混合,会出现编译错误。
根据数据类型检查的等级决定哪些为非法。
在下例中,如果使用细致数据类型检查,则生成编译程序错误,但如果使用简单数据类型检查则成功编译。
ADDIN1=INT,IN2=WORD,IN3=INT.
细致数据类型检查:
引起编译错误。
简单数据类型检查:
成功编译至ADD_I(加整数)。
简单数据类型检查不会阻止出现常见运行时间编程错误。
例如,使用简单数据类型检查时,编译程序不能帮助避免在运行时间发生以下常见编程错误:
ADD40000,1被解释为负数,而不是不带符号的40,001。
在IEC中为过载指令使用直接编址
IEC-1131编程模式也允许使用直接表示的内存位置,作为指令参数配置的一部分。
参数中可使用变量和内存位置。
但是,使用直接表示的内存位置时必须清楚地识别数据类型的隐含意义,因为这些位置不包含明确的类型信息。
另外,不能从任何过载IEC指令决定类型信息,因为过载指令接收多种数据类型。
直接表示的参数数据类型通过检查指令中包含的其他类型的参数来决定。
当指令参数配置使用某一指定类型的变量时,则假定所有直接表示的参数均为该类型。
名称地址数据类型注解
Var1实数这是浮点数变量。
Var2双整数这是双整数变量。
Var3整数这是整数变量。
举例说明
假定VD100和VD200为实数类型,因为Var1是实数类型。
VD300和VD400为双整数类型,因为Var2是双整数类型。
假定VW500和VW600为整数类型,因为Var3是整数类型。
假定AC0和AC1为实数类型,因为Var1是实数类型。
这种配置被视作非法,因为无法确定类型。
累加器中的数据类型可为双整数或实数。
这种配置被视作非法,因为无法确定类型。
累加器指针中的数据类型可为双整数或实数。
使用数据类型转换指令
转换指令允许从一种数据类型移至另一种数据类型。
STEP7-Micro/WIN支持在下列简单数据类型之间的移动数值转换指令。
转换指令IEC细致数据类型检查允许的操作数SIMATIC局部变量表中的简单数据类型检查允许的操作数
字节至整数入:
字节出:
整数入:
字节出:
字、整数
整数至字节入:
整数出:
字节入:
字、整数出:
字节
整数至双整数入:
整数出:
双整数入:
字、整数出:
双字、双整数
双整数至整数入:
双整数出:
整数入:
双字、双整数出:
字、整数
双整数至实数入:
双整数出:
实数入:
双字、双整数出:
实数
实数至双整数(取整)入:
实数出:
双整数入:
实数出:
双字、双整数
字符串至整数入:
字符串双字(*指向字符串的指针)出:
整数入:
字符串,双字(*指向字符串的指针)出:
字、整数
整数至字符串入:
整数出:
用双字代表的字符串(*指向字符串的指针)入:
字、整数出:
用双字代表的字符串(*指向字符串的指针)
字符串至双整数入:
字符串双字(*指向字符串的指针)出:
双整数入:
字符串,双字(*指向字符串的指针)出:
双字、双整数
双整数至字符串入:
双整数出:
用双字代表的字符串(*指向字符串的指针)入:
双字、双整数出:
用双字代表的字符串(*指向字符串的指针)
字符串至实数入:
字符串双字(*指向字符串的指针)出:
实数入:
:
字符串双字(*指向字符串的指针)出:
实数
实数至字符串入:
实数出:
用双字代表的字符串(*指向字符串的指针)入:
实数出:
用双字代表的字符串(*指向字符串的指针)
在IEC1131-3编辑模式中,您可以使用过载移动指令在整数和字、双整数和双字之间转换。
过载移动指令允许相同大小的数据类型自由移动,而不生成编译错误。
IEC1131-3过载移动入出
移动(整数至字)整数字
移动(字至整数)字整数
移动(双整数至双字)双整数双字
移动(双字至双整数)双字双整数