PDA

Просмотр полной версии : СП300 - синхронизация времени



parovoZZ
27.03.2024, 14:53
Всем привет!
Требуется на сабже синхронизировать время с ПЛК. Время на ПЛК синхронизируется с сервером времени.
Системные регистры, содержащие время, только для чтения. Экспорт времени - это только экспорт. А мне нужен импорт с ПЛК.

Не понимаю, есть ли такая возможность?

petera
27.03.2024, 15:24
У меня в библиотеке ГМ есть для этого случая Графический Макрос для автоматической синхронизации часов панели с часами ПЛК.
Панель - мастер, ПЛК - слейв.
В слейве ПЛК нужно шесть регистров с временем по порядку Год, Месяц, День, час, минуты,секунды
Синхронизация происходит ежедневно, ровно в полдень по часам в ПЛК или по команде(через бит управления)
ГМ находится в папке ".\ГМ для СП300\Макро\ДатаВремя\RTC"
74760

Переменные
74761

ДатаВремя в ПЛК - адрес первого регистра из шести, в которых находятся текущие значения (год, месяц, день, час, минуты, секунды) часов ПЛК.

ЗАМЕЧАНИЕ
диапазон значений для года ограничен значениями от 2000 до 2099
диапазон значений для месяца от 1 до 12
диапазон значений для дня от 1 до 31
диапазон значений часов от 0 до 23
диапазон значений для минут и секунд от 0 до 59.
В макросе проверяется диапазон входных переменных и если их значение не укладывается заданные диапазоны, то их значения будут принудительно ограничены максимальным или минимальным значениями.
Т.е. если полученное из ПЛК значение для года будет, например 1998, то будет взято нижнее допустимое значение - 2000. Или если полученное из ПЛК значение для месяца будет, например 100, то будет взято верхнее допустимое значение - 12.

СинхПоКоманде - дополнительный вход для принудительной синхронизации часов, задается битом. Синхронизации будет выполнена по фронту этого бита, например от битовой кнопки с действием ВКЛ. пока нажата. Если дополнительный вход ненужен, следует использовать бит PSB1 - перманентный лог."0".

ЗЫ проект с этим ГМ во вложении

parovoZZ
27.03.2024, 15:35
А этот макрос куда записывает полученные значения?

petera
27.03.2024, 15:39
А этот макрос куда записывает полученные значения?

В RTC (часы реального времени) панели
Значения будут видны в системных регистрах PSW30..35

parovoZZ
27.03.2024, 15:50
Так макрос физически куда пишет? В справке ничего не нашёл про то, как из макроса писать в RTC.

petera
27.03.2024, 15:55
Так макрос физически куда пишет? В справке ничего не нашёл про то, как из макроса писать в RTC.
Я же сказал - физически пишет в RTC !

petera
27.03.2024, 15:56
Я же сказал - физически пишет в RTC !

ЗЫ.
У меня Графический Макрос, про него и подавно в справке ничего нет :p
Вот - прямо в RTC и пишет
74767

74768

parovoZZ
27.03.2024, 16:06
А это откуда картинка? В моём конфигураторе почему такого нет?

petera
27.03.2024, 16:09
А это откуда картинка? В моём конфигураторе почему такого нет?

Вам ехать или шашечки?

74769

parovoZZ
27.03.2024, 16:39
Мне и то, и другое. Ещё и завернуть)

parovoZZ
28.03.2024, 10:09
Вам ехать или шашечки?


