Вход

Просмотр полной версии : Как булевские значения Вкл Выкл передать в OPS server Овен из ПР 200



Андрей 77
25.08.2023, 11:33
Добрый день уважаемые друзья.Подскажите как можно сделать что бы булевские значения читала описи сервер что бы потом передать в скаду.Пример у меня есть две кнопки вкл и выкл насоса нужно эту кнопку вкл выкл прочитать в описи сервером и можно через скаду вкл и выкл дискретные входа и выхода пр 200.

Сергей0308
25.08.2023, 14:55
Добрый день уважаемые друзья.Подскажите как можно сделать что бы булевские значения читала описи сервер что бы потом передать в скаду.Пример у меня есть две кнопки вкл и выкл насоса нужно эту кнопку вкл выкл прочитать в описи сервером и можно через скаду вкл и выкл дискретные входа и выхода пр 200.

А, кнопки пуск и стоп куда подключены, я так понимаю к дискретным входам ПР200, в смысле посмотрите РЭ, там указаны адреса дискретных входов, но мне кажется, лучше битовую маску дискретных входов(целочисленное значение, регистр) читать, в скаде разложить на биты не проблема!

69809

petera
25.08.2023, 14:57
Добрый день уважаемые друзья.Подскажите как можно сделать что бы булевские значения читала описи сервер что бы потом передать в скаду.Пример у меня есть две кнопки вкл и выкл насоса нужно эту кнопку вкл выкл прочитать в описи сервером и можно через скаду вкл и выкл дискретные входа и выхода пр 200.

подробно и с картинками Обмен битовыми (BOOL) переменными с ПР Slave https://owen.ru/forum/showthread.php?t=32194

Андрей 77
28.08.2023, 17:11
подробно и с картинками Обмен битовыми (BOOL) переменными с ПР Slave https://owen.ru/forum/showthread.php?t=32194

Подскажите пожалуйста у меня пока пр 200 нет я его уже использовал в проект подпитки сетевого контура.Пока не знаю что лучше купить ПР 200 ПР 103 или ПР 205 что посоветуете из этих пр?Еще такой вопрос в пр 103 и пр 205 я так понимаю можно назначить дискретные входа с адресами модбас6984769848 регистра?А почему тогда такого нет по выходам?Второй вопрос если у меня есть пр 200 я могу использовать эмулятор панели сп 300 для симуляции вкл выкл выхода пр 200?

Андрей 77
28.08.2023, 17:16
А, кнопки пуск и стоп куда подключены, я так понимаю к дискретным входам ПР200, в смысле посмотрите РЭ, там указаны адреса дискретных входов, но мне кажется, лучше битовую маску дискретных входов(целочисленное значение, регистр) читать, в скаде разложить на биты не проблема!

69809Спасибо за ответ.Мне бы хотелось управлять кнопками пуск стоп.Скада это мастер сети пр 200 слейв что бы в скада нажал кнопку пуск и вкл реле 1 нажал выкл реле выкл.Да к первому входу у меня подключена кнопка пуск.

kondor3000
28.08.2023, 17:34
Подскажите пожалуйста у меня пока пр 200 нет я его уже использовал в проект подпитки сетевого контура.Пока не знаю что лучше купить ПР 200 ПР 103 или ПР 205 что посоветуете из этих пр?Еще такой вопрос в пр 103 и пр 205 я так понимаю можно назначить дискретные входа с адресами модбас6984769848 регистра?А почему тогда такого нет по выходам?Второй вопрос если у меня есть пр 200 я могу использовать эмулятор панели сп 300 для симуляции вкл выкл выхода пр 200?

Как можно советовать, не зная что вам надо)) Сравните ПР на сайте тогда.
Дискретные входы и выходы можно назначить в нужную сетевую переменную с нужным адресом и её передать в любой ПР. Или собрать биты в маску и передать до 16 шт.,
через 1 регистр.
Эмулятор панели СП3хх можно использовать как Мастер, ПР будет слейв по Модбас RTU, через переходник USB-RS485 . Панель ( эмулятор) может принять и отправить, как биты, так и маску бит.
Точно так же и ОПС сервер и скада.

