寻址

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
地址寄存器长度相等,有32位。可以在地址寄存器中存储内部区域指针和跨区域指针。
要定义操作数的地址,可以在程序中调用存储的数据。
通过加载和传递指令可以在寄存器和其它可用存储区之间交换数据。
说明
在S7-1500中,特殊规则通过地址寄存器和数据块寄存器应用于数据交换:
●在块之外,寄存器中的值不再存在。
●块中的语言改变时,寄存器将复位。
●只能引用有保留设置“在IDB中设置”的优化访问块中的数据。
●无法通过地址寄存器(跨区域)引用优化访问块中的本地数据。
SCL:
"<GlobArrayDBname>"."THIS"[#i].<元素名称>
示例
以下示例说明了如何寻址ARRAY数据块中的元素:
在SCL中寻址说明
"My_ARRAY_DB"."THIS"[0]
"My_ARRAY_DB"是一个ARRAY数据块,元素的数据类
型为REAL。
在此,将寻址"My_ARRAY_DB"中的第一个元素。
循环都使用不同的下标。
如果在块调用期间将具有可变下标的STRING或
意:下标变量[i]在开始块调用时读取一次,无法
说明
在运行过程中监视STRING访问
运行过程中写入超出定义长度的STRING或WST
在S7-1200/1500中,将监视STRING或WSTR
读访问时,将接收到字符“$00”或“$0000”;而对
WSTRING*)的字符
WCHAR := WSTRING["Tag_1"]; (*间接寻址:将由“Tag_1”指定的WSTRING字符分
配给WCHAR*)
地址寄存器的基本知识(S7-1200, S7-1500)
简介
两种地址寄存器可用于操作数的间接寻址:地址寄存器1 (AR1)和地址寄存器2 (AR2)。
最佳做法是对这些变量使用更为便捷的符号寻址
ARRAY数据块
ARRAY数据块是一种特殊类型的全局数据块。这些数据块包含一个任意数据类型的
ARRAY。例如,可以是PLC数据类型(UDT)的ARRAY。
可通过关键字“THIS”寻址ARRAY数据块中的元素。然后再在方括号中指定下标。下标
可以是一个常量,也可以是一个变量。变量类型的下标最大可支持长度为32位的整数。
"Structured_Tag".Component结构化变量的元素符号地址。
全局数据块中的变量寻址
全局数据块中的变量可以按符号名或绝对地址进行寻址。对于符号寻址,可以使用数据块
的名称和变量名,并用圆点分隔。数据块的名称用引号括起来。
对于绝对寻址,可以使用数据块的编号和数据块变量的绝对地址,并用圆点分隔。地址标
也可访问多重背景块的变量。在多重背景块中,也可通过“#”字符后跟变量名对
寻址。在调用块中,可通过#<多重实例名称.变量名称>访问多重背景块的数据
语法
下列语法可用于对背景数据块变量进行寻址:
#<变量名称>
#<多重实例名称>.<变量名称>
示例
以下示例为全局数据块变量的寻址:
寻址说明
#Value背景数据块的"Value"变量寻址。
"MY_UDT_ARRAY_DB"."THIS"[3].MyREAL "MY_UDT_ARRAY_DB"是一个ARRAY数据块,元素的数
据类型为PLC数据类型(UDT)。在PLC数据类型中,
各元素的数据类型为BYTE。
在此,将寻址"MY_UDT_ARRAY_DB"中第四个ARRAY
元素和该元素中的"MyREAL"子元素。
#On多重背景块的"On"变量寻址。
#Multi.On在调用块中,寻址多重背景块的"On"变量
寻址ARRABaidu Nhomakorabea数据块
ARRAY数据块是一种特殊形式的ARRAY。ARRAY数据块是仅包含一个ARRAY的全局
数据块。可通过以下语法寻址ARRAY数据块中的元素:
"<GlobArrayDBname>".THIS[#i].<元素名称>
址使用以零开头的数值地址地址标识符%被自动设置为全局变量绝对地址的前缀。
%Q1.0绝对地址:输出1.0
%I16.4绝对地址:输入16.4
%IW4绝对地址:输入字4
"Motor"符号名地址"Motor"
"Value"符号名地址"Value"
"Structured_Tag"基于PLC数据类型的变量符号地址
"<ArrayDBname".THIS[#i].<Component>.<ComponentElement>
SCL:
"<ArrayDBname"."THIS"[#i].<Component>.<ComponentElement>
实例数据寻址
要对来自当前块接口的变量进行寻址,请输入“#”字符,后跟变量符号名。
通过可变下标进行ARRAY访问
寻址ARRAY元素时,可将整型数据类型的常量或变量指定为下标。在
最长为32位的整数。
通过变量进行间接寻址时,仅在程序运行过程中才会计算下标。例如,
次循环都使用不同的下标。
语法
下列语法用于ARRAY的间接索引:
"MyDB".MyArray[#i] //一维ARRAY
"MyDB".MyArray[#i].a // STRUCT类型的一维ARRAY
寻址ARRAY数据块的扩展选项位于“指令”(Instructions)任务卡的“移动”(Move)区域中。
例如,可以通过这些指令对数据块名称进行间接寻址。
语法
"<DBname>".TagName
%<DBnumber>.absoluteAddress
#<DBAny_name>.%absoluteAddress
寻址
按符号名对全局变量寻址
使用符号名称进行寻址时,则需输入PLC变量表中的变量名称。全局变量的符号名自动用引号括起来,可以使用PLC变量的符号名称,对基于PLC数据类型的结构化变量进行寻址。也可以使用句点分隔各元素的名称。
按绝对地址对全局变量寻址
使用绝对地址寻址时,则需输入PLC变量表中的变量地址。对于每个操作数范围,绝
识符%被自动设置为绝对地址的前缀。
S7-1200/1500提供了一个选项,用于访问编访问块的块接口中创建一个DB_ANY数据类
运行期间传送到此参数。为了访问数据块的数名称以及变量的绝对地址,并用圆点分隔
按绝对地址对DB变量寻址
以下变量无法进行绝对寻址:
●优化访问块中的变量。
●LWORD、LINT、ULINT、LREAL、LTIME、L
"MyDB".MyArray[#i,#j]//多维ARRAY
"MyDB".MyArray[#i].a // STRUCT类型的多维ARRAY
间接寻址STRING的各字符(S7-1200, S7-1500)
说明
要寻址STRING或WSTRING的各字符,可以将
型数据类型。使用变量时,则可在运行过程对索引
"CHAR"和“WCHAR”是变量。"Tag_1"是一个整型的PLC变量。
在SCL中寻址说明
STRING["Tag_1"] := CHAR; (*间接寻址:将“CHAR”分配到由“Tag_1”指定的
STRING*)的字符
WSTRING["Tag_1"] := WCHAR; (*间接寻址:将“WCHAR”分配到由“Tag_1”指定的
S7-1200和S7-1500中的常规间接寻址选项
所有的编程语言都提供以下间接寻址选项:
●通过指针间接寻址
●ARRAY元素的间接索引
●通过DB_ANY数据类型间接寻址数据块
通过指针间接寻址(S7-1200, S7-1500)
说明
对于间接寻址,要求特定的数据格式,应包含地址或者还包含操作数的范围和数
该数据格式称为指针。可以使用以下类型的指针:
●POINTER (S7-1500)
●ANY(S7-1500,仅适用于可标准访问的块)
●VARIANT (S7-1200/1500)
有关指针数据类型的更多信息,请参考“另请参见”。
说明
在SCL中,POINTER的使用具有一定限制。只能将其转发到被调用块中。
ARRAY元素的间接索引(S7-1200, S7-1500)
中带有使能输出ENO,则ENO的信号状态将设置
式。
语法
下列语法用于STRING或WSTRING的间接索引
"<Data block>".<STRING>["i"]
"<Data block>".<WSTRING>["i"]
示例
以下以SCL为例,举例说明了对STRING进行的间接索引。"STRING", "WSTRING",
相关文档
最新文档