DataLogger

儘管支援顯示格式,但5.6.4之前的MySQL版本不支援以毫秒分辨率事件儲存時間格式的資料。 這是一個已知的問題。

MySQL版本5.6.4之後,允許儲存和顯示毫秒分辨率的日期/時間資料。 對於V5.6.4之後的MySQL版本,格式為%H:%i:%S.%f

Expression Trigger允許使用者設定條件來進行啟動或停止紀錄資料。例如,使用者可以在Server中設定Boolean/Discrete Tag,這個Tag必須處於On/True的狀態才會觸發使用者所設定之條件並執行操作。一旦切換至Off/False狀態時,因為不會觸發條件所以並不會執行任何操作。使用者可以定義Tag的數值讓該數值大於或是等於條件數值,以便觸發條件執行資料紀錄。一旦所定義的數值低於條件數值,將會停止紀錄資料。不論是Interval或是Data Change都會在達成觸發條件時開始記錄資料。例如,如果將Static Interval設定為1分鐘,當達成觸發條件並且執行紀錄資料時,就會從達成條件的那一刻開始計算時間。因此,達成觸發條件之後的一分鐘將會開始紀錄資料。Data Change的時間計算也是同樣,達成觸發條件才會開始紀錄資料。以下新的觸發功能可以運用於Expression Triggers中:

• 當滿足觸發條件時記錄一次:當滿足觸發條件時,這個功能會記錄所有當前Log Group 中Item的值。在KEPServerEXV5.5和舊版本的Server中這個功能的名稱為start Snapshot。

• 當滿足觸發條件而停止資料紀錄:這個功能是當滿足觸發條件後停止資料運作,並記錄當前Log Group 中Item的值。在KEPServerEXV5.5和舊版本的Server中這個功能的名稱為stop Snapshot。

注意:KEPServerEX V5.5和早期版本Server需要在Snapshot的條件裡選擇Static Interval 或是Data Change方法。KEPServerEX V5.6則是使用者只需選擇snapshot條件(而不用選擇Static Interval和Data Change方法)。

MySQL資料表已滿時收到的錯誤消息是“DataLogger Runtime Unable to query recordset on Log Group 'Local MySQL' (Reason: 'The table 'YourTable' is full').”。

發生這種情況時,DataLogger _Error Tag將被設定為1,表示日誌群組處於錯誤狀態。

MS Access將日期和時間內部儲存為雙精度浮點數(xxxx.yyyy)。 在午夜,yyyy為零,Access UI不顯示; 然而,使用午夜日期和時間的時間比較SQL算法將正常工作,因為實際上沒有資料丟失。

當MS Access資料庫已滿時,DataLogger的_Error標記將被設定為1,表示日誌群組處於錯誤狀態。

事件日誌將顯示“DataLogger Runtime Unable to query recordset on Log Group 'Access' (Reason: 'Invalid argument.')”。

MS-SQL將TIMESTAMP內部解釋為用於處理圖像訊息的二進制檔案。 它與OPC時間戳記、日期或時間訊息無關。 應始終使用SQL_DATE或SQL_DATETIME來記錄OPC時間戳記訊息。

注1:DataLogger可以產生資料表。 DataLogger設定建議一組與正在連接的資料庫兼容的欄位名稱和SQL資料類型。 使用者可以自由地覆蓋這些設定。

注2:DataLogger執行時將檢測在MS-SQL上建立SQL_TIMESTAMP欄位的請求。 然後它將回報事件日誌警告,並替換SQL_DATETIME的欄位類型。

