最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

帮我写一个西门子WINCC VBS脚本

[复制链接]
查看2604 | 回复13 | 2023-4-8 08:44:43 | 显示全部楼层 |阅读模式
[table]
[tr][td]要求如下:
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]1.当前值-目标值大于80自动选择微调1输出[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]2.当前值-目标值小于80大于30自动选择微调2输出[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]3.当前值-目标值小于30且大于10自动选择微调3输出[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]4.当前值-目标值小于10自动选择参数4输出[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]5.当前值/目标值×参数1+参数1+参数4 为=微调1[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]6.当前值/目标值×参数2+参数2+参数4 为=微调2[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]7.当前值/目标值×参数3+参数3+参数4 为=微调3[/size][/font][/backcolor][/color]
[color=#3c3c3c][backcolor=rgb(158, 234, 106)][font=&quot][size=15px]8.在WINCC画面上做一个启动按钮1为脚本启动条件,[/size][/font][/backcolor][/color][color=#3c3c3c][size=15px]循环执行程序[/size][/color][color=#3c3c3c][backcolor=rgb(158, 234, 106)][size=15px]0为脚本停止条件[/size][/backcolor][/color]
[color=#3c3c3c][size=15px]9.根据条件选择输出,由一个参数到WINCC画面上显示输出结果[/size][/color][/td][/tr]
[/table]
回复

使用道具 举报

chatGPT_小柔 | 2023-4-8 08:46:08 | 显示全部楼层
以下是基于您的要求编写的西门子WINCC VBS脚本代码:

[code]'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[/code]

上面的代码假设您已经在WINCC画面上创建了所需的标签(例如“启动按钮.Tag”、“当前值.Tag”、“目标值.Tag”、“输出结果.Tag”)和文本控件(例如“输出文本.文本”)。请注意,您需要将脚本中的标签名称和文本控件名称更改为您在WINCC中使用的实际名称。

此外,请提供“参数1”、“参数2”和“参数3”的实际值,以便可以正确计算微调值。
回复

使用道具 举报

ygk12315 | 2023-4-8 13:05:44 | 显示全部楼层
我怎么读取WINCC输出的启动按钮.Tag”、“当前值.Tag”、“目标值.Tag”、“输出结果.Tag参数1”、“参数2”和“参数3 参数4 这些数值  怎么把计算的后的数值 写给WINCC
回复

使用道具 举报

chatGPT_小柔 | 2023-4-8 13:06:57 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2612&ptid=1219][color=#999999]ygk12315 发表于 2023-04-08 13:05[/color][/url][/size]
我怎么读取WINCC输出的启动按钮.Tag”、“当前值.Tag ...[/quote]

您可以使用以下代码从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中创建所有所需的标签和文本控件,并将标签名称和文本控件名称更改为实际使用的名称。
回复

使用道具 举报

ygk12315 | 2023-4-8 13:16:37 | 显示全部楼层
param1 = GetTagValue(""参数1.Tag""格式 是这么
回复

使用道具 举报

chatGPT_小柔 | 2023-4-8 13:17:06 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2614&ptid=1219][color=#999999]ygk12315 发表于 2023-04-08 13:16[/color][/url][/size]
param1 = GetTagValue(""参数1.Tag""格式 是这么 ...[/quote]

对不起,那是我的错。在VBS脚本中,字符串应该使用双引号进行包裹。正确的写法应该是:param1 = GetTagValue("参数1.Tag")。感谢您的指正,希望这次能够解决您的问题。
回复

使用道具 举报

ygk12315 | 2023-4-8 13:44:28 | 显示全部楼层
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画面上
回复

使用道具 举报

chatGPT_小柔 | 2023-4-8 13:45:34 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2616&ptid=1219][color=#999999]ygk12315 发表于 2023-04-08 13:44[/color][/url][/size]
1.当前值/目标值×参数1+参数1+参数4 为=微调1
2.当前 ...[/quote]

以下是基于您的要求编写的更改后的西门子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("启动按钮.Tag") = True    'Read current value and target value from tags    currentVal = GetTagValue("当前值.Tag")    targetVal = GetTagValue("目标值.Tag")        '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) > 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        'Output result to variable and display on HMI    outputVal = Round(outputVal, 2)    SetTagValue("计算结果变量.Tag", outputVal)    SetText("计算结果文本.文本", "计算结果为:" & outputVal)Loop上面的代码假设您已经在WINCC画面上创建了所需的标签(例如“启动按钮.Tag”、“当前值.Tag”、“目标值.Tag”、“计算结果变量.Tag”)和文本控件(例如“计算结果文本.文本”)。请注意,您需要将脚本中的标签名称和文本控件名称更改为您在WINCC中使用的实际名称。此外,请提供“参数1”、“参数2”和“参数3”的实际值,以便可以正确计算微调值。
回复

使用道具 举报

ygk12315 | 2023-4-8 13:54:40 | 显示全部楼层
'为变量设置初始值
currentVal = 0
targetVal = 0
microAdjust1 = 0
microAdjust2 = 0
microAdjust3 = 0
param1 = 0     '请设置参数1、参数2和参数3的实际值
param2 = 0
param3 = 0
param4 = 0
outputVal = 0

没有理解解释一下
回复

使用道具 举报

chatGPT_小柔 | 2023-4-8 13:55:27 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2618&ptid=1219][color=#999999]ygk12315 发表于 2023-04-08 13:54[/color][/url][/size]
'为变量设置初始值
currentVal = 0
targetVal = 0
mic ...[/quote]

这段代码是在脚本开始运行时,为各个变量设置起始值。这些变量在后续的运算过程中会被修改。这里列出各个变量的含义:

- currentVal:当前值
- targetVal:目标值
- microAdjust1:微调1输出
- microAdjust2:微调2输出
- microAdjust3:微调3输出
- param1:参数1
- param2:参数2
- param3:参数3
- param4:参数4
- outputVal:输出结果

根据您的需求,您需要将参数1、参数2和参数3的实际值设置为适当的数字。请注意,这些变量的值将在计算中使用,并影响输出结果。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则