| 作者 | 主题 |
|---|---|
|
城外月光 游民 经验值:65 发帖数:13 精华帖:0 |
楼主
主题:如何实现在WINCC上让多个模拟量循环显示
诚心请教论坛高手,我想在WINCC界面里实现10个模拟量轮流显示,同时在该模拟量显示时与之相关的该模拟量编码一起显示,也就是1号模拟量=**,2号模拟量=**,3号模拟量**,等等轮流在一个位置显示,可以一秒或更短时间变换一次,也可以一个循环周期后休息几十秒,如何用VBS或C实现
|
|
zhangli0 版主 经验值:48087 发帖数:17127 精华帖:63 |
5楼
主题:回复:如何实现在WINCC上让多个模拟量循环显示
上面的结果可能存在更新周期有误差造成显示有点区别我用文本有改了一个:
文本的字体用vbs脚本做: Function Text_Trigger(ByVal Item) Dim tag(10) Dim group1 Set group1=HMIRuntime.Tags.CreateTagSet group1.add"data"'整数判断应该显示哪个数值 group1.add"data_1" group1.add"data_2" group1.add"data_3" group1.add"data_4" group1.add"data_5" group1.add"data_6" group1.add"data_7" group1.add"data_8" group1.add"data_9" group1.add"data_10" group1.read tag(0)=group1("data").value tag(1)=group1("data_1").value tag(2)=group1("data_2").value tag(3)=group1("data_3").value tag(4)=group1("data_4").value tag(5)=group1("data_5").value tag(6)=group1("data_6").value tag(7)=group1("data_7").value tag(8)=group1("data_8").value tag(9)=group1("data_9").value tag(10)=group1("data_10").value Select Case tag(0) Case 1 Text_Trigger="1号模拟量="&tag(1) Case 2 Text_Trigger="2号模拟量="&tag(2) Case 3 Text_Trigger="3号模拟量="&tag(3) Case 4 Text_Trigger="4号模拟量="&tag(4) Case 5 Text_Trigger="5号模拟量="&tag(5) Case 6 Text_Trigger="6号模拟量="&tag(6) Case 7 Text_Trigger="7号模拟量="&tag(7) Case 8 Text_Trigger="8号模拟量="&tag(8) Case 9 Text_Trigger="9号模拟量="&tag(9) Case 10 Text_Trigger="10号模拟量="&tag(10) End select End Function 效果图 ![]()
活到老,学到老!为了生活学习吧!
|
|
万泉河 至圣 经验值:29190 发帖数:10900 精华帖:131 |
7楼
主题:回复:如何实现在WINCC上让多个模拟量循环显示
跟zhangli0纠结半天,俩人的意图互相不理解。
所以我自己做了一个。 按照我说的,画面加一个静态文本,然后在文本属性中增加脚本就可以了: Function Text_Trigger(Byval Item) ' 'Dim TagName(10) 'TagName(1)=HMIRuntime.Tags("A_1").Name 'TagName(2)=HMIRuntime.Tags("A_2").Name 'TagName(3)=HMIRuntime.Tags("A_3").Name 'TagName(4)=HMIRuntime.Tags("A_4").Name 'TagName(5)=HMIRuntime.Tags("A_5").Name 'TagName(6)=HMIRuntime.Tags("A_6").Name 'TagName(7)=HMIRuntime.Tags("A_7").Name 'TagName(8)=HMIRuntime.Tags("A_8").Name 'TagName(9)=HMIRuntime.Tags("A_9").Name 'TagName(10)=HMIRuntime.Tags("A_10").Name '变量列表 Dim list list="0,A_1,A_2,A_3,A_4,A_5,A_6,A_7,A_8,A_9,A_10" Dim TagName TagName=Split(list,",") Dim S '由当前的秒值得到循环数1-10 S=(Second(Now)/3 Mod UBound(TagName)) +1 Dim text text=TagName(S) & " : " & HMIRuntime.Tags(TagName(S)).Read text=text& "--" & Second(Now) Text_Trigger=text End Function 然后运行的结果如图: ![]() 下部的10个IO域仅仅用于显示和修改变量的值。 有人能看懂前面注释那段脚本的用意么? 我把这段话题也整理为文章,发表在 QQ空间日志,地址: http://user.qzone.qq.com/178616417/blog/1377761442 里面我的问题有答案。
微信公众号:PLC标准化编程,ZHO6371995
|
|
迷失中原 侠圣 经验值:2814 发帖数:466 精华帖:5 |
13楼
主题:回复:如何实现在WINCC上让多个模拟量循环显示
建议还是用结构变量吧,这样的效率是最高的!假设显示的变量分别为tag1、tag2、tag3……tag100。下面程序可1S执行一次,没有测试,但是应该不成问题的!下面的程序是显示100个变量的数值。
Char st_text[64]; static Int id; if(id>100) id=0; esle id=id+1; sprintf(st_text,"tag%d",id); return GetTagFloat(st_text);
生命不息,奋斗不止!
|