Андрей 77
28.08.2023, 18:13
Как можно советовать, не зная что вам надо)) Сравните ПР на сайте тогда.
Дискретные входы и выходы можно назначить в нужную сетевую переменную с нужным адресом и её передать в любом ПР. Или собрать биты в маску и передать до 16 шт. через 1 регистр.
Эмулятор панели СП3хх можно использовать как Мастер, ПР будет слейв по Модбас RTU, через переходник USB-RS485 . Панель ( эмулятор) может принять и отправить, как биты, так и маску бит.
Точно так же и ОПС сервер и скада.

69853Я правильно понимаю булевскую переменную ее состояние мы можем передавать через сетевую переменную таким способом?А если мне нужно управлять этим входом вкл и выкл в скаде?

kondor3000
28.08.2023, 18:29
69853Я правильно понимаю булевскую переменную ее состояние мы можем передавать через сетевую переменную таким способом?А если мне нужно управлять этим входом вкл и выкл в скаде?

Это делается так, с помощью макроса SelChgI из менеджера компонентов 69856
Или так, если хотите управлять кнопкой 69857 1 раз Вкл, 2 раз выкл

Андрей 77
28.08.2023, 21:26
Это делается так, с помощью макроса SelChgI из менеджера компонентов 69856
Или так, если хотите управлять кнопкой 69857 1 раз Вкл, 2 раз выкл

Посмотрите пожалуйста правильно я понимаю что при значение входа 1 мы это состояние можем считать в скаде через маску?Зная ее адрес верно?Соответственно69860 и управлять можем вкл выкл состоянием первым выходом?

kondor3000
28.08.2023, 21:46
Посмотрите пожалуйста правильно я понимаю что при значение входа 1 мы это состояние можем считать в скаде через маску?Зная ее адрес верно?Соответственно69860 и управлять можем вкл выкл состоянием первым выходом?

Вот сразу на 3 бита, можно уменьшить до 1 или расширить до 16 69861 в данном случае Вкл - это и есть Маска на 3 бита.

Андрей 77
28.08.2023, 22:05
Вот сразу на 3 бита, можно уменьшить до 1 или расширить до 16 69861 в данном случае Вкл - это и есть Маска на 3 бита.

Получается мы так можем по вашему последнему примеру управлять тремя выходами?Тоесть если мы подали значение 1 на первый вход то на 1 выходе реле вкл?Верно я понимаю и так остальные входы?А мой пример это глупость?

kondor3000
28.08.2023, 22:12
Получается мы так можем по вашему последнему примеру управлять тремя выходами?Тоесть если мы подали значение 1 на первый вход то на 1 выходе реле вкл?Верно я понимаю и так остальные входы?А мой пример это глупость?
Вы сделайте как нарисовано и всё сами поймёте. Проверяйте в эмуляции. Скрин на 4 бита 69865

Ваш пример тоже будет работать для 1 бита. Только передать по сети вы ничего не сможете. Даже если сделаете сетевую переменную.

Андрей 77
29.08.2023, 08:19
Вы сделайте как нарисовано и всё сами поймёте. Проверяйте в эмуляции. Скрин на 4 бита 69865

Ваш пример тоже будет работать для 1 бита. Только передать по сети вы ничего не сможете. Даже если сделаете сетевую переменную.

Спасибо за примеры.Хотел уточнить в вашем втором примере при нажатие на дискретный вход на выходе появляется еденица тоесть блок экстракт читает состояние входа из сетевой переменной.Но при отжатие кнопки на входе выход остается замкнут нужно повторно нажать на вход что бы выход выкл.Не совсем удобно для упр входами.
2.Я добавил своб переменную вкл насос со второго входа в этом случая я могу ее передать по сети и читать ее состояние а так же вкл и выкл через скаду?В эмуляции вроде все работает в овен лоджик а как будет на скада пока не проверял.Мысль я понял вы упаковали дискретные входы в битовую маску и передали ее по сети где на выходе блок экстракт из битовой маски выделяет нужный бит который69866 вкл на входе пр, я так понял.

