Спасибо большое! ;)
ps: на счет счетчика вместо лампы возьму на заметку;)
Вид для печати
Выкладываю программку, точнее что получилось, вдруг кому пригодится (мало ли:) ). Работает как часы, но громоздкая. Сброс счетчиков организован. Рассчитана на 8 программ станка. В коде надо будет дополнительно создать массив для перем.COUNTER, в зависимости от которого будет вызываться тот или иной индекс массива с нужными параметрами программы для станка.
мысли в слух: Может если разбить на подпрограммы или действия будет казаться менее громоздкой:D
ps. Для новичков пример самое то;)
С их-то неокрепшей психикой да на такую оргию?Цитата:
Для новичков пример самое то
Тут сам человеко-машинный интерфейс можно сделать иначе: держим кнопку и ждём, пока лампочка мигнёт нужное число раз. И программа при этом будет вообще тривиальной:
http://images.devs-on.net/Image/JEkL...ysUntitled.png
Тут пока держим кнопку, номер программы не меняется, но лампочка мигает. Когда отпускаем кнопку, номер программы приравнивается к числу срабатываний лампочки. Если номер больше допустимого, он игнорируется, а лампочка горит постоянно пока не отпустишь кнопку. Период мигания и допустимое число программ можно брать любые.
Ну и на десерт упрощённый вариант того подхода — нажимать, а потом смотреть на лампочку:
http://images.devs-on.net/Image/FbDE...ysUntitled.png
Между нажатиями кнопки должно быть не более timeout времени. Превышение таймаута считается завершением ввода. Контрольное мигание лампой начинается по истечении этого таймаута.
Я это учитывал. Для INT пределом получается не 16 часов, а всего лишь 32,7 секунды. Но на практике при таком способе задания вряд ли кому-то понадобится больше 10 программ, и время одной вспышки лампочки более 1 секунды для контрольного счёта. 10*1000=10000 — вполне укладывается в INT. Если требуется в разы больше, то можно перевести всё на DWORD, но вообще тогда уж лучше пересмотреть способ выбора программы.
Подкажите пожалуйста в чем может быть причина потери связи ИП320 с ПЛК 100??? Использую кабель КС2 и сетевые параметры проверял!
Всем доброго времени суток.
Подскажите пожалуйста, есть программный ШИМ:
VAR
t_pwm: TON; (*таймер ШИМ*)
out: BOOL; (*выход ШИМ*)
t_power: TIME; (*переменная ШИМ*)
power: REAL; (*выходная мощность в диапазоне 0..1*)
END_VAR
(*запускаем таймер ШИМ*)
t_pwm(IN:=TRUE,PT:=t#10ms);
IF t_pwm.Q THEN t_pwm(IN:=FALSE); END_IF
(*преобразуем мощность во время*)
t_power := INT_TO_TIME(REAL_TO_INT(10*power));
(*управляем выходом*)
IF t_power > t_pwm.ET THEN out := TRUE; ELSE OUT := FALSE; END_IF
Период 10 мс, скважность (power) будет меняться по ходу программы.
Выше описанный программный ШИМ ограничен возможным количеством величин скважности, т.к. происходит округление переменной t_power. Например power:=0.25, тогда t_power := INT_TO_TIME(REAL_TO_INT(10*0.25)); в итоге 2.5 мс округляются до 3 мс. В итоге t_power принимает значение 3ms при скважности 0.25, и t_power может иметь только 11 значений от 0 до 10.
Вопрос: существует ли возможность задавать переменным значения меньше 1 мс?
Может кто-нибудь поделиться другим способом организации ШИМ, не страдающим таким ограничением как выше описанный?
С другой стороны:
Заказали ПЛК110-32 с Fast DO1-DO4, есть возможность их замены на PWM-модуль. Но пока честно не представляю как этот модуль себя ведет и работает. В РП скудная инфармация:(
Давайте разбираться.
Первое, что нужно принять, как факт, что тип данных Time представляет время в миллисекундах, то есть все ваши манипуляции с функциями и ФБ, которые работают с данными типа Time обречены на дискретность в 1 мс.
Второе. Основательно подумайте, действительно ли вам нужен период ШИМ в 10 мс, зачем так мало, неужели у вас есть столь малоэнерционные исполнительные элементы, которыми нужно управлять такими короткими импульсами?
Третье. Несколько сумбурно изложу свою мысль, но из фразы "Заказали ПЛК110-32 с Fast DO1-DO4, есть возможность их замены на PWM-модуль" мне не совсем понятно, правильно ли вы понимаете суть замены на PWM модуль. Это делается непосредственно в Codesys, в конфигурации контроллера, и соответственно это достаточно подробно описано в документе, который касается конфигурирования, а не программирования, то есть OWEN PLC Configuration, который можно скачать или найти на диске. Я бы пошел по этому пути, так как настройка займет 1 мин, и все будет работать в фоновом режиме.
И если обратите внимание, то там дискретность другая (в сотнях микросекунд)
owen_plc-configuration: "Модуль ШИМ является подчиненным подмодулем
модуля дискретного выхода." В ПЛК110-32 модуль ШИМ является замещающим...
РП: "Модуль ШИМ является замещающим для модуля быстрых дискретных выходов."
что в owen_plc-configuration, что в РП принцип работы не описан:(
Есть пример с использованием ПИД-регулятора, но и принцип ПИД ригулятора не совсем понятен, а там и дебри =)
...чтобы понять принцип ШИМ модуля остается только эксперементировать, когда придет ПЛК110
ps. Спасибо большо за ответы, буду дальше копать ;)