PDA

Просмотр полной версии : ПЛК63. Подсчет импульсов с расходомера.



Алексей_Шишкунов
01.02.2017, 15:17
(Дан ответ).
Здравствуйте, пытаюсь осваивать разработку программ для ПЛК.
У меня появился такой вопрос (пытаюсь параллельно найти вразумительный ответ на форуме, но пока не нашел).
У меня есть расходометр, который посылает N-ое количество импульсов на литр.
ПЛК исполняет программу свою в цикле за определенный промежуток времени.
Ведь я правильно понимаю, что во время выполнения программы данные со входов копируются в область ввода-вывода в переменные и не изменяются, пока она выполняется.
Как мне считать импульсы с расходомера, не теряя их.
Просто вход дискретный подать на ФБ счетчик и накапливать для обработки, реализуя таким образом чтобы цикл ПЛК был быстрее, возможной максимальной частоты импульсов с расходомера?
Или как-то по-другому?

Николаев Андрей
01.02.2017, 20:29
Все так как вы написали. Если импульсы будут поступать на вход чаще чем выполняться цикл ПЛК - будет потеря данных. Но счетчиков воды с импульсами в 1-10 мс я не встречал

melky
02.02.2017, 08:50
Николаев Андрей в какой-то теме уже мелькал подобный счетчик, он дает не импульс после 1-10л а пачку импульсов, которые необходимо посчитать и перевести из бинарного значения в значение суммы израсходованной воды.

тут счетчик импульсов нужен с режимом обнуления. Либо там вообще счетчику посылается команда, после которой он начинает свое значение на табло передавать пачкой импульсов.
бяка в общем.

Николаев Андрей
02.02.2017, 11:33
Возможно Вы правы.
Ждем внесения ясности топик-стартером.

Алексей_Шишкунов
02.02.2017, 18:18
Спасибо, за ответ.
Нет, обычный расходомер с герконом. Я просто хотел уточнить правильно ли я понимаю принципиально работу ПЛК.
Я просто сделал SFC-схему и организовал работу таким образом, чтобы во время выполнения рабочей задачи, программа отрабатывала только необходимое действие и проверку аварийности, блокируя остальные действия.
Но начал углубляться в теорию и столкнулся с вопросом, вдруг программа отработает дольше, чем произойдет смена сигнала на дискретном входе. Спасибо за ответ, теперь я убедился, что хоть не дурак.
А раз помощь подоспела в разъяснении, можно еще такой вопрос.
Правильно я понимаю, что будь в наличие быстрые дискретные входы, можно было бы подключить подмодуль счетчика по контуру и он бы считал импульсы за время выполнения цикла программы и передавал бы это значение к следующему циклу, обнуляет свое значение и считает снова?
И также, потому что в ПЛК63 нет быстрых дискретных входов, нельзя подключить такие подмодули?

Николаев Андрей
02.02.2017, 18:29
По второму вопросу все верно.
А вот с SFC надо очень аккуратно, по тому как цикл ПЛК вертится ТОЛЬКО в том шаге, который сейчас активен. Если Вы из этого шага выйдете - ничего считаться не будет.
SFC это единственный язык, где цикл ПЛК крутится в шаге. При работе с остальными языками - программа выполняется в цикле.

Алексей_Шишкунов
02.02.2017, 18:38
Еще раз спасибо Вам, Андрей.
И за предупреждение тоже, мне наоборот, удобнее и понятнее как переходы и состояния, я аккуратно;)
К тому же специфика выполнения получается проще.

Алексей_Шишкунов
11.07.2017, 14:31
Здравствуйте, Андрей. Спустя полгода дошел до реализации в железе своего проекта, но в итоге уперся сейчас в проблему непонимания, опять с расходомером.
Имеется расходомер с датчиком Холла, импульсный выход, 500 имп/л, макс. пропускная 30 л/мин. Вот по максимальным и выходит, что в 4 мс импульс.
Подключил сигнальный на дискретный вход, и просто пытаюсь счетчиком считать импульсы и переводить в литры, чтобы отмерить примерный объем воды, погрешность не была бы значительной для меня.
Но считает неверно, сигнал становится неразличимым. Липнет.
Проблема я предполагал, что грубо говоря в частоте дискретизации сигнала и что загвоздка в пост.фильтра дребезга, но это не дало победы над проблемой.
Подскажите, что не так делаю и как решить вопрос, пожалуйста.
Как решить эту потерю данных?

Алексей_Шишкунов
17.07.2017, 02:25
Спасибо:)
Нет, это я понимаю, конечно. Увидел уже, что частота, подаваемого сигнала 50 Гц и что у при моих 250 Гц - скажем, сигнал "слегка" неразличим.
Не обратил внимание, а теперь не могу максимально прямым и не тратным способом решить эту загвоздку.
Сейчас покажутся капризы, но у них свои причины. Так как.
1. Другой расходомер - это, конечно, самый адекватный вариант, но хотелось бы сохранить возможность использовать расходомеры, которые так частят, чтобы подручным заменить можно было в случае чего.
2. Другой ПЛК в другой раз, доделать и доехать нужно сейчас на этом.
3. Модуль расширения и СИ8(СИ10) подкупать и тянуть в проектик не хочется, понимаю, что счетчик импульсов это то решение в противовес отказа от первого варианта, но как-то так.
Пытаюсь понять, смогу ли я сделать чтобы и волки сыты, и овцы целы.
У меня три направления мысли, но ни по одному я что-то не могу до конца додумать.
1) Смогу ли я исхитриться в сторону аналогового входа? Через частотомер, к примеру, или еще каким способом.
2) Что еще в качестве делителя частоты можно вкрутить, считая каждый импульс за 6-8, к примеру?
3) Как развитие 2 варианта. Есть ли вариант раскидать импульсы на несколько дискретных входов - не теряя импульсы, а считая передний фронт с нескольких входов, с более низкой частотой.
Что скажите?