Segnetics

Вернуться   Segnetics > Общий

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2017, 13:31   #61
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 503
По умолчанию Ответ: Обмениваемся своими макросами

Натурные испытания показали следующее.

Исходная позиция - стандартный проект приточки с водяным нагревом, голый 25-й пиксель без датчиков.

1. Вставлен макрос без циклов. Опрос 32 входа.
Тик без макроса 77-80мс, с макросом 88-90.
Время реакции выходов макроса на изменение входов около 6 секунд.

2. Вставлен макрос с циклами, те же 32 входа
Тик 115-117мс. Время реакции около 2 секунд.

Время засекал "на глазок", считая про себя примерно по секунде Тем не менее, разница слишком заметна.

В итоге получается, что с циклами вся программа отрабатывает в 3 раза быстрее. Причем получаем актуальные данные на выходе в том же цикле работы всей программы, в котором меняются входы, что может оказаться востребованным в некоторых ситуациях.

Буду весьма признателен, если кто-то предложит более быструю и не сильно более многоблочную реализацию.
ViS вне форума   Ответить с цитированием
Старый 20.08.2017, 15:13   #62
alex.vas
Senior Member
 
Аватара для alex.vas
 
Регистрация: Jul 2009
Сообщения: 124
По умолчанию Ответ: Обмениваемся своими макросами

Решил поделиться макросом "Соотношение топливо-воздух" работает по алгоритму минитерма 400.00 производство МЗТА. В данном макросе один корректирующий коэффициент.
Может кто делал с 4 точками как в Минитерм 400.04 поделитесь.
Вложения
Тип файла: msl Топливо-Воздух МЗТА.msl (18.0 Кбайт, 25 просмотров)
alex.vas вне форума   Ответить с цитированием
Старый 30.08.2017, 07:00   #63
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 1 421
По умолчанию Ответ: Обмениваемся своими макросами

Универсальный PID-регулятор v4


Код:
Init start    - всегда равен 1, начальный сброс регулятора
Invers        - вход для инверсии регулятора. 0 = прямой регулятор, 1 = обратный.
In            - вход
Set           - Уставка
Dead Zone     - нейтральная зона, в которой ошибка всегда равно нулю или, что тоже самое, 
                уставка Set всегда равна значению входа In.
                При выходе In из этой зоны вверх, к значению уставки Set прибавляется значение DeadZone
                и, тоже самое, вниз, от значения уставки Set отнимается значение DeadZone

Pb[0...1000]  - коэффициент пропорциональности / 1000, множитель только перед пропорциональной 
                составляющей регулятора, кое-где в литературе его называют коэфф-м байпаса.

Pr[0...1000]  - коэффициент робастностсти / 1000, множитель перед всем ПИД-регулятором, 
                как в конструторском регуляторе, если задать Pb=1000, то Pr будет в точности выполнять 
                ту же самую функцию. Если Pr = 1000, то регулятор станет классической формы с несвязанными коэффициентами.
Pd[0...1000]  - коэффициент интегрирования дифференциала / 1000, множитель перед слагаемым что интегрируется вместе с ошибкой.
                при Pd = 0 регулятор имеет классическую форму. при Pd = 1000 интегрируется сумма ошибки и дифференциала
                в некоторых случаях применение этого  коэффициента позволяет улучшить переходную характеристику

I, сек        - интегральный коэффициент, постоянная времени интегрирования. 
                I=0 отключает и сбрасывает на SetCentr интеграл
D, сек        - дифференциальный коэффициент, постоянная времени дифференцирования

Out min       - минимум выхода PID регулятора, изменение сбрасывает интеграл к SetCentr[%PID]
Out max       - максимум выхода PID регулятора, изменение сбрасывает интеграл к SetCentr[%PID]

Reset         - вход центрирования интеграла, сброс интеграла к значению на входе SetCentr[%PID]
SetCentr[%PID]- значение центра регулятора в процентах от изменения выхода

Load          - вход загрузки в интеграл значения со входа PreSet[%PID]
PreSet[%PID]  - вход предустановки выхода PID регулятора в процентах от изменения выхода

**** изменение тика системы сбрасывает интеграл к SetCentr[%PID]

Out min и Out max можно задавать и положительными и отрицательными
например, 
Out min = -1000
Out max = +1000
SetCentr = 0
выход ПИД-регулятора начнёт работу с нуля и в зависимости от ошибки будет стремиться либо к +1000 либо к -1000
Вложения
Тип файла: msl PID v4.msl (83.7 Кбайт, 52 просмотров)


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 01.11.2017, 21:49   #64
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 1 421
По умолчанию Ответ: Обмениваемся своими макросами

исправления
некорректно работала мертвая зона при включенной инверсии по входу
добавлена инверсия выхода
Вложения
Тип файла: msl PID v4-1.msl (96.7 Кбайт, 57 просмотров)


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 22.06.2018, 17:21   #65
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 503
По умолчанию Ответ: Обмениваемся своими макросами

Что-то надоело каждый раз по макросам шариться и биты искать-смотреть, когда при допиле конструкторской программы приходится код CPU менять. А по сему вот - простенький макрос дешифратор-шифратор кода, и экселевский листик для оффлайна. Авось сгодится кому.

Команда CPU.msl
Код CPU.zip

P.S. Добавьте ж уже в разрешенные для зарузки расширения фйлов .xlsX, .docX и т.д.
ViS вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация аналогового сигнала СВМ Вопросы о программировании 15 02.12.2015 20:28
Модуль Z-4RTD2 от SENECA serg-el Примеры работы по Modbus 3 04.06.2015 18:11
Ремонт Aout своими силами (решено) alexprophet Вопросы о Pixel 10 31.10.2013 13:23


Часовой пояс GMT +4, время: 10:09.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2018