1.生成全局数据块
在项目“新建项目”中,单击项目树PLC的“程序块”文件夹中的“添加新块”,在打开的对话框中(见图8-14)单击“数据块(DB)”图标,生成一个数据块,可以修改其名称或采用默认的名称,其类型为默认的“全局DB”,生成数据块编号的方式默认为“自动”。如果在单选框中选中“手动”,可以修改块的编号。
图8-14 添加数据块
单击“确定”按钮后自动生成数据块。选中下面复选框的“新增并打开”,将生成新的块并自动打开它。右键单击项目树中新生成的“数据块1”,执行快捷菜单命令“属性”,选中打开的对话框左边窗口中的“属性”(见图8-15),如果勾选右边窗口中的复选框“优化的块访问”,则只能用符号地址访问生成的块中变量,不能使用绝对地址。这种访问方式可以提高存储器的利用率。
图8-15 设置数据块的属性
只有在未勾选复选框“优化的块访问”时,才能使用绝对地址访问数据块中的变量,数据块才会显示“偏移量”列中的偏移量。
2.字符串
数据类型String(字符串)是字符组成的一维数组,每个字节存放1个字符。第一个字节是字符串的最大字符长度,第二个字是当前有效字符的个数,字符从第三个字节开始存放,1个字符串最多有254个字符。
数据类型WSting(宽字符串)存储多个数据类型为WChar的Unicode字符(长度为16位的宽字符,包括汉字)。第一个字是最大字符个数,默认的长度为254个宽字符,最多16382个WChar字符,第二个字是当前的总字符个数。
可以在代码块的接口区和全局数据块中创建字符串、数组和结构。
在“数据块1”的第二行的“名称”列(见图8-16)输入字符串的名称“电机运行状态”,单击“数据类型”列中的按钮,选中下拉列表中的数据类型“String”,其启动值(初始字符)为“运行”。
图8-16 生成数据块中的变量
3.数 组
数组(Array)是由固定数目的同一种数据类型元素组成的数据结构,允许使用除了Array之外的所有数据类型作为数组的元素,数组的维数最多为6维。图8-17给出了一个名为“电流”的二维数组Array(1..2,1..3)of Byte的内部结构,它共有6个字节型元素。
图8-17 二维数组的结构
第一维的下标1、2是电动机的编号,第二维的下标1~3是三相电流的序号。数组元素“电流(1,2)”是一号电动机的第B相电流。
在数据块的第二行的“名称”列输入数组的名称“水池液位”,单击数据类型列中的按钮,选中下拉式列表中的数据类型“Array[lo..hi}of type”。其中的“lo”(low)和“hi”(high)分别是数组元素的编号(下标)的下限值和上限值,它们用两个小数点隔开,可以是任意的整数(-32 768~32 767),下限值应小于等于上限值。方括号中各维的参数用逗号隔开,type是数组元素的数据类型。
将“Array[lo..hi}of type”修改为“Array[0..5}of lnt”,其元素的数据类型为lnt,元素的下标为0~5。
在用户程序中可以用符号地址“数据块 1”,水池液位{2}或绝对地址DBI.DBW36访问数组“水池液位”中下标为2的元素。
单击“水池液位”左边的按钮,它变为,将会显示数组的各个元素,可以监控它们的启动值和监控值。单击“功率”左边的按钮,它变为,数组的元素被隐藏起来。
4.结 构
可以用数据类型“Struct”来定义包含其他数据类型的数据结构。Struct数据类型可以以单个数据单元方式处理一组相关过程数据。在数据块编辑器或块接口编辑器中命名Struct数据类型并声明内部数据结构。数组和结构还可以集中到更大结构中。一套结构可嵌套8层。例如,可以创建包含数组的多个结构组成的结构。
5.Pointer指针
数据类型Pointer指向特殊变量,其结构如图8-18所示。它会在存储器中占用6个字节(48位),可能包含以下信息:
图8-18 Pointer指针的结构
• DB编号或0(如果该数据未存储在DB中)。
• CPU中的存储区。
• 变量地址。
可以使用指令声明以下3种类型的指针:
• 区域内部的指针:包含变量的地址数据。
• 跨区域指针:包含存储区中数据以及变量地址数据。
• DB指针:包含数据块编号及变量地址。
可以输入没有前缀(P#)的Pointer类型的参数,将自动转换为指针格式。存储区的编码如表8-9所示。
表8-9 Pointer指针中存储区编码
6.Any指针
指针数据类型ANY(“Any”)指向数据区的起始位置,并指定其长度。它结构如图8-19所示,表8-10给出了具体格式和实例。ANY指针的数据类型编码如表8-11所示,存储区编码如表8-12所示。ANY指针使用存储器中的10个字节,可能包含以下信息:
图8-19 Any指针的结构
表8-10 ANY指针的格式和示例(www.xing528.com)
表8-11 ANY指针中的数据类型编码
表8-12 ANY指针中的存储区编码
• 数据类型:数据元素的数据类型。
• 重复因子:数据元素数目。
• DB号:存储数据元素的数据块。
• 存储区:CPU中存储数据元素的存储区。
• 起始地址:数据的“Byte.Bit”起始地址。
指针无法检测ANY结构。只能将其分配给局部变量。
7.Variant指针
Variant数据类型可以指向不同数据类型的变量或参数。Variant指针可以指向结构和单独的结构元素,它不会占用存储器的任何空间,其属性如表8-13所示。
表8-13 Variant 指针的属性
8.PLC数据类型
PLC数据类型用来定义可以在程序中多次使用的数据结构。打开项目树的“PLC数据类型”分支并双击“添加新数据类型”项,可创建PLC数据类型。在新创建的PLC数据类型项上,两次单击可对其重新命名(修改默认名称),双击则会打开PLC数据类型编辑器。可使用在数据块编辑器中的相同编辑方法创建自定义PLC数据类型结构,为任何必要的数据类型添加新的行。
如果创建新的PLC数据类型,则新类型的名称将出现在DB编辑器和代码块接口编辑器的数据类型选择器下拉列表中。PLC数据类型的可能应用包括:
• 可将PLC数据类型直接用作代码块接口或数据块中的数据类型。
• PLC数据类型可用作模板,以创建多个使用相同数据结构的全局数据块。
例如,PLC数据类型可能是混合颜色的配方。用户可以将该PLC数据类型分配给多个数据块。之后,每个数据块都会调节变量,以创建特定颜色。
9.使用符号方式访问非结构数据类型变量的“片段”
可以根据大小按位、字节或字的级别访问PLC变量和数据块变量。访问此类数据片段的语法如下所示:
• "<PLC变量名称>".xn(按位访问)。
• "<PLC变量名称>".bn(按字节访问)。
• "<PLC变量名称>".wn(按字访问)。
• "<数据块名称>".<变量名称>.xn(按访问)。
• "<数据块名称>".<变量名称>.bn(按字节访问)。
• "<数据块名称>".<变量名称>.wn(按字访问)。
双字大小的变量可按位0~31、字节0~3、字0或1访问。一个字大小的变量可按位0~15、字节0~1或字0访问。字节大小的变量则可按位0~7或字节0访问。当预期操作数为位、字节或字时,可使用位、字节和字片段访问方式。双字节中的字、字节和位的结构如图8-20所示。
图8-20 双字节中的字、字节和位
10.访问带有一个AT覆盖的变量
借助AT变量覆盖,可通过一个不同数据类型的覆盖声明访问标准访问块中已声明的变量。例如,可以通过Array of Bool寻址数据类型为Byte、Word或DWord变量的各个位。
要覆盖一个参数,可以在待覆盖的参数后直接声明一个附加参数,然后选择数据类型“AT”。编辑器随即创建该覆盖,然后选择将用于该覆盖的数据类型、结构或数组。图8-21为一个标准访问FB的输入参数。字节变量B1将由一个布尔型数组覆盖。
图8-21 字节变量B1将由一个布尔型数组覆盖
AT覆盖的注意事项:
• 只能覆盖可标准(未优化)访问的FB和FC块中的变量。
• 可以覆盖所有类型和所有声明部分的变量。
• 可以同使用其他块参数一样使用覆盖后的参数。
• 不能覆盖VARIANT类型的参数。
• 覆盖参数的大小必须小于等于被覆盖的参数。
• 必须在覆盖变量并选择关键字“AT”作为初始数据类型后立即声明覆盖变量。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。