wincc
在wincc7.4中给单击按钮写一个vbs脚本,要求如下:1.此脚本中包含一个变量tag1.2.单击按钮时弹出一个窗口,向用户提示内容:是否确定此操作,用户点击是则变量tag1置位1秒,一秒后自动复位。同时该弹窗关闭,用户点击否则不进行任何操作,关闭弹窗.
下面是一个示例vbs脚本,可以实现您的要求:
'定义变量tag1
Dim tag1
tag1 = False
'弹窗询问是否确定操作
If MsgBox("是否确定此操作?", vbYesNo) = vbYes Then
'置位tag1
tag1 = True
'延时1秒
WScript.Sleep 1000
'复位tag1
tag1 = False
End If
接下来将上述代码保存为一个.vbs文件,比如命名为“button_click.vbs”。然后在WinCC中创建一个按钮控件,点击该按钮时执行上述vbs脚本:
1. 打开WinCC,在图库中选择“控件”分类,找到“按钮”控件并拖放到绘制区域;
2. 右键单击按钮控件,选择“属性”;
3. 在“动作”选项卡中,选择“单击”事件,在执行内容中选择“运行程序文件”;
4. 点击“浏览”按钮,选择刚才保存的vbs文件“button_click.vbs”,点击确定即可。
这样,当用户单击按钮时,就会弹出询问框,用户点击“是”则tag1会被置位一秒钟并自动复位,点击“否”则不做任何操作。 这个变量是读取的PLC中的变量 我要当反贼 发表于 2023-04-11 12:49
这个变量是读取的普PLC中的变量
如果要在WinCC中读取PLC中的变量,可以使用WinCC提供的API函数来实现。下面是一个示例vbs脚本,可以实现您的要求:
'创建WinCC API对象
Dim objWinCC
Set objWinCC = CreateObject("WinCC-Runtime-Project")
'连接到当前运行中的WinCC项目
objWinCC.Connect "", "WinCCRuntime"
'定义变量tag1
Dim tag1
'读取PLC变量值
tag1 = objWinCC.TagRead("PLC1.Tag1")
'弹窗询问是否确定操作
If MsgBox("是否确定此操作?", vbYesNo) = vbYes Then
'置位tag1
objWinCC.TagWrite "PLC1.Tag1", True
'延时1秒
WScript.Sleep 1000
'复位tag1
objWinCC.TagWrite "PLC1.Tag1", False
End If
'关闭连接
objWinCC.Disconnect
需要注意的是,在上述示例中,我们使用了WinCC提供的TagRead和TagWrite函数来读取和写入PLC变量值。在这里,我们假设PLC的名称为“PLC1”,变量名称为“Tag1”。如果您的PLC或变量名称不同,请根据实际情况修改代码。
另外,需要注意的是,为了使用WinCC API函数,需要在WinCC项目的配置中打开“WinCC API”的选项。可以在WinCC项目编辑器中选择“选项”->“WinCC API”的菜单来进行配置。 我的意思不是DIM 一个tag1变量,tag1是我要操作的外部变量 我要当反贼 发表于 2023-04-11 13:10
我的意思不是DIM 一个tag1变量,tag1是我要操作的外部 ...
如果要读写外部变量,可以使用WinCC提供的“ScriptingHost”对象和“ActiveXScripting”接口来实现。下面是一个示例vbs脚本,可以实现您的要求:
'创建WinCC ScriptingHost对象
Dim objSH
Set objSH = CreateObject("ScriptingHost.Application")
'连接到当前运行中的WinCC项目
objSH.ConnectToServer "localhost"
'定义变量tag1
Dim tag1
'读取外部变量值
Set tag1 = objSH.GetObject("WinCC:/Tagname1")
'弹窗询问是否确定操作
If MsgBox("是否确定此操作?", vbYesNo) = vbYes Then
'置位tag1
tag1.Value = True
'延时1秒
WScript.Sleep 1000
'复位tag1
tag1.Value = False
End If
'关闭连接
objSH.DisconnectFromServer
需要注意的是,在上述示例中,我们使用了WinCC提供的GetObject方法来获取外部变量对象,变量名为“Tagname1”。如果您的变量名称不同,请根据实际情况修改代码。另外,需要在WinCC项目编辑器中,将外部变量的属性“Scriptable”设置为True,才能通过外部程序(如vbs脚本)进行读写操作。 我们回到开始,我是要在wincc7.4中给单击按钮写一个vbs脚本,要求如下:
单击按钮时弹出一个窗口,向用户提示内容:是否确定此操作,用户点击是则二进制变量置位1秒,一秒后自动复位。同时该弹窗关闭,用户点击否则不进行任何操作,关闭弹窗. 我要当反贼 发表于 2023-04-11 13:21
我们回到开始,我是要在wincc7.4中给单击按钮写一个vb ...
好的,下面是一个完整的示例vbs脚本,可以实现您的要求:
'创建WinCC ScriptingHost对象
Dim objSH
Set objSH = CreateObject("ScriptingHost.Application")
'连接到当前运行中的WinCC项目
objSH.ConnectToServer "localhost"
'读取二进制变量对象
Dim tag1
Set tag1 = objSH.GetObject("WinCC:/Tagname1")
'弹窗询问是否确定操作
If MsgBox("是否确定此操作?", vbYesNo) = vbYes Then
'置位tag1
tag1.Value = True
'延时1秒
WScript.Sleep 1000
'复位tag1
tag1.Value = False
End If
'关闭连接
objSH.DisconnectFromServer
接下来,在WinCC中创建一个按钮控件,点击该按钮时执行上述vbs脚本:
1. 打开WinCC,在图库中选择“控件”分类,找到“按钮”控件并拖放到绘制区域;
2. 右键单击按钮控件,选择“属性”;
3. 在“动作”选项卡中,选择“单击”事件,在执行内容中选择“运行程序文件”;
4. 点击“浏览”按钮,选择刚才保存的vbs文件,点击确定即可。
这样,当用户单击按钮时,就会弹出询问框,用户点击“是”则二进制变量会被置位一秒钟并自动复位,点击“否”则不做任何操作。 Sub OnClick(Byval Item)
Dim a
Set a=HMIRuntime.Tags("DB18_手动操作投入确认")
Dim b
b = MsgBox("是否确认该操作?", vbQuestion+vbYesNo, "确认操作")
If b = vbYes Then
a=True
WScript.Sleep 5000
a=False
End If
End Sub
解释这一段程序并说明在这一段程序执行时"DB18_手动操作投入确认"这个变量为什么没有动作 我要当反贼 发表于 2023-04-11 13:39
Sub OnClick(Byval Item)
Dim a
Set a=HMIRun ...
这段程序是一个WinCC脚本,可以在WinCC的VBScript事件中使用,当单击按钮时执行该脚本。下面是对该脚本的解释:
1. 首先定义了一个变量a,并使用HMIRuntime.Tags方法获取了名为“DB18_手动操作投入确认”的WinCC标签对象。
2. 接着定义了一个变量b,并使用MsgBox函数弹出一个消息框提示用户确认操作,当用户点击“是”时,变量b的值为vbYes,当用户点击“否”时,变量b的值为vbNo。
3. 如果用户点击了“是”,则将标签变量a的值设置为True,并使用WScript.Sleep函数暂停程序执行5秒钟。
4. 最后将标签变量a的值重新设置为False。
在执行这段程序时,如果没有发生任何错误,"DB18_手动操作投入确认"这个标签变量应该会被置位(True)并持续5秒钟,然后又回复为未置位状态(False)。如果这个标签变量没有发生任何动作,可能是因为其它程序或用户修改了该标签变量的值,或者该标签变量的值根本没有被读取或者写入。
页:
[1]
2