PDA

Просмотр полной версии : ИПП120



Evgenii123
23.01.2025, 04:02
Здравствуйте. Подскажите как можно реализовать включение кондиционера с ИПП120, панель находится в режиме слейв, булевую переменную передавать отказывается.

МихаилГл
23.01.2025, 04:35
Куда она отказывается передавать булевы переменные? Т.е. мастер (кондиционер) умеет делать запросы, на которые ИПП120 отказывается отвечать?

Evgenii123
23.01.2025, 06:42
Мастером выступает ПЛК110, на ИПП хотел сделать включение кондиционера и задание уставки, но Овен лоджик говорит что сетевые переменные в режиме слейв не поддерживают булевый тип данных. Как я понимаю режим и задается с помощью булевого оператора

МихаилГл
23.01.2025, 06:49
Не понял про bool переменные. Ну изменяйте в слэйве регистры, а контроллером расшифровывайте, если с bool проблемы, хотя непонятно в чем именно. Выкладывайте проекты, заинтересованные люди посмотрят и подскажут брлее подробно, а так гадать что не так нельзя.

Evgenii123
23.01.2025, 07:00
Вот что хочу сделать, как забрать переменную Con_r из ИПП не понимаю. Возможно я не в ту сторону думаю

kondor3000
23.01.2025, 07:57
Вот что хочу сделать, как забрать переменную Con_r из ИПП не понимаю. Возможно я не в ту сторону думаю

Вот пример упаковки и распаковки 3 бит (с 0 бита по 2 бит) в Маску бит и передача целочисленной. 81503
Упаковать в 1 регистр можно до 16 бит (с 0 бита по 15 бит) . Сами можете добавить бит сколько надо и упаковать в макрос.

В ПЛК и в Лоджике на ST, упаковку и распаковку бит можно сделать через точку. Mask.0:=b0; Mask.1:=b1; -упаковка
b0:=Mask.0; b1:=Mask.1; - распаковка

melky
23.01.2025, 08:19
ИПП120 это тот же пр200. Регистр 512*16=8192 адрес Coil 0-го бита, 8193 адрес Coil 1-го бита и т.д.
Со стороны ПЛК можете писать напрямую.
Со стороны ИПП через маску бит в целочисленное.

Evgenii123
23.01.2025, 11:48
Можно где нибудь пример посмотреть? Опыта с контроллерами у меня мало.

kondor3000
23.01.2025, 13:18
Можно где нибудь пример посмотреть? Опыта с контроллерами у меня мало.

Вы что, даже по скрину схему не можете собрать? Там всего 3 блока, R_TRIG и XOR можно не вставлять, это для кнопки с запоминанием сделано.

Evgenii123
26.01.2025, 17:43
Как в Овен лоджик упаковать в маску я понял, а как в Codesys её распаковать?

МихаилГл
26.01.2025, 17:46
Просто:
word.0 и т.д

Вам же кондор все расписал выше...

kondor3000
26.01.2025, 18:03
Как в Овен лоджик упаковать в маску я понял, а как в Codesys её распаковать?
На скрине пример упаковки и распаковки через точку на CFC 81590
В ПЛК и в Лоджике на ST, упаковку и распаковку бит можно сделать через точку. Mask.0:=b0; Mask.1:=b1; -упаковка
b0:=Mask.0; b1:=Mask.1; - распаковка

Evgenii123
26.01.2025, 19:25
Понял. Спасибо

Evgenii123
01.02.2025, 09:41
Чтобы не плодить темы, спрошу тут же. Нужно установить доступ к изменениям уставок по паролю, это у меня получилось. Но если ввести пароль один раз то при выходе из настроек пароль снова не запрашивается. Хочется сделать чтоб пароль запрашивался снова при входе в экран уставок

МихаилГл
01.02.2025, 10:00
Если он в виде переменной, то затри эту переменную по таймеру.

Evgenii123
01.02.2025, 10:10
Пароль в виде константы

Dimensy
01.02.2025, 10:50
Чтобы не плодить темы, спрошу тут же. Нужно установить доступ к изменениям уставок по паролю, это у меня получилось. Но если ввести пароль один раз то при выходе из настроек пароль снова не запрашивается. Хочется сделать чтоб пароль запрашивался снова при входе в экран уставок

У вас же есть в макросе специальный выход для обнуления вводимого пароля
81683

1exan
01.02.2025, 10:51
Чтобы не плодить темы, спрошу тут же. Нужно установить доступ к изменениям уставок по паролю, это у меня получилось. Но если ввести пароль один раз то при выходе из настроек пароль снова не запрашивается. Хочется сделать чтоб пароль запрашивался снова при входе в экран уставок

Подключайте как в инструкции на макрос:

81684

Evgenii123
01.02.2025, 10:58
Спасибо! Все заработало!

