Насчёт конкретно СП не знаю, но другие панели (в качестве мастера) подключаются без проблем этим кабелем, даже распайка DB-9 подходит (на ПЛК использовать порт "RS-232" (верхний))
Вид для печати
Спасибо всем!
Пошел паять кабель )
Доброго времени суток. Вопрос - может ли ПЛК110 работать с Modbus функциями 1 и 5 по TCP? Библиотека с раздела Codesys 2 предназначена только для Modbus RTU\ASCII, как я понимаю. Пока вопрос остро не стоит, но хотелось бы знать, возможна ли реализация вообще или нет.
Здравствуйте.
Потерял проекты, так и не смог разобраться где они храняться.
при чем при выборе они есть
Вложение 84244
а в проводнике нет
Вложение 84245
Подскажите, где они находяться?
Вложение 84252
Вложение 84253
А вы думаете, я этого не делал?
а перед тем как открыть. там не типа "последние файлы" ? ну и проверить папку пользователя. а не в Program Files
посмотрите, что у вас пишет Проект- Опции, какие там директории указаны
и Проект - настройки куда сохранился проект, в какую директорию
что-то у вас криво встало изначально и проект сохраняется туда, куда изначально у файла ранее было сделано сохранение
Создать новый, даже пустой, проект и выбрать в меню Файл-->Сохранить как...
Откроется папка куда был сохранен самый последний проект. Ну и посмотреть какая это папка
Добрый день
Надо связать ПЛК160 с ПК по RS-232 для передачи данных. Какой кабель нужно использовать, КС14 или КС16 ?
Коллеги, приветствую!
Столкнулся с очень странным глюком режима эмуляции, может кто разъяснит что к чему:
Дано: проект в составе PLC_PRG и нескольких объектов-программ. Всё компилируется без ошибок и при подключении к ПЛК работает как задумано.
Но если проект запустить в режиме эмуляции, то в объектах перестаёт работать вся арифметика – сложение, вычитание, сравнение и пр. При этом в PLC_PRG та же арифметика работает.
Пример: в объекте помещаю блок ADD, на входах два числа, на выходе тестовая переменная, нигде больше не используемая. Запускаю эмуляцию, старт – числа не складываются. Подключаюсь к ПЛК – складываются правильно.
В то же время если этот же блок всунуть в PLC_PRG то он складывается и в эмуляции и при подключении.
Как так-то?
Да как обычно, без затей. В объекте прописаны входные и выходные переменные, в PLC_PRG (он у меня на СFC) вызываю модуль с соответствующим именем, подключаю к нему переменные. Повторюсь, "в железе" всё это нормально работает, проблема именно с эмуляцией. Неудобство в том, что даже те куски кода, которые можно было бы отлаживать в спокойной обстановке, приходится править в цеху, с подключением к ПЛК.
Я уже на ноут грешить начинаю, он не то, чтобы совсем убитый, но старенький, 8 лет ему. Может ему производительности не хватать для эмуляции? Хотя проект относительно несложный, каких-то зубодробительных вычислений нет, простая арифметика.
Эм... не совсем понял вопрос.
Имеется проект под ПЛК 110-32 ещё первой ревизии который. В PLC_PRG прописан энкодер, обработчик ошибок, инициализация и всё такое. Также есть две подпрограммы manual [PRG] и main [PRG] -- ручное правление осями и рабочий цикл. Они вызываются в PLC_PRG принимают переменные, передают, читают входы, дёргают выходы и т.д.
При подключении к контроллеру всё это работает.
Но в эмуляции отваливается арифметика в подпрограммах. Поначалу думал, что где-то накосячил в переменных, потому сделал такой трюк. Создаю в подпрограмме блок ADD на вход передаю два числа 7 и 3 например. на выход цепляю переменную test WORD. Запускаю эмуляцию. В test значение 0. Подключаюсь к ПЛК, запускаюсь. В test значение 10.
Но если я такую же конструкцию создаю непосредственно в PLC_PRG то и в эмуляции и при подключении переменная принимает значение 10.
Как-то так. Ситуация не прямо вот безвыходная, работать можно, но хочется понять суть. Вот только сейчас сообразил, что не догадался всё сбросить, перезагрузиться и откомпилировать проект заново. Может какой-то спонтанный глюк.
Всех приветствую! В рамках учебы дано задание по тех процессу: подача продукта в накопительный бак и выход продукта из накопительного бака через насосную группу. Также в баке присутствует теплообменник и имеется вытяжной вентилятор, удаляющий летучую фракцию из бака. Необходимо: 1. Включение и вывод на требуемую производительность вытяжного вентилятора.2. Заливка емкости не менее чем до нижнего уровня.3. Прогрев до заданной температуры.4.Включение рабочего насоса.
При падении производительности насоса более чем на 20с необходимо включить резервный насос. Необходимо предусмотреть возможность как ручного, так и автоматического управления. Установка должна быть отключена также в следующих ситуациях (с соответствующей сигнализацией):1. Отклонение производительности вентилятора от требуемой более чем на 20с 2. Падение уровня ниже нижнего более чем на 10с 3. Отклонение производительности насосной группы от требуемой более чем на 30с4. Отклонение температуры от требуемой более чем на 30с.
1. Вентилятор имеет частотный привод и управляется аналоговым сигналом 4-20мА. Его максимальная производительность составляет 360 м3/час. Датчик потока имеет входной сигнал в 4-20мА и предел измерения 480 м3/час. Нам необходимо поддерживать производительность вентилятора на уровне 300 м3/час с точностью 2%.
2. В накопительном баке уровень может меняться от 0 до 5 метров. Жидкость в баке — вода. При этом нам необходимо поддерживать уровень в пределах от 1 до 4 метров. Уровень измеряем датчиком давления с пределами измерения 0-100кПа и выходом 4-20мА. Клапан подачи воды управляется дискретным сигналом 24В.
3. Температура в баке может меняться от 10 до 90°С при этом нам нужно ее поддерживать на уровне 60 °С с допустимым отклонением 2°С. Измерения производим датчиком температуры с пределом 0-100°С и выходом 4-20мА. Время полного хода клапана теплоносителя — 25с. Управляется клапан сигналом 4-20мА. Его характеристику считаем линейной.
4. Насосы имеют частотный привод и управляются аналоговым сигналом 4-20мА. Максимальная производительность составляет 36 м3/час. Датчик потока имеет входной сигнал в 4-20мА и предел измерения 48 м3/час. В работе всегда находится только один из насосов. Второй является резервным.
5. Измерения производим датчиком температуры с пределом 0-100°С и выходом 4-20мА.
6. Световая сигнализация и подача питания на частотные преобразователи управляется дискретными сигналами 24В.
Только начала знакомиться с программированием, не понимаю в каком направлении двигаться по данному заданию. Буду рада любым рекомендациям/подсказкам, а в особенности примерам.
с проектирования контроллера - с определения числа аналоговых каналов ввода, каналов аналогового вывода, тоже самое дискретный ввод и выводЦитата:
Только начала знакомиться с программированием, не понимаю в каком направлении двигаться по данному заданию.
исходя из этого выбираем плк и модули ввода/вывода
это даст общую структурную схему сау и потом фукнциональную схему автоматизации
потом уже приступают к конфигурированию собственно плк в соответствующей программе и программированию алгоритмов управления, это как бы вообще отдельная история.
Функциональная схема есть, конфигурация плк настроена.
Прикрепляю функциональную схемуВложение 84708
приемлимо, ну ок.
где структура сау? конфиг плк модули вот это всё?
вот из этого надо сделать функциональную схему автоматизацииЦитата:
Прикрепляю функциональную схему
Прошу помощи с программой. Был PLC 110-60 с программой дозирования воды , перенес все на PLC 110-60 m2. Вроде как все работает, но тут выясняется что дозирование вообще не работает, то есть задаем уставку к примеру 100 литров, нажимаем старт, слышно что клапан щелкает , но счетчик дозирования фигачит и фигачит до бесконечности, хотя видно, что программа отрабатывает корректно , на 100 литрах выполнение дозирования останавливается.
Если кому не сложно , посмотрите пожалуйста , выкладываю старую и новую версию программ
Я уже просто голову сломал , что может быть не так.
Вложение 84819
и вот после того как программа выполнила условия , счетчик продолжает крутиться (да и за 5 секунд 5000 литров тоже не может налиться)
Вложение 84821
Причем все это на всех 4 счетчиках дозирования
А самое главное у меня физически закрыты краны, но счетчик считает
atomo2
В ПЛЦ_ПРГ сделан безусловный вызов ПОУ WODA_DOZIROVKA_NR170, там есть строчка, которая безусловно выполняется в каждом цикле. Поэтому и скорость дозировки выше, чем расход топлива ракеты Ангары-5.Цитата:
wimpCount :=wimpCount + COUNTER_NR170_WATER
atomo2
При включенном мониторинге в конфигурации ПЛК посмотреть состояния счетных входов. Если показания меняются при отключенном потоке, то разбираться с внешними датчиками. Я сильно не вникал в ваш алгоритм, но не увидел обнуления счетной переменной. Подсчет импульсов должен учитываться только при работе дозирующего устройства.
У этих ПЛК есть неприятная особенность - отсутствует возможность сбросить Fast Counter ни снаружи, ни из программы, это и создает проблемы, приходится городить огород.
Спасибо, буду проверять датчики, проблема именно у 110-60м2 ?
Вот переделаk код, теперь счетчик останавливается, но опять же протока нет.... что он считает то :DКод:wcur := WATER_FACT_NR170;
wtimer(tme := t#120s, CUR := wcur, PREV := wprev, DOZ := WATER_DOZ_NR170, NORM_S := TRUE);
IF wtimer.TIME_OUT THEN
WATER_DOZ_NR170 := FALSE;
END_IF;
IF WATER_START_NR170 AND (NOT WATER_DOZ_NR170) THEN
WATER_START_NR170 := FALSE;
wimpCount := 0;
WATER_DOZ_NR170 := TRUE;
WATER_DONE_NR170 := FALSE;
wtmp_zad := WATER_ZAD_NR170;
wcur := 0;
wprev := 0;
END_IF;
IF WATER_START_NR170 AND WATER_DOZ_NR170 THEN
WATER_START_NR93_1 := FALSE;
END_IF;
IF WATER_DOZ_NR170 THEN
WATER_ZAD_NR170 := wtmp_zad;
counter_copy := COUNTER_NR170_WATER;
IF O_CL_NR170_WATER THEN
WCOUNTER_ACTIVE_NR170 := TRUE;
wimpCount := wimpCount + counter_copy;
END_IF;
WATER_FACT_NR170 := DWORD_TO_WORD(wimpCount / 88);
IF WATER_FACT_NR170 >= WATER_ZAD_NR170 THEN
WATER_DOZ_NR170 := FALSE;
WATER_DONE_NR170 := TRUE;
END_IF;
ELSE
WCOUNTER_ACTIVE_NR170 := FALSE;
END_IF;
IF WATER_STOP_NR170 = TRUE THEN
WATER_DOZ_NR170 := FALSE;
WATER_DONE_NR170 := TRUE;
WATER_STOP_NR170 := FALSE;
END_IF;
wprev := wcur;
capzap
В проекте применен FastCounter на FDI, в этом режиме фильтрации нет.
1. Считываем показания аппаратного счетчикаЦитата:
WATER_ZAD_NR170 := wtmp_zad;
counter_copy := COUNTER_NR170_WATER;
IF O_CL_NR170_WATER THEN
WCOUNTER_ACTIVE_NR170 := TRUE;
wimpCount := wimpCount + counter_copy;
END_IF;
2. Счетчик дозировки := Счетчик дозировки + показания аппаратного счетчика
3. Повторяем до выхода на 3-ю космическую скорость.
Чуете подвох?
Надо к счетчику дозировки добавлять разницу между актуальными данными аппаратного счетчика и его же данными с предыдущего цикла ПЛК. Причем учитывать переполнение аппаратного счетчика. При достижении максимального значение счетчик сам обнуляется и считает с нуля. Это и есть те неудобства, о которых я говорил выше.
в этом может быть проблема?
даже сейчас по всем 4 дозировкам , хотя я ничего не запускал и ничего не бежит , счетчики фигачат Вложение 84822
atomo2
В теории да, если датчик расхода на механических контактах, например геркон. Дребезг есть даже у них. В любом случае, стоит убедиться в отсутствие изменений показаний аппаратного счетчика при отключенном датчике.
ДалееЦитата:
counter_copy := COUNTER_NR170_WATER;
wimpCount := wimpCount + counter_copy;
--
Происходит увеличение wimpCount на величину counter_copy в каждом цикле ПЛК.
COUNTER_NR170_WATER в проекте прикручен к аппаратному счетчику на FDI, он не сбрасывается.
Надо как-то так:
1. Однократно при запуске программы считать COUNTER_NR170_WATER в переменную например old_counter_copy,
2. При дозировке:
wimpCount := wimpCount + (COUNTER_NR170_WATER - old_counter_copy);
old_counter_copy:= COUNTER_NR170_WATER;
Останется только прикрутить контроль переполнения COUNTER_NR170_WATER.
---
В конфиге ПЛК при мониторинге смотрели показания счетчиков FDI?
Товарищи , какой то странный прикол, перезагружаю я ПЛК и из 4 дозировок только на 1 счетчике бегут показания сразу после перезагрузки.
Далее жму старт дозировки 170 счетчика и он работает нормально, то есть показания не бегут, жму стоп , все останавливается , жму старт снова все запускается и показания не бегут (но может все же вылететь после 15 раз так и опять побегут и поможет только перезагрузка)
на других 2х после перезагрузки не бегут сразу автоматом , но после того как жмешь старт начинают бежать и помогает только перезагрузка ПЛК
Как раз и получается что написали вы Валенок?
Вложение 84828 вот как раз после перезагрузки ПЛК видно что 3 счетчик сам включился автоматически и у него 1. Остальные по 0 , даже 170 после старта и стопа, а так до перезагрузки на 1 Единцу увеличивались после старта
atomo2
Не столь важно первоначальное значение, сколь именно его прирост без работы внешних датчиков. Если прироста не наблюдается, значит с датчиками всё в порядке, следует искать ошибку в алгоритме подсчета\преобразования данных аппаратного счетчика в своей программе. Примерные пути уже обозначены.
Ну вроде как исправил, теперь просто так счетчик не бежит и при нажатии кнопки старт тоже.
Код:PROGRAM WODA_DOZIROVKA_NR170
VAR
wtmp_zad : WORD;
wimpCount : DWORD;
wcur : INT;
wprev : INT;
startCounter : DWORD := 0;
delta : DWORD := 0;
wtimer : TIMERING;
END_VAR
wcur := WATER_FACT_NR170;
wtimer(
tme := t#120s,
CUR := wcur,
PREV := wprev,
DOZ := WATER_DOZ_NR170,
NORM_S := TRUE
);
IF wtimer.TIME_OUT THEN
WATER_DOZ_NR170 := FALSE;
END_IF;
IF WATER_START_NR170 AND (NOT WATER_DOZ_NR170) THEN
startCounter := COUNTER_NR170_WATER;
wimpCount := 0;
WATER_DOZ_NR170 := TRUE;
WATER_START_NR170 := FALSE;
WATER_DONE_NR170 := FALSE;
wtmp_zad := WATER_ZAD_NR170;
wcur := 0;
wprev := 0;
END_IF;
IF WATER_START_NR170 AND WATER_DOZ_NR170 THEN
WATER_START_NR93_1 := FALSE;
END_IF;
IF WATER_DOZ_NR170 THEN
WATER_ZAD_NR170 := wtmp_zad;
IF O_CL_NR170_WATER THEN
WCOUNTER_ACTIVE_NR170 := TRUE;
ELSE
WCOUNTER_ACTIVE_NR170 := FALSE;
END_IF;
delta := COUNTER_NR170_WATER - startCounter;
wimpCount := delta;
WATER_FACT_NR170 := DWORD_TO_WORD(wimpCount / 88);
ELSE
WCOUNTER_ACTIVE_NR170 := FALSE;
WATER_FACT_NR170 := 0;
END_IF;
IF WATER_FACT_NR170 >= WATER_ZAD_NR170 THEN
WATER_DOZ_NR170 := FALSE;
WATER_DONE_NR170 := TRUE;
END_IF;
IF WATER_STOP_NR170 = TRUE THEN
WATER_DOZ_NR170 := FALSE;
WATER_DONE_NR170 := TRUE;
WATER_STOP_NR170 := FALSE;
END_IF;
wprev := wcur;