Лишь для примера.
https://asutp-volgograd.com/blog/pumps-codesys.html
Вид для печати
Лишь для примера.
https://asutp-volgograd.com/blog/pumps-codesys.html
переведите на русский технический язык - чтобы насос сначала включился сам что это такое в вашем понимании? насос наделён разумом и сам хочет работает, хочет отдыхает? мы чего-то не знаем или Скайнет реально существует?
далее
ай луз контроул уэн ю лук эт ми лайк зис ....что-то навеяло :DЦитата:
при замыкании датчика перепада перешел под его контроль
надо написать такой алгоритм автоматизации работы, чтобы все написанное курсивом, работало.Цитата:
Как автоматизировать работу так, чтобы.....краткое перечисление всех хотелок заказчика
Поэтому конкретный ответ на
такой - "если надо что-то сделать, значит надо что-то сделать"Цитата:
конкретный вопрос
откройте документацию на кодесис и начните с выполнения того примера по управлению светофором
откройте любое обучающее видео по кодесис от овен и начните повторять то, что делают в видео
там такие же простейшие примеры
после этого попробуйте нарисовать свой алгоритм в классическом виде
Вложение 66859
после этого попробуйте нарисовать свой алгоритм функциональными блоками
делайте, учитесь думать сами, это не ЕГЭ, списать не получится
Я что-то не понимаю. Тут вопрос-ответ или конкурс на лучший стеб. ''Чтобы насос включился сам''. Как тут еще можно понять со стороны технического языка автоматизации? Это значит, что насос должен включиться без какой либо защиты изначально(его защита - реле перепада). Он же должен толкнуть воду, чтобы создать перед и после себя перепад давления. А что потом? А потом датчик перепада замкнет контакты. Сигнал придет на ПР.
Так вот нужна схема, которая толкнет насос на условные 5 секунд, если реле перепада сработает и замкнет контакт - насос остается в работе, если нет, включиться в работу пробует второй насос по такому принципу. Всего насосов 8, поделены на 4 группы, по 2 на каждую соответственно. При этом в этих группах должна быть и ротация, и видимость аварии.
У вас спрашивают: каким образом запускаются ваши насосы - сразу после подачи питания на ПР или по какому то сигналу?
Есть ещё много вопросов:
- как выбираются насосы, участвующие в работе/исключаются из работы?
- каким образом производится сброс аварии?
- как связаны между собой группы насосов и зачем вообще это разбиение?
А обход датчика перепада, про который вы спрашиваете - это как раз самое простое в этой задаче
Поищите по форуму - такие или подобные вопросы про ротацию насосов уже не раз были и решения также приводились
Поиск
_____
складывается впечатление что нет Вложение 66861
я тоже не понимаю - это вообще форум про конкретные контроллеры и конкретную среду программирования Кодесис 2.3, куда приходят какие-то странные товарищи с банальными вопросами общего порядка по информатике школьного курса,
не относящиеся ни к контроллерам, ни к среде программирвоания
дословно ваше описание звучит так - мне надо чтобы машина поехала со скоростью 100 км/ч, мне нужна программа
нужна - так делайте.
Вы же не делаете ничего вообще, тупо требуете чтобы за вас сделали готовый достаточно сложный алгоритм, а вы тупо спишете
месяц назад вы уже котельную таким образом автоматизировали, как результат?
за месяц уже спокойно можно было пересмотреть тонну обучающих видео и уж элементарные вопросы про уставку по давлению сами бы сделали
и ротация и видимость аварии и архив событий и отправка смс и много чего ещё скоро появится:DЦитата:
Так вот нужна схема, которая толкнет насос на условные 5 секунд, если реле перепада сработает и замкнет контакт - насос остается в работе, если нет, включиться в работу пробует второй насос по такому принципу. Всего насосов 8, поделены на 4 группы, по 2 на каждую соответственно. При этом в этих группах должна быть и ротация, и видимость аварии.
делайте схему. Как? - выше написано
Привет всем!
ПЛК160 аналоговые входы
переменные Real автоматом назначены
Подаю на АЦП +5.15в, получаю значение 1030.
Читаю мануал - нет про это удвоение.
Делаю ADC8/2/1000 - получаю то что надо.
В ПЛК160 вообще намудрили с АЦП,
пишут, что только напряжение меряет.
И ещё
AI read time (10ms) - не совсем понятно что считает беспрерывно.
Добрый день, расскажите про энерго не зависимые переменные в Кодесис 2,3.
Для моего устройства необходимо хранить некоторые значения,
такие как время задержки и частота Частотного преобразователя.
Сейчас эти значения меняю вручную, во время отладки, переменные обьявлены внутри VAR RETAIN END_VAR,
в будущем планирую использовать ип120 или ип320 для изменения их значений.
Проблема в том что при запуске программы с ПК через меню "Онлайн" программа работает корректно,
но при запуске при помощи переключателя на панели ПЛК, программа ведет себя не адекватно.
Но если эти переменные объявить внутри VAR END_VAR все работает корректно.
Всё зависит от программы, как у вас не известно. Можно и не объявлять RETAIN переменные, а просто добавить их в конфигурацию слейва,
там все переменные по умолчанию глобальные и RETAIN.
Если ПЛК мастер, можно сделать начальную инициализацию.
А вообще надо выкладывать проект или хотя бы скрины.
скорее всего - поэтому всё неправильно и работает
которые вы получаете по модбас вероятноЦитата:
такие как время задержки и частота Частотного преобразователя.
а переменные "внутри" конфигурации уже являются RETAIN, поэтому всё зависит от того, как вы их "вручную" меняете и что с ними дальше делаете.
Если у вас нет железа, то правильнее не делать какую-то псевдоимитацию обмена внутри плк, а нормально делать внешней программой обмен по сети.
Будем дальше гадать или скрины выложите? Вложение 66870
И после применения изменений, надо перезагрузить ПЛК по питанию.
Вы не правильно поняли. Ни какой имитации нет. Сейчас значение переменных меняю в режиме "Онлайн" из Кодесис. Проблема в том что программа по разному ведет себя при запуске с ПК и самостоятельном запуске. Если эти переменные
Pallet_run_length:WORD:= 2360; (*Длина пробега поддона*)
Braking_distance:WORD:=150; (*Расстояние торможения*)
Network_delay_time: TIME := T#250ms; (*время на задержку сети 485*)
High_frequencyPCH3:WORD := 650; (*высокая скорость линии*)
low_frequencyPCH3:WORD := 200; (*низкая скорость линии*)
strike_holding_time: TIME := T#150ms; (*время удержания удара*)
объявить как локальные VAR то все работает нормально. Если их объявить как RETAIN программа перестает верно считать
Run_time_at_high_speed := REAL_TO_TIME ((Pallet_run_length - Braking_distance) / (High_frequencyPCH3 * 5.42814737) * 10000) - Network_delay_time;
(Это мое предположение), из за чего таймер High_speed_timer_TP : TP; (*таймер высокой скорости*) не останавливается.
При этом если этот же код запустить с ПК, он нормально работает.
Еще раз для понимания. Код работает на ПЛК если его запустить с ПК. Работает так как и задуман. Умножение на 1000 необходимо для перевода секунд в мс. Так как расчет идет в секундах, еще умножение на 10 необходимо потому что частотник принимает значения в целых числах умноженных на 10, если передать ему число 650, частота будет 65,0Гц.
Проблема в том что код перестает работать если его запустить тумблером на ПЛК.
Естественно, писал же - Если объявить эти переменные в VAR END_VAR, программа запускается с тумблера и работает как корректно.
Вообще странно, Retain переменные сохраняются только при выключении ПЛК по питанию, а у вас программа не корректно начинает работать.
Возможно при включении они перезаписываются из памяти нулями. Можете скрин сделать с RETAIN, сразу после нажатия тумблера, что в переменных?
так а какие процессы вы запускаете при переводе тумблера в положение Работа:?Цитата:
код перестает работать если его запустить тумблером на ПЛК
что вы хотите "изобразить" , стартуя подобным образом?
откройте документацию наконец-то
это и есть имитация переменных. Они у вас мимо турникета проскочили зайцемЦитата:
Ни какой имитации нет. Сейчас значение переменных меняю в режиме "Онлайн" из Кодесис.
Вложение 66875 Вложение 66879 Два варианта, в одном переменные объявлены глобальными во втором локальными. В обоих случаях переменные обнуляются и таймер уходит в безконечность.
Как у вас тогда работает, если все переменные по 0 ?
Кроме того у вас несколько ошибок в конфигурации есть.
Вы используете 28 дискретных выходов, при наличии 24 всего ( 4 быстрых и 20 обычных) последних 4 у вас физически нет. Вы проверяли их в работе ?
Для чтения с ПЧ, везде у вас чтение по изменению, а чтение должно быть циклическим.
На скринах как раз не рабочий вариант. Какие ошибки в конфигурации?
Да, тут меня спутал файл целевой платформы. В нем для потра B2.3 указаны 8 бит, и лишь в комментарии подписано что используются только 4ре. В моем проекте эти выходы не используются. Чтение и запись с ПЧ по изменению сделано для увеличения скорости работы. Пч поддерживает только скорость 9600 и реакция системы при циклическом опросе очень медленная. В дальнейшем при необходимости сделаю чтение с ПЧ по циклу в несколько секунд.
Хорошо, теперь по поводу RETAIN, они у вас 0 при включении. Первый раз их надо забить ручками или сделать инициализацию.
Потом они запомнятся при перезагрузке.
К основной программе добавляете Действие, в нём
Код:IF NOT Init THEN
// присвоить переменным нужное
Init:=TRUE;
END_IF
То есть когда в коде их объявляю и сразу присваиваю значения этого не достаточно? "сделать инициализацию" тут по подробнее, как это?
В вашем примере переменная Init, надо понимать что тип BOOL, и её так же нужно объявить в окне переменных?
игнорируйте документацию, игнорируйте
Вложение 66880
ну а что происходит с переменными при запуске программы - это тоже в игнорируемой документации, другая табличка
Еще вопрос про RETAIN переменные. При перезаписи программы, их значения стираются или остаются без изменений? Если инициализировать их один раз, а потом убрать этот код из программы, их значения сохранятся или нет? Если каждый раз вызывать их инициализацию их смысл теряется.
Ситуация прояснилась, после ввода значений ручками все заработало. Вывод, присваивать значения переменным RETAIN при объявлении нет смысла. Код запущенный из Кодесис и с тумблера на ПЛК - разный. В первом случае (даже если создан загрузочный проект) при отключении питания запись в RETAIN не происходит. С одной стороны хорошо что такие переменные автономны, но без доступа к записи напрямую их возможности весьма скудные. Спасибо за помощь. Буду изучать запись данных на внешний носитель, но это тоже ерунда, флешка или сломается или ее украдут.