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