其他分享
首页 > 其他分享> > 搬家第一天-25.使用Wincc V7.3 VBS做一个秒表的功能

搬家第一天-25.使用Wincc V7.3 VBS做一个秒表的功能

作者:互联网

西门子技术论坛上,有人发帖子询问如何在Wincc上面做一个秒表功能,按下开始按钮秒表计时,按下停止功能停止计时,按下复位功能,计数回零。自己测试了一下,这个还是比较容易实现的,现在把实现的过程分享一下。

一 准备工作

1. 建立变量

  打开wincc,新建一个工程,建立以下内部变量:

 MyHour        32位无符号数;

 MyMinute     32位无符号数;

 MySecond    32位无符号数;

 Start             二进制变量;

 Timers          文本变量8位字符集;

2. 画面准备

  新建一幅画面main.pdl,上面放置一个输入输出域控件,选择输出类型,绑定变量Timers,显示计时信息;再放置上个按钮,分别是“开始”、“停止”、“复位”。

3. 系统准备

  wincc项目管理器-计算机属性,启动选项卡勾选全局脚本。

二 脚本

1. 全局脚本

  新建一个stopwatch的VBS动作,循环触发器,频率1秒,脚本如下:

Option Explicit
Function action
Dim fmtHour,fmtMinute,fmtSecond
If HMIRuntime.Tags("Start").Read =1 Then
  If HMIRuntime.Tags("MySecond").read<59 Then
    HMIRuntime.Tags("MySecond").Write HMIRuntime.Tags("MySecond").read + 1
  Else
    If HMIRuntime.Tags("MyMinute").read<59 Then
      HMIRuntime.Tags("MyMinute").Write HMIRuntime.Tags("MyMinute").read + 1
    Else
      HMIRuntime.Tags("MyMinute").Write 0
      HMIRuntime.Tags("MyHour").Write HMIRuntime.Tags("MyHour").read + 1
    End If
    HMIRuntime.Tags("MySecond").Write 0
  End If
  'If HMIRuntime.Tags("MyMinute").read=60 Then
  '  HMIRuntime.Tags("MyHour").Write HMIRuntime.Tags("MyHour").read + 1
  '  HMIRuntime.Tags("MyMinute").Write 0
  'End If
  If HMIRuntime.Tags("MySecond").read<10 Then
   fmtSecond="0" & CStr(HMIRuntime.Tags("MySecond").read)
  Else
    fmtSecond= CStr(HMIRuntime.Tags("MySecond").read)
  End If
  If HMIRuntime.Tags("MyMinute").read<10 Then
   fmtMinute="0" & CStr(HMIRuntime.Tags("MyMinute").read)
  Else
    fmtMinute= CStr(HMIRuntime.Tags("MyMinute").read)
  End If
  If HMIRuntime.Tags("MyHour").read<10 Then
    fmtHour="0" & CStr(HMIRuntime.Tags("MyHour").read)
  Else
    fmtHour= CStr(HMIRuntime.Tags("MyHour").read)
  End If
  HMIRuntime.Tags("Timers").Write fmtHour & ":" & fmtMinute & ":" & fmtSecond
End If
End Function

 

2. 启动按钮鼠标点击事件将常数1复制给内部变量Start

 

3. 停止按钮鼠标点击事件脚本

Sub OnClick(ByVal Item)
   HMIRuntime.Tags("Start").Write 0
End Sub

 

4. 复位按钮鼠标点击事件脚本

Sub OnClick(Byval Item)  
   HMIRuntime.Tags("Start").Write 0
   HMIRuntime.Tags("MyHour").Write 0
   HMIRuntime.Tags("MyMinute").Write 0
   HMIRuntime.Tags("MySecond").Write 0
   HMIRuntime.Tags("Timers").Write "00:00:00"
End Sub

 

做完上述工作保存运行就可以看到效果了,如果想加入毫秒信息,那么需要在项目属性更新周期选项卡中修改一个用户周期为100ms,这是wincc最小的频率,然后修改相应的全集脚本,就可以把毫秒值加入了,这里就不再详细阐述了。

标签:25,V7.3,Tags,read,MySecond,MyMinute,VBS,Write,HMIRuntime
来源: https://www.cnblogs.com/fishingsriver/p/14345880.html