kondor3000
29.08.2023, 08:54
Спасибо за примеры.Хотел уточнить в вашем втором примере при нажатие на дискретный вход на выходе появляется еденица тоесть блок экстракт читает состояние входа из сетевой переменной.Но при отжатие кнопки на входе выход остается замкнут нужно повторно нажать на вход что бы выход выкл.Не совсем удобно для упр входами.
2.Я добавил своб переменную вкл насос со второго входа в этом случая я могу ее передать по сети и читать ее состояние а так же вкл и выкл через скаду?В эмуляции вроде все работает в овен лоджик а как будет на скада пока не проверял.Мысль я понял вы упаковали дискретные входы в битовую маску и передали ее по сети где на выходе блок экстракт из битовой маски выделяет нужный бит который вкл на входе пр, я так понял.

Схему на R-Trig и XOR, удобно применять для управления светом, кнопку нажали свет горит, ещё раз нажали свет погас. Иначе придётся применять переключатель.
Если вы поставите кнопку без R-Trig у вас будет только импульс, пока держите кнопку. Как сделать решать вам.

Скаду можно заменить на время ОПС сервером или эмуляцией панели.

Андрей 77
04.09.2023, 19:56
Схему на R-Trig и XOR, удобно применять для управления светом, кнопку нажали свет горит, ещё раз нажали свет погас. Иначе придётся применять переключатель.
Если вы поставите кнопку без R-Trig у вас будет только импульс, пока держите кнопку. Как сделать решать вам.

Скаду можно заменить на время ОПС сервером или эмуляцией панели.

Разбирался с битами и байтами сделал себе расчет в экселе и стало понятно более менее.Но все же не пойму у меня имеется простая программа пуск стоп насоса и авария.Мне нужно в скаде не только читать состояние входа переключателя но и управлять им через скаду то есть вкл вход 1 пуск и выкл вход 2 стоп, получается на вход 1 в нулевую ячейку регистра подаем 1 и 0 переписываем на 1 выход вкл теперь мне нужно видеть состояние выхода понятно что блок экстракт распаковал стояние входа в 1 и вкл выход.Если будет большая сложная программа как мне упаковывать входы и выходы если к ним уже привязаны переменные булевские.Вот на скрине простая программа как мне передать значения входов в скаду и выходов.Что бы через входа управлял выходами и видел их состояние. 70013

kondor3000
04.09.2023, 20:17
Разбирался с битами и байтами сделал себе расчет в экселе и стало понятно более менее.Но все же не пойму у меня имеется простая программа пуск стоп насоса и авария.Мне нужно в скаде не только читать состояние входа переключателя но и управлять им через скаду то есть вкл вход 1 пуск и выкл вход 2 стоп, получается на вход 1 в нулевую ячейку регистра подаем 1 и 0 переписываем на 1 выход вкл теперь мне нужно видеть состояние выхода понятно что блок экстракт распаковал стояние входа в 1 и вкл выход.Если будет большая сложная программа как мне упаковывать входы и выходы если к ним уже привязаны переменные булевские.Вот на скрине простая программа как мне передать значения входов в скаду и выходов.Что бы через входа управлял выходами и видел их состояние. 70013

Вы опять выкинули макрос SelChgI и вернулись к тому, с чего начинали, зачем я вам 5 постов написал?
Если у вас 1 вход, один выход и 1 авария, можно их все передать одной маской.

Если большой проект и вам надо отдельно входы и отдельно выходы, сделайте 2 маски ( если надо ещё и маску аварий) и передавайте.
16 входов, 16 выходов и 16 аварий вы можете передать через 3 регистра.

