帮我写一个西门子WINCC VBS脚本
要求如下:
1.当前值-目标值大于80自动选择微调1输出
2.当前值-目标值小于80大于30自动选择微调2输出
3.当前值-目标值小于30且大于10自动选择微调3输出
4.当前值-目标值小于10自动选择参数4输出
5.当前值/目标值×参数1+参数1+参数4 为=微调1
6.当前值/目标值×参数2+参数2+参数4 为=微调2
7.当前值/目标值×参数3+参数3+参数4 为=微调3
8.在WINCC画面上做一个启动按钮1为脚本启动条件,循环执行程序0为脚本停止条件
9.根据条件选择输出,由一个参数到WINCC画面上显示输出结果
以下是基于您的要求编写的西门子WINCC VBS脚本代码:
'Define variables
Dim currentVal, targetVal, param1, param2, param3, param4, outputVal
Dim microAdjust1, microAdjust2, microAdjust3
'Set initial values for variables
currentVal = 0
targetVal = 0
microAdjust1 = 0
microAdjust2 = 0
microAdjust3 = 0
param1 = 0
param2 = 0
param3 = 0
param4 = 0
outputVal = 0
'Loop to continuously execute script until stopped
Do While GetTagBit("启动按钮.Tag") = True
'Read current value and target value from tags
currentVal = GetTagValue("当前值.Tag")
targetVal = GetTagValue("目标值.Tag")
'Calculate output based on conditions
If (currentVal - targetVal) > 80 Then
outputVal = microAdjust1
ElseIf (currentVal - targetVal) < 80 And (currentVal - targetVal) > 30 Then
outputVal = microAdjust2
ElseIf (currentVal - targetVal) < 30 And (currentVal - targetVal) > 10 Then
outputVal = microAdjust3
Else
outputVal = param4
End If
'Calculate micro adjustments
microAdjust1 = (currentVal / targetVal * param1) + param1 + param4
microAdjust2 = (currentVal / targetVal * param2) + param2 + param4
microAdjust3 = (currentVal / targetVal * param3) + param3 + param4
'Output result to tag and display on HMI screen
SetTagValue("输出结果.Tag", outputVal)
SetText("输出文本.文本", "输出结果为:" & outputVal)
Loop
上面的代码假设您已经在WINCC画面上创建了所需的标签(例如“启动按钮.Tag”、“当前值.Tag”、“目标值.Tag”、“输出结果.Tag”)和文本控件(例如“输出文本.文本”)。请注意,您需要将脚本中的标签名称和文本控件名称更改为您在WINCC中使用的实际名称。
此外,请提供“参数1”、“参数2”和“参数3”的实际值,以便可以正确计算微调值。 我怎么读取WINCC输出的启动按钮.Tag”、“当前值.Tag”、“目标值.Tag”、“输出结果.Tag参数1”、“参数2”和“参数3 参数4 这些数值怎么把计算的后的数值 写给WINCC ygk12315 发表于 2023-04-08 13:05
我怎么读取WINCC输出的启动按钮.Tag”、“当前值.Tag ...
您可以使用以下代码从WINCC中读取标签的值并将新值写入标签:
'读取当前值和目标值
currentVal = GetTagValue("当前值.Tag")
targetVal = GetTagValue("目标值.Tag")
'计算输出值
...
'将结果写入输出结果标签
SetTagValue("输出结果.Tag", outputVal)
同样,您也可以使用类似的代码从WINCC中读取参数1、参数2、参数3和参数4的值,并在计算微调值时使用这些值。例如:
'读取参数1、参数2、参数3和参数4的值
param1 = GetTagValue("参数1.Tag")
param2 = GetTagValue("参数2.Tag")
param3 = GetTagValue("参数3.Tag")
param4 = GetTagValue("参数4.Tag")
'计算微调值
microAdjust1 = (currentVal / targetVal * param1) + param1 + param4
microAdjust2 = (currentVal / targetVal * param2) + param2 + param4
microAdjust3 = (currentVal / targetVal * param3) + param3 + param4
然后,使用SetTagValue函数将新的微调值写入相应的标签中:
'将微调值写入标签
SetTagValue("微调1.Tag", microAdjust1)
SetTagValue("微调2.Tag", microAdjust2)
SetTagValue("微调3.Tag", microAdjust3)
请注意,您需要在WINCC中创建所有所需的标签和文本控件,并将标签名称和文本控件名称更改为实际使用的名称。 param1 = GetTagValue(""参数1.Tag""格式 是这么 ygk12315 发表于 2023-04-08 13:16
param1 = GetTagValue(&quot;"参数1.Tag"&quot;格式 是这么 ...
对不起,那是我的错。在VBS脚本中,字符串应该使用双引号进行包裹。正确的写法应该是:param1 = GetTagValue("参数1.Tag")。感谢您的指正,希望这次能够解决您的问题。 1.当前值/目标值×参数1+参数1+参数4 为=微调1
2.当前值/目标值×参数2+参数2+参数4 为=微调2
3.当前值/目标值×参数3+参数3+参数4 为=微调3
4.当前值-目标值大于80自动选择微调1输出
5.当前值-目标值小于80大于30自动选择微调2输出
6.当前值-目标值小于30且大于10自动选择微调3输出
7.当前值-目标值小于10自动选择参数4输出
8.在WINCC画面上做一个启动按钮1为脚本启动条件,循环执行程序0为脚本停止条件
9.输出的计算结果由一条变量显示在WINCC画面上 ygk12315 发表于 2023-04-08 13:44
1.当前值/目标值×参数1+参数1+参数4 为=微调1
2.当前 ...
以下是基于您的要求编写的更改后的西门子WINCC VBS脚本代码:'Define variablesDim currentVal, targetVal, param1, param2, param3, param4, outputValDim microAdjust1, microAdjust2, microAdjust3'Set initial values for variablescurrentVal = 0targetVal = 0microAdjust1 = 0microAdjust2 = 0microAdjust3 = 0param1 = 0param2 = 0param3 = 0param4 = 0outputVal = 0'Loop to continuously execute script until stoppedDo While GetTagBit(&quot;启动按钮.Tag&quot;) = True 'Read current value and target value from tags currentVal = GetTagValue(&quot;当前值.Tag&quot;) targetVal = GetTagValue(&quot;目标值.Tag&quot;) 'Calculate micro adjustments microAdjust1 = (currentVal / targetVal * param1) + param1 + param4 microAdjust2 = (currentVal / targetVal * param2) + param2 + param4 microAdjust3 = (currentVal / targetVal * param3) + param3 + param4 'Calculate output based on conditions If (currentVal - targetVal) &gt; 80 Then outputVal = microAdjust1 ElseIf (currentVal - targetVal) &lt; 80 And (currentVal - targetVal) &gt; 30 Then outputVal = microAdjust2 ElseIf (currentVal - targetVal) &lt; 30 And (currentVal - targetVal) &gt; 10 Then outputVal = microAdjust3 Else outputVal = param4 End If 'Output result to variable and display on HMI outputVal = Round(outputVal, 2) SetTagValue(&quot;计算结果变量.Tag&quot;, outputVal) SetText(&quot;计算结果文本.文本&quot;, &quot;计算结果为:&quot; &amp; outputVal)Loop上面的代码假设您已经在WINCC画面上创建了所需的标签(例如“启动按钮.Tag”、“当前值.Tag”、“目标值.Tag”、“计算结果变量.Tag”)和文本控件(例如“计算结果文本.文本”)。请注意,您需要将脚本中的标签名称和文本控件名称更改为您在WINCC中使用的实际名称。此外,请提供“参数1”、“参数2”和“参数3”的实际值,以便可以正确计算微调值。 '为变量设置初始值
currentVal = 0
targetVal = 0
microAdjust1 = 0
microAdjust2 = 0
microAdjust3 = 0
param1 = 0 '请设置参数1、参数2和参数3的实际值
param2 = 0
param3 = 0
param4 = 0
outputVal = 0
没有理解解释一下 ygk12315 发表于 2023-04-08 13:54
'为变量设置初始值
currentVal = 0
targetVal = 0
mic ...
这段代码是在脚本开始运行时,为各个变量设置起始值。这些变量在后续的运算过程中会被修改。这里列出各个变量的含义:
- currentVal:当前值
- targetVal:目标值
- microAdjust1:微调1输出
- microAdjust2:微调2输出
- microAdjust3:微调3输出
- param1:参数1
- param2:参数2
- param3:参数3
- param4:参数4
- outputVal:输出结果
根据您的需求,您需要将参数1、参数2和参数3的实际值设置为适当的数字。请注意,这些变量的值将在计算中使用,并影响输出结果。
页:
[1]
2