设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
SIMATIC S7-1200 的Variant类型
返回列表
发新帖
[西门子]
SIMATIC S7-1200 的Variant类型
[复制链接]
39348
|
0
|
2024-5-6 18:56:08
|
显示全部楼层
|
阅读模式
Variant 类型是一种参数数据类型,通常只出现在 OB/FC/FB 接口区,除了 FB 的静态变量之外。Variant 类型的实参可以是一个可以指向不同数据类型变量的指针,包括基本数据类型和复杂数据类型、UDT 等。
Variant 数据类型提供了一种多功能的数据选项,它不会在背景数据块或工作存储器中占用空间,但会在 CPU 的装载存储器中占用存储空间。当调用一个块时,可以使用 Variant 参数与任何数据类型的变量相连接。这不仅传递了变量的指针,还传递了变量的类型信息,使得块识别并相应地处理这些数据。程序块可以使用 Variant 的相关指令来识别并处理这些参数。
需要注意的是,Variant 类型的数据在处理过程中可能会出现数据类型转换的问题,因此在使用时需要谨慎。
总的来说,Variant 类型是一种灵活的数据类型,可以在不同的数据类型之间进行转换,但在使用时需要考虑到数据类型的兼容性和转换可能带来的问题。
Variant指向的实参,可以是符号寻址,也可以是绝对地址寻址,还可以是形如P#DB1.DBX0.0 BYTE 10这种指针形式的寻址。
在早期版本的 TIA Portal 软件中,只有一些通讯指令使用 Variant 变量。然而,从 TIA V13SP1 和 S7-1200 V4.0 开始,可以在程序块的实参中定义 Variant 类型变量,并且可以通过以下指令处理 Variant 类型的变量:
1. 判断类指令
这类指令主要用于检查 Variant 类型实参的实际类型,但并不直接处理变量。这种指令非常有用,因为它可以帮助程序块识别 Variant 参数的实际数据类型,以便进行相应的处理。Variant 类型的变量可以根据其实际的数据类型进行不同的处理操作。具体可以参考相关文档或用户手册中关于判断类指令的内容。参见表1。
表1 判断类指令
2. 处理类指令
该类指令可以对Variant类型的实参进行转化,参见表2。
表2 处理类指令
3. 其他指令
DB_ANY_TO_VARIANT与VARIANT_TO_DB_ANY,参见DB_ANY数据类型。
P#指针说明
当Variant类型的实参指向形如P#DB1.DBX0.0 BYTE 10,指令内部将判断该形参为一个10字节的数组。
指针结构
S7-300/S7-400中的 Any 指针结构指的是 P#DB1.DBX0.0 BYTE 10 这种形式的指针。与 S7-300/S7-400 不同,S7-1200无法像前者那样定义和拆解 Any 指针。然而,在参数类型为 Variant 时,可以输入这种指针形式,并且 S7-1200 将其识别为数组。
P#DB1.DBX0.0 BYTE 10的解释:P#DB1.DBX0.0 BYTE 10 是一种指针表达式,用于指定从 DB1 数据块的 DBX0 开始的 10 个字节的数据。在使用这种指针时,DB1 必须是未经优化的 DB 块,并且该块中必须包含长度为 10 字节的变量。
这种指针结构可以修改为指向其他 DB 块,例如 P#DB10.DBX,或者指向 I 区、Q 区、M 区的指针,分别是 P#I、P#Q、P#M。
在指针表达式中,0.0 表示起始地址,例如 1.0、100.0 等,且小数点后必须是 0。
BYTE 后面跟随的数据类型可以是 Bool、Byte、Word、DWord、Int、DInt、Real、Char、Date、TOD 或 Time。
最后的数字 10 表示指针指向的数据类型实例的数量。对于 Bool 类型,数量必须是 1 或 8 的倍数。
P#指针举例,P#I0.0 Bool 8,P#Q0.0 Word 20,P#M100.0 Int 50。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
windygh
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』