先谢谢大家。
其实不复杂:就是用C动作定义一个按钮的鼠标动作,点击它给某一个变量赋值1,相当于开启连接这个变量的开关。其他先不说,现在就连最基本的置1也没用,相关程序段如下:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#define Tag "HMI-si-semi-auto"
if(GetTagBit(Tag)==0)
SetTagBit(Tag,1);
}
我直接用{SetTagBit("HMI-si-semi-auto",1)}和{SetTagWord("HMI-si-semi-auto",1);}等都试遍了都不行。用直接连接时功能没任何问题,但直接连接处右边选变量时必须在变量表里确定,直接粘贴的没用。我在想此处使用是否也得双击函数,然后在变量处在列表里选择确定?但按“OK”之后就变成这样了:
SetTagBit("HMI-si-semi-auto
",1); //Return-Type: BOOL
",1);直接就到了下一行,改正后还是不行。
这不就是个赋值吗?难道还有什么玄机?我看其他人的项目也是这么弄的,我直接复制粘贴也不行,我初学,全局脚本,项目函数都写了几个都没问题,咋这个这么郁闷呢?请大家帮忙啊!!!
问题补充:
感谢三位朋友的回答,但遗憾的是问题还未解决:
1 对ruixm朋友的回答,我以前是如此做的,但做完后确认,语句就变成如此:
SetTagBit("HMI-si-semi-auto
",1);
编译通不过,改正后无效;我也觉得直接复制粘贴的变量名应该是有用;
2 axg2008朋友:我用WINCC 6.0 SP3 + HOTFIX 2,STEP 7 V5.4,PLCSIM V5.4,在同一机器上进行的模拟连接,WINCC直接连PLCSIM,能正常通信,STEP7里的变动都能正确显示,所以排除通信问题造成的动作失效。另外在真机上试验也是不行,总是直接连接可以,但直接连接要进行一些更为复杂的赋值就不行了,所以此问题必须解决。或者大家还有什么更好的办法能绕过?
3 yanshanshanmai朋友:编译报错的话不能保存,更别说运行了。程序中没有复位的地方,就算有条件也不满足,再说直接连接时按钮赋值功能是可用的,就是脚本不行,郁闷就郁闷在这里!
再次感谢,继续期待大家的帮助!
十分感谢大家的回答,问题最终解决,原因其实很弱智,是因为录入变量时直接复制粘贴的EXCEL,表面上看没问题,但其实变量名最后多了个估计是换行的不可见符号,所以才会出现脚本换行的情况。结果问题直接出在变量表中,这是我不熟造成的,给大家填麻烦了,这下后面的C动作就好说了!再次感谢!
最佳答案
SetTagBit("HMI-si-semi-auto",1);就可以了。
首先你在C动作中插入函数 /内部函数/tag/SetTagBit,然后会跳出对话框,1,点击 值:tag_name 点击右边有选择框,自动跳入变量表选择HMI-si-semi-auto即可;2,点击 值:value,直接输入1即可。就完成了,此时SetTagBit("HMI-si-semi-auto",1);中的"HMI-si-semi-auto"应该是红色。
另外当函数写好,发现变量不对,你也可以直接在变量表中copy变量名过来覆盖HMI-si-semi-auto即可。
提问者对于答案的评价:
非常感谢您的回答,大家共同进步吧!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc278102.html