关于Wincc的两个C代码问题

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