现在做个项目,用到9个仪表与WINCC进行串口通信,把数据接收过来之后,只会把数据显示在静态文本里,我想把9个数据归档,怎样才能把静态文本转化成内部变量,让数据归档?
程序如下:Dim shuru '定义变量
Dim val1
Dim val2
Dim val3
Dim val4
Dim val5
Dim val6
Dim val7
Dim val8
Dim val9
Dim MSComm1
Dim zjzhi
Set MSComm1=HMIRuntime.Screens("主画面").ScreenItems("控件2")
Set val1=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本1")
Set val2=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本2")
Set val3=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本10")
Set val4=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本5")
Set val5=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本6")
Set val6=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本7")
Set val7=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本8")
Set val8=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本9")
Set val9=HMIRuntime.Screens("主画面").ScreenItems.Item("静态文本3")
Set zjzhi=HMIRuntime.Tags("NewTag_2")
zjzhi.Read '读这个变量的数值
shuru=MSComm1.Input '接收的数据放到shuru这个变量里
If zjzhi.Value=1 Then '如果变量的数值为1,即执行后面的语句
If Len(shuru)>3 Then '接收的数据长度大于3,
val1.Text=Mid(shuru,2,7) '即把数值放到变量VAL1里
End If
End If
If zjzhi.Value=2 Then
If Len(shuru)>3 Then
val2.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=3 Then
If Len(shuru)>3 Then
val3.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=4 Then
If Len(shuru)>3 Then
val4.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=5 Then
If Len(shuru)>3 Then
val5.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=6 Then
If Len(shuru)>3 Then
val6.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=7 Then
If Len(shuru)>3 Then
val7.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=8 Then
If Len(shuru)>3 Then
val8.Text=Mid(shuru,2,7)
End If
End If
If zjzhi.Value=9 Then
If Len(shuru)>3 Then
val9.Text=Mid(shuru,2,7)
End If
End If
希望高手指点下,怎样把接收的值归档。接收到的值应该是字符串(值如:+001.2,数据处理时也可把正负号去掉),归档的好像应该是数值,这个怎么转换?
问题补充:
飞扬的雨滴,你好,请问字符串能归档吗?好像只有数值才能归档(WinCC Online Table Control)吧.望赐教
最佳答案
其实这个问题很简单,将字符值强制转换后赋值给内部变量(32位浮点)就行了
HMIRuntime.Tags("内部变量").Write csng(Mid(shuru,2,7))
提问者对于答案的评价:
xie xie!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271215.html