Evgenii123
01.02.2025, 17:57
Подскажите как на ИПП реализовать архив аварий? Нашел пример на форуме, но там не монохромный дисплей. В общем не могу сообразить.

kondor3000
01.02.2025, 18:25
Подскажите как на ИПП реализовать архив аварий? Нашел пример на форуме, но там не монохромный дисплей. В общем не могу сообразить.

Вот один из примеров вывода аварий, миганием светодиода, там же есть и другие примеры
Вывод Аварий, 5 штук, миганием светодиода F1 https://owen.ru/forum/showthread.php?t=39169&page=3#21

Сергей0308
01.02.2025, 18:45
Трудно найти более неподходящий вариант для ИПП120, кстати, в этой теме(в посте#5), я ссылки давал на более подходящие для ИПП120 варианты: https://owen.ru/forum/showthread.php?t=39169

Evgenii123
01.02.2025, 19:08
Я в этой https://owen.ru/forum/showthread.php?t=31113&page=3 теме нашел вывод на экран аварий, только мне бы время возникновения аварии как то прикрутить. Ну и архив бы небольшой

Сергей0308
01.02.2025, 19:21
Я в этой https://owen.ru/forum/showthread.php?t=31113&page=3 теме нашел вывод на экран аварий, только мне бы время возникновения аварии как то прикрутить. Ну и архив бы небольшой

Что мешает взять вариант со временем, до 32 аварий можно запомнить, там же ссылка есть, что мешает-то: https://owen.ru/forum/showthread.php?t=29865&highlight=%EA%F2%EE+%EF%E5%F0%E2%FB%E9+%E2%F1%F2%E 0%EB%2C+%F2%EE%E3%EE+%F2%E0%EF%EA%E8

Если у вас несколько видов аварий, пишите по фронту(спаду) возникновения(исчезновения) аварии её номер(код), для этого потребуется не один бит, а несколько, например для 16 видов аварий нужно иметь 4-е бита в переменной для фиксации номера(кода) аварии!

Вот здесь обсуждали: https://owen.ru/forum/showthread.php?t=26216&page=24

FPavel
01.02.2025, 21:07
Среди компонентов есть макрос Events, в документе к нему и пример использования.

Ошибся с названием - Event_Log_v1.02

Evgenii123
03.02.2025, 10:39
Event_Log_v1.02 с этим макросом у меня при 12 событиях не осталось энергонезависимой памяти

kondor3000
03.02.2025, 10:49
Event_Log_v1.02 с этим макросом у меня при 12 событиях не осталось энергонезависимой памяти

Значит надо уменьшить кол-во событий и (или) отказаться от записи Даты (и Даты со Временем отключения). Или отказаться от архива.
Использовать другой пример. Это вам не ПЛК где памяти за глаза.

petera
03.02.2025, 10:50
Подскажите как на ИПП реализовать архив аварий? Нашел пример на форуме, но там не монохромный дисплей. В общем не могу сообразить.


Event_Log_v1.02 с этим макросом у меня при 12 событиях не осталось энергонезависимой памяти


Мой вариант журнала аварий (событий) https://owen.ru/forum/showthread.php?t=29865&p=294061&viewfull=1#post294061
аварии высвечиваются в порядке их появления

http://www.owen.ru/forum/attachment.php?attachmentid=40119&d=1543549697

ЗЫ.
Вариант с использованием макроса DC16bit, для вывода названий аварий(событий) https://owen.ru/forum/showthread.php?t=29865&p=294177&viewfull=1#post294177

Evgenii123
03.02.2025, 11:23
Отказаться от архива я не могу, в ТЗ указано что должно быть.

Сергей0308
03.02.2025, 11:44
Отказаться от архива я не могу, в ТЗ указано что должно быть.

Вам архив большой надо, на сколько событий с меткой времени?
В смысле, боюсь более чем на 150 событий не получится, памяти не хватит, это если всю энергонезависимую память ПР200 на архив пустить! Если не изменяет память, я в одной из тем форума прикидывал!

Evgenii123
03.02.2025, 11:52
Всего в системе 12 аварийных сигналов. Мне нужно вывести на экран аварийное событие и дату и время возникновения. Что то типа: "01.12.24 Неиспр. В1.1". Архив и будет хранить только 12 записей и переписывать старые при появлении новых. Конфигурирование ПЛК я более менее переварил, а вот с ИПП как то сложновато, да и опыта нет совсем.

melky
03.02.2025, 12:12
ищите журналы Аварий для ПР200, было несколько вариантов со временем на форуме.

Сергей0308
03.02.2025, 13:05
Всего в системе 12 аварийных сигналов. Мне нужно вывести на экран аварийное событие и дату и время возникновения. Что то типа: "01.12.24 Неиспр. В1.1". Архив и будет хранить только 12 записей и переписывать старые при появлении новых. Конфигурирование ПЛК я более менее переварил, а вот с ИПП как то сложновато, да и опыта нет совсем.

Вас устроит точность до минуты? В смысле, можно вместо секунд(в моём проекте) писать номер(код) аварии, в принципе до 100(два десятичных разряда) видов аварий можно фиксировать, у вас всего 12(вам хватает с избытком), с перспективой расширения до 100 с минимальными изменениями, будут в памяти хранится последние 31 аварии, чего, как я понимаю вам тоже с избытком хватает, короче, не вижу проблем!

Evgenii123
03.02.2025, 13:10
Точность до минуты вполне устроит, но нужен не код аварии, а именно расшифровка.

Сергей0308
03.02.2025, 13:16
Точность до минуты вполне устроит, но нужен не код аварии, а именно расшифровка.

Как всё запущено: код аварии применяется, чтобы бессмысленно энергонезависимую память не занимать, её и так не много, а там к коду аварии привяжете любую надпись, хоть в трёх томах каждая, с точной расшифровкой случившегося и возможными виновниками!
Тогда эта "писанина" будет храниться в ПЗУ, а не в энергонезависимой памяти, которую можно использовать для расширения функционала или как ещё, в смысле, более толково!

Evgenii123
03.02.2025, 13:37
Опыта просто нет. Понял я, что в коде есть текстовое поле, куда всё и можно написать.

Сергей0308
03.02.2025, 13:41
Опыта просто нет. Понял я, что в коде есть текстовое поле, куда всё и можно написать.

Есть тот же динамический текст, где к значению переменной привязана необходимая надпись, вот этой переменной может быть код аварии, это как один из вариантов, можно бегущей строкой написать "Войну и мир"! В одной из тем помню с бегущей строкой "заморачивались", там можно всё в подробностях расписать!

Evgenii123
03.02.2025, 18:06
Вроде что то получилось. Завтра попробую на панели

kondor3000
03.02.2025, 18:33
Вроде что то получилось. Завтра попробую на панели

А чего у вас мигают постоянно аварии? Так не проще сделать и не мигает ничего 81719
Один cd32 вместо кучи ненужных блоков DC16bit. У вас код меняется на 0 постоянно 81718
И начинать надо не с 0 бита, а с первого, тогда коды соответствуют.

Evgenii123
03.02.2025, 19:55
Учел замечания. Спасибо

kondor3000
03.02.2025, 20:03
А cd32 где взять? В библиотеке компонентов его нет.

В правой части, Битовые функции, после PutBit и Extract81720

Evgenii123
03.02.2025, 20:17
Да, я чуть позже увидел. Подскажите а в режиме симуляции, без ИПП не увидеть что на экране будет отображаться?

kondor3000
03.02.2025, 20:53
Да, я чуть позже увидел. Подскажите а в режиме симуляции, без ИПП не увидеть что на экране будет отображаться?

На экране ничего в симуляции. Всё смотрите в программе.

Dimensy
03.02.2025, 21:02
А только меня смущает, что в журнале мы для даты/время используем две 32-разрядные энергонезависимые переменные? Почему дату/время не хранить в одной переменной в формате UTC, а для вывода на экран уже как угодно преобразовывать?

Evgenii123
03.02.2025, 21:07
Я думаю, для меня это сложно. Но я понял, о чём вы. Спасибо

Сергей0308
04.02.2025, 00:09
Я сильно извиняюсь, такое впечатление что маньяк орудует, в смысле, максимальное количество экранов и элементов на холсте программы, лично моё мнение!

Вот мой вариант, все аварии просматриваются на одном экране при срабатывании аварий отображается общее их количество(верхняя строка, справа), слева в верхней строке выбирается номер аварии, если аварий больше нуля, чтобы перейти и просмотреть параметры аварии. Параметры аварии отображаются в верхней строке, в центре, это дата-время в формате: месяц, день, час, минута, по два разряда на каждый пункт!
В нижней строке расшифровывается тип аварии(по коду аварии), например авария ГЦН, применил динамический текст, вкратце, всё!

81728

81726

81730

Короче, я примерно так это вижу!
В архиве сохраниться 31 последняя авария. Счётчик до 100 аварий. После просмотра аварий при возврате к нулевому событию(текущему состоянию) счётчик количества аварий сбрасывается.

Смотрите в симуляции, в проекте переход на экран аварии не делал, в смысле использовал вашу заготовку проекта и оставил как было!
Если что, сами переход добавите, вроде, уже делали!

melky
04.02.2025, 06:14
А я тут не понял #_АВ и его назначение.
Если была авария с битом 8, а потом прилетела с битом 6, однако видел мы будем только с битом 8, нет?

Сергей0308
04.02.2025, 08:13
А я тут не понял #_АВ и его назначение.
Если была авария с битом 8, а потом прилетела с битом 6, однако видел мы будем только с битом 8, нет?

Если Вам интересно как работает алгоритм могу пояснить: переменная "№_АВ"(номер, код аварии) при возникновении аварии появляется соответствующее значение номера бита, у товарища будет диапазон 1-12 на один цикл программы, при этом также на один цикл программы переменная "Событие" принимает значение логической "1" и код аварии с временем его возникновения пишется в стек!
Для просмотра аварий у нас имеется переменная "Номер события" При его значении "0" на экране аварий будет отображаться текущая дата-время(про формат уже писал) в центре верхней строки экрана аварий. При возникновении аварий, например кратковременный переход бита 8 в состояние "1", затем кратковременный переход бита "6" в состояние логической "1" - счётчик аварий(верхняя строка справа на экране аварий насчитает общее количество аварий равным 2. Можно сделать сигнализацию при количестве аварий больше "0" чтобы знать что были аварии или(и) сразу переход на экран аварий.
Короче, для просмотра последней аварии редактируем переменную номер события и задаём ей значение "1" - на экране аварий появятся дата-время аварии и её расшифровка(как подпишите), например " Авария ГЦК"!
Для просмотра второй аварии(более давней) редактируете переменную "Номер события" и задаёте ей значение "2", при этом на экране аварий появятся дата-время этой аварии и её расшифровка(как подпишите)!
При возврате переменной "Номер события", после просмотра всех интересующих аварий, значения "0" - счётчик событий(аварий) сбрасывается! Вот добавил сигнализацию наличия аварий и автоматический переход на экран аварий при возникновении аварий:

81737

81738

melky
04.02.2025, 08:58
Как бы дальнейший алгоритм пофигу. По шагам выполните. Если это битовая маска аварий? ахинея там.
я вводил 4, 8, 4, 8, 12

kondor3000
04.02.2025, 09:03
Как бы дальнейший алгоритм пофигу. По шагам выполните. Если это битовая маска аварий? ахинея там.
я вводил 4, 8, 4, 8, 12

Из битовой маски подаётся 4, после CD32, там число 2 - (номер бита) код аварии, появляется на 1 цикл программы. Достаточно, чтобы записать время и код в память.

melky
04.02.2025, 09:09
kondor3000 последовательно вводите, и выполняйте по шагам. на выходе CD 3, 3, 3, вместо 3,2,3

с другими числами особо не проверял, но думаю будет примерно та же картина всегда. Вот попробовал 16, 8, 16, 8 В общем будет лажать там-сям.

kondor3000
04.02.2025, 09:15
последовательно вводите, и выполняйте по шагам. на выходе CD 3, 3, 3, вместо 3,2,3

с другими числами особо не проверял, но думаю будет примерно та же картина всегда. Вот попробовал 16, 8, 16, 8 В общем будет лажать там-сям.

Я всё проверил уже, всё правильно записывается по номерам. Номер события надо переключать, для просмотра нескольких аварий.
В номере 1 всегда последняя авария.

Сергей0308
04.02.2025, 09:27
kondor3000 последовательно вводите, и выполняйте по шагам. на выходе CD 3, 3, 3, вместо 3,2,3

с другими числами особо не проверял, но думаю будет примерно та же картина всегда. Вот попробовал 16, 8, 16, 8 В общем будет лажать там-сям.

Проверил забил последовательно числа: "16", "24" и "28" - это означает срабатывание трёх аварий последовательно и корректно аварии просматриваются(в симуляторе), может Вы попутали чего(как обычно) или компьютер глючит, короче, у меня нормально работает!

melky
04.02.2025, 09:33
еще раз - работает только при условии, что аварии не сбрасываются и не квитируются. Сделайте эмуляцию квитирования по любому биту и получите чушь на выходе.
з.ы. просто глаз резануло и начал тыкать по шагам при условии что аварии могут меняться. Не судите строго мой компьютер :)

Сергей0308
04.02.2025, 09:50
еще раз - работает только при условии, что аварии не сбрасываются и не квитируются. Сделайте эмуляцию квитирования по любому биту и получите чушь на выходе.
з.ы. просто глаз резануло и начал тыкать по шагам при условии что аварии могут меняться. Не судите строго мой компьютер :)

