讀取和設置實時時鐘
LAD/FBD |
STL |
說明 | |
TODRX |
T |
讀取擴展實時時鐘指令從 PLC 中讀取當前時間、日期和夏令時組態, | |
并將其裝載到從 T 所分配地址開始的 19 字節緩沖區中。 | |||
![]() |
TODWX |
T |
設置實時時鐘指令使用字節地址 T 分配的 19 字節時間緩沖區數據將新的時間、日期和夏令時組態寫入到 PLC 中。 |
ENO = 0 時的非致命錯誤 |
受影響的 SM 位 | ||
· |
0006H 間接地址 |
無 | |
· |
0007H T 數據錯誤 |
||
輸入 |
數據類型 |
操作數 | |
T |
BYTE |
IB、QB、VB、MB、SMB、SB、LB、*VD、*LD、*AC |
說明
READ_RTC、SET_RTC 編程提示
不接受無效日期。 例如,如果您輸入 2 月 30 日,則將發生非致命日時鐘錯誤
(0007H)。不要在主程序和中斷例程中使用 READ_RTC/SET_RTC 指令。 執行另一個
READ_RTCX/SET_RTCX 指令時,無法執行中斷例程中的 READ_RTCX/SET_RTCX 指
令。在這種情況下,系統標志位 SM4.3 會置位,指示嘗試同時對日時鐘執行二重訪問,導致 T 數據錯誤(非致命錯誤 0007H)。
CPU 中的日時鐘僅使用年份的最后兩位數,因此 2000 年表示為 00。但使用年份值的用戶程序必須考慮兩位數的表示法。
2099 年之前的閏年均可正確處理。
8 字節時間緩沖區的格式,從字節地址 T 開始
所有日期和時間值必須采用 BCD 格式分配(例如,16#12 代表 2012 年)。 00 至
99 的 BCD 值范圍可分配范圍為 2000 至 2099 的年份。
T 字節 |
說明 |
數據值 | |
0 |
年 |
00 |
至 99(BCD 值)20xx 年: 其中,xx 是 T 字節 0 中的兩位數 BCD 值 |
1 |
月 |
01 |
至 12(BCD 值) |
2 |
日 |
01 |
至 31(BCD 值) |
3 |
小時 |
00 |
至 23(BCD 值) |
4 |
分 |
00 |
至 59(BCD 值) |
5 |
秒 |
00 |
至 59(BCD 值) |
6 |
保留 |
始終設置為 00 | |
7 |
星期幾 |
使用 SET_RTC/TODW 指令寫入時會忽略值。 | |
通過 READ_RTC/TODR 指令進行讀取時,值會根據當前年/ | |||
月/日值報告正確的星期幾。 | |||
1 至 7,1 = 星期日,7 = 星期六(BCD 值) |
超出斷電時長對 CPU 時鐘的影響
超出斷電時長后,CPU 將初始化為下表所示的時間值。
日期 |
時間 |
星期幾 |
2000 年 1 月 1 日 |
00:00:00 |
星期六 |
說明
緊湊型 S7-200 SMART CPU 型號 CR40 和 CR60 不含 RTC(實時時鐘)或超級電容
可借助 READ_RTC 和 SET_RTC 指令設置 CPU 型號
CR40 和 CR60 的年份、日期和時
間值,但這些值會在下一次 CPU 斷電再重新上電時丟失。 上電時,日期和時間將初始化為 2000 年 1 月 1 日。
1、SET_RTC(設置時鐘)指令
定義連續8個字節的數據區,每個字節分別是 年、月、日、時、分、秒、保留、星期,每個字節都是BCD碼,組合起來的時鐘必須時合法的時鐘。
寫時鐘指令需要嚴格按照8個字節的時鐘緩沖區格式,設置相應的數據單元,任何不合格的數據都可能造成不能寫入的現象。注意數據的格式必須是BCD格式,可以說是將10進制數換成16進制表示,如16#59(59H)就是59(秒/分等)。
執行寫時鐘指令要保證緩沖區所有字節都包含合法數據;僅修改某些數據時,其他字節不能包含非法數值,否則會發生錯誤。
寫時鐘指令必須使用一次性的脈沖(沿)觸發條件,不能持續激活寫時鐘指令。
2、用庫指令SET_RTC_I ,它也是8個字節,只是用單節是十進制整數格式存儲,不用 BCD 碼,指令會將其換成BCD碼,同樣要用沿調用。
3、READ_RTC(設置時鐘)指令
定義連續8個字節的數據區,每個字節分別是 年、月、日、時、分、秒、保留、星期,每個字節都是BCD碼,組合起來的時鐘必須時合法的時鐘。