PDA

Просмотр полной версии : DTSplit пишет в переменные нули



Mikhail_NNT
11.02.2025, 13:25
Здравствуйте, разбираю пример "Синхронизация времени с ПЛК". Весь функционал работает, но DTSplit пишет в переменные нули.

xSynchronizationTime: BOOL :=FALSE; //Метка синхронизации времени Сенсорной панели с ПЛК
wYear: UINT; //Год (системное время ПЛК)
wMonth: UINT; //Месяц (системное время ПЛК)
wDay: UINT; //День (системное время ПЛК)
wHour: UINT; //Час (системное время ПЛК)
wMinute: UINT; //Минута (системное время ПЛК)
wSecond: UINT; //Секунда (системное время ПЛК)

DTU.DTSplit (dtDateAndTime:=TargetVars.stRTC.dtDateAndTime, puiYear:=TargetVars.wYear, puiMonth:=TargetVars.wMonth, puiDay:=TargetVars.wDay,
puiHour:=TargetVars.wHour, puiMinute:=TargetVars.wMinute, puiSecond:=TargetVars.wSecond); //Считываю DateAndTime и разбиваю по переменным UINT

TargetVars.xSynchronizationTime:= (TargetVars.stRTC.sGetFormatTime=TargetVars.sStart Shift1 OR TargetVars.stRTC.sGetFormatTime=TargetVars.sStartS hift2 OR TargetVars.stRTC.sGetFormatTime='08:51:00'); //Синхронизация в заданное время

81918

Евгений Кислов
11.02.2025, 13:28
Добрый день.
Вам, на самом деле, не нужен DTSplit.
В узле дерева проекта OwenRTC есть каналы со всеми нужными вам данными. Просто привяжите к ним переменные (если это еще не сделано).

Mikhail_NNT
11.02.2025, 13:47
Добрый день.
Вам, на самом деле, не нужен DTSplit.
В узле дерева проекта OwenRTC есть каналы со всеми нужными вам данными. Просто привяжите к ним переменные (если это еще не сделано).

Спасибо, разобрался, все работает. Вместо DTSplit сделал простое присвоение:

TargetVars.uiYear:= TargetVars.stRtc.uiGetYear;
TargetVars.uiMonth:= TargetVars.stRtc.usiGetMonth;
TargetVars.uiDay:= TargetVars.stRtc.usiGetDay;
TargetVars.uiHour:= TargetVars.stRtc.usiGetHour;
TargetVars.uiMinute:= TargetVars.stRtc.usiGetMinute;
TargetVars.uiSecond:= TargetVars.stRtc.usiGetSecond;