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