Вход

Просмотр полной версии : ПР103. Переменные даты и времени. Требуется помощь.



Moreman
11.08.2024, 04:58
Добрый день. Подскажите, пожалуйста, начинающему как на ПР103 вывести переменную с часов реального времени. Зашел в настройки прибора, установил "ДАТА И ВРЕМЯ С КОМПЬЮТЕРА", после этого, во вкладке ПЕРЕМЕННЫЕ ДАТЫ И ВРЕМЕНИ часов реального времени, в строке, допустим, МИНУТЫ в графе ПЕРЕМЕННАЯ, даю имя Min и выбираю ЦЕЛЬНОЧИСЛЕННОЕ. Вроде все правильно.
Захожу в окно проекта, кликаю СОЗДАНИЕ БЛОКА ВХОДНОЙ ПЕРЕМЕННОЙ, выбираю в нем перемнную Min. Включаю симуляцию и окно просмотра на данном блоке. Таки никакой информации сколько минут натикало НЕТ. Кажет только ИМЯ- Min, ЗНАЧЕНИЕ- 0, ТИП ПЕРЕМЕННОЙ- цельночисленное. Подскажите, пожалуйста, где накосячил.
Контроллер c помощью конфигуратора без пробем подключил по Ethernet, все пишется, загружается и работает а переменными от часов для недельного таймера как-то не заладилось.

АРТ.Кар 64
11.08.2024, 06:28
77956


Возможно,что здесь.

77957

И переменная вроде бы как должна быть "сервисной".
Типа как на ПР 100 или ПР 200.

Dimensy
11.08.2024, 09:05
В симуляции у ПР103 и ПР205 сервисные переменные не работают

kondor3000
11.08.2024, 10:14
Добрый день. Подскажите, пожалуйста, начинающему как на ПР103 вывести переменную с часов реального времени. Зашел в настройки прибора, установил "ДАТА И ВРЕМЯ С КОМПЬЮТЕРА", после этого, во вкладке ПЕРЕМЕННЫЕ ДАТЫ И ВРЕМЕНИ часов реального времени, в строке, допустим, МИНУТЫ в графе ПЕРЕМЕННАЯ, даю имя Min и выбираю ЦЕЛЬНОЧИСЛЕННОЕ. Вроде все правильно.
Захожу в окно проекта, кликаю СОЗДАНИЕ БЛОКА ВХОДНОЙ ПЕРЕМЕННОЙ, выбираю в нем перемнную Min. Включаю симуляцию и окно просмотра на данном блоке. Таки никакой информации сколько минут натикало НЕТ. Кажет только ИМЯ- Min, ЗНАЧЕНИЕ- 0, ТИП ПЕРЕМЕННОЙ- цельночисленное. Подскажите, пожалуйста, где накосячил.
Контроллер c помощью конфигуратора без пробем подключил по Ethernet, все пишется, загружается и работает а переменными от часов для недельного таймера как-то не заладилось.

В соседней теме выложен ФБ для работы времени в симуляции и онлайн, для ПР103 и ПР205.
https://owen.ru/forum/showthread.php?t=38721#8

Moreman
11.08.2024, 22:21
В соседней теме выложен ФБ для работы времени в симуляции и онлайн, для ПР103 и ПР205.
https://owen.ru/forum/showthread.php?t=38721#8

Спасибо. Сначала не понял причем здесь счетчик наработки механизма, но там есть и макрос UT_UTS1 который решает всю проблему. Спасибо тому, кто его написал. Я весь в непонятке почему чтение всяких инструкций и справок как к OWEN Logic, так и к ПР103 ну НИКАК не помогают решить проблему с вводом в проект инфы относительно текущего времени. Это так, на заметку OWENу. Пусть хотя бы данный макрос ложат в стандартную библиотеку, не все же супер-пупер навороченные программисты. Нужно делать так, чтобы любой электрослесарь и повар мог программировать ПР. Это как Бил Гейтс, который обещал, что РС сможет пользоваться любая домохозяйка и сделал это.

kondor3000
12.08.2024, 07:49
Спасибо. Сначала не понял причем здесь счетчик наработки механизма, но там есть и макрос UT_UTS1 который решает всю проблему. Спасибо тому, кто его написал. Я весь в непонятке почему чтение всяких инструкций и справок как к OWEN Logic, так и к ПР103 ну НИКАК не помогают решить проблему с вводом в проект инфы относительно текущего времени. Это так, на заметку OWENу. Пусть хотя бы данный макрос ложат в стандартную библиотеку, не все же супер-пупер навороченные программисты. Нужно делать так, чтобы любой электрослесарь и повар мог программировать ПР. Это как Бил Гейтс, который обещал, что РС сможет пользоваться любая домохозяйка и сделал это.

Внутри ФБ использованы стандартные функции Даты и Времени, они описаны даже в справке Лоджика по F1 на языке ST. Это не обычный макрос, а Функц. блок, код самого ФБ, переносится просто копипастом текста.
Просто все ленятся читать и учить новое. Да, начинающим не так просто, но для этого есть форум.

