ygk12315 发表于 2023-4-7 11:33:04

帮我写一个西门子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

chatGPT_小柔 发表于 2023-4-7 11:33:48

以下是一个参考代码:

\'获取当前值和目标值
currentValue = HMIRuntime.Tags(\"CurrentValue\").Read()
targetValue = HMIRuntime.Tags(\"TargetValue\").Read()

\'获取参数值
param1 = HMIRuntime.Tags(\"Parameter1\").Read()
param2 = HMIRuntime.Tags(\"Parameter2\").Read()
param3 = HMIRuntime.Tags(\"Parameter3\").Read()
param4 = HMIRuntime.Tags(\"Parameter4\").Read()

\'计算微调值
adjustment1 = currentvalue / targetValue * param1 + param1 + param4
adjustment2 = currentvalue / targetValue * param2 + param2 + param4
adjustment3 = currentvalue / targetValue * param3 + param3 + param4

\'根据条件选择输出
if currentValue - targetValue > 80 then
    HMIRuntime.Tags(\"Output\").Write(adjustment1)
elseif currentValue - targetValue > 30 and currentValue - targetValue <= 80 then
    HMIRuntime.Tags(\"Output\").Write(adjustment2)
elseif currentValue - targetValue > 10 and currentValue - targetValue <= 30 then
    HMIRuntime.Tags(\"Output\").Write(adjustment3)
elseif currentValue - targetValue <= 10 then
    HMIRuntime.Tags(\"Output\").Write(param4)
end if

请注意,此脚本仅为参考,具体实现可能需要根据您的实际情况进行调整。

ygk12315 发表于 2023-4-8 15:09:19

缺少启动脚本条件

chatGPT_小柔 发表于 2023-4-8 15:10:16

ygk12315 发表于 2023-04-08 15:09
缺少启动脚本条件

您好,确实在我的回答中缺少启动脚本的条件。一般情况下,WINCC VBS脚本可以在以下情况下启动:

1. 页面打开时:在页面的VBScript事件中添加你的脚本代码,然后当该页面被打开时,脚本就会被执行。

2. 值发生变化时:在Tag的VBScript事件中添加你的脚本代码,然后当该Tag的值发生变化时,脚本就会被执行。

3. 定时任务:使用WINCC提供的定时器功能,在定时器事件中添加你的脚本代码,然后根据定时器的配置,脚本会按照设定的时间周期性执行。

您可以根据您的实际需求,选择合适的启动方式来运行脚本。

ygk12315 发表于 2023-4-8 15:15:43

在WINCC画面上做一个启动按钮1为脚本启动条件,循环执行程序0为脚本停止条件

chatGPT_小柔 发表于 2023-4-8 15:16:41

ygk12315 发表于 2023-04-08 15:15
在WINCC画面上做一个启动按钮1为脚本启动条件,循环执 ...

好的,您可以按照以下步骤来实现:

1. 在WINCC画面上添加一个按钮控件,并将其命名为“启动按钮”;
2. 在按钮的点击事件中编写脚本代码,以启动和停止循环执行程序。具体代码如下:

Dim isRunning
isRunning = False

Sub StartProgram()
    isRunning = True
    Do While isRunning
      ' 这里添加你的循环执行程序的代码
      ' 例如:
      ' HMIRuntime.Tags("tag1").Write(1)
      ' Sleep(1000)
      ' HMIRuntime.Tags("tag1").Write(0)
      ' Sleep(1000)
    Loop
End Sub

Sub StopProgram()
    isRunning = False
End Sub

3. 将按钮的OnClick事件与StartProgram()和StopProgram()函数进行绑定,以便在按钮被点击时执行相应的函数。具体绑定方法如下:

- 单击启动按钮,在属性窗格中找到OnClick属性,然后双击其旁边的“=”符号。这将打开VBScript编辑器;
- 在编辑器中输入“StartProgram()”(不包括引号);单击“确定”保存脚本;
- 再次单击启动按钮,在属性窗格中找到OnClick属性,然后双击其旁边的“=”符号。这将再次打开VBScript编辑器;
- 在编辑器中输入“StopProgram()”(不包括引号);单击“确定”保存脚本。

完成上述步骤后,点击按钮后脚本将进入循环执行程序,并且在再次点击按钮之前将不会停止。同时,您可以根据实际情况修改StartProgram()函数中的代码,以适应您的需求。
页: [1]
查看完整版本: 帮我写一个西门子WINCC VBS脚本