AstraRegul
Руководство системного интегратора
×

14.3. ПРОГРАММА DateTimeExample

Описание строк кода программы DateTimeExample.
tmTimeFromStart := TIME(); - функция TIME возвращает значение времени с момента запуска контроллера.
ulTimeFromStart:=TIME_TO_ULINT(tmTimeFromStart); - преобразование значения времени с момента запуска контроллера из формата TIME в формат ULINT, равное количеству миллисекунд.
dwSysTimeGetMs:=SysTimeGetMs(); - функция SysTimeGetMs возвращает значение времени с момента запуска контроллера в миллисекундах. Обратите внимание, что значения переменных ulTimeFromStart и dwSysTimeGetMs равны.
dwSysTimeRtsGet:= SysTimeRtcGet(res); - функция SysTimeRtcGet возвращает количество секунд в формате DWORD, прошедших с 1 января 1970 года.
dtCurTime:=DWORD_TO_DT(dwSysTimeRtsGet); - преобразование количества секунд, прошедших с 1 января 1970 года, из формата DWORD в формат DATE_AND_TIME.
 
Описание строк кода программы DateTimeExample.
SysTimeRtcConvertUtcToDate(dwSysTimeRtsGet, sdtDate) – функция преобразует количество секунд из переменной dwSysTimeRtsGet, прошедших с 1 января 1970 года, в структурированный формат с записью данных в sdtDate. В структуре sdtDate количество миллисекунд будет равно нулю.
SysTimeRtcHighResGet(stTime) – функция возвращает в переменную stTime количество миллисекунд в формате ULINT, прошедших с 1 января 1970 года.
SysTimeRtcConvertHighResToDate(stTime, sdtDateHiRes) - функция преобразует количество миллисекунд из переменной stTime, прошедших с 1 января 1970 года, в структурированный формат с записью данных в sdtDateHiRes.
 
Описание строк кода программы DateTimeExample.
pstime_value:= PsTime.GetUtcTimeNs(); - функция GetUtcTimeNs возвращает количество наносекунд, соответствующее текущему времени контроллера в формате ULINT.
pstime_as_string := PsTime.UTCTIMENS_TO_STRING(pstime_value, 0,1); - функция преобразует текущее время контроллера, сохраненное в переменной pstime_value в наносекундах, в строковую переменную pstime_as_string.
 
Ниже представлен код, в котором выполняется вычисление времени выполнения цикла FOR. Вместо цикла FOR можете подставить любой фрагмент кода программы, время выполнения которого требуется оценить.
start_time:=PsTime.GetUtcTimeNs();            - фиксация времени ПЛК (начало)
FOR j:=1 TO max_index DO                       - выполнение цикла FOR
     summ:=summ+1;
END_FOR
end_time:=PsTime.GetUtcTimeNs() ;           - фиксация времени ПЛК (конец)
result_time:=end_time-start_time;               - разность зафиксированных времен ПЛК начала и конца