倍福TwinCAT3 变量声明

I/O变量声明

TwinCAT3中,变量可以通过“AT%I Q * ”来进行声明, AT% 是关键 字, I 表示输入, Q 表示输出。 * 表示自动分配一个内存地址给这个变量 (Codesys平台不支持) 。您也可以指定一个内存地址给这个变量。下图为输入输出变量声明的实例

变量类型

  • 1. VAR 局部变量

  • 这些局部变量没有任何外部关连;也就是说,无法从外部写入。
  • 2. VAR_INPUT 输入变量

  • 在调用位置处,变量值可以与调用一起提供。
  • 3. VAR_OUTPUT 输出变量

  • 这些值将被被移动到进行调用的 POU。
  • 4. VAR_IN_OUT 输入和输出变量

  • 此类变量的输入值不能是常量。因此,即使是功能块的 VAR_IN_OUT 变量也无法过 <FBinstance>.<InOutVariable> 来直接从外部读取或写入
  • 5. VAR_IN_OUT CONSTANT 传输变量

  • VAR_IN_OUT CONSTANT 变量用作常量引用传递参数。STRING 或 WSTRING 类型的变量或常量(字面量)可以被传递到此参数。此参数是只读参数。不允许传递属性。
  • 6. VAR_GLOBAL 全局变量

  • 全局变量只能在全局变量列表 (GVL) 中声明。GVL 用来管理工程中的全局变量。可以通过执行添加对象命令(默认情况下是在工程菜单中)来添加 GVL。
  • 注: 如果在 POU 中以本地方式定义的某个变量与某个全局变量同名,则该变量在 POU 中优先。
  • 注: 全局变量是在 POU 的局部变量之前进行初始化。
  • 7. VAR_TEMP 临时变量

  • 临时变量在每次调用 POU 时都进行(重新)初始化。VAR_TEMP 声明仅能在程序和功能块中使用。这些变量也只能在程序 POU 或功能块的主体中访问。
  • 注: 您可以使用 VAR_TEMP 代替 VAR,以减少 POU 需要的存储器空间(例如,在只是临时使用变量的情况下,降低功能块中的存储器空间)。
  • 8. VAR_STAT 静态变量

  • 静态变量可以在功能块、方法和函数中使用。请在关键字 VAR_STAT 和 END_VAR 之间以本地方式声明静态变量。静态变量是在首次调用各自 POU 时进行初始化。如同全局变量一样,静态变量在用于声明静态变量的 POU 退出之后,不会丢失其值。静态变量在用于声明静态变量的 POU 之间共享(例如,多个功能块实例、函数或方法共享相同的静态变量)。例如,静态变量在功能中可以用作函数调用次数的计数器。
  • 9. VAR_EXTERNAL 外部变量

  • 以本地方式声明外部变量。该声明和全局声明必须相同。如果全局变量不存在,则会显示一条消息。
  • 10.VAR_INST 实例变量

  • 如果利用 VAR_INST 属性将方法的变量声明为实例变量,则此变量不会存储在方法堆栈上,而是存储在功能块实例的堆栈上。因此,它的行为与功能块实例其他变量的行为相似,并且在方法被调用时,不被初始化。VAR_INST 变量仅允许用在方法中。您只能在方法中访问这样的变量。属性(如 CONST、RETAIN)不允许用在声明中。变量的值可以在方法的声明部分中受到监视。
  • 11. RETAIN 剩余变量

  • 声明为保留变量的变量将存储在非易失性存储器区域中。为了声明该类变量,可在 POU 的声明部分或全局变量列表中使用关键字 RETAIN。保留变量将一直保持其值,即使是在控制器意外关闭之后以及在控制器正常重置电源后(或者当执行在线命令热复位时)。在程序重新启动时,将进一步处理保留的值。其他(非保留)变量以新方式初始化:要么使用其初始化值,要么使用其默认初始化值(如果未声明任何初始化值)。
  • 例如,在以下情况下,您可能希望使用保留值:某个操作(如,生产机器中的数量统计)在断电后应继续运行。但是,当执行在线命令初始值复位时,保留变量会重新初始化,与持久变量不同,持久变量是在执行在线命令冷复位时或者在应用程序下载期间进行重新初始化。
  • 12. VAR_GLOBAL PERSISTENT  持久变量。

  • 仅当执行在线命令初始值复位时,才会重新初始化持久变量。与保留变量相比,持久变量的值在下载后保持不变。注: 持久变量只能在持久列表对象中声明。如果在其他位置中声明持久变量,则持久变量的行为与保留变量的行为类似,并且在消息视图中将这些持久变量报告为检测到编译错误。(保留变量可以在全局变量列表或 POU 中进行声明。)
  • 在每次重新加载应用程序时,都将比对项目的持久变量列表来检查控制器上的持久变量列表。控制器上的列表由应用程序来识别。如果发现不一致,将提示您重新初始化应用程序的所有持久变量。不一致性可能是由于重命名或删除了列表中的现有声明,或者对其进行了其他修改。
  • 注: 请仔细考虑持久变量列表中声明部分的任何修改以及对重新初始化相关结果所造成的影响。
  • 只能在列表的结尾添加新声明。在下载期间,这些声明将被检测为新声明,并且不需要重新初始化完整列表。如果您修改某一变量的名称或数据类型,这会被当成新的声明进行处理并会在下一次在线修改或下载时引起变量的重新初始化。
  • 注: 如果功能块中的一个变量标记有 PERSISTENT,则会将功能块实例及其变量存储在剩余内存中,但仅这个变量被视为持久变量。
  • 13. VAR CONSTANT 常量

  • 常量由关键字 CONSTANT 来标识。您可以对它们进行本地声明(编程对象单元)或全局声明(全局变量列表)。在 POU 的实现部分中,常量变量为只读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值