1 分别采集了从站1的数据a1,b1,c1,d1,e1;从站2的数据a2,b2,c2,d2,e2..........以此类推,共30个从站,且a1,a2......数据类型都相同,我想在Wincc中建立一个赋值功能,一个内部变量n,如当n=1时,内部变量a=a1,b=b1......如果用C代码实现以上功能,有什么简洁的方法呢,我想的是用case语句但也要很长,有什么语句能实现a=an吗?
2 我想让内部变量a(无符号八位数)加上1后赋值给内部变量b(无符号八位数),应该怎么实现呢?SetTagByte能否实现呢?
麻烦各位高手指点
问题补充:
在1中,不仅仅是n=1情况,还有n=1,2,3.....的情况,具体是哪种情况由操作者来决定
最佳答案
2. setTagByte("b",getTagByte("a")+1)
1.定义一个结构元素分别为a,b,c,d,e的结构,然后建立数据类型为该结构的结构变量30个,当n=1-30中的任意值时,用以下代码可为任一个从站赋值到所定义的1-30的内部结构变量,同时将这30从站的变量也定义为与上述内部变量具有相同结构的外部变量。如果该数据类型为byte的话,假设内部结构变量都有一致的前缀如st1,st2,...st30;外部结构变量的前缀为plcSt1,plcSt2,...plcSt30:
dim tagName(30),objTag(30),i,plcTagName(30),objPlcTag(30)
for i=0 to 29
tagName(i)="st" & i+1
set objTag(i)=hmiRumtime.tag(tagName(i))
plcTagName(i)="plcSt" & i+1
set objPlcTag(i)=hmiRumtime.tag(plcTagName(i))
objTag(i).value=objPlcTag(i).read
objTag(i).value.write
next
上述代码针对的是所有30各从站的采集数据的赋值,如果仅仅是针对任意个从站的话,可不要循环语句,将i作为从站号即可。上述代码用VBS脚本写的,也可以根据该原理采用C脚本完成
提问者对于答案的评价:
恩 非常感谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc277432.html