通过组合基本数据类型构成复杂数据类型,这对于组织复杂数据十分有用。复杂数据类型如表3-5所示,包括以下几种:表3-5 复杂数据类型说明1)DTL。表3-6 DTL举例DT变量的结构由若干元素构成,各元素可以有不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。表3-9 字符串举例3.数组ARRAY数据类型表示由固定数目的同一数据类型的元素组成的域。关于复杂数据类型的使用将在后面的6.4节中详细介绍。......
2023-06-15
复杂数据类型是由其他数据类型组成的数据组,不能将任何常量用做复杂数据类型的实参,也不能将任何绝对地址作为实参传送给复杂数据类型。下面通过几个例子说明复杂数据类型的定义和使用。
1.数组(Array)
Array数据类型表示的是由固定数目的同一数据类型的元素组成的一个域。一维数组声明的形式为
域名:ARRAY[最小索引..最大索引]OF数据类型;
如一维数组
MeasurementValue:ARRAY[1..10]OF REAL;
数组声明中的索引数据类型为INT,其范围为-32768~32767,这也就反映了数组的最大数目。
新建一个全局数据块“blk10”,数据块编号为DB6,不选择“仅符号访问”,新建变量MeasurementValue和TestValue,数据类型选择Array,修改类型为Real,数组上下限分别修改为1..10和-5..5,如图6-31a所示。
数组元素可以在声明中进行初始化赋值,初始化值的数据类型必须与数组元素的数据类型相一致。数组元素的初始化赋值要在“扩展模式”中输入,点击数据块工具栏按钮可以打开扩展模式的数据块,如图6-31b所示。例如,在初始值列为Array型变量Measure-mentValue的第一个元素MeasurementValue[1]赋初始值20.23。
对数组元素的访问,图6-31b扩展模式显示了Array型变量的元素,例如Measure-mentValue的上下限为1..10,则其10个元素为MeasurementValue[1]~MeasurementValue[10]。而TestValue的上下限为-5..5,则其11个元素为TestValue[-5]~TestValue[5]。因此访问数据块中数组类型变量元素的方法为blk10.MeasurementValue[1],blk10.TestValue[0]等,其中blk10为数据块名称,MeasurementValue和TestValue为数组型变量,[1]或[0]表示第1个或第0个元素。
图6-31中,变量MeasurementValue的偏移量为0.0,表示该数组变量的起始位为0.0,则其第1个元素的绝对地址为DB6.DBD0,第2个元素的绝对地址为DB6.DBD4,依次类推,第10个元素的绝对地址为DB6.DBD36。变量TestValue的起始地址位为40.0,则元素TestValue[-5]的绝对地址为DB6.DBD40,其他类推。
图6-31 新建Array类型变量
2.结构(Struct)
Struct数据类型表示一组指定数目的数据元素,而且每个元素可以具有不同的数据类型。S7-1200中结构型变量不支持嵌套。
新建一个全局数据块“blk20”,数据块编号为DB7,不选择“仅符号访问”,新建变量MotorPara,数据类型选择Struct,在下一行新建变量Speed,类型为Real,继续新建Bool型变量Status和Real型变量Temp,如图6-32所示。
结构元素可以在声明中进行初始化赋值,初始化值的数据类型必须与结构元素的数据类型相一致,在扩展模式的数据块中输入结构变量相应元素的初始值,如图6-32所示。
图6-32 新建Struct类型变量
可以使用下列方式来访问结构元素:
StructureName(结构名称).ComponentName(结构元素名称)
例如访问数据块blk20中MotorPara变量的Status元素的方法为
blk20.MotorPara.Status
blk20为数据块名称,MotorPara为结构型变量,Status为结构型变量中的元素。
图6-32中,变量MotorPara的偏移量为0.0,表示该结构变量的起始位为0.0,则其第1个元素Speed的偏移量为0.0,因为Speed为Real型变量,所以其绝对地址为DB7.DBD0,第2个元素的偏移量为4.0,因为Status为Bool型,所以其绝对地址为DB7.DBX4.0,第3个元素的偏移量为4.0,Real型变量,其绝对地址为DB7.DBD6。
3.字符串(String)
String数据类型变量是用以存储字符串如消息文本的。通过字符串数据类型变量,在S7CPU里就可以执行一个简单的“(消息)字处理系统”。String数据类型的变量将多个字符保存在一个字符串中,该字符串最多由254个字符组成。每个变量的字符串最大长度可由方括号中的关键字STRING指定(如STRING[4])。如果省略了最大长度信息,则为相应的变量设置254个字符的标准长度。在存储器中,String数据类型的变量比指定最大长度多占用两个字节,在存储区中前两个字节分别为总字符数和当前字符数。
新建一个全局数据块“blk30”,数据块编号为DB8,不选择“仅符号访问”,新建变量ErrMsg,数据类型选择String,在下一行新建变量tag1,类型选择并输入为String[10],表示该变量包含10个字符,如图6-33所示。
图6-33 新建String类型变量
字符串变量可以在声明的时候用初始文本对String数据类型变量进行初始化。字符串变量的声明方法为
字符串名称:STRING[最大数目]
图6-33中,声明了字符串变量Errmsg,没有指明最大数目,则程序编辑器认为该变量的长度为254个字符,输入其初始值为“This is a test”。而tag1变量的最大数目为10,其长度为10个字符,默认初始值为空。
如果用ASCII编码的字符进行初始化,则该ASCII编码的字符必须要用单引号括起来,而如果包含那些用于控制术语的特殊字符,那么必须在这些字符前面加字符($)。
可以使用的特殊字符有:
$$简单的美元字符
$L,$I换行(LF)符
$P,$p换页符
$R,$r回车符
$T,$t空格符等。
对字符串变量的访问,可以访问字符串String变量的各个字符,还可以使用扩展指令中的字符串项下的字符指令来实现对字符串变量的访问和处理。例如,符号寻址图6-33字符串的方法为blk30.ErrMsg或者blk30.tag1,blk30为数据块名称,ErrMsg和tag1为字符串型变量。寻址单个元素的方法为blk30.ErrMsg[23],表示寻址数据块blk30中的字符串型变量ErrMsg的第23个字符。
String数据类型的变量具有最大256个字节的长度,因此可以接收的字符数达254个,称为“净数”。
图6-33中,变量ErrMsg的长度为默认的254个字符,每个字符占用存储区的1个字节,又因为在存储器中,String数据类型的变量比指定最大长度多占用2个字节,故变量ErrMsg在存储区中共占用256个字节。变量的ErrMsg的偏移量为0.0,表示它的存储起始地址位是0.0,共占用256个字节,故变量tag1的偏移量为256.0,变量tag2的偏移量为268.0,因为变量tag1最大数目为10,所以共占用了12个字节的存储区。对变量ErrMsg,由于其前两个字节分别为总字符数和当前字符数,故在存储区的第3个字节开始存储字符,即图6-33所示变量ErrMsg的第1个字符“T”的绝对地址为DB8.DBB3,“a”的绝对地址为DB8.DBB11。
4.长格式日期和时间(DTL)
DTL数据类型表示了一个日期时间值,共12个字节。
新建一个全局数据块“blk40”,数据块编号为DB9,不选择“仅符号访问”,新建变量tag5,数据类型选择DTL,如图6-34a所示,图6-34b为扩展模式的DTL变量。
可以在声明部分为变量预设一个初始值。初始值必须具有如下形式
DTL#年-月-日-周-小时-分钟-秒-毫秒-]
具体结构如图6-34b所示。
图6-34 新建DTL类型变量
对于DTL数据类型的变量,可以通过符号寻址来访问其中的元素,例如符号寻址月元素的格式为blk40.tag5.MONTH,其中blk40为数据块名称,tag5为DTL类型变量,MONTH为DTL变量的元素,由图6-34b可以看出该元素的数据类型为USInt型。
还可以通过绝对地址寻址访问DTL类型变量的各个内部元素。图6-34中,变量tag5的偏移量为0.0,表示其存储起始地址位是0.0,共占用12个字节,第1个元素为年,是无符号整型数据,偏移量为0.0,则该元素的绝对地址寻址格式为DB9.DBW0。第2个元素月的偏移量为2.0,为无符号短整型数据,则其绝对地址寻址格式为DB9.DBB2。
有关西门子S7-1200 PLC编程与应用的文章
通过组合基本数据类型构成复杂数据类型,这对于组织复杂数据十分有用。复杂数据类型如表3-5所示,包括以下几种:表3-5 复杂数据类型说明1)DTL。表3-6 DTL举例DT变量的结构由若干元素构成,各元素可以有不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。表3-9 字符串举例3.数组ARRAY数据类型表示由固定数目的同一数据类型的元素组成的域。关于复杂数据类型的使用将在后面的6.4节中详细介绍。......
2023-06-15
DATE_AND_TIME数据类型与ARRAY、STRING和STRUCT一起都属于复杂数据类型类别。图4-16 从STEP 7库进行复制不能将常数作为实际参数传送给复杂数据类型的形式参数。7)功能FC40将数据类型格式TIME转换为格式S5TIME。表4-30所示为FC9的输入输出参数,其中参数DT1的时间与参数DT2的时间相等,则返回值的信号状态为“1”。5)功能FC28比较两个DATE_AND_TIME数据类型格式变量的内容,检查它们是否不相等,并将比较结果作为返回值。......
2023-06-18
表1.6所示列出了VB使用的基本数据类型。表示单精度数据。例如:123.45、0.12345E+3、123.45!5)自定义数据类型VB不仅提供了系统定义的以上基本数据类型,也允许用户自己定义数据类型,它由若干个基本数据类型组成。......
2023-10-22
要保持量具的精度和其工作的可靠性,除了在使用中要按照合理的使用方法进行操作以外,还必须做好量具的维护和保养工作。用精密量具如游标卡尺、千分尺和指示表等去测量锻铸件毛坯,或带有研磨剂的表面是错误的,这样易使测量面很快磨损而失去精度。尤其是游标卡尺等,应平放在专用盒子里,以免使尺身变形。例如,拿游标卡尺划线,拿百分表当锤子,拿金属直尺当螺钉旋具,以及用金属直尺清理切屑等都是错误的。......
2023-06-23
例如,typeof 1.2输出结果为number,表示1.2是数字类型。在实际应用中,typeof常常用于检测参数的数据类型,如下表所示。typeof null返回值是object,这是早期JavaScript设计时遗留下的问题,即使到现在也无法通过typeof判断null类型。利用typeof可以避免使用未定义的变量导致程序执行出错。图3.2.7使用typeof获取数据类型关键字typeof在两种情况下会返回undefined:变量不存在和变量的值未定义。......
2023-11-08
纵观选择过程,需要认识和把握好以下几点:一、简单与复杂相对而言,选择过程中可能互相转化人们为什么认为有的选择很简单,有的选择很复杂呢?三是与选择采取的方法态度有关。这种明知简单比复杂好的事情,却偏偏要人为地去搞复杂,其中,虽然有社会风气影响的原因,但归根到底,还是当事主体“选择”的问题。......
2024-08-19
本节介绍MySQL支持的数据类型,提供关于每种类型的名称、作用、格式和范围的信息。TIMETIME数据类型负责存储时间信息,支持的范围相当大,不仅足以表示标准和军用时间格式,还可以表示扩展时间间隔。注意,对于MySQL版本4.1及更新版本,不可以指定该数据类型的大小。......
2023-10-29
实操目的1.通过观察,认知和区分3种开关的外观。实操内容及步骤1.从外观上区分3种开关;2.认知3种开关的主要参数;3.分别拆、装3种开关,进一步熟悉其内部结构,加深对其动作原理的理解;4.逐步掌握3种开关的正确接线及其使用方法;5.实操结束后,要进行归纳总结,写出实操报告。......
2023-06-15
相关推荐