Мне, напрмиер, не нужна дата. Как минимум, год и месяц. А только время. Как это исправить?
Писать из панели в ПЛК, а потом читать макросом эти же регистры...ну это же бред?
Хуже всего, когда зависишь от кого-то((

petera
28.03.2024, 12:01
Мне, напрмиер, не нужна дата. Как минимум, год и месяц. А только время. Как это исправить?
Писать из панели в ПЛК, а потом читать макросом эти же регистры...ну это же бред?
Хуже всего, когда зависишь от кого-то((

Читать/писать...
Не все так очевидно.
В регистрах панели время представлено в BCD формате(двоично десятичный формат), а в регистрах слейва ПЛК - в обычном двоичном.
Мой макрос не просто читает из ПЛК 6 регистров, а е еще и преобразует каждое значение в двоично десятичный формат. После чего записывает новые значения в RTC.
Если уже никак нельзя взять дату из ПЛК, то проще подправить мой ГМ, 10 - 15 сек времени потратить

kondor3000
28.03.2024, 12:45
Да ничего не надо подправлять, синхронизацию надо делать и даты и времени.
А брать что надо, нужно только время, берёте 3 регистра времени, час, мин и сек.

parovoZZ
28.03.2024, 12:47
Так а в чём его править?

petera
28.03.2024, 12:51
Так а в чём его править?

В нем же (в конфигураторе) и править
https://owen.ru/forum/attachment.php?attachmentid=74797&d=1711618947

А теперь проверим результат
https://owen.ru/forum/attachment.php?attachmentid=74799&d=1711619304

petera
28.03.2024, 12:57
Этот проект с модифицированным макросом

parovoZZ
28.03.2024, 13:20
В нем же (в конфигураторе) и править

у меня нет такого
74803

parovoZZ
28.03.2024, 13:22
Да ничего не надо подправлять, синхронизацию надо делать и даты и времени.


да что-то лениво писать код для вычисления текущего месяца и даты))
А стандартная SysTimeRtcConvertUtcToLocal из CodeSys вешает контроллер.

petera
28.03.2024, 13:33
у меня нет такого
74803
Самый простой способ - редактировать файл "Option.dat"
Для версии 2D.3к нужно искать его в папке "\xinje\TouchWin" в Application Data в профиле текущего пользователя Windows
Для быстрого перехода в папку Application Data для любой версии Win
1. Запустите окошко «Выполнить», нажав комбинацию клавиш Win+R
2. Введите или скопируйте туда фразу “%appdata%” без кавычек

Папка Application Data откроется, невзирая на то, что она скрытая. Ищите в ней папку xinje\TouchWin.
Открываете в блокноте Option.dat и в секции [software]
пишите ключ
UserMode=1
Если секции [software] нет, то создать ее
[software]
UserMode=1

Однако через редактирование файла "Option.dat" в этой версии конфигуратора полноценно работать в расширенном режиме уже невозможно, все базовые элементы на панелях серые. Можно только редактировать системные экраны и системные окна.
Нужны более кардинальные способы.

Вот в старой версии, V2.D3d, если ее установить в другую папку, можно полноценно работать в расширенном режиме
- найти файл Option.dat, в папке с конфигуратором
- открыть его в Блокноте
- найти секцию
[software] (если ее нет, то создать)
- дописать в секцию [software] ключ
usermode=1

Для возврата в обычный режим, записать
usermode=0

parovoZZ
28.03.2024, 14:03
а как часто вызывается этот макрос?

petera
28.03.2024, 14:10
а как часто вызывается этот макрос?
В посте #2 все расписано

Синхронизация происходит ежедневно, ровно в полдень по часам в ПЛК или по команде(через бит управления)

А через бит управления - с любой частотой

СинхПоКоманде - дополнительный вход для принудительной синхронизации часов, задается битом. Синхронизации будет выполнена по фронту этого бита, например от битовой кнопки с действием ВКЛ. пока нажата. Если дополнительный вход ненужен, следует использовать бит PSB1 - перманентный лог."0".

parovoZZ
28.03.2024, 16:48
А глобальным его надо делать?

petera
28.03.2024, 18:24
А глобальным его надо делать?

Да, конечно

parovoZZ
04.04.2024, 16:37
Удивительно... Оказывается, во внутреннем пространстве панели есть пара регистров PSW220 и PSW221, с помощью которых можно подправить системное время. И ведь нигде в справке про это не сказано.

kondor3000
04.04.2024, 21:58
Удивительно... Оказывается, во внутреннем пространстве панели есть пара регистров PSW220 и PSW221, с помощью которых можно подправить системное время. И ведь нигде в справке про это не сказано.

Страница 199 Руководства по эксплуатации 74975

delta8
12.04.2024, 08:04
У меня в библиотеке ГМ есть для этого случая Графический Макрос для автоматической синхронизации часов панели с часами ПЛК.
Панель - мастер, ПЛК - слейв.
В слейве ПЛК нужно шесть регистров с временем по порядку Год, Месяц, День, час, минуты,секунды
Синхронизация происходит ежедневно, ровно в полдень по часам в ПЛК или по команде(через бит управления)
ГМ находится в папке ".\ГМ для СП300\Макро\ДатаВремя\RTC"
74760

Переменные
74761

ДатаВремя в ПЛК - адрес первого регистра из шести, в которых находятся текущие значения (год, месяц, день, час, минуты, секунды) часов ПЛК.

ЗАМЕЧАНИЕ
диапазон значений для года ограничен значениями от 2000 до 2099
диапазон значений для месяца от 1 до 12
диапазон значений для дня от 1 до 31
диапазон значений часов от 0 до 23
диапазон значений для минут и секунд от 0 до 59.
В макросе проверяется диапазон входных переменных и если их значение не укладывается заданные диапазоны, то их значения будут принудительно ограничены максимальным или минимальным значениями.
Т.е. если полученное из ПЛК значение для года будет, например 1998, то будет взято нижнее допустимое значение - 2000. Или если полученное из ПЛК значение для месяца будет, например 100, то будет взято верхнее допустимое значение - 12.

СинхПоКоманде - дополнительный вход для принудительной синхронизации часов, задается битом. Синхронизации будет выполнена по фронту этого бита, например от битовой кнопки с действием ВКЛ. пока нажата. Если дополнительный вход ненужен, следует использовать бит PSB1 - перманентный лог."0".

ЗЫ проект с этим ГМ во вложении

Петр, подскажите, этот макрос только синхронизирует время панели относительно ПЛК или может и наоборот работать, то есть синхронизировать время ПЛК относительно времени панели?

petera
12.04.2024, 10:43
Петр, подскажите, этот макрос только синхронизирует время панели относительно ПЛК или может и наоборот работать, то есть синхронизировать время ПЛК относительно времени панели?

Только время из ПЛК в панель, на оборот не делал