Аварии должны идти как минимум через цикл программы, если в одном цикле более одной аварии - будет сбой, я уж не стал "прореживать" в смысле усложнять, как я понял, у товарища они идут не раньше чем через минуту, поэтому счёл что ему "потянет"!
А так если делать "на все случаи жизни" для правильной работы надо чтобы новые аварии поступали не ранее чем через цикл программы, впрочем, нетрудно будет и "проредить" поступающие аварии!

Это ограничения работы стека, для его работы и сдвига данных нужно изменение булевого сигнала, в смысле, если постоянно будет единица на входе сдвига - данные сдвигаться не будут!
Можно конечно использовать мой стек как матрицу памяти(он и так умеет работать), тогда в ячейки можно писать каждый цикл программы(не через цикл, как у стека), но тогда надо ещё счетчик ставить, чтобы адреса ячеек для записи менять! Короче, можно сделать как угодно, в смысле, но если товарищу это подойдёт, не вижу смысла усложнять!
И, я ранее, в одной из тем уже выкладывал макрос разруливания одновременного запуска компрессоров(насосов), он как раз подойдёт!

81761

https://owen.ru/forum/showthread.php?t=26216&page=353

melky
04.02.2025, 10:26
ну если будет общий сброс, наверное будет работать. Не проверял. Когда делал на ваших ПЗУ, то делал просто любое изменение с выводом кода аварии вместе со временем. Разбора кода на ПР не делал, биты уже выдергивались в scada.
Если делать на экран ПР, как-то даже не думал, как это сделать. Да и усложнять программу не видел смысла при наличии scada.

