Добрый вечер. Есть плк 110-60р и насосы которые отдают обратную связь шим сигналом при фиксированной частоте 75 гц., аварии и мощность передаются через скважность(процент заполнения).Подскажите пожалуйста алгоритм подсчета скважности в Codesys 2.3.
Добрый вечер. Есть плк 110-60р и насосы которые отдают обратную связь шим сигналом при фиксированной частоте 75 гц., аварии и мощность передаются через скважность(процент заполнения).Подскажите пожалуйста алгоритм подсчета скважности в Codesys 2.3.
Соберите RC-цепочку для усреднения ШИМ-сигнала и просто измеряйте напряжение.
Про мощность через ШИМ ещё понятно, а вот про аварии )))
Может, там просто дискретный сигнал?
Без АЦП никак? У ПЛК на борту нет аналоговых входов,только дискретные, покупать отдельно модуль не хочется. Насос до 70% заполнения отдает мощность, а дальше процент заполнения - аварии и предупреждения,100% заполнения- насос остановлен.
Модуль быстрого ввода с такой функцией обойдётся Вам ничуть не дешевле, а цикл ПЛК слишком велик для такой задачи.
Если время цикла ПЛК укладывается в 1 мс, то на обычных входах можно измерять длительность сигнала 2 мс и более. Период входного сигнала = 1/75 = 13,33 мс. По этому минимальный коэффициент заполнения (D=dT/T), который можно измерить 0,15 (15%).
Если время цикла ПЛК больше, то и погрешность будет больше.
Если ПЛК - М2, то использование быстрого входа и прерывания 20 мкс, помогут измерить скважность без дополнительных модулей.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
svr007
Читайте про инструмент HardellaIDE, с ним можно на ПЛК110[M2] работать с быстрыми входами с циклом до 1 мкс.
HardellaIDE и быстрые входа вроде больше как для энкодеров, на ум приходит алгоритм:
1.запускать прерывание по фронту сигнала
2.в прерывание запускать таймер, в следующем прерывании считать и обнулить
3.мерить время между импульсами сигнала, зная время периода вычислять процент заполнения.
У меня будет 4 входа шим, ПЛК не загнется такова количества? хочется более правильный алгоритм.
Зачем Вам HardellaIDE?
Используйте библиотеки Timer и SysLibPorts
только прерывания будут не не по фронту сигнала а от 20мкс таймера.
Внутри POU обработки прерывания от таймера можно напрямую анализировать состояние быстрых дискретных входов
Пример работы с быстрыми входами есть на диске
Захват-1.png
Некоторые контроллеры ОВЕН ПЛК имеют встроенный таймер, по прерыванию которого может быть
вызван отдельная программа (POU), не связанная с выполнением основной программы ПЛК. Минимальный
период вызовов прерываний таймера составляет 20мкс и может быть увеличен при вызове функции
инициализации. Период должен быть кратен 20мкс. В POU, вызываемому по этому прерыванию, могут
обрабатываться состояния "быстрых" входов и выходов ПЛК. Такой режим обработки может потребоваться
для задач, время обработки которых должно быть существенно меньше времени цикла ПЛК или для
автоматизации объектов, критичных ко времени реакции на определенные события.
К "быстрым" входам и выходам относятся несколько первых входов и выходов на ПЛК110. Подробно о
количестве "быстрых" входов и выходов смотри руководство по эксплуатации на контроллер.
Последний раз редактировалось petera; 06.11.2018 в 13:44.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
В ПЛК[М2] быстрые входа и выхода обслуживаются физически другим сопроцессором, который обменивается с основным процессором через область обмена. Харделла позволяет писать алгоритм именно для сопроцессора быстрых входов\выходов.
Только вот таймеров там нет, придется писать самостоятельно, используя время цикла сопроцессора как квант отсчета.