首 页    工程服务     配套产品       技术培训       工程业绩     下载中心
 

 

                
              


  
QuickControl6.0技术中心

如何开始制作一个简单工程?
  如何使用工程浏览器?
  如何使用Windows控件?
  如何使用报警?
  如何使用历史数据?
  如何使用量程转换?
  如何使用事故追忆?
  如何使用配方?
  如何使用自定义菜单?
  如何生成报表系统?
  如何使用间接变量?
  如何自定义函数?
  如何使用累计点?
  如何实现PID控制?
  如何使用分段线性化(使用分段线性化的过程)?
  如何使用分段线性化(分段线性化例子)?
  如何组态自定义点参数?
  如何组态自定义点类型?

 

   当前位置: 首页>>QuickControl6.0技术中心>>如何使用间接变量
< 如何使用间接变量 >
     
 

我们知道,在许多高级语言(比如C语言Pascal语言等)中都使用了指针的概念,通过使用指针,可以大大简化我们的编程,同时提供了较多的灵活性。在Jave和最新推出的C#中虽然去除了指针,但是实际上它提供了许多的指针的代用品,功能上和指针有些类似。在迅控系统中也提供了一种类似指针的变量,也就是间接变量。

间接变量的功能十分强大,用法相对于其它变量也稍微复杂,它的用法有以下几种:

 

假设Ptr为一个间接变量,同时A1A2为数据库中定义的点,当仅仅简单的对间接变量Ptr进行赋值操作时,Ptr相当于一个普通变量。

比如:Ptr = 100; 在这里Ptr和一个中间变量的作用相同,仅仅做为一个变量来保存一个数值100

 

当使用了间接变量重定向语句后,该间接变量的作用相当于一个指针。

比如:

Ptr = & A1.PV;

Ptr = 100;

在第一条语句执行时,Ptr变为了一个指向A1.PV的指针,对它的任何操作对变为对A1.PV的操作了。在第二条语句执行时,A1.PV的值变为了100

 

当在变量之后直接加数组引用,那么该间接变量可以作为一个数组来使用。

比如:

Ptr[0] = 100;

Ptr[1] = 101;

此时Ptr变成了一个数组,并且该数组可以保存2个元素。注意,在迅控系统中不需要直接说明数组的容量,在执行脚本的过程中,系统会自动的扩展该数组以满足新的需要。

 

当在变量之后加数组引用,同时使用了间接变量重定向语句后,该间接变量的作用相当于一个指针数组。

比如:

Ptr[0] = &A1.PV;

Ptr[1] = &A2.PV;

Ptr[0] = 100;

Ptr[1] = 200;

这段程序执行完毕后,A1.PV的值被改为100A2.PV的值被改为200

总结如下:

作用

示例

说明

作为普通变量使用

Ptr = 100;

Ptr的值变成100

作为指针使用

Ptr = & A1.PV;

Ptr = 100;

Ptr指向了A1.PV

A1.PV的值变为100

作为普通数组使用

Ptr[0] = 100;

Ptr[1] = 101;

数组的第0个元素变为100

1个元素变为101

作为指针数组使用

Ptr[0] = &A1.PV;

Ptr[1] = &A2.PV;

Ptr[0] = 100;

Ptr[1] = 200;

 

数组的第0个元素指向A1.PV

1个元素指向A1.PV

A1.PV的值为100

 A2.PV的值为200

下面我们通过一个简单的小例子来说明一下间接变量的使用方法,小例子运行时如下所示:

    当我们分别点击“1号罐”、“2号罐”和“3号罐”按钮时,按钮上方罐的液位、温度和压力数值都显示对应的罐的数据,同时下方的字符串也对应提示相应的罐号。

 

1、  定义数据库点

将导航器切换到数据库页,双击“点组态”选项,进入点组态管理程序,创建如下表所示的点:

点名

类型

初始值

Name1

模拟IO

DESC为:1号罐

Name2

模拟IO

DESC为:2号罐

Name3

模拟IO

DESC为:3号罐

Level1

模拟IO

PV为:60

Level2

模拟IO

PV为:20

Level3

模拟IO

PV为:80

Press1

模拟IO

PV为:1.05

Press2

模拟IO

PV为:1.02

Press3

模拟IO

PV为:1.11

Temp1

模拟IO

PV为:44

Temp2

模拟IO

PV为:38

Temp3

模拟IO

PV为:42

 

2、  定义间接变量

将导航器切换到画面页,双击“变量/间接变量”项,创建如下表所示的间接变量:

点名

类型

PtrName

字符型间接变量

PtrValue

实型间接变量

 

3、  创建画面

将导航器切换到画面页,双击“窗口”项创建一个名为“Draw1”的窗口。在窗口上使用各种绘图工具,绘制如下所示的图形:

       双击液位右侧的文本,给它关联上模拟量输入输出的动画联接,将其和PtrValue[0]关联起来;同样把温度和压力右侧的文本分别和PtrValue[1]PtrValue[2]关联起来。双击下方的文本,给它关联上文本输出的动画联接,把它和PtrName关联起来。同样给罐中的矩形关联一个垂直填充的动画联接,把它和PtrValue[0]关联起来。

 

4、编写脚本

       在导航器的画面页中,展开“窗口/Draw1”项,双击动作栏,在弹出的窗口动作编辑对话框的进入窗口页中输入:

PtrName = &Name1.DESC;

PtrValue[0] = &Level1.PV;

PtrValue[1] = &Temp1.PV;

PtrValue[2] = &Press1.PV;

这样当打开窗口时,间接变量PtrName将指向&Name1.Desc,间接变量PtrValue将作为指针数组使用,其中它的第一个元素指向Level1.PV,第二个元素指向Temp1.PV,第三个元素指向Press1.PV。

 

    双击“1号罐”按钮,给它关联鼠标点击动作,输入脚本如下:

PtrName = &Name1.DESC;

PtrValue[0] = &Level1.PV;

PtrValue[1] = &Temp1.PV;

PtrValue[2] = &Press1.PV;

       脚本和进入窗口的动作相同,这样当我们点击此按钮时,因为进行了间接变量从定向,所以界面将显示一号罐的数据。

 

       同样给“2号罐”按钮关联如下的鼠标点击动作:

PtrName = &Name2.DESC;

PtrValue[0] = &Level2.PV;

PtrValue[1] = &Temp2.PV;

PtrValue[2] = &Press2.PV;

给“3号罐”按钮关联如下的鼠标点击动作:

PtrName = &Name3.DESC;

PtrValue[0] = &Level3.PV;

PtrValue[1] = &Temp3.PV;

PtrValue[2] = &Press3.PV;

5、运行系统,观看结果

    运行整个系统我们可以看到,当我们切换到不同的罐时,界面上就会显示对应罐的数据。通过使用间接变量,我们仅仅使用了一幅图就可以切换显示3个罐的数据,大大节省了工作量。

版权所有:广州粤控自动化工程有限公司 电话:020-88561235,85274572 传真: 020-31309858 E-mail:superdcs@126.com
联系我们设为首页