Сергей0308
04.02.2025, 10:34
ну если будет общий сброс, наверное будет работать. Не проверял. Когда делал на ваших ПЗУ, то делал просто любое изменение с выводом кода аварии вместе со временем. Разбора кода на ПР не делал, биты уже выдергивались в scada.
Если делать на экран ПР, как-то даже не думал, как это сделать. Да и усложнять программу не видел смысла при наличии scada.

Так это вроде не сложно, в смысле, вставить(выдернуть) двух разрядное число в(из) 10-и разрядное(го), посмотрите как я в программе кодом аварии жонглировал!

Там вообще(в принципе) никакого сброса нет, так как он не нужен, данные пишутся в стек, при заполнении стека затираются самые старые, всё, здесь сбрасывать нечего!

Evgenii123
04.02.2025, 11:59
Вообще, конечно могут несколько Битов придти одновременно.

petera
04.02.2025, 12:17
А чего у вас мигают постоянно аварии? Так не проще сделать и не мигает ничего 81719
Один cd32 вместо кучи ненужных блоков DC16bit. У вас код меняется на 0 постоянно 81718
И начинать надо не с 0 бита, а с первого, тогда коды соответствуют.

Мигает потому, что каждый DC16bit выдает последовательно (с паузой между номерами) номера установленных бит в маске зафиксированных аварий.
Т.е журнал работает правильно даже если в данной временной отметке ОДНОВРЕМЕННО зафиксировано несколько аварий. Они ВСЕ последовательно будут выведены на экране в одной строке, если как и задумано, используется динамический текст

