1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Вопрос по программированию Эмиконов-2000

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить

Автор темы
bah
освоился
освоился
Сообщения: 289
Зарегистрирован: 08 апр 2015, 19:28
Имя: Виктор
Страна: Россия
город/регион: Старый Оскол/Белгородская область
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Вопрос по программированию Эмиконов-2000

Сообщение bah »

Здравствуйте. Возникла проблема при корректировке кода программы, написанной на CONT Designer. Программа предназначена для обработки аналоговых сигналов с датчиков, дискретных сигналов (2-е пороги по превышению концентрации газа по каждому каналу сигнализатора) и вывода дискретных сигналов на включение аварийной сигнализации (звуковая и световая). Возникла необходимость подключить дополнительные дискретные входа (1-е пороги). Взяли кусок кода, отвечающего за обработку дискретных сигналов 2-х порогов, скопировали и вставили в свободное место программы, при этом изменили только адреса дискретных входов. Оба куска кода привязаны к одним и тем же выходам. Проблема вот в чем: когда когда поступает дискретный сигнал о срабатывании второго порога, на выходе появляется стабильная единица-срабатывает сигнализация. Когда же поступает дискретный сигнал о срабатывании первого порога (новый код), то на выходе появляется мерцающее значение, сигнализация при этом не срабатывает. На входе при этом стабильная единица. Код один и тот же что для первого, что для второго порога (за исключением разных адресов дискретных входов). Привязка к одному и тому же дискретному выходу. Подскажите, почему так происходит?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Вопрос по программированию Эмиконов-2000

Сообщение Ryzhij »

Характерная ошибка всех начинающих.
При обращении к одному и тому же выходу из разных мест программы кошерно использовать раздельные команды установки состояния выхода Set и общую команду его сброса Reset, а не раздельные пары команд, и уж тем более не две команды пересылки результата логической операции.

При немедленном, цикличном и асинхронном способах ввода-вывода возможны различные вариации, но косяк неизбежен.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1625
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 70 раз
Поблагодарили: 191 раз

Вопрос по программированию Эмиконов-2000

Сообщение petr2off »

И для этого существует RS триггер и сборки логические для пуска и останова.
Ну и вообще - метод Cntrl/C и Cntrl/V - мощнейший инструмент, в наше время -но логику работы лучше все таки осознать :)

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Вопрос по программированию Эмиконов-2000

Сообщение Ryzhij »

Иначе говоря, переделайте программу так, чтобы использовать операторы ВКЛЮЧИТЬ и ВЫКЛЮЧИТЬ, а не оператор присваивания.
[+] CONT-Designer for Windows
2.8.2. Операторы записи в дискретные выходы.
В ЯП CONT существуют два оператора, позволяющих включать и выключать дискретные выходы.

Формат операторов:

ВКЛЮЧИТЬ (имя_дискретного_выхода);
ВЫКЛЮЧИТЬ (имя_дискретного_выхода);

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

Пример использования оператора для формирования импульса:

ОЖИДАТЬ (5) интервалов;
КЛАПАН_1 = 1;
ОЖИДАТЬ (5) интервалов;
КЛАПАН_1 = 0;
Последний раз редактировалось Ryzhij 15 фев 2023, 15:39, всего редактировалось 1 раз.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17589
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 825 раз
Поблагодарили: 1653 раза

Вопрос по программированию Эмиконов-2000

Сообщение Jackson »

petr2off писал(а): 15 фев 2023, 13:13 метод Cntrl/C и Cntrl/V - мощнейший инструмент, в наше время -но логику работы лучше все таки осознать :)
Как говорит VADR:
Повторное использование кода не отменяет повторного использования мозга.
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
bah
освоился
освоился
Сообщения: 289
Зарегистрирован: 08 апр 2015, 19:28
Имя: Виктор
Страна: Россия
город/регион: Старый Оскол/Белгородская область
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Вопрос по программированию Эмиконов-2000

Сообщение bah »

Ryzhij, все именно так и сделано: выход срабатывает через команду ВКЛЮЧИТЬ, никакого присваивания там нет

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Вопрос по программированию Эмиконов-2000

Сообщение Ryzhij »

Замечательно, теперь разберитесь с командами ВЫКЛЮЧИТЬ, и с остальными командами, относящимися к этому дискретному выходу.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»