大家好!
我想在WinCC中通过对一个变量读取不同的值(现在是0 1 2三个值)输出不同的文字区分它们的状态。
我在内部变量建了一个ZT2变量16位字符集。通过读取变量control_2的值把相应文本显示在输入输出域上(我知道一定有别的办法,但是我只是为了测试这文字是否存到了ZT2当中,所以这段动作也显得不伦不类)。相关C动作如下:
unsigned char control_2=0;
unsigned long state=0;
control_2=GetTagByte("control_2");
if(control_2==0)
{
state="开始";
SetTagDWord("ZT2",state);
state=GetTagDWord("ZT2");
printf("%s!!!\r\n",state);
}
输入输出域变量是ZT2。数据格式是字符串,输出格式*。
现在问题就出现了:我的测试输出是“开始”,但是文本框里竟然是8位数字。
不知道是哪错了。请大家帮忙给看看,先谢谢了。
问题补充:
我其实这么做还有别的原因。就是想把ZT2这个变量读到在线表格上,因为我不能告诉人家0代表开始 1代表结束。我只想让他直接在表格上显示出来。但是在线表格中没能显示出来文字,所以我做这个是为了测试变量ZT2到底有没有存储到“开始”这个文字。
最佳答案
1、比如:新建一个输入/输出域,把对象名字改成 WWW 。
输入/输出域--属性--输出/输入--数据格式是字符串,输出格式*
输入/输出域--属性--输出/输入--输出值--右键 选择 动态对话框
公式用以下方法做:
表达式/公式 : 选择变量 “control_2”
数据类型 : 选“模拟量(A)”
有效范围 : 中右键新建几个值,
等于 : 对应填写 0 ,1 ,2 。。。其他
文本 : 对应填 开始,结束,故障。。。等等
2、全局脚本或者公共画面中编写VBS脚本:
HMIRuntime.Tags("ZT2").Write ScreenItems.Item("WWW").OUTPUTVALUE
3、建一个内部变量建了一个ZT2变量16位字符集,ZT2里存放的就是文字了。
提问者对于答案的评价:
您的回答对我帮助很大,谢谢。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc267509.html