Сергей0308
04.02.2025, 22:00
ну если будет общий сброс, наверное будет работать. Не проверял. Когда делал на ваших ПЗУ, то делал просто любое изменение с выводом кода аварии вместе со временем. Разбора кода на ПР не делал, биты уже выдергивались в scada.
Если делать на экран ПР, как-то даже не думал, как это сделать. Да и усложнять программу не видел смысла при наличии scada.

Вот немного подшаманил, теперь вроде должно работать без ограничений, чего скажите, в смысле, свой вариант не приготовили?

81762

Один нюанс обнаружил, если срабатывает одновременно более одной аварии, то счётчик событий считает это как одно событие, чтобы все аварии считало обычный счётчик не подходит, наверно придётся ещё и счётчик на свой менять(у меня имеется подходящий на примете), пока будем считать, что так и задумано, так как у ТС вопрос о счётчике аварий не стоял, остальное вроде как фунциклирует!

Вот и счётчик поправил, чтобы считал по-человечьи:

81765

81764

melky
04.02.2025, 23:13
Сергей0308 свой вариант даже не собирался :). точнее выкладывал его давно, для работы в паре со Scada. Другое не интересует в принципе.
Это я так, посмотрел, удивился, попробовал, не понравилось :)
з.ы. некогда мне, как сапожник без сапог. Сам вон помощи просил для управления тепловым насосом с учетом тока. Так руки не доходят дальше заниматься, работает из под палки :)

Evgenii123
05.02.2025, 09:27
Подскажите, как можно сделать, чтобы пароль вводить по одной цифре. Я вроде начал но ОЛ не дает присвоить переменную двум выходам.

kondor3000
05.02.2025, 09:48
Подскажите, как можно сделать, чтобы пароль вводить по одной цифре. Я вроде начал но ОЛ не дает присвоить переменную двум выходам.

А зачем по одной то? Это же кучу лишних движений делать придётся.
А вообще, просто надо отправить собранный пароль на выход, после ввода последней цифры.
Это делается через SEL, управление выходом по сравнению последнего знака пароля с 0. Естественно последний знак должен быть больше 0.

