Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Добрый день.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом. Сделаны на классическом разностном уравнение.
Программа и блоки прикреплены к сообщению или можно скачать с диска.
Если есть желание посмотреть/послушать теорию как работают, то [spoiler][spoiler] https://youtu.be/qJt-AtaccJE[/spoiler]
Реакция на ступенчатые воздействия одновременно трех регуляторов [spoiler]https://youtu.be/wOkgx-CpU2E[/spoiler]
Как устроены данные блоки [spoiler]https://youtu.be/IGRu5TuGrNI[/spoiler]
Развлекательно-позновательное видео про настройку регуляторов [spoiler]https://youtu.be/4onoTH0-eqg[/spoiler]
Как влияют параметры ПИД-регулятора на процесс [spoiler]https://youtu.be/CgKPvyRrpzo
Диск [spoiler]https://drive.google.com/open?id=1J4dnb ... 2T1HMz4arO[/spoiler]
[/spoiler]
04.01.2019 Добавил версию регулятора c аналоговым выходом _V1. Теперь не требуется подача внешнего импульса 100 мс по фронту. Всё в одном блоке.
05.01.2019 Добавил версию регулятора c ШИМ выходом _V1. Теперь не требуется подача внешнего импульса 50 мс по фронту. Всё в одном блоке.
06.01.2019 Добавил версию регулятора c трехпозиционным выходом _V1. Теперь не требуется подача внешнего импульса 100 мс по фронту. Всё в одном блоке. См. сообщение №5 ниже.
09.01.2019 Добавил версию регулятора c аналоговым выходом _V11. Расширены ограничения на время цикла (от 0,05 сек), время исполнительного механизма (от 0,05 сек), время интегрирования Ти (от 0,05 сек). См. сообщение №11 ниже.
27.01.2019 Добавил версию регулятора с ШИМ выходом_V12. См. сообщение №28 ниже. Добавлен для информации выход текущей мощности в % (НЕ ИСПОЛЬЗОВАТЬ ДЛЯ УПРАВЛЕНИЯ АНАЛОГОВЫМИ МЕХАНИЗМАМИ!!!!) и возможность изменения мин. длительности импульса от 0 до Цикл/2 сек в режиме РЕЛЕ.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом. Сделаны на классическом разностном уравнение.
Программа и блоки прикреплены к сообщению или можно скачать с диска.
Если есть желание посмотреть/послушать теорию как работают, то [spoiler][spoiler] https://youtu.be/qJt-AtaccJE[/spoiler]
Реакция на ступенчатые воздействия одновременно трех регуляторов [spoiler]https://youtu.be/wOkgx-CpU2E[/spoiler]
Как устроены данные блоки [spoiler]https://youtu.be/IGRu5TuGrNI[/spoiler]
Развлекательно-позновательное видео про настройку регуляторов [spoiler]https://youtu.be/4onoTH0-eqg[/spoiler]
Как влияют параметры ПИД-регулятора на процесс [spoiler]https://youtu.be/CgKPvyRrpzo
Диск [spoiler]https://drive.google.com/open?id=1J4dnb ... 2T1HMz4arO[/spoiler]
[/spoiler]
04.01.2019 Добавил версию регулятора c аналоговым выходом _V1. Теперь не требуется подача внешнего импульса 100 мс по фронту. Всё в одном блоке.
05.01.2019 Добавил версию регулятора c ШИМ выходом _V1. Теперь не требуется подача внешнего импульса 50 мс по фронту. Всё в одном блоке.
06.01.2019 Добавил версию регулятора c трехпозиционным выходом _V1. Теперь не требуется подача внешнего импульса 100 мс по фронту. Всё в одном блоке. См. сообщение №5 ниже.
09.01.2019 Добавил версию регулятора c аналоговым выходом _V11. Расширены ограничения на время цикла (от 0,05 сек), время исполнительного механизма (от 0,05 сек), время интегрирования Ти (от 0,05 сек). См. сообщение №11 ниже.
27.01.2019 Добавил версию регулятора с ШИМ выходом_V12. См. сообщение №28 ниже. Добавлен для информации выход текущей мощности в % (НЕ ИСПОЛЬЗОВАТЬ ДЛЯ УПРАВЛЕНИЯ АНАЛОГОВЫМИ МЕХАНИЗМАМИ!!!!) и возможность изменения мин. длительности импульса от 0 до Цикл/2 сек в режиме РЕЛЕ.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось dimalimite 23 май 2020, 21:46, всего редактировалось 8 раз.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Неплохо было бы либо тут либо в описании блока описать входы и выходы блока.
- AlexCrane
- Капитан
- Сообщения: 903
- Зарегистрирован: 20 окт 2017, 13:22
- Откуда: Ульяновск
- Имя: Александр
- Поблагодарили: 12 раз
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref]Muxaul[/ref], Если зайти в редактирование блока, то там все входа и выхода подробно расписаны.
Конечно не удобно, но все-же лучше чем ничего.
Конечно не удобно, но все-же лучше чем ничего.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Спасибо, да, я просто не знал что блоки можно редактировать. Потом увидел.
Спасибо за оперативный отзыв
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Не получилось прикрепить файл к исходному сообщению. Прикрепляю сюда.
Может быть кто-нибудь подскажет в чём проблема? Или больше 5 вложений делать нельзя?
Может быть кто-нибудь подскажет в чём проблема? Или больше 5 вложений делать нельзя?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Посоветуйте пожалуйста блок для реализации регулировки (периодического ступенчатого снижения) и стабилизации на этих уровнях в течении 2-3 минут числа оборотов двигателя постоянного тока 24В, 200мА, 90 об/мин. Уровни приблизительно составляют 90, 75, 65, 57, 51, 46, 42, 38, 35, 33, 31, 29, 27, 26, 24, 23, 22, 21, 20 об/мин и зависят в небольших пределах от числа оборотов другого двигателя - 725
об/мин (стабильность которого, в свою очередь, определяется стабильностью сети 220В). Данную зависимость учёл в формуле вычисления вышеприведенных ступенчато изменяющихся задаваемых чисел оборотов (уставки). Каким способом, пользуясь Вашими блоками, можно реализовать данную задачу - ШИМ или аналоговым?
об/мин (стабильность которого, в свою очередь, определяется стабильностью сети 220В). Данную зависимость учёл в формуле вычисления вышеприведенных ступенчато изменяющихся задаваемых чисел оборотов (уставки). Каким способом, пользуясь Вашими блоками, можно реализовать данную задачу - ШИМ или аналоговым?
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref]Dmabst[/ref], день добрый.
Аналоговым регулятором, если у вас есть обратный сигнал по скорости этого двигателя. А на выходе вы чем управлять хотите? Можете более подробно описать.
Мой ШИМ блок- это, так называемый, "медленный ШИМ" для объектов типа электротэн или наподобие такого.
Отправлено спустя 5 минут 41 секунду:
И ещё для любого регулятора самым сильным возмущающим воздействие является изменение уставки. И я вам рекомендую в своей формуле это учесть, то есть не ступенчато выдавать переход скорости например с 90 на 75, а более-менее плавной рампой.
Аналоговым регулятором, если у вас есть обратный сигнал по скорости этого двигателя. А на выходе вы чем управлять хотите? Можете более подробно описать.
Мой ШИМ блок- это, так называемый, "медленный ШИМ" для объектов типа электротэн или наподобие такого.
Отправлено спустя 5 минут 41 секунду:
И ещё для любого регулятора самым сильным возмущающим воздействие является изменение уставки. И я вам рекомендую в своей формуле это учесть, то есть не ступенчато выдавать переход скорости например с 90 на 75, а более-менее плавной рампой.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Обратный сигнал по скорости двигателей в моей схеме дают оптопары. При помощи скоростных счётчиков считываются периоды оборотов. Данные поступают в математические блоки суммирования, деления и умножения, где вычисляется уставка - требуемый период оборотов 24-х вольтного мотор-редуктора. Эти значения могут иметь только дискретное значение. Предполагаю, что придётся сильно уменьшить время VALVE (CYCLE?) и подобрать коэффициенты ПИД-регулятора. Исходя из того, что Вы рекомендуете воспользоваться блоком аналогового регулятора, планирую применить 12-битный ЦАП MCP4725. Благо блок на него имеется в Flprog.
На ANALOG_OUT_MIN и ANALOG_OUT_MAX нужно ввести константы сразу 0 и 4095, или 0 и 255, с последующим их переносом блоком SCALE к величинам 0 и 4095 (подключив его на выход Вашего аналогового блока)?
К выходу ЦАП планирую подключить следующую схему: ШИМ сигнал управляет микросхемой LM317T, посредством которой и будет осуществляться регулировка числа оборотов мотор-редуктора.
Как Вы считаете, данное решение будет оптимальным?
На ANALOG_OUT_MIN и ANALOG_OUT_MAX нужно ввести константы сразу 0 и 4095, или 0 и 255, с последующим их переносом блоком SCALE к величинам 0 и 4095 (подключив его на выход Вашего аналогового блока)?
К выходу ЦАП планирую подключить следующую схему: ШИМ сигнал управляет микросхемой LM317T, посредством которой и будет осуществляться регулировка числа оборотов мотор-редуктора.
Как Вы считаете, данное решение будет оптимальным?
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref]Dmabst[/ref], вечер добрый!
"Эти значения могут иметь только дискретное значение." - вот эту фразу я не понял. Поясните.
У меня в блоке (ANALOG_PID_V1_(CODE).ubi) ограничения на мин. время привода (VALVE-это в вашем случае разгон от 0 до макс. скорости 4095, от 15 до 250 секунд) и цикл (CYCLE-время квантования или между соседними измерениями и корректировкой воздействия, от 1 до 25 секунд) заданы просто на основание моего опыта и + это защита от деления на 0.
Если вы хотите быстрее, то это можно без проблем сделать убрав или скорректировав вот эти две строки:
CYCLE = constrain( CYCLE, (1.0), (25.0) ); // Цикл 1...25.0 сек;
VALVE = constrain( VALVE, (15.0), (250.0) ); // Время привода 15...250.0 сек.
Не забудьте, что эти значение задаются в секундах (float, то есть если хотите 100 мс цикл или скорость привода, то это 0,1 сек). Главное не задавайте нули!!!! Ну и CYCLE должен быть больше или, как минимум, равен циклу измерения скорости и циклу самой программы.
Посмотрел вашу ссылку на схему (только она же 11,25 В может дать на выходе, а вам же 24 нужно. или может я что-то не правильно понял) . Если вас не устраивает встроенный 8-битный 0-255 ШИМ на выходе Ардуино, то можете и 12-битный 0-4095 MCP4725 использовать. Присваиваете сразу ANALOG_OUT_MIN=0 и ANALOG_OUT_MAX=4095 (или 255). Единственно нужно перевести выходной сигнал регулятора ANALOG_OUT float в int (блок конвертация типов).
Так же при настройке коэффициентов не забудьте, что Кр будет измеряться в ШИМ/обороты. То есть, например при Кр=1 и отклонение 1 оборот изменение выхода ШИМ будет 1. Вообще настройка будет достаточно простой, т.к. практически отсутствует какое-либо запаздывание. Если Ти=1 сек будет много, то тоже скорректируйте строку:
K_I = constrain( K_I, (1.0), (9999.0) ); // Ти 1...9999.0 сек.
На сколько будет оптимально - это уже вам решать нужно, т.к. я процесс ваш не представляю:).
"Эти значения могут иметь только дискретное значение." - вот эту фразу я не понял. Поясните.
У меня в блоке (ANALOG_PID_V1_(CODE).ubi) ограничения на мин. время привода (VALVE-это в вашем случае разгон от 0 до макс. скорости 4095, от 15 до 250 секунд) и цикл (CYCLE-время квантования или между соседними измерениями и корректировкой воздействия, от 1 до 25 секунд) заданы просто на основание моего опыта и + это защита от деления на 0.
Если вы хотите быстрее, то это можно без проблем сделать убрав или скорректировав вот эти две строки:
CYCLE = constrain( CYCLE, (1.0), (25.0) ); // Цикл 1...25.0 сек;
VALVE = constrain( VALVE, (15.0), (250.0) ); // Время привода 15...250.0 сек.
Не забудьте, что эти значение задаются в секундах (float, то есть если хотите 100 мс цикл или скорость привода, то это 0,1 сек). Главное не задавайте нули!!!! Ну и CYCLE должен быть больше или, как минимум, равен циклу измерения скорости и циклу самой программы.
Посмотрел вашу ссылку на схему (только она же 11,25 В может дать на выходе, а вам же 24 нужно. или может я что-то не правильно понял) . Если вас не устраивает встроенный 8-битный 0-255 ШИМ на выходе Ардуино, то можете и 12-битный 0-4095 MCP4725 использовать. Присваиваете сразу ANALOG_OUT_MIN=0 и ANALOG_OUT_MAX=4095 (или 255). Единственно нужно перевести выходной сигнал регулятора ANALOG_OUT float в int (блок конвертация типов).
Так же при настройке коэффициентов не забудьте, что Кр будет измеряться в ШИМ/обороты. То есть, например при Кр=1 и отклонение 1 оборот изменение выхода ШИМ будет 1. Вообще настройка будет достаточно простой, т.к. практически отсутствует какое-либо запаздывание. Если Ти=1 сек будет много, то тоже скорректируйте строку:
K_I = constrain( K_I, (1.0), (9999.0) ); // Ти 1...9999.0 сек.
На сколько будет оптимально - это уже вам решать нужно, т.к. я процесс ваш не представляю:).
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Вы предугадали мой вопрос! Я как раз хотел спросить об увеличении скорости реакции, т.к. она не превышает 6-7% в сек. при любых настройках. Спасибо за развёрнутый ответ, буду пробовать.
Дискретные значения - это ряды (слои) намотки на катушку свитого в витую пару изолированного провода. Для свивки и намотки планирую использовать устройство из двух двигателей - шуруповёрта и мотор-редуктора, соответственно. По мере намотки свитого провода на катушку нужно с каждым новым слоем уменьшать угловую скорость (число оборотов) на рассчитанную величину, чтобы поддерживать линейную скорость, и, соответственно, шаг свивки - постоянными.
По поводу схемы управления двигателем - планирую увеличить её напряжение питания до 28 вольт.
Дискретные значения - это ряды (слои) намотки на катушку свитого в витую пару изолированного провода. Для свивки и намотки планирую использовать устройство из двух двигателей - шуруповёрта и мотор-редуктора, соответственно. По мере намотки свитого провода на катушку нужно с каждым новым слоем уменьшать угловую скорость (число оборотов) на рассчитанную величину, чтобы поддерживать линейную скорость, и, соответственно, шаг свивки - постоянными.
По поводу схемы управления двигателем - планирую увеличить её напряжение питания до 28 вольт.
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref]Dmabst[/ref], день добрый.
Всё правильно, вы упирались вот сюда:
D_T_MAX = (ANALOG_OUT_MAX - ANALOG_OUT_MIN) * CYCLE / VALVE; // Максимальное приращение на текущем шагу регулирования выходных единиц
При CYCLE=1 и VALVE=15 и при работе от 0 до 100 получается 6% максимум, т.к. "регулятор считает", что ваш механизм быстрее не сможет.
Я просто ориентируюсь на более медленные процессы и исполнительные механизмы.
Но я думаю, что стоит расширить диапазон применения. Думаю, что 50 мсек (0,05 сек) будет вполне достаточно.
См. приложение. Изменил:
K_P = constrain( K_P, (-999.0), (999.0) ); // Кр -999.0...999.0 выходные единицы/измеряемые еденицы, знак + для нагревателя, знак - для холодильника
K_I = constrain( K_I, (0.05), (9999.0) ); // Ти 0.05...9999.0 сек
CYCLE = constrain( CYCLE, (0.05), (25.0) ); // Цикл 0.05...25.0 сек
VALVE = constrain( VALVE, (0.05), (250.0) ); // Время привода 0.05...250.0 сек
Отправлено спустя 14 минут 25 секунд:
Конечно надо пробовать, но скачком менять задание для регулятора не лучшее решение. Хотя для вашей задачи Тд можно вполне 0 поставить и не такая большая реакция на скачки будет.
Если не будет получаться нормально получаться мотать из-за этих скачков, то можно придумать более "хитрый" алгоритм.
Всё правильно, вы упирались вот сюда:
D_T_MAX = (ANALOG_OUT_MAX - ANALOG_OUT_MIN) * CYCLE / VALVE; // Максимальное приращение на текущем шагу регулирования выходных единиц
При CYCLE=1 и VALVE=15 и при работе от 0 до 100 получается 6% максимум, т.к. "регулятор считает", что ваш механизм быстрее не сможет.
Я просто ориентируюсь на более медленные процессы и исполнительные механизмы.
Но я думаю, что стоит расширить диапазон применения. Думаю, что 50 мсек (0,05 сек) будет вполне достаточно.
См. приложение. Изменил:
K_P = constrain( K_P, (-999.0), (999.0) ); // Кр -999.0...999.0 выходные единицы/измеряемые еденицы, знак + для нагревателя, знак - для холодильника
K_I = constrain( K_I, (0.05), (9999.0) ); // Ти 0.05...9999.0 сек
CYCLE = constrain( CYCLE, (0.05), (25.0) ); // Цикл 0.05...25.0 сек
VALVE = constrain( VALVE, (0.05), (250.0) ); // Время привода 0.05...250.0 сек
Отправлено спустя 14 минут 25 секунд:
Конечно надо пробовать, но скачком менять задание для регулятора не лучшее решение. Хотя для вашей задачи Тд можно вполне 0 поставить и не такая большая реакция на скачки будет.
Если не будет получаться нормально получаться мотать из-за этих скачков, то можно придумать более "хитрый" алгоритм.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
dimalimite добрый вечер.
Благодаря внесённым Вами в блок расширенным настройкам появилась возможность использовать данный блок для управления быстрыми процессами и быстрыми исполнительными механизмами. Пока опробовал на Arduino Mega без подключения двигателей. Впечатлён возможностями настроек. На днях попробую с двигателями.
Благодаря внесённым Вами в блок расширенным настройкам появилась возможность использовать данный блок для управления быстрыми процессами и быстрыми исполнительными механизмами. Пока опробовал на Arduino Mega без подключения двигателей. Впечатлён возможностями настроек. На днях попробую с двигателями.
- Phazz
- Полковник
- Сообщения: 3120
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 232 раза
- Поблагодарили: 112 раз
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref]dimalimite[/ref], Есть предложение добавить в блок PWM_PID выход текущей нагрузки.
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref=#404040]Phazz[/ref], Вечер добрый.
Блок в приложение.
Добавил строчку:
// Текущая мощность в %
POWER = SUM_D_T_S * 100.0 / CYCLE;
"В обратную" сторону рассчитал, т.к. только чтобы в режиме РЕЛЕ корректно отображалось потому что там мин. выход и прерывание сигнала 0,5 сек. Вообще конечно для такого типа регулятора реле лучше не использовать
Умрет быстро. Если в режиме РЕЛЕ поставить CYCLE=1 сек, то выход будет или 0, или 0,5 сек, или 1 сек (0, 50, 100%). Если на выходе реле, то тогда хотя бы CYCLE=2 сек, что хоть было 0, или 0,5-1,5, или 2 сек (0, 25-75, 100%).
Как-то так.
Уже много их разных "наплодил":). Может вообще всё в 1 запихнуть и чтобы выбор был по какому алгоритму работать? Но он весить много будет
((.
27.01.2019 Перезалил файл в связи с необъяснимым багом (см. ниже сообщения). Если кто-то столкнулся с такой проблемой инструкция по устранению ниже или перекачать файл.
Блок в приложение.
Добавил строчку:
// Текущая мощность в %
POWER = SUM_D_T_S * 100.0 / CYCLE;
"В обратную" сторону рассчитал, т.к. только чтобы в режиме РЕЛЕ корректно отображалось потому что там мин. выход и прерывание сигнала 0,5 сек. Вообще конечно для такого типа регулятора реле лучше не использовать

Как-то так.
Уже много их разных "наплодил":). Может вообще всё в 1 запихнуть и чтобы выбор был по какому алгоритму работать? Но он весить много будет

27.01.2019 Перезалил файл в связи с необъяснимым багом (см. ниже сообщения). Если кто-то столкнулся с такой проблемой инструкция по устранению ниже или перекачать файл.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось dimalimite 27 янв 2019, 19:17, всего редактировалось 2 раза.
- Phazz
- Полковник
- Сообщения: 3120
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 232 раза
- Поблагодарили: 112 раз
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref]dimalimite[/ref], Не компилируется, потому что не задекларирована переменная MILLIS_FLOAT_1_144659106_144659106_1
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref=#404040]Phazz[/ref], проверил действительно какая-то ерунда!!!
Я этот блок сделал из PWM_PID_V1 просто добавлением одной строки.
Там такой проблемы нет.
Я сейчас ещё поковыряю, но похоже это ошибка FLProg.
MILLIS_FLOAT_1_144659106_144659106_1 - ТАКОЙ ПЕРЕМЕННОЙ ВООБЩЕ НЕТ!
Вот что есть:
float MILLIS_FLOAT_144659106_1; // Системное время мсек
float MILLIS_FLOAT_SEK_144659106_1; // Системное время сек
float MILLIS_FLOAT_1_144659106_1; // Метка времени сек текущего шага
Это он объявляет, а далее в теле программы почему-то заменяет переменную MILLIS_FLOAT_144659106_1, какой-то MILLIS_FLOAT_1_144659106_144659106_1.
Руками заменил эту ерунду на нужную и всё работатет.
ВОТ ЭТО (НЕТ ТАКОЙ ПЕРЕМЕННОЙ):
MILLIS_FLOAT_1_144659106_144659106_1 = float(millis()); // Перевод системного времени мсек в тип float
ЗАМЕНИТЬ НА:
MILLIS_FLOAT_144659106_1 = float(millis()); // Перевод системного времени мсек в тип float
И работает.
Попробую разобраться в чём суть.
Я этот блок сделал из PWM_PID_V1 просто добавлением одной строки.
Там такой проблемы нет.
Я сейчас ещё поковыряю, но похоже это ошибка FLProg.
MILLIS_FLOAT_1_144659106_144659106_1 - ТАКОЙ ПЕРЕМЕННОЙ ВООБЩЕ НЕТ!
Вот что есть:
float MILLIS_FLOAT_144659106_1; // Системное время мсек
float MILLIS_FLOAT_SEK_144659106_1; // Системное время сек
float MILLIS_FLOAT_1_144659106_1; // Метка времени сек текущего шага
Это он объявляет, а далее в теле программы почему-то заменяет переменную MILLIS_FLOAT_144659106_1, какой-то MILLIS_FLOAT_1_144659106_144659106_1.
Руками заменил эту ерунду на нужную и всё работатет.
ВОТ ЭТО (НЕТ ТАКОЙ ПЕРЕМЕННОЙ):
MILLIS_FLOAT_1_144659106_144659106_1 = float(millis()); // Перевод системного времени мсек в тип float
ЗАМЕНИТЬ НА:
MILLIS_FLOAT_144659106_1 = float(millis()); // Перевод системного времени мсек в тип float
И работает.
Попробую разобраться в чём суть.
- Phazz
- Полковник
- Сообщения: 3120
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 232 раза
- Поблагодарили: 112 раз
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Сейчас перезагрузил программу ошибка пропала
Отправлено спустя 1 минуту 45 секунд:
А еще я поставил в блоке использовать один раз
Отправлено спустя 1 минуту 45 секунд:
А еще я поставил в блоке использовать один раз
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref=#404040]Phazz[/ref], Я сейчас написал самой первой строкой кода комментарий:
//Программа
Пересохранил блок ещё раз и уже вот такой MILLIS_FLOAT_1_144659106_144659106_1 штуки не было.
Это какой-то баг похоже...
Отправлено спустя 53 секунды:
[ref=#404040]Phazz[/ref], Работает? Всё нормально?
Отправлено спустя 4 минуты 29 секунд:
[ref=#404040]Phazz[/ref], Использовать 1 раз - вообще не принципиально для этого блока. Можно хоть 10 раз, если памяти хватит:)
//Программа
Пересохранил блок ещё раз и уже вот такой MILLIS_FLOAT_1_144659106_144659106_1 штуки не было.
Это какой-то баг похоже...
Отправлено спустя 53 секунды:
[ref=#404040]Phazz[/ref], Работает? Всё нормально?
Отправлено спустя 4 минуты 29 секунд:
[ref=#404040]Phazz[/ref], Использовать 1 раз - вообще не принципиально для этого блока. Можно хоть 10 раз, если памяти хватит:)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 53
- Зарегистрирован: 03 дек 2018, 00:26
- Имя: Дмитрий
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
[ref=#404040]Phazz[/ref], будет возможность, отпишитесь по работоспособности.
- Phazz
- Полковник
- Сообщения: 3120
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 232 раза
- Поблагодарили: 112 раз
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом
Ошибок нет, а вот с логикой работы непонятное происходит. Температура уже равняется уставке, а мощность все равно на 100%
Отправлено спустя 4 минуты 46 секунд:
[ref]dimalimite[/ref], Если мне нужна только пропорциональная составляющая, то на интегральную можно в 0 поставить или нужно максимальное большое число ставить?
Отправлено спустя 4 минуты 46 секунд:
[ref]dimalimite[/ref], Если мне нужна только пропорциональная составляющая, то на интегральную можно в 0 поставить или нужно максимальное большое число ставить?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость