wincc中通过“规划变量”来提高组态“效率”
(2013-03-02 13:21:09)
标签:
工控老鬼工业自动化深圳市启程plc培训西门子plc西门子plc培训 |
分类: WinCC |
1结构变量
首先我们要避免直接取DI、M等PLC区域的数据。这样的做法会导致,如果PLC方面信号有调整,组态变量的地址势必也要调整。使用一个DB(数据块)作为Wincc获取变量的中介就可以避免上述情况。这样在较大的项目中可以保证组态开发人员和PLC编程人员同时工作,不必考虑地址的问题,最后按照规划好标签和地址的关系,PLC程序只要将数据赋到DB或从DB取数据连接到自己的变量就可以了。这个数据块起到隔离的作用,也好比电气柜中的端子排。
其次也尽量不要建立单个的布尔型变量,应为Wincc和PLC通讯时,一个布尔变量也占用一个字节,不如把相关的布尔量组合在一个字节内,建立一个变量。例如对于设备的状态可以做一个Stat的字节变量:
Stat |
Bit 0 |
电源合闸(具备启动条件) |
|
Bit 1 |
启动(变频器使能) |
|
Bit 2 |
|
|
bit 3 |
正向运行 |
|
bit 4 |
反向运行 |
|
bit 5 |
故障指示 |
|
bit 6 |
|
|
bit 7 |
|
下面是一个针对PI调节器的结构变量的例子:
结构名 |
成员变量 |
数据类型 |
偏移地址 |
注释 |
PID_C |
MAN_ON |
BIT |
0.0 |
手动调节 |
|
RANGE |
FLOAT |
2 |
仪表量程 |
|
PI |
FLOAT |
6 |
放大倍数 |
|
TI |
DWORD |
10 |
积分时间 |
|
MAN |
FLOAT |
14 |
手动设定值 |
|
MV_IN |
FLOAT |
18 |
阀门开度反馈 |
|
SP_INT |
FLOAT |
22 |
过程设定值 |
|
PV_IN |
FLOAT |
26 |
过程实际值 |
2
变量替换
对于脚本就不那么简单了。在Wincc 5.0之后的版本中,当我们编辑一个C动作的时候会发现脚本编辑器中会自动生成如下代码:
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
其实这就是Wincc为我们提供的提提换变量而特意准备的。例如我们有四个活套。对于1号活套当检测到有钢时由“01L.Spare_1”变量触发变换颜色显示;当活套起套时由“01L.Stat”变量触发改变活套Y轴位置显示。其他活套仅仅是将“01L”用“02L”、“03L”、“04L”替换。通常的方法是先写好1号活套,复制成四个,再逐一修改脚本和触发条件中的变量。但如果我们在脚本中不直接使用变量,而采用下面的形式定义:
#define
#define
// WINCC:TAGNAME_SECTION_END
3项目函数
有时编辑一些对象时会发现其脚本程序非常类似,这时最好将这些脚本程序写成项目函数,在需要时调用。例如,为用颜色来反映设备运行状态,就可以编写SetColorStatus函数:
#include
long
{
switch (status)
}
这个函数在应用的时候要指定一个表示状态的标签(这个标签要按照表一所示的变量来规划),比如编辑对象颜色属性(background color)的脚本:
return
就可以根据设备当前的状态显示不通的颜色了。
工控老鬼技术Blog:http://blog.sina.com.cn/wincchome
启程培训中心
E-mail:gongkong8@foxmail.com
QQ空间
工控老鬼执着坚守,坚韧笃定,专注于工业自动化技术的传播和推广以及