//共4个PLC外部变量,都是int型。当按钮按下时,将其中的2个移动到另外2个位置。
1、在项目函数中建立一个MOV函数:
#pragma option(mbcs)
Void MOV(int a,int b,int a1,int b1)////////将a1、b1分别移动到a、b
{
int mm,nn;
mm=GetTagWord("a1");
nn=GetTagWord("b1");
SetTagWord("a",mm);
SetTagWord("b",nn);
}
2、在按钮按下的C脚本中编写程序
#include"apdefap.h"
void OnLButtonDown(....)//将wendua,wendub分别移动到wenduA,wenduB
{
int wenduA,wenduB,wena,wendub;//这4个都是wincc的外部变量名。
MOV(wenduA,wenduB,wena,wendub);
}
3、在计算机的属性里,勾选了全局脚本运行系统。
两边都编译通过了,但是检测数据没MOV成功。
请问是哪儿的原因?是不是全局脚本还需要去设定一个什么定时或动作激活运行?还是赋值方式错误?有这方面的基础教材吗?
我这只是按钮动作的函数,不需要周期运行。
-----很明显温度是实数,不是word。费劲巴拉的,直接用vbs:
hmiruntime.tags("wenduA").write hmiruntime.tags("wendua").read
hmiruntime.tags("wenduB").write hmiruntime.tags("wendub").read
两句话搞定了。-
-------楼主C语言基础咋样?参数传递错的一塌糊涂。---
------真细心!赞!
不过,我这只是举例。
在我实际的编程里,变量又长又丑,加上还是3个传给3个,怕大家看起来吃力。所以,我这里就简化了下,方便大家查看。
感觉是楼下的说的参数传递的问题,是吗?
--------确实是整数。
只要能用,倒是不怕麻烦的。
您说的VBS,唉,我还没使用过。还是用C吧,不怕麻烦。
给我具体讲讲吧?倒腾了大半天了,还没成功。
------------我这个赋值参数有大概一千个,一个个地赋值就有大概一千行,代码都超限了。
所以,想设计个函数,一行就可以赋值几个,比如3个,那样代码就不超限了。
我这样建立项目函数的过程是对的吗?
---------主要看变量名,如果是有规律的,用循环语句;如果没规律,用数组,再用循环。
就是先将乱七八糟的变量名,用数组存起来。
------你读写的变量多了,一个个的读写,你的电脑就要累死了!
c用SetTagMultiWait和GetTagMultiWait
vbs就用组。
-------我还是想把这个项目函数的问题解决掉,换了个思路,将外部变量名称直接传给函数,但是脚本里却出现编译错误,这是哪儿错了?
我定义了一个项目函数,这个函数就是专门用来mov的,将三个变量mov到另外三个变量中。