Отображение даты

Avatar
  • обновлен

Image 2146

Добрый день. Прошу помощи с корректным выводом даты в формате ДД:ЧЧ:ММ.

Данные с Codesys 3.5 приходят в формате ltime. Можно ли вывести также, в таком же формате?

Image 2141

Avatar
Цитата от иван_в

Image 2166

Вроде работает но данные не подтягивает с основного канала (переменной)

Image 2167

Вот же рабочий пример скрипта!!!

Avatar
иван_в
Цитата от СИМП Лайт (тех поддержка)

Image 2172

Если скрипт как на скрине - то он не будет ничего читать. Там константное значение установлено.

Все верно, это понимаю. Тут просто факт в том что это значение попадает в монитор. Но при чтении регистра с ПЛК, данные не принимаются.

Avatar
var
  val: int64;

function LTimeToString(const LTime: Int64): string;
var
  TotalSeconds: Int64;
  Days, Hours, Minutes, Seconds: Integer;
begin
  // 1 наносекунда = 1e-9 секунд
  TotalSeconds := LTime div 1000000000;
  Days := TotalSeconds div 86400;
  TotalSeconds := TotalSeconds mod 86400;
  Hours := TotalSeconds div 3600;
  TotalSeconds := TotalSeconds mod 3600;
  Minutes := TotalSeconds div 60;
  Seconds := TotalSeconds mod 60;
  Result := Format('%dd:%dh:%dm:%ds', [Days, Hours, Minutes, Seconds]);
end;

Begin
  val := ReadValue('Имя вашего канала с которого читаем LTIME');
  WriteValue('Virtual channel', LTimeToString(val));
end.

В видео примере я показал что данные считываются и отображаются корректно.

Avatar
иван_в
Цитата от СИМП Лайт (тех поддержка)
var
  val: int64;

function LTimeToString(const LTime: Int64): string;
var
  TotalSeconds: Int64;
  Days, Hours, Minutes, Seconds: Integer;
begin
  // 1 наносекунда = 1e-9 секунд
  TotalSeconds := LTime div 1000000000;
  Days := TotalSeconds div 86400;
  TotalSeconds := TotalSeconds mod 86400;
  Hours := TotalSeconds div 3600;
  TotalSeconds := TotalSeconds mod 3600;
  Minutes := TotalSeconds div 60;
  Seconds := TotalSeconds mod 60;
  Result := Format('%dd:%dh:%dm:%ds', [Days, Hours, Minutes, Seconds]);
end;

Begin
  val := ReadValue('Имя вашего канала с которого читаем LTIME');
  WriteValue('Virtual channel', LTimeToString(val));
end.

В видео примере я показал что данные считываются и отображаются корректно.

Image 2173

Avatar

Предлагаю внимательно изучать присланный пример.

Image 2174

Avatar
иван_в
Цитата от иван_в

Image 2173

Спасибо большое. Все заработало!

Image 2175

Осталось разобраться с соседней темой "Не корректное отображение переменной типа REAL"

Avatar

Для начала нужно разобраться с тем что передаёт ОРС. В теме я все подробно расписал.