Переключите в False Enable БЛИНКа во время включенного выхода , результат может удивить и расстроить , а кое-кому может выйти в производственную травму . Недавно на заводе фольксвагена робот наладчика раздавил во время наладочных работ ...
Вид для печати
Как кнопку СТАРТ/СТОП на ПЛК100 перепрограммировать на включение на 5 мин. дискретного выхода - %QX1.0 ?
В этой теме чуть выше можно увидеть ПУТЬ к решению .
Анекдот :
Хохол выходит с сыном (великовозрастным-чубатим дэтыной) к берегу моря ... Вот смотри , Сынку , о це море . Идэ , Батько ? Та вот же (показывает) . Идэ , Батько ? Батько хватае сынку за чуб и окунает головой в волну прибоя . Батько ! Шо це було !? Море , Сынко . Та идэ !?
Подскажите про физическую кнопку для дискретного входа, какая подойдет и как подключается.
Кнопка должна быть зеленая. Подключается отверткой
Смотря что подключать.
Подскажите как можно передавать с панели оператора (Weintek) на ПЛК110-32 Уставку время к примеру две с половиной секунды 2.5сек.
1. Точно как-то можно ... Но я не мазохист ...
2. Конструевина , даже на CFC мастерится : R_TRIG > значение счетчика(Целочисленная переменная (WORD,DWORD) ) +1 , а CTU - это для ..."продвинутых электриков" на LD.
Я даже когда на Дельте работаю (там только LD) этими CTU не пользуюсь.
Можно совсем без CTU сделать. Например вот так.Вложение 19585
Я так понял загнать в массив Вы уже умеете?
Например, есть массив из 10 элементов a:array[0..9] of real
var1:=a[0]; (*переменной var1 присвоили значение из нулевого элемента массива*)
var2:=a[1]; (*переменной var2 присвоили значение из первого элемента массива*)
подробней про массивы можно почитать в документации CoDeSys_V23_RU.pdf стр. 330
Начните вообще ... про массивы .
Но !!!!! Тут надо ведь подумать , как это... "Голова у солдата чтобы думать , а мозги чтобы соображать !
Тема для раздумья - А что , на ПЛК в которых массивы не предусмотрены это низя сделать ? И как вы предлагаете Массив на панели отображать ? (ну я знаю 2 способа , если размерность известна )
Перед исполнением любой задачи надо :
1. Включить МОЗГИ.
2. Если не выполняется п.1 не браться за выполнение задачи .
3. Если мозги включены , то ... решение должно найтись без обращений на форум , а вот с проблемами ... обращайтесь.
В режиме эмуляции где настроить шаг времени при пошаговом исполнении программы?
Всем привет! Основной алгоритм управления машиной был написан в виде нескольких СFC программ вызываемых из PLC_PRG. После аварийной остановки машины оператором нам требуется перезапустить все эти программы с начала, по умолчанию они продолжают свою работу с тех шагов, которые были активны до остановки. Как это сделать?
Есть такой прием, как инициализация переменных при первом запуске ПЛК. Если этим воспользоваться, то можно сбросить все переменные к первоначальным в любой момент времени.
В PLC_PRG создаете переменную init. В самой первой строке пишете
if not init then
init:= true;
(*здесь инициализируем нужные переменные*)
end_if
Если в дальнейшем понадобится снова проинициализировать переменные, то через триггер сбрасываем init:
init:=false;
Это на языке CFC?
Если Вы пишете на CFC, то ничего страшного не произойдет, если один ФБ у Вас будет написан на ST, где будут простые присвоения переменным, меньше места будет занимать на холсте :)
так это должно быть написано в отдельной программе получается..
Привыкайте разбивать проект на части. Все равно сложные задачи неудобно писать одним блоком, тем более на CFC. Чем раньше поймете, тем легче Вам будет в дальнейшем.
Вложение 19617
получилось как то так... Где D5 кнопка начало цикла, а D10 сброс RS тригеров в программах. Я правильно все написал?
Я не знаю правильно или нет, так как сильно не вникал в Вашу программу. По идее при старте все триггеры должны быть просто сброшены. Смысл в том, чтобы в начале работы переменные имели нужные значения. Вот и смотрите, что чему должно быть равно и присваивайте нужные значения, проверьте, может где таймер окажется не отключен, тогда надо будет и его сбросить при инициализации.
Спасибо большое за помощь.Буду пробовать на выходных.
Может не все нужные переменные проинициализировали. При отладке посмотрите какие переменные на сбросились и добавьте их обнуление при инициализации.
Всем привет! Подскажите, есть ли возможность запихать три разных USINT в нужные места переменной TIME? Например, из СКАДы приходят Часы, минуты и секунды. Можно ли как-то просто их разместить по нужным местам в переменную TIME или нужно их пересчитывать в милисекунды, складывать и класть UDINT_to_TIME?
Вот в этой библиотеке гляньте: http://www.codesys.ru/docs/timeexp.zip Но как по мне, то проще пересчитать t := UDINT_TO_TIME((hr * 3600 + mn * 60 + sec) * 1000).