Андрей 77
04.09.2023, 21:31
Вы опять выкинули макрос SelChgI и вернулись к тому, с чего начинали, зачем я вам 5 постов написал?
Если у вас 1 вход, один выход и 1 авария, можно их все передать одной маской.

Если большой проект и вам надо отдельно входы и отдельно выходы, сделайте 2 маски ( если надо ещё и маску аварий) и передавайте.
16 входов, 16 выходов и 16 аварий вы можете передать через 3 регистра.

70014Скажите вот так правильно будет?Можно подробнее описания блока SelChgl1?А то справка не информативна.

kondor3000
04.09.2023, 22:22
70014Скажите вот так правильно будет?Можно подробнее описания блока SelChgl1?А то справка не информативна.

Нет, зачем вы сделали общую маску и еще на выходы 3 сетевых переменных повесили?
Сделайте так, 1 бит передаёт вход, 2 бит выход, 3 бит аварию, всё в одной маске.
Хотя я не понимаю, зачем вам 2 бита, когда 1 бит либо вкючен (пуск), либо выключен (стоп)

Андрей 77
04.09.2023, 22:39
Нет, зачем вы сделали общую маску и еще на выходы 3 сетевых переменных повесили?
Сделайте так, 1 бит передаёт вход, 2 бит выход, 3 бит аварию, всё в одной маске.
Хотя я не понимаю, зачем вам 2 бита, кода 1 бит либо вкючен (пуск), либо выключен (стоп)

Если вам не сложно покажите на примере моем кнопки пуск стоп и авария как бы вы это сделали.Я думал что могу упаковать блоком путбит состояния бита каждого входа а потом его распаковать тот бит который отвечает за вкл за выкл и за аварию и передать это все в сетевую целочисленную переменную.

kondor3000
04.09.2023, 22:54
Если вам не сложно покажите на примере моем кнопки пуск стоп и авария как бы вы это сделали.Я думал что могу упаковать блоком путбит состояния бита каждого входа а потом его распаковать тот бит который отвечает за вкл за выкл и за аварию и передать это все в сетевую целочисленную переменную.

Вот пример, Пуск и Стоп это Нулевой бит, Авария - первый бит 70015

Андрей 77
05.09.2023, 08:04
Вот пример, Пуск и Стоп это Нулевой бит, Авария - первый бит 70015

Спасибо за пример.Не пойму а с какого входа у вас приходит сигнал аварии?Второй вопрос получается я должен программу писать с использованием блоков путбит и экстракт?То есть под этим я подразумеваю не использовать функциональные блоки а использовать только путбит что бы управлять битами входов и читать выходы, все входные и выходные переменные я должен заменить на блоки экстракт и путбит с сетевой переменой что бы упр входами и выходами так получается?Я вот написал программу вкл выкл насосами и упр электрической задвижкой получается я должен функц блоки заменить на путбит и экстракт что бы чиать состояния вкл или выкл и так же посылать 1 на открытия задвижки и 0 на закрытие?Только у меня на задвижках указано время за которое они откр и закр в течение этого времени должен быть сигнал на откр и так же сигнал на закр в путбит так не сделаешь.
70017А подскажите пожалуйста какую функцию выполняет макрос SelChgI в справки мало описания данного блока.

kondor3000
05.09.2023, 11:02
Спасибо за пример.Не пойму а с какого входа у вас приходит сигнал аварии?Второй вопрос получается я должен программу писать с использованием блоков путбит и экстракт?То есть под этим я подразумеваю не использовать функциональные блоки а использовать только путбит что бы управлять битами входов и читать выходы, все входные и выходные переменные я должен заменить на блоки экстракт и путбит с сетевой переменой что бы упр входами и выходами так получается?Я вот написал программу вкл выкл насосами и упр электрической задвижкой получается я должен функц блоки заменить на путбит и экстракт что бы чиать состояния вкл или выкл и так же посылать 1 на открытия задвижки и 0 на закрытие?Только у меня на задвижках указано время за которое они откр и закр в течение этого времени должен быть сигнал на откр и так же сигнал на закр в путбит так не сделаешь.
А подскажите пожалуйста какую функцию выполняет макрос SelChgI в справки мало описания данного блока.

