tft每日頭條

 > 科技

 > 西門子博途設置時間指令

西門子博途設置時間指令

科技 更新时间:2024-09-09 10:15:58

S7-1200的計數器為IEC計數器,用戶程序中可以使用的計數器數量僅受CPU的存儲器容量限制。

這裡所說的是軟件計數器,最大計數速率受所在OB的執行速率限制。指令所在OB的執行頻率必須足夠高,以檢測輸入脈沖的所有變化,如果需要更快的計數操作,請參考高速計數器(HSC)。

注:S7-1200的IEC計數沒有計數器号(即沒有C0、C1這種帶計數器号的計數器)。

S7-1200的計數器包含3種計數器,指令位置參見圖1:

1.計數器(CTU)

2.減計數器(CTD)

3.加減計數器(CTUD)

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)1

圖1 指令位置

對于每種計數器,計數值可以是任何整數數據類型,并且需要使用每種整數對應的數據類型的DB結構(見表1)或背景數據塊來存儲計數器數據。計數器引腳參考表2,計數器使用及時序圖參考表3(本文均以INT計數器為例)。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)2

表1 計數器類型及範圍

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)3

表2 計數器引腳彙總

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)4

表3計數器使用及時序圖

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)5

表3計數器使用及時序圖

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)6

表3計數器使用及時序圖

S7-1200 計數器創建

S7-1200計數器創建有以下幾種方法:

1. 指令直接拖入塊中,自動生成計數器的背景數據塊,該塊位于“系統塊>程序資源”中,參見圖2。需要在指令中修改計數值類型。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)7

圖2 自動生成計數器的背景數據塊

2. 指令直接拖入FB塊中,生成多重背景,參見圖3。多重背景的數據類型在TIA博途V14之前是IEC_COUNTER類型,從TIA博途V14開始是CTU_INT、CTD_INT、CTUD_INT等類型(取決于指令)。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)8

圖3 多重背景

3. 指令直接拖入FB、FC塊中,生成參數實例,從TIA博途V14開始,參見圖4。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)9

圖4 參數實例

4. 在DB塊、FB的靜态變量、FC和FB的INOUT變量中新建IEC_COUNTER、CTU_INT、CTD_INT、CTUD_INT類型變量,在程序中将計數器指令拖入塊中時,在彈出的“調用選項”頁面點擊“取消”按鈕,之後将該建好的變量填入指定位置。

(1) DB塊中新建IEC_COUNTER等類型變量(LAD/FBD),如果是IEC_COUNTER等類型變量的數組,S7-1200從V2.0版本開始支持,參見圖5、6。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)10

圖5 DB塊中的定義

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)11

圖6 計數器使用

(2) FB的靜态變量中新建IEC_COUNTER等類型變量(LAD/FBD),如果是IEC_COUNTER等類型變量的數組,S7-1200從V2.0版本開始支持,參見圖7。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)12

圖7 靜态變量中定義

(3) FC和FB的INOUT變量中新建IEC_COUNTER等類型變量(LAD/FBD),如果是IEC_COUNTER等類型變量的數組,S7-1200從V2.0版本開始支持,從TIA博途V14開始支持IEC_COUNTER等類型變量的變長數組(ARRAY[#]),參見圖8。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)13

圖8 INOUT中定義

4) 以上三種方法的SCL版本,參見圖9

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)14

圖9 SCL中使用

從以上四個示例可以看出,IEC_COUNTER、CTU_INT、CTD_INT、CTUD_INT四種數據類型沒有本質的區别,可以互換使用,為使得程序明确,建議隻使用計數器對應名字的數據類型。

5. 在插入DB時,選擇IEC_COUNTER類型的數據塊,将該數據塊填在指令上方。此種方法生成的數據塊等同于第一種的背景數據塊,位于“系統塊>程序資源”中,從TIA博途V11開始,參見圖10.

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)15

圖10 新建IEC_COUNTER類型DB

S7-1200 計數器常見問題

1. 為什麼計數器不計數?

答:可能原因如下:

(1)計數器的輸入位(CU、CD)需要有電平信号的跳變,計數器才會計數。如果保持不變的信号作為輸入位是不會開始計數的。

(2)計數器的背景數據塊重複使用。

2. 如何編程自複位計數器并産生脈沖?

答:正确答案見圖11,錯誤答案見圖12、13。

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)16

圖11 正确程序

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)17

圖12 錯誤程序1

西門子博途設置時間指令(用最簡單的講解讓你明白西門子博途編程基本指令集之計數器的使用)18

圖13 錯誤程序2

正确原因:當計數值達到10,"DB77".Static_15(False)作為計數器R的輸入,并沒有複位,Q輸出"DB77".Static_15為True,在下一周期時執行複位指令,使得計數值清零,之後Q輸出"DB77".Static_15為False,實現自複位計數器并産生脈沖。

錯誤1原因:當計數值達到10,首先置位"數據塊_2".QU,緊接着"數據塊_2".QU作為計數器R的輸入,使得計數值清零,同時複位"數據塊_2".QU,在下一網絡段"DB77".Static_15依然是False,無法實現脈沖。

錯誤2原因:當計數值達到10,"數據塊_2".CV=10,緊接着"數據塊_2".CV與"數據塊_2".PV的比較結果(True)作為計數器R的輸入,使得計數值清零,同時複位"數據塊_2".QU,在下一網絡段"DB77".Static_15依然是False,無法實現脈沖。

從例子可知,計數器的執行是先處理輸入,再處理輸出,在指令塊執行過程中,内部變量(例如QU、CV)可能出現多次變化。

用法與我前面文章寫道的定時器的用法基本一緻,可以參照看看。S7-1200指令講解之定時器指令S7-1200調用定時器和計數器指令時如何減少背景數據塊的使用

電氣相關知識和經驗是用來分享,希望本文能對你有幫助。與人玫瑰,手留餘香。

歡迎大家關注,點贊,評論及轉發。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved