admin 管理员组

文章数量: 1184232


2024年1月25日发(作者:activities短语)

第一部分:宏指令简介

宏指令,是威纶通触摸屏提供的一个附加功能。简而言之,它是一个脚本编辑界面,用户可以在上面编写一些命令,从而对组态的控件执行一些复杂的逻辑运算等处理。利用宏指令可以实现一些应用程序以外的操作,例如 多级用户密码登入 、 动态锁机

、 配方存储 等;以及一些简单的触摸屏逻辑,例如 开机进度条 、 画面切换

等功能,用宏指令做的话会事半功倍。本节,我们先从宏指令的基础语法开始,带你敲开宏指令这扇大门。

宏指令的语法类似于简化版的 VB 或 C 语言,大家如果对 C

语言的变量、语句、函数、数组等概念有了解的话,宏指令使用起来就是很简单的。如果没有了解也没关系,下面我们就来一一介绍宏指令的编辑步骤。

在讲解之前,我们先来了解宏指令的编辑器与触发条件。宏指令的 新建/编辑界面

如下所示:

打开方式: 菜单栏 -- 工具,点击“宏指令”。

新增 -- 编译通过的宏指令在列表中显示。最多可以新增 128 个独立的宏指令。

一个新的宏指令编辑界面如下所示:

其中,第一行的 macro_command main() 和最后一行的 end macro_command

是固定格式,大家不用管它。我们的宏指令逻辑在这两行之间编写。

刚才我们提到过,宏指令的语法类似于简化版的 C 语言。 C

语言当中编程的第一件事是定义变量。变量可以理解成是一个相对的地址,我们可以自由对它命名。宏指令当中变量就是基本的编程对象,定义好的变量才可以使用,换而言之,

变量必须先定义后使用。不定义就使用变量、或者先使用后定义的做法,都是错误的

变量的定义方法如下: 数据类型 变量名称

例如: int A

bool bfh

short ABC

数据类型的列举如下所示,大家根据需求来选择。

定义好了变量之后,我们需要给变量赋予一个绝对地址的值。这样才能使变量与实际的地址,也就是我们编辑好的触摸屏控件产生一个对应,这个过程叫做变量导入。宏指令当中,我们需要借助一个专用函数来实现变量导入功能,这个函数写作 Getdata

格式:

Getdata ([ 导入目标变量名 ] , ''[ 设备 ]'' , [ 地址类型 ] , [ 地址 ] , [

个数 ])

例如: Getdata( “ bfh ” , “ Local HMI ” , LB , 0 , 1)

含义: 把本机触摸屏地址 LB0 里的值导入到变量 bfh 里面,数量为 1 个。

对于Getdata 这样的专用函数,我们不需要手动输入函数的格式,而是在宏指令编辑区左下角的函数库里面直接填写即可,如图所示:

设置完成之后,点击确定, Getdata 函数就自动生成到编辑区。

图中,我们先定义了一个 bool 型的变量 a ,然后将触摸屏的地址 LB0 导入到变量 a 当中。

LB0 对应着触摸屏的一个按钮控件,如图所示:

现在,我们利用 Getdata 函数,将按钮控件 LB0 的状态对应到了宏指令的变量 a

当中。

我们想实现用按钮 LB0 来控制 LB1 的功能,还需要把变量 a 的状态对应到 LB1

当中。将变量的状态对应到实际控件地址的过程,称作变量导出。如何来实现变量导出呢?这就要用到导出函数: Setdata 。

格式 (和 Getdata 非常相似):

Setdata ([ 导出来源变量名 ] , ''[ 设备 ]'' , [ 地址类型 ] , [ 地址 ] , [ 个数 ])

例如: Setdata( “ bfh ” , “ Mistubishi FX3U ” , M , 0 , 1)

含义: 把变量 bfh 里的值导出到 FX3U PLC 的 M0 里面,数量为 1 个。

Setdata 函数,我们同样可以在函数库当中向导生成,如下所示:

这样,我们的宏指令程序 -- 按钮 LB0 控制小灯 LB1

就编写完了。我们还需要对它进行编译,以及设定执行条件,如下所示:

宏指令的执行方式由以下几种:周期执行(无条件执行)、开机执行、窗口执行、控件执行、触发式执行等等。本例子我们采用 周期执行 的方式,执行周期为0 毫秒(不间断执行)。

到现在为止,我们用了一个最简单的例子-- 按钮控制灯,来简单说明了宏指令的几个关键点 -- 变量; Getdata 、 Setdata

函数;以及宏指令的编译与执行。大家可以利用 EB8000 或者 EBpro

软件,自行新建工程离线模拟一遍。

Powered by TCPDF ()


本文标签: 指令 变量 执行 函数 编辑