Memory 使用内存位置声明的访问变量

Memory 使用内存位置声明的访问变量,memory,plc,twincat,Memory,Plc,Twincat,声明如下的变量 bMyVar AT %MB100: BOOL; 可通过使用ADS读或写FB从另一个PLC访问。其他程序,如HMI Movicon,使用.tpy文件获取可用变量列表。不幸的是,TPY文件中不存在使用上述内存位置声明的变量,无法从HMI软件中读取。如果Twincat本身能够使用ADS读取这些变量,为什么会发生这种情况?(HMI也使用ADS.)任何变量都是相同的。像这样bMyVar:BOOL或类似的bMyVar在%MB100:BOOL。没有区别。在第一种情况下,自动分配内存地址,在第

声明如下的变量

bMyVar AT %MB100: BOOL;

可通过使用ADS读或写FB从另一个PLC访问。其他程序,如HMI Movicon,使用.tpy文件获取可用变量列表。不幸的是,TPY文件中不存在使用上述内存位置声明的变量,无法从HMI软件中读取。如果Twincat本身能够使用ADS读取这些变量,为什么会发生这种情况?(HMI也使用ADS.)

任何变量都是相同的。像这样
bMyVar:BOOL或类似的
bMyVar在%MB100:BOOL。没有区别。在第一种情况下,自动分配内存地址,在第二种情况下显式分配内存地址。因此,如果您可以访问
bMyVar:BOOL然后您将能够在%MB100:BOOL;访问
bMyVar。谢谢@SergeyRomanov。那么为什么它不在TPY文件中呢?如果您从一个空项目开始,只声明两个变量,一个有内存地址,一个没有,那么TPY文件将只包含一个没有内存地址的变量…也许您应该为用户界面定义一个GVL,并在那里添加必要的变量,并在每个PLC循环后更新它们。那你就不用担心了。@sharkyenergy,没错。没有自动分配地址的变量,因此我们不需要知道该变量的确切存储位置,所以将其放入TPY文件是没有意义的。我们只指出我们显式地想要分配给特殊内存位置的变量。