melky
05.02.2025, 09:55
по одной так понимаю по принципу выбора от 0 до 9 с переходом на следующую цифру, а не жать кнопку увеличения числа, чтобы получить от 0000 до 5638

Evgenii123
05.02.2025, 10:28
Да, вы правильно поняли

Evgenii123
05.02.2025, 10:30
я имел в виду что чтобы ввести пароль скажем 8511, кнопку придется жать очень долго. Проще же по одной цифре набирать

melky
05.02.2025, 10:30
Вот на изменение последней цифры делайте импульс уже для окончательного ввода и проверки, сложив с предыдущими введенными цифрами.
При вводе первых цифр в программе умножайте на 1000, 100 и 10 перед сложением.

Ollema
05.02.2025, 10:44
я имел в виду что чтобы ввести пароль скажем 8511, кнопку придется жать очень долго. Проще же по одной цифре набирать

Используйте переход по разрядам.

petera
05.02.2025, 10:46
я имел в виду что чтобы ввести пароль скажем 8511, кнопку придется жать очень долго. Проще же по одной цифре набирать

Про комбинацию кнопок ALT+стрелки вверх/вниз при вводе значений не слышали?

ALT+стрелки вверх/вниз - переход влево/вправо по разрядам вводимого числа
81775

Ollema
05.02.2025, 12:27
Шли вторые сутки, но нужное число еще не было набрано... :)

Сергей0308
05.02.2025, 12:35
Так товарищ наверно пока сам не пострадает от этих паролей не уберёт их раз и навсегда, есть народная пословица: умный учится на чужих ошибках, а дурак на своих!

На одном предприятии где я работал часто "слетали" настройки приборов(ТРМ1 и т.п.), короче, приходим утром, мастер жалуется типа не могли работать на этой установке, хорошо, идём настраиваем и всё начинает работать, что характерно настройки всегда ночью сбиваются, когда нас нет, короче, надоело мне приборы настраивать, решил пароли наставить!
Тогда ещё хуже стало, то провод "перебьётся", то термопара сломается!
Приходим утром, но уже не тут-то было, то настройки настроить - 15 минут и всё готово, а тут ещё полдня будешь лазить по установке чтобы неисправность найти!
Короче, убрал я все пароли, лучше и быстрей настройки восстановить, чем неисправность искать! Как я предполагаю: народ ночь проспит, а под утро, чтобы не заругали, что-нибудь сломает, типа ничего не сделал, потому что установка сломалась, в основном это установки были по упаковке, а мастер видать за всеми не уследит или сам спит, надеюсь, интересная история?

Сергей0308
05.02.2025, 15:01
kondor3000 последовательно вводите, и выполняйте по шагам. на выходе CD 3, 3, 3, вместо 3,2,3

с другими числами особо не проверял, но думаю будет примерно та же картина всегда. Вот попробовал 16, 8, 16, 8 В общем будет лажать там-сям.

Да уж, просто волосы дыбом встают, это ж надо так умудриться, в смысле, найти проблему где её нет и быть не может, в смысле, код(номер) аварии пишется в архив по фронту её возникновения, в смысле, в другие моменты времени даже смотреть туда абсолютно бессмысленно, это же надо такое придумать шифратор не то выдаёт, наверно сломался!

melky
05.02.2025, 15:03
Сергей0308 унимательнее, Вася, унимательнее :) виновник не шифратор, а XOR, если есть СМЕНА аварийных битов, а не поступление новых без отключения старых.
И как кто-то подметил, проблема еще возникает при поступлении больше 1-ого бита в одном цикле.

Сергей0308
05.02.2025, 15:26
Сергей0308 унимательнее, Вася, унимательнее :) виновник не шифратор, а XOR, если есть СМЕНА аварийных битов, а не поступление новых без отключения старых.
И как кто-то подметил, проблема еще возникает при поступлении больше 1-ого бита в одном цикле.

Я к чему, зачем делать скоропалительные выводы, не разобравшись в проблеме, подозреваю, даже не понимая как это должно работать, тем более я написал в чём была загвоздка и исправил её. Почему же в последней(4-ой) версии проекта "исключающее или" стало работать?

melky
05.02.2025, 15:30
а я последнее не смотрел. Это уже к автору хотелки.

Сергей0308
05.02.2025, 15:37
а я последнее не смотрел. Это уже к автору хотелки.

Надо смотреть, что в архиве, а не на выходе шифратора!
На выходе шифратора "правильное" значение необходимо только в момент возникновения аварии(по фронту), какое там значение в остальной промежуток времени не имеет ни какого значения и смотреть туда не надо(смысла нет), короче уже повторяюсь!
Я не знаю, может это так сложно понять что "правильное" значение появляется всего на один цикл программы, но этого достаточно, чтобы добавить в архив, вроде кто-то Вам уже подобное писал!

