我要当反贼 发表于 2023-4-10 13:59:55

WINCC VBS脚本

本帖最后由 我要当反贼 于 2023-4-10 14:19 编辑

使用WINCC vbs 写一段程序,要求如下:
1.WINCC版本WINCC7.4SP1。
2.使用一个按钮控制一个二进制变量tag1,按下按钮时,弹出一个对话框”是否确认此操作,有’是否‘两个选项,点击’是‘则二进制变量tag1置1,同时对话框关闭,点’否‘则tag1不动作,对话框关闭。再次按下这个按钮时,继续弹出一个对话框”是否确认此操作,点击’是‘则二进制变量tag1置0,同时对话框关闭,点’否‘则tag1不动作。

chatGPT_小智 发表于 2023-4-10 14:00:13

下面是一个简单的WINCC VBS脚本实现,可以满足您的需求:

Sub Button1_Click()
   Dim result
   result = MsgBox("是否确认此操作?", vbYesNo, "提示")
   If result = vbYes Then
      SetTagVal "tag1", 1
   End If
End Sub

在WINCC的按钮控件中绑定Button1_Click这个Sub即可。当用户点击按钮时,会弹出一个提示框,询问是否进行操作,如果用户选择“是”,则将tag1的值设置为1,否则不做任何操作。

我要当反贼 发表于 2023-4-10 14:08:21

Sub Button1_Click()
   Dim result
   result = MsgBox("是否确认此操作?", vbYesNo, "提示")
   If result = vbYes Then
      SetTagVal "tag1", 1
   End If
End Sub
请问这段程序有什么错误

chatGPT_小智 发表于 2023-4-10 14:08:39

我要当反贼 发表于 2023-04-10 14:08
Sub Button1_Click()
   Dim result
   result = MsgB ...

根据该段程序的内容,我并没有看出具体的错误。但是,需要注意以下几点:

1. 程序中引号的类型必须是双引号,而不是中文引号或单引号。
2. 所有WINCC VBS脚本都必须放在“#language “vbscript””和“#end language”之间。

如果您使用的是WINCC7.4SP12版本,且程序已经按照上述要求进行了修改,那么这个程序应该可以正常运行。

我要当反贼 发表于 2023-4-10 14:19:37

使用WINCC vbs 写一段程序,要求如下:
1.WINCC版本WINCC7.4SP1。
2.使用一个按钮控制一个二进制变量tag1,按下按钮时,弹出一个对话框”是否确认此操作,有’是否‘两个选项,点击’是‘则二进制变量tag1置1,同时对话框关闭,点’否‘则tag1不动作,对话框关闭。再次按下这个按钮时,继续弹出一个对话框”是否确认此操作,点击’是‘则二进制变量tag1置0,同时对话框关闭,点’否‘则tag1不动作。

chatGPT_小智 发表于 2023-4-10 14:20:14

我要当反贼 发表于 2023-04-10 14:19
使用WINCC vbs 写一段程序,要求如下:
1.WINCC版本WIN ...

下面是一个可以实现您要求的WINCC VBS脚本:

#language "vbscript"
Dim flag
flag = False '初始值为false,表示tag1为0

Sub Button1_Click()
    Dim result
    If flag Then
      result = MsgBox("是否确认此操作?", vbYesNo, "提示")
      If result = vbYes Then
            SetTagVal "tag1", 0
            flag = False '改变标志位的值
      End If
    Else
      result = MsgBox("是否确认此操作?", vbYesNo, "提示")
      If result = vbYes Then
            SetTagVal "tag1", 1
            flag = True '改变标志位的值
      End If
    End If
End Sub
#end language

该程序使用了一个标志位flag来记录当前tag1的值。当用户点击按钮时,首先根据flag的值确定弹出的提示框内容(tag1为0则提示“是否设置tag1为1”,tag1为1则提示“是否设置tag1为0”)。然后根据用户的选择来设置tag1的值,并改变标志位flag的值。如果用户选择“否”,则不做任何操作。

我要当反贼 发表于 2023-4-10 14:25:00

Sub OnClick(ByVal Item)
#language ”vbscript”
Dim flag
flag = False '初始值为false,表示tag1为0
Sub Button1_Click()
    Dim result
    If flag Then
      result = MsgBox(”是否确认此操作?”, vbYesNo, ”提示”)
      If result = vbYes Then
            SetTagVal ”tag1”, 0
            flag = False '改变标志位的值
      End If
    Else
      result = MsgBox(”是否确认此操作?”;, vbYesNo, ”提示”)
      If result = vbYes Then
            SetTagVal ”tag1”, 1
            flag = True '改变标志位的值
      End If
    End If
End Sub
#end language
End Sub
这段程序有什么错误?

chatGPT_小智 发表于 2023-4-10 14:25:39

我要当反贼 发表于 2023-04-10 14:25
Sub OnClick(ByVal Item)
#language ”vbscript”
Dim ...

根据这个程序的内容,我发现了以下几个错误:

1. 程序中引号的类型必须是双引号,而不是单引号。
2. 程序中的分号(;)应该是英文逗号(,),因为分号不是合法的VBS语法。
3. OnClick子过程的名称应该是Button1_OnClick,而不是OnClick。

下面是修改后的代码:

#language "vbscript"
Dim flag
flag = False '初始值为false,表示tag1为0

Sub Button1_OnClick()
   Dim result
   If flag Then
       result = MsgBox("是否确认此操作?", vbYesNo, "提示")
       If result = vbYes Then
         SetTagVal "tag1", 0
         flag = False '改变标志位的值
       End If
   Else
       result = MsgBox("是否确认此操作?", vbYesNo, "提示")
       If result = vbYes Then
         SetTagVal "tag1", 1
         flag = True '改变标志位的值
       End If
   End If
End Sub
#end language

请注意,在WINCC VBS脚本中使用正确的语法和标点符号非常重要。

我要当反贼 发表于 2023-4-10 14:34:40

#language "vbscript"
Dim flag
flag = False '初始值为false,表示tag1为0

Sub Button1_OnClick()
   Dim result
   If flag Then
       result = MsgBox("是否确认此操作?", vbYesNo, "提示")
       If result = vbYes Then
         SetTagVal "tag1", 0
         flag = False '改变标志位的值
       End If
   Else
       result = MsgBox("是否确认此操作?", vbYesNo, "提示")
       If result = vbYes Then
         SetTagVal "tag1", 1
         flag = True '改变标志位的值
       End If
   End If
End Sub
#end language
报错:缺少语句(5)#language "vbscript"

chatGPT_小智 发表于 2023-4-10 14:35:01

我要当反贼 发表于 2023-04-10 14:34
#language "vbscript"
Dim flag
flag = False '初始值 ...

根据这个错误提示,您的WINCC VBS脚本中缺少了一部分代码或者某些语句书写不正确。可能是因为#end language所在的行数有误,导致程序无法正常结束。请确认代码格式是否正确并检查该部分代码与其它部分的对应关系。也可以将该部分代码以及完整的WINCC VBS脚本代码贴出来,以便更好地排查问题。
页: [1] 2 3
查看完整版本: WINCC VBS脚本