歡迎光臨
每天分享高質量文章

西門子工藝指令(1)——高速計數器


點選 《福利來了!PLC的資料(免費),你要嗎?

點選第二波福利來了!PLC的資料(免費),你要嗎?

1、CTRL_HSC(控制高速計數器)指令

引數的資料型別:

您可以在 CPU 的裝置組態中為各 HSC的計數/頻率功能、複位選項、中斷事件組態、硬體 I/O以及計數值地址對相應引數進行組態。
可以透過使用者程式來修改某些 HSC 引數,從而對計數過程提供程式控制:
● 將計數方向設定為 NEW_DIR 值
● 將當前計數值設定為 NEW_CV 值
● 將參考值設定為 NEW_RV 值
● 將週期值(僅限頻率測量樣式)設定為 NEW_PERIOD 值

如果執行 CTRL_HSC 指令後以下布林標記值置位為 1,則相應的 NEW_xxx值將裝載到計數器。 CTRL_HSC 指令執行一次可處理多個請求(同時設定多個標記)。
● DIR = 1 是裝載 NEW_DIR 值的請求,0 = 無變化
● CV = 1 是裝載 NEW_CV 值的請求,0 = 無變化
● RV = 1 是裝載 NEW_RV 值的請求,0 = 無變化
● PERIOD = 1 是裝載 NEW_PERIOD 值的請求,0 = 無變化
CTRL_HSC 指令通常放置在觸發計數器硬體中斷事件時執行的硬體中斷 OB 中。
例如,如果 CV=RV 事件觸發計數器中斷,則硬體中斷 OB 程式碼塊執行CTRL_HSC指令並且可透過裝載 NEW_RV 值更改參考值。在 CTRL_HSC 引數中沒有提供當前計數值。在高速計數器硬體的組態期間分配儲存當前計數值的過程映像地址。可以使用程式邏輯直接讀取計數值。 傳回給程式的值將是讀取計數器瞬間的正確計數。但計數器仍將繼續對高速事件計數。因此,程式使用舊的計數值完成處理前,實際計數值可能會更改。

HSC 當前計數值: 程式訪問、值範圍和翻轉特性
CPU 將各 HSC 的當前值儲存在輸入 (I) 地址中。 下表列出了為各 HSC的當前值分配的預設地址。 可透過修改裝置組態中的 CPU 屬性來更改當前值的 I 地址。
高速計數器使用 DInt 值儲存當前計數值。 DInt 的計數值範圍為 -2147483648 到+2147483647。進行加計數時,計數器從最大正值翻轉到最大負值;進行減計數時,計數器從最大負值翻轉到最大正值。

如果發生錯誤,則 ENO 將設定為 0,且 STATUS 輸出將指示條件程式碼。

Execution condition codes:

2、CTRL_HSC_EXT(控制高速計數器(擴充套件))指令

利用 CTRL_HSC_EXT指令,程式可以按指定時間週期訪問指定高速計數器的輸入脈衝數量。
該指令使得程式可以以奈米級精度確定輸入脈衝之間的時間長度。
要使用 CTRL_HSC_EXT 指令,請按下列步驟操作:
1. 為 Period 樣式組態相關的高速計數器 選擇所需要的執行階段。
如果選擇內部方向控制,則可以釋放用於其它用途的方向輸入。
2. 將 CTRL_HSC_EXT 拖放至梯形圖程式中,該操作會同時建立一個背景資料塊CTRL_HSC_EXT_DB。
3. 建立一個 User Global_DB=ex: “MYDB”(CTRL_HSC_EXT 的輸入引數)。該資料塊含有該 SFB 所需要的資訊。
4. 在 MYDB 中,找到一個空行,並新增變數 Name=Ex: “My period”。
5. 輸入 “HSC_Period” 以新增資料型別 (下拉控制元件目前沒有該選項)。必須由使用者正確地輸入該名稱(如圖所示)。
6. 檢查 “MyPeriod” 變數現在是否是一個可以擴充套件的通訊資料結構。
7. 在梯形圖指令 CTRL_HSC_EXT: “CTRL” 控點上附加背景資料塊變數”MYDB”.MyPeriod。

CTRL_HSC_EXT 指令:

引數的資料型別:

HSC_Period 結構:

HSC_Period 結構元素定義
● ElapsedTime
傳回當前週期測量間隔最後一個脈衝和前一個週期測量間隔最後一個脈衝之間的間隔時間(單位:納秒)。