melky
05.02.2025, 15:55
1. я о первоначальной версии, где на входе XOR ничего нет писал, что в случае смены битов аварий (которые могут быть зафиксированы в одном цикле) и будет ошибка. Так же будет ошибкой, как кто-то заметил поступление просто двух битов в маске в одном цикле.
потом вариации не смотрел, потому что побоку... :)

Сергей0308
05.02.2025, 16:04
1. я о первоначальной версии, где на входе XOR ничего нет писал, что в случае смены битов аварий (которые могут быть зафиксированы в одном цикле) и будет ошибка. Так же будет ошибкой, как кто-то заметил поступление просто двух битов в маске в одном цикле.
потом вариации не смотрел, потому что побоку... :)

Ладно, повторюсь: зачем смотреть что на выходе шифратора, в те моменты времени, когда не имеет значения какое там значение?
Короче, лучше докопайтесь к 4-ому варианту проекта, может там что поправить, если честно я его и не проверял!

melky
05.02.2025, 16:58
а я не разбирался какой момент важен или какой не важен, я просто следовал битам :) даже скрин привел и пример. Если последовательно менять биты (числа 4 и 8) на выходе мы не получаем в пошаговом исполнении цифры 2, только на первом шаге, если начать с 4-ки. Если же начать с 8-ки, то на выходе шифратора всегда 3. А при попадании в цикле >1 бита на выходе шифратора всегда будет положение старшего бита.

если такого варианта вопрошающему достаточно то ок.

Валенок
05.02.2025, 17:22
Мдя. Битва с квадратиками.

Получить маску новых битов - 2 строки ST
Выбрать куда-то все новые биты - 1 цикл в 3 строки ST

Сергей0308
05.02.2025, 20:58
Мдя. Битва с квадратиками.

Получить маску новых битов - 2 строки ST
Выбрать куда-то все новые биты - 1 цикл в 3 строки ST

Если это так легко на ST, в смысле, элементарно, то лично мне это будет не интересно! Да и мозгами надо "шевелить", чтобы не закисли!

Валенок
05.02.2025, 21:38
Мы не ищем лёгких путей и мужественно преодолевать самим себе созданные сложности наш удел?))

Я не против пить пиво и смотреть на это со стороны

melky
05.02.2025, 21:58
Валенок не прокатит, вы либо пьете пиво, либо смотрите со стороны, как пьют другие :)

з.ы. не применительно к ОЛ, а вообще. Представьте, что есть модуль квадратика чтения регистров Modbus, у него есть выход "статус" о чтении. Как сделать цепочку блоков (квадратиков) чтения, чтобы они выполнялись друг за другом с определенной паузой?
А если квадратик не может прочитать регистры за определенное время, все равно переходить к следующему квадратику?

Валенок
05.02.2025, 23:34
... не прокатит, вы либо пьете пиво...
... и смотрите как другие ищут квадратики, либо не пью пиво т.к. надо искать квадратики


... Представьте, что есть модуль квадратика ...
Зачем мне играть на поле квадратиков если есть ST? Пиво остынет


Это уже появилоcь?

..Представьте ...модуль квадратика ... у него есть выход "статус" о чтении...
или надо преставлять?

Здесь конешно ложик. А в КДС я не представляю а пользуюсь этим
Примерно так и пишу
if запрос1 ok then
поехал запрос2
end_if
if запрос2 ok then
поехал запрос3
end_if
Строчек именно столько
И именно так оно выполняется


Извините, но

Как сделать цепочку блоков .... чтобы они выполнялись друг за другом с определенной паузой?
Это в принципе задача - автоматная. И предложение делать это на квадратиках - как предложение сыграть в пляжный волейбол в ластах. Можно. Но есть ньюанс

melky
05.02.2025, 23:43
Если бы там был ST :)

Валенок
05.02.2025, 23:52
Если бы там был ST :)
У меня не самая последняя версия ложика - ведь уже целых 30 минут прошло с момента последнего обновления.
Но там есть ИПП120. И есть ST. Оно тут не работает/перестало работать?

Сергей0308
06.02.2025, 02:14
Подскажите, как можно сделать, чтобы пароль вводить по одной цифре. Я вроде начал но ОЛ не дает присвоить переменную двум выходам.

Про перемещение курсора по разрядам Вам написали, вот поправил вывод на экран даты-времени, была небольшая ошибка, формат даты-времени остался прежний:

81796

81797

