变量是Apus IDE组态软件中一个非常重要的概念,整个组态工具是围绕变量进行组态。
1)变量管理器
APP程序运行后会创建一个实时变量集合,称为“变量管理器”,用于应用程序内部、多线程之间、应用程序与外部设备的双向数据交换。
2)变量名
每一个变量都有一个唯一的变量名,在创建变量时定义,由变量管理器集中管理。
用户使用变量名来读写变量实例对象值,参考代码如下。
//获取变量值
int v;
vm->getInt("变量名", v);
//设置变量值
vm->setInt("变量名", 100);
按变量的用途不同分为:
1)普通变量
变量可以看着是HMI内部开辟某块内存区域,用户可以对其进行读写操作,如设置值、获取值、关联控件与变量。
普通型变量有整型、浮点型、字符 串、长整型等几种不同数据类型,用于区分访问变量的数据类型。
2)设备变量
设备型变量除了普通型变量的基本特点外,还有设备地址、元件类型、元件地址等与特定设备相关的属性,是外围设备的软元件或IO节点在HMI内部内存中映射。
根据设备软元件的不同,分为布尔型、带符号整型、无符号整型、浮点型、字符串、16位带符号整型、 16位无符号整型、16位BCD码、32位BCD码等。
3)系统变量
IDE内置的、有特定的名称、特定数据类型的普通变量。如系统时间、用户名等。
通常情况下不建议用户直接对系统变量进行写操作。
4)配方型
用户配方。
5)占位型
虚拟变量(暂时无用)。
按变量的实际存储数据类型分为:
1)整型
2)浮点型
3)长整型
4)字符串型
对照关系参考表:
分类 |
APUS IDE |
C++ |
普通型 |
T_INT |
int |
T_FLOAT |
float |
|
T_LONG |
long |
|
T_TABLE |
- |
|
T_TABLEVIEW |
- |
|
T_VCHAR |
string |
|
配方型 |
T_RCP |
- |
设备型 |
D_INT |
int |
D_UINT |
Unsigned int |
|
D_FLOAT |
float |
|
D_VCHAR |
string |
|
D_BOOL |
bool |
|
D_LONG |
long |
|
D_INT16 |
Int16_t |
|
D_UINT16 |
uint16_t |
|
D_BCD16 |
int |
|
D_BCD32 |
int |
双击项目“工程设置”,
默认打开“实时变量”页签,上述各种类型的变量在这里集中进行管理。
如下图所示,左侧树状结构对变量按类型进行分类,右侧是变量列表和维护菜单栏,
菜单栏功能说明如下:
图标 | 功能 | 说明 |
![]() |
批量添加 | 批量添加多个变量 |
![]() |
添加变量 | 添加单个变量 |
![]() |
删除变量 |
删除一个或多个变量,如果工程里有控件绑定了变量,该变量不能删除 |
![]() |
导入变量 | 从外部文件导入变量 |
![]() |
导出变量 | 将工程变量导出为*.csv文件 |
![]() |
触发函数 | 创建或删除变量值变化时的触发函数 |
双击 | 打开变量维护界面进行修改 |
变量表格字段说明:
列名 | 说明 |
变量名 | 变量名称,必须唯一 |
设备 | 所属设备,仅设备变量有效 |
元件类型 | 元件的类型,与具体设备型号有关,仅设备变量有效 |
元件地址 | 元件的地址,与具体设备型号有关,仅设备变量有效 |
数据类型 | 变量的数据类型 |
自动保存 | 变量自动保存后,HMI上电后会自动恢复保存值,用于掉电保存功能 |
初始值 | 设置APP启动时变量的初始值 |
保持驻留 | 启用后设备变量会一直维持和外围设备的通讯 |
值变化时触发 | 值变化触发函数 |
注意事项:
用户能添加普通变量、设备变量;
用户不能添加系统变量,只能查看;
用户不能创建和修改配方变量;
添加设备变量前需要先添加设备;
类型选择“普通型”,点击添加按钮新增普通变量。
选择数据类型、修改变量名,保存即可。
可以在变量表格中直接编辑变量名称,保存时自动检查是否重名。
用于一次性添加多个同类型的变量。如下图所示,点击“批量添加”按钮,
选择数据类型
输入变量名前缀
输入批量添加的变量个数
点击确定按钮即可。
也可以不指定变量前缀,由IDE自动生成,然后用户按需修改即可。如变量重名,无法保存。
需要先添加设备,然后才能创建设备变量!!
类型选择“设备型”,点击添加按钮新增变量,如下图所示,需要依次指定以下参数:
设备
软元件类型
地址
变量名
数据类型
点击确定按钮即可。
用于一次性为同一台设备添加多个同类型地址且连续的变量。如下图所示,类型选择“设备型”,点击“批量添加”按钮,
如上图所示,需要依次指定以下参数:
设备
软元件类型
首地址
变量名前缀
变量个数
数据类型
点击确定按钮即可。
也可以不指定变量前缀,由IDE自动生成,然后用户按需修改即可。如变量重名,无法保存。
系统变量是IDE平台提供或创建的预置变量,包括内置系统变量与动态系统变量。
常用内置系统变量参考下表,
标识 | 名称 | 说明 |
$time | 当时时间 | 时间戳,64位长整型,自1970年1月1日00:00:00起至现在的总秒数 |
$hour | 当前小时 | 整型 |
$hour12 | 当前小时 | 整型,12小时制 |
$minute | 当前分钟 | 整型 |
$second | 当前秒 | 整型 |
$logintime | 登录时间 | 时间戳,64位长整型,自1970年1月1日00:00:00起至现在的总秒数 |
$worktime | 系统上电工作时间 | 整型,系统上电后工作的秒数 |
$uname | 登录用户名 | 字符串型,默认为空 |
$uid | 登录用户 | 字符串型,默认为空 |
$errcode | ||
$errmsg | ||
$language | 语言 |
字符串型,默认中文,同时支持9种语言切换, 默认的语言列表如下: 简体中文:“zh_CN” 繁体中文:"zh_TW" 英文:"en_US" 阿拉伯语:"ar_AR" 法语:"fr_FR" 德语:"de_DE" 韩语:"ko_KR" 西班牙语:"es_ES" 日语:"ja_JP" 越南语:"vi_VN" 注:当用户的语言不在上述列表时,可用任何一种列表代替,这里只是一个语言标识。 |
$verstamp | 版本时间戳 | 字符串型,如“231129133619” |
$wifistatus | 连接Wi-Fi信号强度 | 整型,0-4,0表示无信号,4表示信号最强,仅启用WIFI有用 |
$wifissid | 连接Wi-Fi名称 | 字符串型,默认为空,仅启用WIFI有用 |
$fgstatus | 连接4G信号强度 | 整型,0-4,0表示无信号,4表示信号最强,仅启用4G有用 |
$fgssid | 连接4G名称 | 字符串型,默认为空,仅启用4G有用 |
$eth0ip | 网卡0 IP地址 | 字符串型,本机网卡0 IP地址 |
$eth1ip | 网卡1 IP地址 | 字符串型,本机网卡1 IP地址 |
$wlanip | WIFI IP地址 | 字符串型,默认为空,仅启用WIFI有用 |
$fgip | 4G IP地址 | 字符串型,默认为空,仅启用4G有用 |
$lastinput | 系统内部使用 | |
$lasttouch | 系统内部使用 | |
$currentinput | 正在录入字符串 | 字符串型,当前正在录入的字符串 |
$inputll | 录入下限 | 系统内部使用,用户只读 |
$inputul | 录入上限 | 系统内部使用,用户只读 |
如下图所示,当添加设备时创建,删除设备时删除,用于显示设备连接状态。
其标识和名称由系统创建,用户不可以更改。
在“实时变量”页签中,只能查看配方变量。添加配方变量需要在“配方数据”页签中。
配方变量的定义与维护,参考配方功能。
几种常用用法。
在控件的属性中进行设置。
比如:文字控件绑定变量来显示变量值;
点击标签内容属性,弹出设置对话框,
点击【变量选择...】按钮,从下面的列表中选择要显示的变量,
确定后,返回,再点击【确定】按钮,完成。
设计器中标签控件会从原始状态变为设置的显示变量,如下:
在控件的事件处理中进行设置,主要用在按钮与按钮元件上。比如:按钮控件来操作变量;
点击事件处理下,点击事件后的按钮,弹出设置框,
点击【选择】按钮,选择“操作变量”,
再设置“执行动作”,如下
点击【确认】按钮即可。
8.3 文本框输入修改变量
文本框关联变量后可以直接修改变量的值,
点击“关联变量”属性,弹出变量选择对话框,
点击确定即可。
读操作:
int value;
vm->getInt(“变量名”,value);
写操作:
int value=123;
vm->setInt(“变量名”, value);
注意: 变量没有读写特性,其用作是只读、只写还是读写由用户决定!