>实现变量、常量、信号及用户自定义数据类型的全局可用性 在编程中,若需使变量、常量、信号和用户自定义数据类型在全局范围内可访问(例如跨函数、模块或程序使用),需通过以下方式声明: 全局声明语法: DECL GLOBAL <数据类型> <名称> = <初始值> ; 变量/常量 DECL GLOBAL SIGNAL <信号名称> ; 信号 DEKLARIERE GLOBAL <自定义类型名称> ; 用户自定义类型(示例)
应用场景: - 变量/常量:需在多线程或子程序中共享数据时(如机器人轴参数)。
- 信号:跨程序模块控制硬件I/O或状态同步(如传感器信号)。
- 用户自定义类型:统一复杂数据结构(如机器人位姿或工具配置)。
注意事项: - KUKA机器人编程中,全局信号需在配置文件中预先定义。
通过数据列表实现对象的全局可用性 在程序头的数据列表中添加关键字 PUBLIC : DEFDAT MY_PROG PUBLIC ; 定义名为 MY_PROG 的公共数据列表
声明时使用关键字 GLOBAL : 示例(变量声明): DEFDAT MY_PROG PUBLIC EXTERNAL DECLARATIONS ; 外部声明 DECL GLOBAL INT counter ; 声明全局整型变量 counter ... ENDDAT
关键规则说明在 $CONFIG.DAT 文件的 USER GLOBALS 部分声明对象
规则说明USER GLOBALS 的特殊性: - 在
$CONFIG.DAT 文件的此部分声明的变量、信号或类型自动全局可见。 - 禁止使用
GLOBAL 关键字,否则会导致语法错误。
适用场景: - 适用于系统级全局配置(如机器人坐标系偏移、默认参数)。
术语对照数据类型使用限制 若在数据列表中通过 GLOBAL 关键字定义的数据类型(如枚举、结构体),不可在 $CONFIG.DAT 文件中使用,否则编译器会报错 Typ unbekannt (类型未知)。
示例分析在数据列表 PROG() 中定义全局枚举类型: DEFDAT PROG() GLOBAL ENUM SWITCH_TYP ON, OFF ; 定义全局枚举类型 ...
尝试在 $CONFIG.DAT 中使用该类型: DEFDAT $CONFIG DECL SWITCH_TYP MY_VAR ; 错误:SWITCH_TYP 在此处未定义
编译器报错:Typ unbekannt: SWITCH_TYP
根本原因
解决方案若需在 $CONFIG.DAT 中使用自定义类型,需直接在 $CONFIG.DAT 的 USER GLOBALS 段中定义该类型: DEFDAT $CONFIG USER GLOBALS ENUM SWITCH_TYP ON, OFF ; 在 $CONFIG.DAT 中定义类型 DECL SWITCH_TYP MY_VAR ; 正常声明变量
关键规则
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |