<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WinCC使用VBS腳本完美實現操作記錄

          在WinCC之中,其本身所集成的操作記錄功能在使用起來時并不是那么的人性化,比如模擬量進行設定值更改的時候,它只能顯示變量名稱,不能隨意的進行操作設備、內容方面的自定義,經過大量的嘗試和修改,現整理VBS腳本實現操作記錄的完美方式,記錄在這,以備忘。

          在這個方式中,主要涉及到的操作內容有:

          1、Microsoft Office Access數據庫的讀寫,主要是存儲操作對象的一些基本信息,存儲前后操作的內容;

          2、操作記錄觸發的問題;

          3、操作記錄氛圍兩種,一種是按鈕型,一種是參數設置型;

          一、基礎腳本

          1、本地Access數據庫打開關閉函數

      Function LocalDB_OPEN(LDBCN,DatabassFileName)
      '用AODDB.Connection打開Access文件“本地數據庫.mdb”連接LDBCN:AODDB.Connection對象,具體本地數據庫名稱根據需要進行設置
      '連接成功返回1,文件“本地數據庫.mdb”不存在返回-2,指定路徑不存返回-1,連接失敗返回0;
      On Error Resume Next
      Dim Result
      Dim FSO
      Dim ProjectDataPath
      Dim LocalDBFileName
      ProjectDataPath=HMIRuntime.ActiveProject.Path+ "\WinccDataFolder"'HMIRuntime.Tags("@NOP::ProjectDataPath").Read
      Set FSO=CreateObject("Scripting.FileSystemObject")
      If FSO.FolderExists(ProjectDataPath) Then
         LocalDBFileName=ProjectDataPath & "\"&DatabassFileName&".mdb"
         If FSO.FileExists(LocalDBFileName) Then
            Set LDBCN=CreateObject("ADODB.Connection")
            LDBCN.ConnectionString="Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & LocalDBFileName
            LDBCN.CursorLocation = 3  '數據訪問客戶端
            LDBCN.Open
            If LDBCN.State=1 Then
               Result=1
            Else 
               Result=0
            End If
         Else
            Result=-2
         End If
      Else
         Result=-1
      End If
      
      Set FSO=Nothing
      LocalDB_OPEN=Result
      End Function
      
      Sub LocalDB_CLOSE(LDBCN)'關閉LocalDB.mdb的ADODB連接
      On Error Resume Next
      If LDBCN.State=1 Then
         LDBCN.Close 
      End If
      End Sub

      '對Access讀取操作函數

      Function ReadTagValue(LDBCN,DatabassFileName,SheetName,TargetHeadName,ConditionHeadName,ConditionValue)
      On Error Resume Next
      LocalDB_OPEN LDBCN,DatabassFileName
      Dim MdbString,oRs
      MdbString="SELECT "&TargetHeadName&" FROM "&SheetName&" where "&ConditionHeadName&"='"&ConditionValue&"'"
      Set oRs=LDBCN.execute(MdbString)
      If IsNull(oRs.fields(0).value)=True Then
      ReadTagValue=""
      Else
      ReadTagValue=oRs.fields(0).value
      End If
      Set oRs=Nothing
      LocalDB_CLOSE LDBCN
      End Function

      
      

      '對Access寫入操作函數
      Function WriteTagValue(LDBCN,DatabassFileName,SheetName,TargetHeadName,TargetValue,ConditionHeadName,ConditionValue)
      On Error Resume Next
      LocalDB_OPEN LDBCN,DatabassFileName
      Dim MdbString,oRs
      MdbString="update "&SheetName&" Set "&TargetHeadName&"='"&TargetValue&"' where "&ConditionHeadName&"='"&ConditionValue&"'"
      Set oRs=LDBCN.execute(MdbString)
      Set oRs=Nothing
      LocalDB_CLOSE LDBCN
      End Function

       

          二、按鈕型操作記錄

          1、記錄原理

          通過按鈕按下以后得觸發事件,觸發按鈕型操作記錄腳本,對預存儲在Access中的對應設備信息進行讀取,進而使用這些信息在WinCC中使用預設的消息,生成一條報警記錄,最終把需要的報警記錄進行篩選

          2、WinCC中創建消息號,此處創建消息號為2021101

          3、更改操作記錄所需要用到的過程值塊,消息塊名稱,在此處用到的過程值塊為過程值8、過程值9以及過程值10,分改為操作對象、操作內容和操作用戶名。

       

          4、創建數據庫

          如上圖中,是按鈕型操作記錄預先錄入的信息,該信息包括以下內容:

          <1>、在WinCC項目文件夾中創建文件夾,名稱為WinCCDataFolder;

          <2>、在以上文件夾中創建Access數據庫,Access數據庫名稱此處為ButtonHis.mdb,注意為mdb格式;

          <3>、在數據庫中創建表格Button,表格中包含四列,分別為TagID、TagName、HandEqui以及HandTips;

          <4>、在表格中添加內容,其中TagName為相應按鈕的按鈕名稱,HandEqui對應該按鈕所操作的設備,HandTips對應的是該按鈕對該設備進行的操作內容。

           5、腳本

      '觸發按鈕記錄的函數
      Function ButtonRecord(ConditionValue) On Error Resume Next Dim MyAlarm,LDBCN Set MyAlarm
      = HMIRuntime.Alarms(2021101) MyAlarm.State =1 MyAlarm.ProcessValues(10) =HMIRuntime.tags("@NOP::@CurrentUserName").read MyAlarm.ProcessValues(8) =ReadTagValue(LDBCN,"ButtonHis","Button","HandEqui","TagName",ConditionValue) MyAlarm.ProcessValues(9) =ReadTagValue(LDBCN,"ButtonHis","Button","HandTips","TagName",ConditionValue) MyAlarm.Create "MyApplication" Set MyAlarm =Nothing End Function

      '觸發按鈕記錄的事件
      '比如在一個名稱為ButtonT1的按鈕單擊事件中寫入以下腳本:
      ButtonRecord item.ObjectName 

          以上腳本中,ConditionValue表示待操作按鈕所命名的專用名稱,每一個按鈕都需要對應一個不同的名稱,并且將需要進行操作記錄的按鈕名稱錄入到Access數據庫中,每次按下按鈕之后,WinCC都會自動生成一條記錄信息。

           三、設置型操作記錄

           1、記錄原理

          通過修改WinCC的IO域之后,會產生一個IO域輸入/輸出更改的事件,此處需要使用IO域的輸出更改所觸發的事件,因為經過多次測試只有使用該事件,才能完美的完成設置型操作記錄。當輸出更改后,會觸發設置型操作記錄的基本,對預存儲在Access中的對應設備信息進行讀取,進而使用這些信息在WinCC中使用預設的消息,生成一條報警記錄,最終把需要的報警記錄進行篩選,從而達到操作型操作記錄的目的。

          2、WinCC中創建消息號,此處創建消息號為2021102

          3、更改操作記錄所需要用到的過程值塊,消息塊名稱,在此處用到的過程值塊為過程值2、過程值3、過程值8、過程值9以及過程值10,分改為修改前值、修改后值、操作對象、操作內容和操作用戶名。

          4、創建數據庫

          <1>、在ButtonHis數據庫中創建表格OpAndTagName,表格中包含七列,分別為TagID、TagName、Comment、BefValue、AftValue、Unit以及OperMess;

          <2>、在表格中添加內容,具體如下:

              TagName為相應IO域名稱;

              Comment對應IO域所代表的意義,如頻率等;

              BefValue在該處會記錄設置操作以前的設定值;

              AftValue記錄更改以后得設定值;

              Unit表示該設定值的單位;

              OperMess進行參數設置的操作內容,如頻率設定。

       

       

           5、腳本

      Function IORecordAcces(ConditionValue)
      On Error Resume Next
      Dim Bef,Aft,BN,AN,LDBCN
      '判斷輸入是否為用戶名,或者輸入值為空,則認為未登錄,否則將待寫入的值記錄到Bef
      If ConditionValue="@CurrentUserName" And HMIRuntime.tags("@NOP::"+ConditionValue).read="" Then
          Bef="未登錄"
      Else
          Bef=CStr(HMIRuntime.tags("@NOP::"+ConditionValue).read)
      End If
      
      '將之前未寫入之前的值讀取到Aft中
      Aft=CStr(ReadTagValue(LDBCN,"ButtonHis","OpAndTagName","AftValue","TagName",ConditionValue))
      '寫入到Aft中之后,將
      WriteTagValue LDBCN,"ButtonHis","OpAndTagName","BefValue",Aft,"TagName",ConditionValue 
      
      If Bef<>Aft Then
          WriteTagValue LDBCN,"ButtonHis","OpAndTagName","AftValue",Bef,"TagName",ConditionValue
      End If
      Dim MyAlarm,user,OName,Unit
      Unit=ReadTagValue(LDBCN,"ButtonHis","OpAndTagName","Unit","TagName",ConditionValue)
      If HMIRuntime.tags("@NOP::@CurrentUserName").read="" Then
          user="未登錄"
      Else
          user=HMIRuntime.tags("@NOP::@CurrentUserName").read
      End If
      'Msgbox "Bef="+CStr(Bef)
      'Msgbox "Aft="+CStr(Aft)
      If Trim(CStr(Bef))<>Trim(CStr(Aft)) And Trim(CStr(Bef))<>"" And Trim(CStr(Aft))<>"" Then
          If ConditionValue<>"@CurrentUserName" Then
              Set MyAlarm = HMIRuntime.Alarms(2021102) 
          Else
              Set MyAlarm = HMIRuntime.Alarms(2021104) 
          End If
          With MyAlarm
              .State =1'5
              .ProcessValues(10) =user      '用戶名
              If InStr(CStr(Bef),".")=0 And ConditionValue<>"@CurrentUserName"  Then
                  .ProcessValues(3) =CStr(Bef)+".0"  '修改后值
              Else
                  .ProcessValues(3) =CStr(Bef) 
              End If
              If InStr(CStr(Aft),".")=0 And ConditionValue<>"@CurrentUserName" Then
                  .ProcessValues(2) =CStr(Aft)+".0"  '修改前值
              Else
                  .ProcessValues(2) =CStr(Aft)  
              End If
              .ProcessValues(8) =ReadTagValue(LDBCN,"ButtonHis","OpAndTagName","Comment","TagName",ConditionValue)'操作對象
              If ConditionValue<>"@CurrentUserName" Then
                  .ProcessValues(9) =ReadTagValue(LDBCN,"ButtonHis","OpAndTagName","OperMess","TagName",ConditionValue)+"(單位:"+Unit +"" '操作內容
              Else
                  .ProcessValues(9) =ReadTagValue(LDBCN,"ButtonHis","OpAndTagName","OperMess","TagName",ConditionValue)
              End If
              .Create "MyApplication"
          End With
          Set MyAlarm = Nothing
      End If
      End Function

      '在輸出更改的事件中添加以下腳本
      IORecordAcces item.ObjectName 

       

           6、報警插件設置

         <1>.操作記錄需要在報警插件中顯示,首先選擇消息塊,選擇日期、時間、操作用戶名、操作對象、操作內容、設定前值及其設定后值,設定好字號、居中、寬度等信息。

          <2>.設置控件篩選內容,根據報警消息號為2021101,2021102設置篩選內容,如下圖:

       

       

          

       

      posted on 2025-04-06 21:28  老邁克  閱讀(1093)  評論(1)    收藏  舉報

      導航

      主站蜘蛛池模板: 久久精品道一区二区三区| A级毛片无码久久精品免费| 姐姐6电视剧在线观看| 亚洲欧美在线看片AI| 一区二区三区av天堂| 人妻少妇久久久久久97人妻| 亚洲一区二区约美女探花| 蜜臀av午夜精品福利| 欧美黑人添添高潮a片www| 亚洲AV永久无码嘿嘿嘿嘿| 男人猛躁进女人免费播放| 欧美肥老太牲交大战| 柳江县| 91国产自拍一区二区三区| 波多野无码中文字幕av专区| 国内精品视这里只有精品| 美女扒开奶罩露出奶头视频网站| 国产高清无遮挡内容丰富| 国产乱理伦片在线观看| 亚洲人成人日韩中文字幕| 免费AV片在线观看网址| 精品国产成人国产在线视| 韩国无码av片在线观看| 亚洲欧美偷国产日韩| 亚洲国产成人无码影片在线播放| 精品一区二区三区在线观看l| 人妻出轨av中文字幕| 亚洲av永久无码精品漫画| 陇川县| 国产一精品一av一免费| 极品蜜臀黄色在线观看| 国产一区二区三区色噜噜| 久久久久香蕉国产线看观看伊 | 麻豆国产成人AV在线播放| 永新县| 九九热精品在线观看| www国产精品内射熟女| 熟女一区二区中文字幕| 国产精品天天在线午夜更新| 亚洲av日韩av一区久久| 无码成人一区二区三区|