若 EdgeCount = 0, 則 ElapsedTime 為自最後一個脈衝算起的累計時間。ElapsedTime的範圍為 0 至 4,294,967,280 納秒(0x0000 0000 至0xFFFFFFF0)。 傳回值若為429496295 (0xFFFF FFFF),則表示出現週期上限溢位。 自 0xFFFF FFF1 至 0xFFFFFFFE 的值為保留值。
如果 ElapsedTime 為 0 (沒有收到輸入脈衝)或 0xFFFFFFFF(出現週期上限溢位),則 EdgeCount 中的值無效。
● EdgeCount 傳回最近一個測量間隔的輸入脈衝的數量。 EdgeCount必須大於等於“1”才能計算脈衝之間的間隔時間。 該週期採用以下公式計算: 週期=ElapsedTime/EdgeCount。
以下示例描述如何採用該指令進行週期測量。

CPU 將各 HSC 的當前值儲存在輸入 (I) 地址中。 下表列出了為各 HSC的當前值分配的預設地址。 可透過修改裝置組態中的 CPU 屬性來更改當前值的輸入(I)地址。
高速計數器使用 DInt 值儲存當前計數值。 DInt 的計數值範圍為 -2147483648 到+2147483647。進行加計數時,計數器從最大正值翻轉到最大負值;進行減計數時,計數器從最大負值翻轉到最大正值。

3、高速計數器的使用方法

高速計數器 (HSC) 能夠對發生速率快於迴圈 OB 執行速率的事件進行計數。
如果待計數事件的發生速率慢於 OB 執行速率,則可使用 CTU、CTD 或 CTUD標準計數器指令。 如果事件的發生速率快於 OB 的執行速率,則應使用更快的 HSC裝置。 CTRL_HSC 指令允許程式透過程式更改一些 HSC 引數。
例如: 可以將 HSC 用作增量軸編碼器的輸入。
該軸編碼器每轉提供指定數量的計數值以及一個複位脈衝。
來自軸編碼器的時鐘和複位脈衝將輸入到 HSC 中。
先是將若干預設值中的第一個裝載到 HSC上,並且在當前計數值小於當前預設值的時段內計數器輸出一直是啟用的。
在當前計數值等於預設時、發生複位時以及方向改變時,HSC 會提供一個中斷。每次出現“當前計數值等於預設值”中斷事件時,將裝載一個新的預設值,同時設定輸出的下一狀態。
當出現複位中斷事件時,將設定輸出的第一個預設值和第一個輸出狀態,並重覆該迴圈。由於中斷發生的頻率遠低於 HSC 的計數速率,因此能夠在對 CPU
掃描週期影響相對較小的情況下實現對高速操作的精確控制。
透過提供中斷,可以在獨立的中斷例程中執行每次的新預設值裝載操作以實現簡單的狀態控制。 此外,也可在單個中斷例程中處理所有中斷事件。
HSC 輸入通道選擇使用以下表格並確保連線的 CPU 和 SB 輸入通道可以支援過程訊號中的最大脈衝速率。

CPU 輸入: 最大頻率

SB 訊號板輸入: 最大頻率(可選訊號板)

選擇 HSC 的功能
所有 HSC 在同種計數器執行樣式下的工作方式都相同。 在 CPU 裝置組態中為 HSC功能屬性分配計數器樣式、方向控制和初始方向。
HSC 共有四種基本型別:
● 具有內部方向控制的單相計數器
● 具有外部方向控制的單相計數器
● 具有 2 個時鐘輸入的雙相計數器
● A/B 相正交計數器

使用者可選擇是否啟用複位輸入來使用各種 HSC 型別。
如果啟用複位輸入(存在一些限制,請參見下表),則它會清除當前值併在您禁用複位輸入之前保持清除狀態。

HSC 的輸入地址
組態 CPU 時,可以選擇為每個 HSC 啟用和組態“硬體輸入”。
所有 HSC 輸入必須連線到 CPU 模組上的端子,或插入 CPU 模組前方的可選訊號板。

下表顯示了 CPU 的板載 I/O 和可選 SB 兩者的預設 HSC 輸入分配。 (如果所選 SB模組只有 2 個輸入,則僅輸入 4.0 和 4.1 可用。)
HSC 輸入表定義
● 單相: C 為時鐘輸入,[d] 為方向輸入(可選),[R] 為外部複位輸入(可選)(複位僅適用於“計數”樣式。)
● 雙相: CU 為加時鐘輸入,CD 為減時鐘輸入,[R] 為外部複位輸入(可選)。(複位僅適用於“計數”樣式。)
● AB 相正交: A 為時鐘 A 輸入,B 為時鐘 B 輸入,[R] 為外部複位輸入(可選)。(複位僅適用於“計數”樣式。)

HSC 預設地址分配:

4、組態 HSC

啟用 HSC 之後組態其它引數,例如計數器功能、初始值、複位選項和中斷事件。


尋找同路人

做自動化工業變革的踐行者


可透過選單查詢自己喜歡的文章彙總:

現場儀錶DCS部分PLC部分SIS部分通訊標準數字化問題解答】此處列出部分連結,更多文章透過選單獲取。



贊(0)

分享創造快樂