當Server從MS SQL中取得以下錯誤之一時,DataLogger _Error標記將被設定為1,表示日誌群組處於錯誤狀態。

  • SQL Server 2000:“DataLogger Runtime無法在日誌群組'SQLServerLogGroup'上查詢記錄集(原因:'無法為資料庫”SQLdatabase“中的對象”TableName“分配空間,因為”PRIMARY“檔案群組已滿。
  • SQL Server 2005:
    1. “DataLogger Runtime無法在日誌群組'MSSQLogGroup'上查詢記錄集(原因:'無法為對象”dbo.stresswide216“分配空間'PK__stresswide216__7C8480AE',因為”PRIMARY“檔案組已滿,通過刪除不需要的檔案建立磁盤空間,刪除檔案組中的對象,向檔案組加入其他檔案,或者為檔案組中的現有檔案設定自動增長。“)。
    2. “DataLogger Runtime”無法為日誌群組'MSSQLogGroup'建立資料表(原因'由於“PRIMARY”檔案組已滿,因此無法為資料庫“TestNew”中的對象“sys.syscolpars”建立“clst”。建立磁盤空間通過刪除不需要的檔案,刪除檔案組中的對象,向檔案組加入其他檔案,或為檔案組中的現有檔案設定自動增長。“)”
    3. “DataLogger Runtime無法在日誌群組'MSSQL'上查詢記錄集(原因:'由於檔案組'PRIMARY'中的磁盤空間不足,無法為資料庫”TestingNew“分配新頁面。通過刪除檔案組中的對象來建立必要的空間,向檔案組中加入其他檔案,或者為檔案組中的現有檔案設定自動增長。“)。

不行,DataLogger不能用於在Excel中自動建立資料表。

使用者可以使用DataLogger和MS Access Link Tables將資料記錄到現有的Microsoft(MS)Excel活頁簿中。有關詳細訊息,請參閱以下說明。

 

選擇資料庫

  1. 首先,請打開MS Access,選擇建立活頁簿的資料庫。如果是新專案,使用者必須建立一個新的資料庫。
  2. 接下來,將Access Table加入到Access資料庫。

 

使用Office 2003和更早版本加入連接表

  1. 首先,請點擊File Get External Data Link Tables
  2. 在檔案瀏覽器中,將檔案類型更改為Microsoft Excel。然後,選擇要記錄資料的活頁簿。
  3. 接下來,使用Link Spreadsheet Wizard 選擇要用於記錄的活頁簿。*
  4. 指定新連接表單的名稱,然後點擊Finish

注意:表格成功連接到活頁簿,將出現一個消息框。

 

使用Office 2007和更新加入連接表

  1. 首先,找到Ribbon,選擇External Data
  2. Import & Link中,選擇Excel
  3. 接下來,使用Get External Data Wizard 選擇要用於記錄的活頁簿。*
  4. 通過建立連接表然後指定資料將被記錄的位置連接到資料來源。
  5. 完成後,點擊OK
  6. Link Spreadsheet Wizard中,選擇要連接的工作表。
  7. 指定連接表格的名稱,然後點擊Finish

注意:表格成功連接到活頁簿,將出現一個消息框。

 

加入新的存取DSN

  1. 建立一個新的Access DSN,它將使用連接表單指向Access資料庫。
  2. 在Server 中,打開DataLogger,然後建立一個新的日誌群組。
  3. 打開General,然後點擊Configure DSN 以建立新的DSN連接。如果已經存在,請跳到步驟9。
  4. Microsoft ODBC Data Source Administrator,打開System DSN

注意:無論是以交互式還是系統服務模式執行,系統DSN都可用於Server 。

  1. 接下來,點擊Add以加入新的DSN。
  2. Create New Data Source,選擇Microsoft Access DatabaseODBC Driver然後點擊OK
  3. 接下來,輸入資料來源的名稱。然後,點擊Select以指定DSN將代表的資料庫。
  4. 完成後,點擊OK。然後,再次點擊OK以關閉ODBC Data Source Administrator
  5. DSN下拉式選單中,選擇包含連接表格的DSN。
  6. 接下來,選擇Data Map。然後,點擊Browse…以尋找並選擇要記錄到活頁簿的專案。
  7. Table Selection中,選擇Log to an existing table。然後,使用Table Name 下拉式選單選擇已加入到資料庫的連接表格。
  8. 接下來,選擇要記錄訊息的表的Table Format。 Narrow是每個記錄一個Tag,Wide是每個記錄的多個Tag。對於連接表格,每筆記錄將是一行。
  9. 點擊Map Fields… 以選擇要記錄每個Tag值的欄位/字段。然後,選擇一個Server Item Parameter和與其關聯的Database Column。完成後,點擊Link 將其關聯。
  10. 對要記錄的每個專案重複該過程。
  11. 完成後,點擊OK
  12. 接下來,選擇Triggers選項卡以指定如何記錄資料。默認情況下,將為將記錄資料更改或每500毫秒的日誌群組建立Always Triggered。在此範例中,“Trigger”設定為每10秒記錄一次。
  13. 完成後,保存Server 專案。

* Excel工作表應具有唯一命名的欄位標頭,因為它們將用於連接表中的檔案名。 DataLogger將使用字段名稱來 關聯/映射Server 專案參數。

 

注意1有關詳細訊息,請參閱DataLogger產品手冊

注意2DataLogger將打開專用資料表,因此表不能直接查看。

DataLogger的執行緒模型可以根據使用者的需要進行定制。 它將每個DSN解釋為佇列以建立新的日誌記錄執行緒。

例如:LogGroup01使用名為“MySQL_ONE”的DSN,並且LogGroup02使用名為“MySQL_TWO”的DSN,則即使MySQL_ONE和MySQL_TWO都指向同一資料庫,DataLogger也將產生兩個不同的日誌記錄。 如果LogGroup01和LogGroup02都使用MySQL_ONE,則它們將處理資料相等。

 

這種可擴展性允許使用者同時記錄數萬個點:在測試中,Kepware建立了兩個日誌群組,每個組記錄到指向同一MySQL資料庫的不同DSN。 他們每秒記錄大約50,000列。

當記錄時,資料將附加到目標資料來源。 這將導致資料來源隨著時間的推移而增長,最終將消耗使用硬盤上可用的所有空間。 專案數量及其記錄速率將決定資料來源的增長速度和速度。

 

例如,在測試中,Kepware使用寬表格格式建立了一個專案,每10毫秒記錄1000個專案,它會在3天內消耗5 GB的磁碟空間。 有關優化日誌記錄操作的更多訊息,請參閱DataLogger提示和技巧

從KEPServerEX 5.14版開始,DataLogger支援儲存轉發,可防止SQL Server不可用時資料丟失或資料庫無法足夠快速地處理請求時發生資料丟失。 發生這些情況時,日誌群組將在連接丟失期間捕獲的資料記錄到磁碟。 一旦連接恢復,磁碟上的資料將被讀取,寫入ODBC資料來源並刪除。

 

注意:DataLogger在KEPServerEX 5.13及更早版本中沒有此功能。

有限制。 對於適用於Microsoft Access的XP及更高版本的限制,請參考下表。

 

元件                        最大尺寸

表名                         64字節

列/字段名稱              64字節

每表                         255列

注意:不幸的是,建立表格時,不會檢測到欄位名和字元數的問題; 名稱將被直接截斷。 當DataLogger專案進入 Runtime時,錯誤將作為查詢失敗返回。 錯誤“Unable to query recordset on Log Group 'KT' (Reason: 'sp_cursor: The value of the parameter 'value' is invalid')”將被返回。 要解決此錯誤,請重新建立表格並編輯自動產生的欄位名稱。 然後,將Server Tag map到新欄位。

DataLogger中基於例外觸發器的條件沒有大於、等於或小於的條件。有關如何設定當Tag的值大於或等於5時觸發日誌群組條件的範例,請參閱以下說明。

 

  1. 為日誌群組建立例外觸發器。然後,指定是否通過靜態間隔、資料更改或以上兩者記錄資料。
  2. 完成後,點擊Next
  3. 設定停止和啟動條件。選擇Start選項卡,然後使用搜尋按鈕瀏覽Server 以獲取將用作日誌群組觸發器的Tag。
  4. 設定觸發Tag應輪詢和計算的速率。這個比率應該比預期資料變化的速度要快。
  5. 將條件設定為大於值,並將該值設定為4。
  6. 接下來選擇Stop,然後使用搜尋按鈕瀏覽Server 以獲取將用作日誌群組觸發器的Tag。
  7. 設定觸發Tag應輪詢和評估速率。這個比率應該比預期資料變化的速度要快。
  8. 將條件設定為小於一個值,並將該值設定為5。
  9. 點擊Next Finish日誌群組。

使用此設定,當Tag的值大於或等於5時,日誌群組將進入觸發狀態,日誌記錄將開始。當Tag的值小於5時,日誌群組將不再被觸發,記錄將停止。

有限制。 根據Oracle的限制,請參考下表。

 

元件

最大長度

欄位名稱

30 Bytes

表格名

30 Bytes

 

從DataLogger動態建立表格時,默認設定將使用完整的專案名稱為寬格式表格建立欄位。 段落將被下劃線取代。 例如,專案“Channel1.Device1.Tag1”會改為“Channel1_Device1_Tag1_value”,總共有27個字元。

 

 不幸的是,建立表格時,不會檢查到欄位名和字元數的問題。 當DataLogger專案進入Runtime時,錯誤將作為查詢失敗傳回。將傳回錯誤“Unable to query recordset on Log Group 'KT' (Reason: 'sp_cursor: The value of the parameter 'value' is invalid')”。

 

要解決此錯誤,請重新建立表格並編輯自動產生的欄位名稱。 然後,將 Server Tag map到新欄位。

 

Absolute Trigger 可以讓使用者明確的定義日期以及時間,當Trigger滿足使用者所定義之條件時就可以運作。當Trigger處於執行狀態時,資料可以透過靜態間隔(Static Interval)或是資料交換(Data Change)紀錄資料。當Trigger開始運作時,不論是靜態間隔和資料交換都會開始紀錄資料。例如,如果靜態間隔被設定為1分鐘,在這1分鐘之內Trigger都會處於運作的狀態下。因此,第一筆紀錄的內容會是開始後1分鐘內的資料。資料交換也是如此,在觸發Trigger後開始紀錄資料。以下為可以用於Absolute Trigger中新的Trigger功能:

• 當Trigger因滿足條件開始運作時,開始紀錄資料(Log once when trigger start condition is met):此功能為當Trigger運作時,會記錄Log Group中所有項目的當前數值。在KEPServerEX V5.5和較舊的版本,這個功能名稱為Start Snapshot。

• 當Trigger因滿足條件停止運作時,開始紀錄資料(Log once when trigger stop condition is met):此功能為當Trigger停止運作時,會記錄Log Group中所有項目的當前數值。在KEPServerEX V5.5和較舊的版本,這個功能名稱為Stop Snapshot。

注意:KEPServerEX V5.5以及較舊版本會要求靜態間隔或資料交換必須選擇snapshot的條件。KEPServerEX V5.6只允許使用者選擇一個snapshot條件(不包含靜態間隔和資料交換)。

要存取在Linux / Unix電腦上執行的MySQL資料庫,使用者必須先設定資料庫以允許遠端PC存取。 詳細訊息請參閱以下說明:

 

  1. 首先,啟動命令視窗。
  2. 執行“mysqlüUsernameÂ-p”。
  3. 登錄並輸入以下內容:

 

mysql> GRANT ALL ON *.* TO 'Username'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.14 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.16 sec)
mysql> \q\
Bye
 

 

  1. 在Windows PC上,從MySql網站安裝“mysql-connector-odbc-3.51.12-win32.zip”檔案。

 

注意:這將允許ODBC DSN設定MySQL資料庫。

有可能會出現此錯誤的幾個原因:

 

  1. 當 Device 查看在SQL Server中建立的資料表時,可能會發現沒有啟用寫入權限。
  2. 權限可能有錯誤。 連接到SQL資料庫的使用者必須選擇“更新權限”,否則將無法寫入資料表中的區段。
  3. 該資料表在寫入之前可能沒有被索引。 存取檔案時,使用者不直接連接到資料庫; 而是向他們呈現所請求的記錄集快照。 要更改資料,ODBC介面將更新快照中的實際資料。 確保正確記錄更新的唯一方法是在索引中引用它。 如果連接到沒有索引的資料庫,Microsoft的ODBC介面會將權限設定強制為唯讀,而不管其設定如何。 這將確保不會發生錯誤的資料更改。

Please publish modules in offcanvas position.