西門子SCL編程入門教程連載(14)-時鐘讀寫指令
設(shè)備在生產(chǎn)制造過程的數(shù)據(jù)記錄需要有準(zhǔn)確的時間信息,以便對產(chǎn)品質(zhì)量進(jìn)行檢查、監(jiān)控及追溯;
PLC與人機(jī)界面(HMI)的時間需要保持同步,以便操作人員查看相關(guān)的信息;
所有這些需求,都涉及到對PLC時鐘的讀寫。今天這篇文章,我們就來介紹下如何使用西門子SCL編程語言提供的指令對PLC的時鐘進(jìn)行讀寫。

對PLC/CPU時鐘的讀寫,西門子SCL提供了RD_SYS_T(read system time)、WR_SYS_T(write system time)、RD_LOC_T(read local time)和WR_LOC_T(write local time)四種指令。
1、RD_SYS_T(read system time)
RD_SYS_T指令能讀取CPU的當(dāng)前系統(tǒng)時間,該指令有一個輸出參數(shù)(OUT)和一個返回值(RET_VAL)。
返回值RET_VAL的數(shù)據(jù)類型為整型(INT),用于返回指令執(zhí)行的狀態(tài),其編碼如下:
|
RET_VAL: 錯誤代碼(16進(jìn)制) |
描述 |
|
0000 |
沒有錯誤 |
|
8081 |
OUT輸出值的范圍超出界限 |
輸出值OUT為指令讀取到的時間,該時間值不包括本地時區(qū)或夏令時偏移量等信息,其數(shù)據(jù)類型根據(jù)CPU類型的不同有所不同:
對于S7-1200系列CPU,其數(shù)據(jù)類型為DTL;
對于S7-1500系列CPU,其數(shù)據(jù)類型為DT、LDT或者DTL;
舉個例子:
首先定義兩個臨時變量tmp_cpu_system_time和tmp_return,如下圖:

使用指令RD_SYS_T讀取系統(tǒng)時間并存放到tmp_cpu_system_time中,代碼如下:

2、WR_SYS_T (write system time)
WR_SYS_T指令能夠設(shè)置CPU的當(dāng)前系統(tǒng)時間。
該指令有一個輸入?yún)?shù)(IN)和一個返回值(RET_VAL);
返回值RET_VAL返回指令執(zhí)行的狀態(tài),其編碼如下:
|
RET_VAL: 錯誤代碼(16進(jìn)制) |
描述 |
|
0000 |
沒有錯誤 |
|
8080 |
日期錯誤 |
|
8081 |
時間錯誤 |
|
8082 |
月(month)數(shù)值無效 |
| 8083 | 日(day)數(shù)值無效 |
| 8084 | 小時(hour)數(shù)值無效 |
| 8085 | 分鐘(minute)數(shù)值無效 |
| 8086 | 秒(second)數(shù)值無效 |
| 8087 | 納秒(nanosecond)數(shù)值無效 |
| 80B0 | 實(shí)時時鐘故障 |
輸入?yún)?shù)IN是要設(shè)置的時間值,不包括本地時區(qū)或夏令時偏移。
其數(shù)據(jù)類型根據(jù)CPU類型的不同有所不同:
對于S7-1200系列CPU,其數(shù)據(jù)類型為DTL;
對于S7-1500系列CPU,其數(shù)據(jù)類型為DT、LDT或者DTL;
舉個例子:
使用WR_SYS_T指令設(shè)置CPU的系統(tǒng)時間為2019-12-17 10:00:00,代碼如下:

3、RD_LOC_T (read local time)
RD_LOC_T指令能讀取CPU的本地時間,該指令有一個輸出參數(shù)(OUT)和一個返回值(RET_VAL)。
與RD_SYS_T指令不同,如果當(dāng)前CPU有設(shè)置時區(qū)或夏令時,則 RD_LOC_T指令會輸出當(dāng)前時區(qū)的時間或夏令時。
RET_VAL的數(shù)據(jù)類型為整數(shù)(INT),返回指令執(zhí)行的狀態(tài),其編碼如下:
|
RET_VAL: 錯誤代碼(16進(jìn)制) |
描述 |
|
0000 |
沒有錯誤 |
|
0001 |
沒有錯誤,輸出為夏令時 |
|
8080 |
無法讀取CPU的系統(tǒng)時間 |
|
8081 |
OUT輸出值的范圍超出界限 |
輸出值OUT的數(shù)據(jù)類型根據(jù)CPU的不同有所不同:
對于S7-1200系列CPU,輸出值OUT的數(shù)據(jù)類型為DTL;
對于S7-1500系列CPU,輸出值OUT的數(shù)據(jù)類型為DT、LDT或者DTL;
使用RD_LOC_T讀取CPU的本地時間并存放到tmp_cpu_local_time中,代碼如下:

4、WR_LOC_T (write local time)
WR_LOC_T指令用來設(shè)置CPU的本地時間,該指令有兩個輸入?yún)?shù)(LOCTIME和DST)和一個返回值(RET_VAL)。
RET_VAL的數(shù)據(jù)類型為整數(shù)(INT),返回指令執(zhí)行的狀態(tài),其代碼如下:
|
RET_VAL: 錯誤代碼(16進(jìn)制) |
描述 |
|
0000 |
沒有錯誤 |
|
8080 |
LOCTIME的值無效 |
|
8081 |
LOCTIME的值超出界限 |
LOCTIME是要寫入的時間值,數(shù)據(jù)類型為DTL(S7-1200)或者DT、LDT、DTL(S7-1500);
DST是英文"Daylight Saving Time"的首字母縮寫,表示“夏令時”。數(shù)據(jù)類型為布爾型,TRUE表示采用夏令時,F(xiàn)ALSE表示采用標(biāo)準(zhǔn)時間;
舉個例子:
設(shè)置CPU的本地時間為2019-12-17 10:15:00(非夏令時),代碼如下:

好了,關(guān)于西門子SCL編程語言時鐘讀寫指令就先介紹到這里。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