И, ещё, коль мы всё равно извлекаем отдельно месяцы, дни, часы, минуты и коды аварий, можно упаковать всё это ещё более плотно, в смысле, побитно.
Например для часов(диапазон 0-23) требуется 5 бит, для минут и секунд(диапазон 0-59) требуется по 6 бит в составе 32 битной переменной, для дней(диапазон 1-31) - 5 бит, для месяцев(диапазон 1-12) - 4 бит, для кода аварии у вас их 12, хватит 4 бит(диапазон 0-15), но у нас остаётся 6 бит, все их пустим на коды аварий, в смысле, с перспективой развития, увеличения видов аварий с 12 до 64 включительно!
Короче, в перспективе можно легко добавить в архив и секунды и увеличить виды аварий до 64.
Год, как я думаю, добавлять не потребуется, в смысле, если Вы аварии планируете не каждый год просматривать, зачем тогда вообще их смотреть?
Кстати, в текущей версии программы ,можно до 100(включительно) видов аварий добавлять в архив(диапазон 0-99)!

melky
06.02.2025, 08:27
Валенок да мне не для ОЛ, вопрос просто гипотетический, как такое организовать на квадратиках?
То есть как построить таймеры между опросами блоков, но чтобы в случае отсутствия ответа переходило к следующему блоку.

Валенок
06.02.2025, 09:06
[.. да мне не для ОЛ, вопрос просто гипотетический, как такое организовать на квадратиках..
Ну раз не про ОЛ, не про местные /! квадратики, то варианты:
1.Заточеные под такое квадратики - SFC, вот прям смотрит на вас и ваше условие
2. Использование более универсальных квадратиков с EN
3. Использование банального goto (в КДС.CFC - есть)
4.... Кто-нибудь ещё что нибудь предложит, уверен

Но вариант когда зачем то вызывается всегда все, но по каким то условиям выходы этого всего как-то по времени разносятся на входы этого всего - увольте, только за отдельную стимуляцию. Я за результат, а не за процесс (в данном случае, ведь это же не пиво)

AleZPro
01.04.2025, 12:34
Добрый день! Чтоб не плодить темы, спрошу здесь.
Есть реле ПР102 с одним RS485, есть панель ИПП120, которая читает и меняет параметры ПР. Реле slave, панель master. Есть ли возможность считывать параметры с ПР извне? В идеале, читаем один счётчики даём команду на его сброс со скады. Можно просто читать этот счётчик.

1exan
01.04.2025, 12:58
Добрый день! Чтоб не плодить темы, спрошу здесь.
Есть реле ПР102 с одним RS485, есть панель ИПП120, которая читает и меняет параметры ПР. Реле slave, панель master. Есть ли возможность считывать параметры с ПР извне? В идеале, читаем один счётчики даём команду на его сброс со скады. Можно просто читать этот счётчик.

Нужен другой(второй) RS485, установленный в ПР102. По нему будут доступны те-же самые сетевые переменные, что и для ИПП

GSA
01.04.2025, 13:32
Если я не ошибаюсь, можно только считать из вне, если есть режим просушки SPY (например СМИ2-М).

AleZPro
01.04.2025, 15:45
Нужен другой(второй) RS485, установленный в ПР102. По нему будут доступны те-же самые сетевые переменные, что и для ИПП

Как и предполагалось. Спасибо. Только ПР с одним RS485. Будем думать дальше.

1exan
01.04.2025, 16:20
Как и предполагалось. Спасибо. Только ПР с одним RS485. Будем думать дальше.

Второй вроде как можно самому добавить

Dimensy
01.04.2025, 16:48
Второй вроде как можно самому добавить

В ПР-102 низзя

FPavel
01.04.2025, 18:57
На али/озоне видел коммутаторы 2 Master к одному Slave - размером с небольшой блок питания.
Устройства видел, но за их стабильность ничего не знаю - лотерея...

Если добавить нельзя - придётся покупать аналогичное ПР102 с двумя интерфейсами.

А почему в ПР102 нельзя добавить докупленную плату интерфейса? В другой (ПР200) есть такая возможность. Ведь есть модели ПР102 с двумя интерфейсами, значит можно добавить. Или конструктив не позволяет (например, весь ПР это одна плата без расширений)?

Dimensy
01.04.2025, 19:26
А почему в ПР102 нельзя добавить докупленную плату интерфейса? В другой (ПР200) есть такая возможность. Ведь есть модели ПР102 с двумя интерфейсами, значит можно добавить. Или конструктив не позволяет (например, весь ПР это одна плата без расширений)?
В ПР100 и ПР102 интерфейс RS-485 распаян на плате

FPavel
01.04.2025, 22:58
Спасибо. Ясно. Именно их в руках не держал. Другие - разбирал, там была возможность - но это в данном случае бесполезный опыт.

Dimensy
02.04.2025, 06:04
Спасибо. Ясно. Именно их в руках не держал. Другие - разбирал, там была возможность - но это в данном случае бесполезный опыт.

Кстати, на заметку, был неприятный опыт с ПР100. Я в проект закладывал ПРку без интерфейса RS-485, а пришел с интерфейсом. И какое же было мое удивление, когда я не смог сменить целевую платформу в Лоджике, пришлось ручками программу переносить