想写一个自定义控制阀门的函数,要求如下:
有一组阀门通用一个操作界面,要求点动开或关,开度模拟量输入。
变量如下:驱动开fa1_on 地址Q 33.1 驱动关fa1_off地址Q 33.0 模拟量KD1
要求:点击一组阀门其中任何一个阀门,就会弹出通用操作界面,界面的变量、画面名称等等和阀门一一对应,
只要在鼠标按左键动作里产生类似这样的语句
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetSwitchOpen("fa1_on", "1号阀门开", lpszPictureName, " ", 'n', 'Y', 0);
}
其中SwitchOpen就是要的自定义函数。
望各位大侠赐教 !!
最佳答案
定义所有函数都可使用的全局 C 变量
隐藏订货号显示订货号订货号:
6AV637.. WINCC SIMATIC HMI Software
6AV6371-2.. SIMATIC WinCC V7.0
6AV638.. WINCC SIMATIC HMI Software 2
6AV6381-2.. SIMATIC WinCC V7.0
6ES7650.. SIMATIC PCS 7 PC
6ES7658.. SIMATIC PCS7 SW-Packages (BLE, ES, OS)
问题:
如何定义所有函数都可使用的全局 C 变量?
解答:
请执行如下步骤:
创建一个新项目函数,例如:
void dummy()
{
}
现在,如果在一个伪函数中创建一个变量,例如:
void dummy()
{
int a = 0;
}
则只有该伪函数可使用该变量。
但是,如果要在整个 C 程序中都可使用该变量,则只需在该函数范围之外声明该变量,例如:
int a = 0;
void dummy()
{
}
现在,(所有函数、动作、对象动作、项目函数、标准函数) 可在整个程序范围内在运行时使用该变量 a。
例如,现在为了能够在对象上的动作中使用变量 a,则只需声明为外部变量。这表示会通知编译器,它不必自己创建该变量,而是在运行时的另一个点会创建它。变量 a 在计算机中仅是局部存在的。在一个多计算环境中,其它计算机不能识别该变量。这种情形下,只能借助于内部 WinCC 变量,将它们作为数据交换区。
实例:
void OnPropertyChange(..........) {
Extern int a;
// 变量没有在栈中创建,而仅是声明
// 在其他地方已被实例化.
a += 1;
// 因此不可在这里初始化。
}
如果现在访问该变量,则公共变量 a 在整个程序范围内被改变。
如果在项目函数内声明变量,则该变量存在于整个项目中。
如果在标准函数中声明该变量,则该变量存在于所有项目中。
注意事项:
一个函数及通过它定义的全局变量最大可用内存为 64 KB。
如果修改了全局 C 变量,则使用该 C 变量的所有函数 (项目函数、全局动作和画面中的对象动作) 都会被重新编译。
对项目函数和标准函数,可通过全局脚本编辑器的“Compile all functions”函数实现。为了能够一起处理画面中所有对象动作,可使用 WinCC 插件“PictureScriptRebuild”:
插件“PictureScriptRebuild”链接
有关该主题的信息可在 WinCC 信息系统中搜索术语“global tags”。
有关该主题的更多注意事项参见条目号 1405195。
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=71096
上那儿去瞧瞧看看,很精彩!
提问者对于答案的评价:
谢谢!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274098.html