Если вам интересен язык ST, то разные примеры выложены тут https://owen.ru/forum/showthread.php?t=37203&page=9&p=429061#81

ProRus
05.01.2025, 09:27
Возможно ли каким либо образом изменить время в приборе используя Modbus?
В ПР102 .это делалось легко и не принужденно.

Dimensy
05.01.2025, 10:32
Возможно ли каким либо образом изменить время в приборе используя Modbus?
В ПР102 .это делалось легко и не принужденно.

- Штурман, приборы
- 55
- Что 55?
- А что, приборы?

ProRus
05.01.2025, 11:03
- Штурман, приборы
- 55
- Что 55?
- А что, приборы?
Если я правильно понял иронию, то мне нужно:
Сделать так, что бы пользователь мог корректировать время на ПР103 при помощи HMI панели Kinco если оно каким либо образом сбилось.
Панель подключена при помощи RS485 к реле.
Через переменные, отдельные регистры времени, даты не получается. Я так понимаю что они только для чтения, хотя в документации про них ни слова (только про общее Время и дата (UTC)).
Поэтому и возник вопрос. "Возможно ли каким либо образом изменить время в приборе используя Modbus?"
Может я чего не дочитал или пропустил?

Dimensy
05.01.2025, 14:41
Если я правильно понял иронию, то мне нужно:
Сделать так, что бы пользователь мог корректировать время на ПР103 при помощи HMI панели Kinco если оно каким либо образом сбилось.
Панель подключена при помощи RS485 к реле.
Через переменные, отдельные регистры времени, даты не получается. Я так понимаю что они только для чтения, хотя в документации про них ни слова (только про общее Время и дата (UTC)).
Поэтому и возник вопрос. "Возможно ли каким либо образом изменить время в приборе используя Modbus?"
Может я чего не дочитал или пропустил?

Вроде, где-то этот вопрос уже поднимался, но я не нашел. Попробуйте записать дату/время в формате UTC в регистр 61553
81123

kondor3000
05.01.2025, 17:19
Вроде, где-то этот вопрос уже поднимался, но я не нашел. Попробуйте записать дату/время в формате UTC в регистр 61553


Вопрос, где он в панели возьмёт время в формате UnixTime или DT ? 81124
Там есть только по отдельности часы, мин, сек, дата, месяц и год. Вот их и надо передавать, а уже в ПР205 пересчитывать и записывать в переменную UTC. Надо проверять получится ли так . https://owen.ru/forum/showthread.php?t=40116#4

Dimensy
05.01.2025, 17:25
Вопрос, где он в панели возьмёт время в формате UnixTime или DT ? 81124
Там есть только по отдельности часы, мин, сек, дата, месяц и год. Вот их и надо передавать, а уже в ПР205 пересчитывать и записывать в переменную UTC.

А что, в панели макросов нет? А собрать UTC, насколько я помню, достаточно просто. А, если собирать в ПРке, то там намного больше геморроя будет, чем напрямую в регистр записать значение

kondor3000
05.01.2025, 17:48
А что, в панели макросов нет? А собрать UTC, насколько я помню, достаточно просто. А, если собирать в ПРке, то там намного больше геморроя будет, чем напрямую в регистр записать значение

Макросы в панели Кинко есть, только не каждый сможет их написать, проще взять время панели и использовать его в ПР,
тем более в ПР поганые кварцы стоят и время начинает постоянно врать.

ProRus
07.01.2025, 10:17
Вроде, где-то этот вопрос уже поднимался, но я не нашел. Попробуйте записать дату/время в формате UTC в регистр 61553
81123

Пробовал, не получилось. Попробую еще раз, возможно я где то ошибся.


Вопрос, где он в панели возьмёт время в формате UnixTime или DT ? 81124
Там есть только по отдельности часы, мин, сек, дата, месяц и год. Вот их и надо передавать, а уже в ПР205 пересчитывать и записывать в переменную UTC. Надо проверять получится ли так . https://owen.ru/forum/showthread.php?t=40116#4

Это не проблема, обработать при помощи ПР не сложно, я записать не могу. В документации написано что только тайм зона имеет возможность записи и то через функцию 16, которой в Kinco нет.
81167
Например мне приходится переводить время ПР в UNIX при помощи такого кода:

function_block UnixTime // UnixTime
var_input //объявление входных переменных
Active: bool;
end_var
var_output //объявление выходных переменных
UT: udint; // UnixTime
end_var
UT:=dt_to_udint(get_date_time()) + 946684800;
end_function_block

Овен опять перемудрили или я ничего не понимаю в стандартах. Что за стандарт такой 2000 год?
Я даже время смог поменять в ПР только при помощи Owen Configurator, через Owen Logic не получилось. Меняется и через секунду возвращается в исходное состояние.

melky
07.01.2025, 10:55
Овен опять перемудрили или я ничего не понимаю в стандартах. Что за стандарт такой 2000 год?

