[西门子] TIA Portal V15.0新特性介绍(6) REF

[复制链接]
查看110 | 回复0 | 2024-4-5 13:28:49 | 显示全部楼层 |阅读模式
在TIA V15.0中,SIEMENS为博图引入了新的语言特性,增加了系统函数“REF”和运算符“^”(我个人认为他们应该都被归入到运算符中),SIEMENS官方分别称之为“引用”和“取消引用”。新的语言特性只有在固件版本V2.5以上的S7-1500中才能使用。
1、Pascal中的指针
鉴于“引用”和“取消引用”的说法颇为令人费解,所以这里先看一段Pascal程序,然后我们再慢慢揭开它的真面目。使用Pascal语言来演示是因为博图中的SCL是类Pascal的编程语言,它们的基本语法高度相似。

图一 Pascal语言中的指针操作
    上图是一段Pascal语言中的指针操作代码,代码含义如注释所示。基本过程就是首先分别定义一个整型变量和一个整型指针变量,然后获取整型变量的内存地址并存储在指针里,最后读出指针指向的内存区域的值并在对话框中显示。程序执行结果如下图所示,指针指向内存区域的值就是整型变量的值。

图二 Pascal程序执行结果
2、TIA中的REF
    现在我们再看看REF在TIA博图中的使用。在下图中,我们用SCL重现了刚才的Pascal程序。首先分别定义一个整型变量和一个整型指针变量,然后获取整型变量的内存地址并存储在指针里,最后读出指针指向的内存区域的值并传送给输出参数Q。

图三 TIA博图中的REF使用
    下载程序并运行,其执行结果如下图所示,结果也是56,和之前的Pascal程序执行结果完全一样。


图四 TIA博图中的程序执行结果
    看到这里相信大家应该明白了吧,“REF”其实就是SCL中的指针,所以上面图中的注释我就直接写成指针了。系统函数“REF”用于获取变量的内存地址,其地址存储在相应类型的指针变量中,也就是图三中的“a”。操作符“^”用于对内存区域中的值进行操作,除了读取外也可以进行赋值。官方文档中的“引用”意为引用变量的内存地址,“取消引用”意为解除对地址的引用,改为对内存区域中的值进行操作。
3、REF和Variant
    TIA帮助里说Variant属于指针或引用类型,我个人认为这种说法是不严肃的,指针和引用类型还是有很大区别的(新出的REF才是真正的指针)。在《TIA Portal高级编程》V15.0中我已把Variant归为引用类型,并会进一步剖析Variant和REF,阐述引用类型和指针类型的区别,以实例说明REF在项目中的使用。
    REF的引入进一步丰富了TIA SCL的语法特性,使SCL的功能更为强大,使用更为灵活(备注一下:REF在LAD/FBD中也是可以使用的)。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则