это только экстрасенсы по фотографии могут определить что\где когда и почему.
мало информации.проект нужен и файл настроек модуля,чтобы Вам смогли что-то вразумительное ответить.
Какой модуль?Например если МВ110-16ДН, то ему надо указывать протокол обмена.Если вы ему заводские настройки оставили,то он связываться не будет.У него по дефолту протокол ОВЕН стоит на сколько я помню.
Подскажите пожалуйста, что делаю не так, пытаюсь сделать так чтобы после включения выхода, ПЛК-73 переключался с одного экрана на другой, с соответствующей надписью "пуск".
[QUOTE=Василий Кашуба;140580]На ПЛК, лучше выложить программу, а на MB110, можно и скрин с установленными параметрами.[/QUOTE
Программа и конфигурация МВ во вложении.
При наличии на входах МВ любого нолика включается сигнализация и по нажатию кнопки SB1 на ИП320 выводится соответствующее сообщение. после вывода всех сообщений программа ожидает когда все сигналы придут в норму - в 1 и начинается новый цикл отработки аварий.
Сейчас у меня с МВ в программе только нолики. На деле на входе МВ 0х80.
Если не читать РЭ на приборы, то всегда будет
Вложение 13462Помогите - неделю уже бьюсь!
Вложение 13462
А что у Вас? Почему номер регистра 0?
Вложение 13463
Кроме того есть примеры применения модулей.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
https://www.youtube.com/@%D0%9F%D0%B...BA%D0%BE%D0%B2
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
да Q5. а вообще я только начинаю изучать CoDeSys и для меня важно понять принцип выполнения, перечитал кучу литературы и столкнулся с тем что написано в ST по мере воплощения стараюсь адаптировать ST в CFC но не всегда получается(например как в этом случае), уже пробовал работу с экраном прописывать отдельным функциональным блоком в ST. но в связи моими скудными познаниями в программировании получается очень много ошибок в написании.
В архиве программа для панели
В программе 4 подпрограммы
CONNECT - проверка связи с модулями
PLC_PRG - трансляция значений для прямой индикации
SM-AL - обобщение аварий (создание аварий по группам)
ALARM_N - аварии не включения вентустановок, не открытия заслонок
(это не окончательный вариант, причесываю, добавляю)
И собственно проблема с ALARM_N - его цикл доходит до 4 секунд..
приточек 16, вытяжек 48, на каждую по 2 аварии (с выдержкой времени)
не включение в течении 5-10 секунд - авария,
не открытие клапана в течении 90-120 секунд авария,
естественно для каждой аварии проверяются условия...
Как можно уменьшить время цикла, или сделать его прерывание для опроса модулей.
Заранее спасибо за критику и предложения!!
Подмечу сразу, работаю со словами целиком (то есть передаю с порта на порт), ИБО уже 10 изменение по вентиляции (раньше вытяжки приточки были по порядку), что они еще придумают...
Tayon, начнём с ликбеза по логическим выражениям. Вот так не пишут:Это тавтология и лишний код. Следует писать так:Код:IF OUTP51.0=TRUE AND IN51.4=FALSE THENВ условиях вообще не должны встречаться слова true и false. Сама конструкция if это уже проверка на true, и вы «проверяете проверку на true на true». Для проверки на false есть отрицание not.Код:IF OUTP51.0 AND NOT IN51.4 THEN
Сжимаем дальше. Вот ваш код опять:А вот как следует:Код:IF OUTP51.0=TRUE AND IN51.4=FALSE THEN AL1.0:=TRUE; ELSE AL1.0:=FALSE; END_IF TONP9R(IN := AL1.0, PT:= TN); ALARM1.0 :=TONP9R.Q;Параметр PT можно задать один раз в объявлениях:Код:TONP9R(IN := OUTP51.0 AND NOT IN51.4, Q => ALARM1.0);И вообще, если что-то можно задать в объявлениях, лучше это сделать.Код:TONP9R: TON := (PT := T#3s);
Но больше всего поражает, конечно, количество таймеров. Их можно заменить массивом типа TIME, и в этот массив заносить временные метки по соответствующим условиям:Дальше в цикле забивать маску аварий:Код:currentTime := TIME(); timestamps[N] := SEL(OUTP51.N AND NOT IN51._N_, currentTime, timestamps[N]);Только аккуратнее с переполнением на 50-е сутки.Код:ALARM1.N := currentTime - timestamps[N] > TZ;
Ещё в несколько раз эту подпрограмму можно ускорить, если принять во внимание, что допуски в 10 и 90 секунд это намного больше среднего цикла ПЛК. Значит, необязательно каждый раз проверять все механизмы, и можно разбить их на несколько групп. Скажем, проверять штук 5-10 за проход.
В общем, циклы, группирование и логика без тавтологий и лишних промежуточных переменных.