Авария в примере может быть и из программы и со входа, откуда вам надо.
Макрос SelChgI выдаёт на выходе последнее изменённое число со входов I1 и I2

Вы лучше скажите сколько вам надо входов передать, сколько выходов и сколько аварий, а то по 3 кругу уже пошли.
И программу свою выложите, в расширенных настройках, добавить файл.

Андрей 77
05.09.2023, 11:49
Авария в примере может быть и из программы и со входа, откуда вам надо.
Макрос SelChgI выдаёт на выходе последнее изменённое число со входов I1 и I2

Вы лучше скажите сколько вам надо входов передать, сколько выходов и сколько аварий, а то по 3 кругу уже пошли.
И программу свою выложите, в расширенных настройках, добавить файл.Вот в этой программе мне нужно вкл и выкл насосы читать состояние выхода вкл или выкл насос так же видеть авария по давлению или авария двигателя.Ну видеть открытие и закрытие каждого клапана.Там смысл такой что при вкл насоса он работает некоторое время потом идет сигнал на открытие клапана далее клапан открылся насос работает.При выкл насоса сначала закрывается клапан потом выкл насос.

kondor3000
05.09.2023, 13:44
Вот в этой программе мне нужно вкл и выкл насосы читать состояние выхода вкл или выкл насос так же видеть авария по давлению или авария двигателя.Ну видеть открытие и закрытие каждого клапана.Там смысл такой что при вкл насоса он работает некоторое время потом идет сигнал на открытие клапана далее клапан открылся насос работает.При выкл насоса сначала закрывается клапан потом выкл насос.

Вот добавил управление битами на выходе, вариант 2

Вариант 3, управление кнопками входа 4 бита ( с 0 по 3), передача выходов и Аварии 4 бита ( с 4 по 7)
И ещё, на выключении лучше поставить SR триггер перед TON, с обратной связью с выхода TON, на сброс триггера. 70036
Иначе кнопку Стоп придётся держать 8 секунд

Андрей 77
05.09.2023, 17:55
Вот добавил управление битами на выходе, вариант 2

Вариант 3, управление кнопками входа 4 бита ( с 0 по 3), передача выходов и Аварии 4 бита ( с 4 по 7)
И ещё, на выключении лучше поставить SR триггер перед TON, с обратной связью с выхода TON, на сброс триггера. 70036
Иначе кнопку Стоп придётся держать 8 секунд
3й вариант не много не правильно работает у вас получилось что при вкл кнопки пуск и насос вкл и задвижка открывается а нужно что бы насос сначала вкл, спустя секс 5 начала открываться задвижка при нажатие кнопки стоп сначала закрывается задвижка потом выкл насос.А тут сразу и задвижка закрылась и насос выкл.Смысл понятен конечно велосипед придумывать не хочется в пр 200 лучше бы сразу привязали адреса к каждой булей переменной программно что бы можно было их оттуда читать и писать.

kondor3000
05.09.2023, 18:46
3й вариант не много не правильно работает у вас получилось что при вкл кнопки пуск и насос вкл и задвижка открывается а нужно что бы насос сначала вкл, спустя секс 5 начала открываться задвижка при нажатие кнопки стоп сначала закрывается задвижка потом выкл насос.А тут сразу и задвижка закрылась и насос выкл.Смысл понятен конечно велосипед придумывать не хочется в пр 200 лучше бы сразу привязали адреса к каждой булей переменной программно что бы можно было их оттуда читать и писать.

Так это зависит уже от программы вашей, а не от передачи битов, у вас и выключение не правильно работает (оно не правильно и в вашей программе), выше написал, надо добавить SR (или RS) триггер. Иначе кнопку держать надо больше 8 сек.
Программу подправьте и всё.