先说一下大概的情况:
因为数据转换问题,WINCC读取的1200时间变量不符合我们的要求,我们希望用VBS脚本或者C脚本来转换一下。
我们打算在WINCC上设定24小时制时间,来读取/写入相应的1200地址。
1200的地址格式是DW,我们参考了网上的经验,在WINCC中把DW转换成了Unsigned-DW。
由于读取的数据是“毫秒”级别,我们又通过比例转换成了“秒”级别的。
但是这样也出现了相应的问题,就是我们在WINCC上读取/写入的时间全部都是用秒来计算和显示的。
比如我在1200上写的00:10:00,那么WINCC上就显示为600;在1200上写1:00:00,那么WINCC上就显示为3600。这样对于运行人员来说换算起来极其麻烦且很容易出问题。所以我们希望能通过脚本来实现“数据表现形式的转换”。
我的初步设想是通过VBS脚本分别做一个“输入”与“输出”脚本。“输入”能把10:00:00转化为36000秒;“输出”能把36000秒转化为10:00:00。
但是因为我对于脚本编写十分不精通,所以即使查了很多资料,也只能写出来一部分。
1200变量的写入与读取都是同一个地址
一、输出脚本:
Dim mytg(5)
mytag 0=hmiruntime.tags("1200变量").read
mytag 1=Cint("mytag 0"/3600) 小时
mytag 2=Cint("mytag 0"-"mytag 1"*3600)/60 分钟
mytag 3="mytag 0"-"mytag 1"*3600-"mytag2"*60 秒
然后接下来就不知道怎么编写了,我希望的表现形式是:“mytag 1”:“mytag 2”:“mytag 3”,个人也建立了一个“内部变量”用来存储,但是不知道怎么用。。。
二、输入脚本:
Dim mytag(5)
怎么读取那个“mytag 1”:“mytag 2”:“mytag 3”也完全没有头绪。先用“读取变量”来表示
mytag 1=Cint(“读取变量”/10000)
mytag 2=Cint(“读取变量”-(“mytag 1”*10000)/100)
mytag 3="读取变量" - ("mytag 1"*10000)- ("mytag 2"*100)
mytag 0=(“mytag 1”*3600)+(“mytag 2”*60)+“mytag 3”
然后接下来怎写入“1200变量”也是完全没有头绪了。
真心希望各位大大们能给一些建议,若是能提供其他的方案或是补足我写的脚本,真的是万分感谢。