Это вроде соглашения, типа считать теперь не от 1970 года а от 2000 года для UnixTime.
Иначе первый вариант загнется в 2038 году в январе

kondor3000
07.01.2025, 11:30
В документации написано что только тайм зона имеет возможность записи и то через функцию 16, которой в Kinco нет.


Что значит нет 16 функции?
Если вы записываете любое 32 битное число, например UDINT (DWORD) или FLOAT, это 2 регистра, по умолчанию запись 16 функцией.
Функция 06, запись 1 регистра, а ведь в панели Кинко можно записывать до 120 регистров за 1 раз, если сделать адреса подряд.

В регистр 61553 надо записывать именно 32 битное число, типа 789564564, а не 100 (или 700)
Или проверить запись напрямую в переменную UTC, прямо в ПР205.

In_Da_Cher_A
07.01.2025, 19:35
чисто мысли вслух - для какой задачи требуется перегонка времени из панели в ПР?

МихаилГл
07.01.2025, 20:29
Нет 16 в десятичной... А 10 в шестнадцатеричной есть?...

Dimensy
07.01.2025, 23:08
Например мне приходится переводить время ПР в UNIX при помощи такого кода:

function_block UnixTime // UnixTime
var_input //объявление входных переменных
Active: bool;
end_var
var_output //объявление выходных переменных
UT: udint; // UnixTime
end_var
UT:=dt_to_udint(get_date_time()) + 946684800;
end_function_block


А зачем конвертировать дату/время из 01.01.2000.в 01.01.1970?

ProRus
09.01.2025, 11:02
А зачем конвертировать дату/время из 01.01.2000.в 01.01.1970?

По той причине, что изначально программа была написана для ПР102 и использовалось UnixTime, теперь придется переделать под 2000.

ProRus
09.01.2025, 11:02
Это вроде соглашения, типа считать теперь не от 1970 года а от 2000 года для UnixTime.
Иначе первый вариант загнется в 2038 году в январе

Спасибо, буду придерживаться этого стандарта.

ProRus
09.01.2025, 11:04
чисто мысли вслух - для какой задачи требуется перегонка времени из панели в ПР?

Перегонка не нужна, но нужна возможность изменения/корректировки оператором из панели.

ProRus
09.01.2025, 11:08
Что значит нет 16 функции?
Если вы записываете любое 32 битное число, например UDINT (DWORD) или FLOAT, это 2 регистра, по умолчанию запись 16 функцией.
Функция 06, запись 1 регистра, а ведь в панели Кинко можно записывать до 120 регистров за 1 раз, если сделать адреса подряд.

В регистр 61553 надо записывать именно 32 битное число, типа 789564564, а не 100 (или 700)
Или проверить запись напрямую в переменную UTC, прямо в ПР205.

Записать напрямую пробовал, не получилось. Но попробую еще раз, возможно что-то делал не так. Сейчас нет возможности проверить.
Она есть, просто называется 4X (4X, 4X-4Word, 4X-DWord).
81207
81208

melky
09.01.2025, 11:15
ProRus правильный стандарт структура DateTime как в C#, но там 8 байт на все.
Хотя технически без миллисекунд вроде можно время загнать и в 4 байта до 9999 года вроде.

без секунд, сорри. Достаточно 3-х байт с 0 года до 9999 года :)
а уж использовать 1 байт для секунд не проблема, учитывая, что у нас их 60, а байт это число 255

Dimensy
10.01.2025, 16:49
Записать напрямую пробовал, не получилось. Но попробую еще раз, возможно что-то делал не так. Сейчас нет возможности проверить.


Вот что мне ответили в техподдержке

Да, в ПР205 можно записать время. в ПР103, к сожалению, такого функционала нет.
Да, платформа и правда одна, но аппаратная часть разная.
Изменить/Подкорректировать время можно с помощью OwenConfigurator и OwenLogic.

Попробуйте, вдруг получится
81238

ProRus
23.01.2025, 19:15
Удалось реализовать.
Не уверен верно или нет, но работает.
Отредактировал встроенный макрос UNIX_TIME превратив его в 2000_TIME.
т.е. он переводит переменные времени и даты в формат UTC.
Далее по сигналу от сетевой переменной происходит запись в ПР103.
На фотках переменные в настройках ПР103 и сам измененный макрос.
81531
81532
81533

kondor3000
23.01.2025, 21:23
Удалось реализовать.
Не уверен верно или нет, но работает.
Отредактировал встроенный макрос UNIX_TIME превратив его в 2000_TIME.
т.е. он переводит переменные времени и даты в формат UTC.
Далее по сигналу от сетевой переменной происходит запись в ПР103.
На фотках переменные в настройках ПР103 и сам измененный макрос.

Если работает, значит верно.
Не понятно, чем ваш макрос отличается от моих ФБ на ST, ссылки давал, всё тоже самое, чуть адаптировать для записи только.