Скачать 1.7 Mb.
|
float temp=0; float SpeedRef=1; RMPCNTL rc1 = RMPCNTL_DEFAULTS; // задатчик интенсивности void main() { Sys_init(); // инициализация // процедуры задатчика интенсивности //нарастания входного сигнала rc1.RampDelayMax = 10; // Задержка для каждого шага... rc1.RampHighLimit = _IQ(1.5); // Ограничение на максимальное выходное значение rc1.RampLowLimit = _IQ(-1.5); // Ограничение на мимнимальное выходное значение rc1.DeltStep = _IQ(0.002); // Шаг для движения вверх-вниз (1.0/0.002 = 500) } void isr_PRD0() { IsrCounter++; // Вызов функции // расчёта задатчика интенсивности // --------------------------------------------------------------------- rc1.TargetValue = _IQ(SpeedRef); rc1.calc(&rc1); temp=_IQtoF(rc1.SetpointValue); } Добавляем в окно WatchWindow переменные SpeedRef и temp, компилируем проект и запускаем его. При изменении переменной SpeedRef в диапазоне от 0 до 1,5 переменная temp через некоторое время достигает практически со SpeedRef значение. Рис.29 Следующим шагом будет интегрирование функции пилообразного сигнала, который будет показывать изменение угла поворота вектора напряжения. Скорость изменения угла поворота (угла наклона пилообразного сигнала) будет определяться выходом процедуры задатчика интенсивности. Добавим следующие строки в файл: #include "main.h" // подключение заголовочного файла long int IsrCounter=0;// счетчик прерываний float temp=0; float SpeedRef=1; float T=SampleTime; // задание периода дискретизации // (связь с реальным временем) RMPCNTL rc1 = RMPCNTL_DEFAULTS; // задатчик интенсивности RAMPGEN rg1 = RAMPGEN_DEFAULTS; // генератор пилы void main() { Sys_init(); // инициализация процедуры //задатчика интенсивности //нарастания входного сигнала rc1.RampDelayMax = 10;// Задержка для каждого шага... rc1.RampHighLimit = _IQ(1.5); // Ограничение //на максимальное выходное значение rc1.RampLowLimit = _IQ(-1.5); // Ограничение //на мимнимальное выходное значение rc1.DeltStep = _IQ(0.002); // Шаг //для движения вверх-вниз (1.0/0.002 = 500) // инициализация процедуры // генерирования пилообразного сигнала rg1.StepAngleMax = _IQ(BASE_FREQ*T); // шаг для пилы, при подаче на вход 1 задания // за 5000 дискрет в 1 сек. должны получить 50 Гц. rg1.Gain = _IQ(1.0); // коэфф. усиления по размаху "пилы" rg1.Offset = _IQ(1.0); // смещение по начальному углу "пилы" } void isr_PRD0() { IsrCounter++; // Вызов функции расчёта задатчика интенсивности // ------------------------------------------------------------------ rc1.TargetValue = _IQ(SpeedRef); rc1.calc(&rc1); // Вызываем функцию расчёта "пилы" // ----------------------------------------------------------------- rg1.Freq = rc1.SetpointValue; rg1.calc(&rg1); temp=_IQtoF(rc1.SetpointValue); } Компилируем проект. В окне WatchWindow добавляем переменную rg1, раскрываем ее структуру. Запускаем программу на исполнение. Изменяя задание переменной SpeedRef (например с 1 на 0) можно наблюдать скорость изменения (интегрирования) переменной rg1.Angle. Рис.30 Для увеличения наглядности изменения пилообразного сигнала применим стандартную процедуру осциллографирования. Добавим следующие строчки в файл: #include "main.h" // подключение заголовочного файла long int IsrCounter=0;// счетчик прерываний float temp=0; float SpeedRef=1; float T=SampleTime; RMPCNTL rc1 = RMPCNTL_DEFAULTS;// задатчик // интенсивности RAMPGEN rg1 = RAMPGEN_DEFAULTS;// генератор пилы DLOG_4CH dlog = DLOG_4CH_DEFAULTS; // осциллограф int16 DlogCh1 = 0; //переменные для показания на осциллографе int16 DlogCh2 = 0; int16 DlogCh3 = 0; int16 DlogCh4 = 0; void main() { Sys_init(); // инициализация процедуры задатчика // интенсивности нарастания входного сигнала rc1.RampDelayMax = 10; // Задержка для каждого шага... rc1.RampHighLimit = _IQ(1.5); // Ограничение на максимальное выходное значение rc1.RampLowLimit = _IQ(-1.5); // Ограничение на мимнимальное выходное значение rc1.DeltStep = _IQ(0.002); // Шаг для движения вверх-вниз (1.0/0.002 = 500) // инициализация процедуры генерирования //пилообразного сигнала rg1.StepAngleMax = _IQ(BASE_FREQ*T); // шаг для пилы, при подаче на вход 1 задания // за 5000 дискрет в 1 с должны получить 50 Гц. rg1.Gain = _IQ(1.0); // коэфф. усиления по размаху "пилы" rg1.Offset = _IQ(1.0); // смещение по начальному углу "пилы" // конфигурирация осциллографа dlog.iptr1 = &DlogCh1; // устанавливаем указатель на первую переменную вывода dlog.iptr2 = &DlogCh2; //устанавливаем указатель на вторую переменную вывода dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 1;// включаем синхронизацию dlog.size = 0x400; // задаем размер буфера для каждого сигнала dlog.prescalar = 1; //задаем коэффициент масштабирования 1 dlog.init(&dlog); // вставлен вызов функции конфигурации объекта } void isr_PRD0() { IsrCounter++; // Вызов функции расчёта задатчика интенсивности // -------------------------------------------------------------- rc1.TargetValue = _IQ(SpeedRef); rc1.calc(&rc1); // Вызываем функцию расчёта "пилы" // --------------------------------------------------------------------- rg1.Freq = rc1.SetpointValue; rg1.calc(&rg1); // Подключение осциллографа //--------------------------------------------------------------------- DlogCh1 = (int16)_IQtoIQ15(rg1.Angle-_IQ(0.1)); DlogCh2 = (int16)_IQtoIQ15(0); DlogCh3 = (int16)_IQtoIQ15(0); DlogCh4 = (int16)_IQtoIQ15(0); dlog.update(&dlog); temp=_IQtoF(rc1.SetpointValue); } Примененная процедура осциллографирования имеет функцию синхронизации: начало записи данных в буфер происходит при переходе сигнала, записываемого в первый буфер (верхнее окно графиков)оисходит при переходе сигнала, записываемый в первый буффер менем стандартную процедуру ть изменение угла поворота напряженияо), через «0». Так как сгенерированный пилообразный сигнал не пересекает «0», то приходится организовывать такое пересечение искусственно, за счет вычитания из сигнала значения «0.1». Компилируем программу. Выводим окно графиков через View-Graph…, дальнейшие настройки показаны ниже: Рис. 31 Включаем на графике через контекстное меню режим постоянного обновления (Continuous Mode). При запуске программы в окне графиков появляется пилообразный сигнал, длина зуба пилы плавно изменяется при изменении значения задания скорости SpeedRef. В результате получили систему задания угла изменения вектора напряжения от 0 до 360 градусов (изменение за один период «пилы») с регулируемой интенсивностью. Рис.32 При скалярном управлении асинхронным двигателем задается соотношение амплитуды напряжения в функции от частоты напряжения. Для реализации данной функциональной зависимости используем процедуру из библиотеки DMClib. Добавим следующие строки в файл: #include "main.h" // подключение заголовочного файла long int IsrCounter=0;// счетчик прерываний float temp=0; float SpeedRef=1; float T=SampleTime; RMPCNTL rc1 = RMPCNTL_DEFAULTS; // задатчик интенсивности RAMPGEN rg1 = RAMPGEN_DEFAULTS;// генератор пилы DLOG_4CH dlog = DLOG_4CH_DEFAULTS;// осциллограф int16 DlogCh1 = 0; //переменные для показания на осциллографе int16 DlogCh2 = 0; int16 DlogCh3 = 0; int16 DlogCh4 = 0; VHZPROF vhz1 = VHZPROF_DEFAULTS;// кривая U/f float u; float w; void main() { Sys_init(); // инициализация процедуры задатчика // интенсивности нарастания входного сигнала rc1.RampDelayMax = 10; // Задержка //для каждого шага... rc1.RampHighLimit = _IQ(1.5); // Ограничение на максимальное выходное значение rc1.RampLowLimit = _IQ(-1.5); // Ограничение на мимнимальное выходное значение rc1.DeltStep = _IQ(0.002); // Шаг для движения вверх-вниз (1.0/0.002 = 500) // инициализация процедуры // генерирования пилообразного сигнала rg1.StepAngleMax = _IQ(BASE_FREQ*T); // шаг для пилы, при подаче на вход 1 задания // за 5000 дискрет в 1 с должны получить 50 Гц. rg1.Gain = _IQ(1.0); // коэфф. усиления по размаху "пилы" rg1.Offset = _IQ(1.0); // смещение по начальному углу "пилы" // конфигурирация осциллографа dlog.iptr1 = &DlogCh1; // устанавливаем указатель // на первую переменную вывода dlog.iptr2 = &DlogCh2; //устанавливаем указатель // на вторую переменную вывода dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 1;// включаем синхронизацию dlog.size = 0x400;// задаем размер буфера // для каждого сигнала dlog.prescalar = 1;//задаем коэффициент // масштабирования 1 dlog.init(&dlog); // вставлен вызов // функции конфигурации объекта //инициализация кривой // соотношения частота/напряжение vhz1.LowFreq = _IQ(0.1); // частота // "малого" напряжения vhz1.HighFreq = _IQ(1.0); // частота // при номинальном напряжении vhz1.FreqMax = _IQ(1.5); // максимальная // частота vhz1.VoltMax = _IQ(1.0); // номинальное // напряжение vhz1.VoltMin = _IQ(0.2); // напряжение // при минимальногй частоте } void isr_PRD0() { IsrCounter++; // Вызов функции расчёта задатчика интенсивности // -------------------------------------------------------- rc1.TargetValue = _IQ(SpeedRef); rc1.calc(&rc1); // Вызываем функцию расчёта "пилы" // --------------------------------------------------------------------- rg1.Freq = rc1.SetpointValue; rg1.calc(&rg1); // Вызов функции расчёта // управления соотношением U/f // ------------------------------------------------------------------- vhz1.Freq = rc1.SetpointValue; vhz1.calc(&vhz1); w=_IQtoF(rc1.SetpointValue); u=_IQtoF(vhz1.VoltOut); // Подключение осциллографа //------------------------------------------------------------------- DlogCh1 = (int16)_IQtoIQ15(rg1.Angle-_IQ(0.1)); DlogCh2 = (int16)_IQtoIQ15(0); DlogCh3 = (int16)_IQtoIQ15(0); DlogCh4 = (int16)_IQtoIQ15(0); dlog.update(&dlog); temp=_IQtoF(rc1.SetpointValue); } Кроме самой процедуры, были добавлены переменные w и u, которые предназначены для вывода на экран значения полученных частоты и амплитуды. Добавим обе переменные в WatchWindow. Компилируем программу и запускаем ее. Изменяя задания скорости SpeedRef, можно наблюдать нелинейную зависимость амплитуды от напряжения. Рис.33 Для перехода к гармоническим сигналам, имитирующим переменное напряжения, воспользуемся обратным преобразованием Парка. Обратное преобразование Парка предназначено для перехода из вращающейся системы координат в неподвижную. На входе преобразования необходимо задавать угол поворота системы координат относительно неподвижной системы и проекции вектора на оси вращающейся системы координат. Таким образом, если проекции поддерживать постоянными, а угол поворота вращающейся системы координат изменять линейно (равномерное вращение), то проекции вращающегося вектора на неподвижную систему координат будут изменяться по закону синуса и косинуса (на вертикаль и горизонталь соответственно). Полученный таким образом синус и косинус можно использовать для “запитывания” двухкоординатной модели двигателя либо через преобразования Кларка переходить в трехкоординатную систему координат (например, описывающую трехфазную систему напряжений). Введем следующие изменения в программу: #include "main.h" // подключение заголовочного файла long int IsrCounter=0;// счетчик прерываний float temp=0; float SpeedRef=1; float T=SampleTime; RMPCNTL rc1 = RMPCNTL_DEFAULTS; // задатчик интенсивности RAMPGEN rg1 = RAMPGEN_DEFAULTS; // генератор пилы DLOG_4CH dlog = DLOG_4CH_DEFAULTS; // осциллограф int16 DlogCh1 = 0; //переменные для показания на осциллографе int16 DlogCh2 = 0; int16 DlogCh3 = 0; int16 DlogCh4 = 0; VHZPROF vhz1 = VHZPROF_DEFAULTS; // кривая U/f IPARK ipark1 = IPARK_DEFAULTS; // обратное преобразование Парка float u; float w; void main() { Sys_init(); // инициализация процедуры задатчика // интенсивности нарастания входного сигнала rc1.RampDelayMax = 10; // Задержка // для каждого шага... rc1.RampHighLimit = _IQ(1.5); // Ограничение на максимальное выходное значение rc1.RampLowLimit = _IQ(-1.5); // Ограничение на мимнимальное выходное значение rc1.DeltStep = _IQ(0.002); // Шаг для движения вверх-вниз (1.0/0.002 = 500) // инициализация процедуры // генерирования пилообразного сигнала rg1.StepAngleMax = _IQ(BASE_FREQ*T); // шаг для пилы, при подаче на вход 1 задания // за 5000 дискрет в 1 с должны получить 50 Гц. rg1.Gain = _IQ(1.0); // коэфф. усиления по размаху "пилы" rg1.Offset = _IQ(1.0); // смещение по начальному углу "пилы" // конфигурация осциллографа dlog.iptr1 = &DlogCh1; // устанавливаем указатель // на первую переменную вывода dlog.iptr2 = &DlogCh2; //устанавливаем указатель // на вторую переменную вывода dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 1;// включаем синхронизацию dlog.size = 0x400; // задаем размер буфера для каждого сигнала dlog.prescalar = 1; //задаем коэффициент масштабирования 1 dlog.init(&dlog); // вставлен вызов функции конфигурации объекта //инициализация кривой // соотношения частота/напряжение vhz1.LowFreq = _IQ(0.1); // частота "малого" напряжения vhz1.HighFreq = _IQ(1.0); // частота при номинальном напряжении vhz1.FreqMax = _IQ(1.5); // максимальная частота vhz1.VoltMax = _IQ(1.0); // номинальное напряжение vhz1.VoltMin = _IQ(0.2); // напряжение при минимальногй частоте } void isr_PRD0() { IsrCounter++; // Вызов функции расчёта задатчика интенсивности //----------------------------------------------------------------------- rc1.TargetValue = _IQ(SpeedRef); rc1.calc(&rc1); // Вызываем функцию расчёта "пилы" // ----------------------------------------------------------------------- rg1.Freq = rc1.SetpointValue; rg1.calc(&rg1); // Вызов функции расчёта // управления соотношением U/f // ----------------------------------------------------------------- vhz1.Freq = rc1.SetpointValue; vhz1.calc(&vhz1); w=_IQtoF(rc1.SetpointValue); u=_IQtoF(vhz1.VoltOut); // Выполняем обратное преобразование Парка – Горева // ------------------------------------------------------------------- ipark1.Ds = vhz1.VoltOut; ipark1.Qs = _IQ(0.0); ipark1.Angle = rg1.Out; ipark1.calc(&ipark1); // Подключение осциллографа //------------------------------------------------------------------- DlogCh1 = (int16)_IQtoIQ15(rg1.Angle-_IQ(0.1)); DlogCh2 = (int16)_IQtoIQ15(0); DlogCh3 = (int16)_IQtoIQ15(ipark1.Alpha); DlogCh4 = (int16)_IQtoIQ15(ipark1.Beta); dlog.update(&dlog); temp=_IQtoF(rc1.SetpointValue); } Для визуализации полученных сигналов будем использовать имеющуюся процедуру осциллографирования. Для сигналов, полученных в результате работы обратного преобразователя Парка, выведем 2-ое окно графиков, его настройки будут следующие: Рис.34 После компиляции и в результате запуска программы будут получены 2 синусоидальных сигнала, сдвинутых относительно друг друга на 90 градусов: Рис.35 В реальности двигатель является трехфазным, и подача напряжения на его обмотки осуществляется посредством 3-х транзисторных стоек инвертора, управляемых от DSP. Добавляем процедуру генерирования вектора напряжения посредством трехфазного инвертора: #include "main.h" // подключение заголовочного файла long int IsrCounter=0;// счетчик прерываний float temp=0; float SpeedRef=1; float T=SampleTime; RMPCNTL rc1 = RMPCNTL_DEFAULTS; // задатчик интенсивности RAMPGEN rg1 = RAMPGEN_DEFAULTS; // генератор пилы DLOG_4CH dlog = DLOG_4CH_DEFAULTS; // осциллограф int16 DlogCh1 = 0; //переменные для показания на осциллографе int16 DlogCh2 = 0; int16 DlogCh3 = 0; int16 DlogCh4 = 0; VHZPROF vhz1 = VHZPROF_DEFAULTS; // кривая U/f IPARK ipark1 = IPARK_DEFAULTS; // обратное преобразование Парка float u; float w; SVGENDQ sv1 = SVGENDQ_DEFAULTS; // генератор положения вектора напряжения void main() { Sys_init(); // инициализация процедуры задатчика // интенсивности нарастания входного сигнала rc1.RampDelayMax = 10; // Задержка для каждого шага... rc1.RampHighLimit = _IQ(1.5); // Ограничение на максимальное выходное значение rc1.RampLowLimit = _IQ(-1.5); // Ограничение на мимнимальное выходное значение rc1.DeltStep = _IQ(0.002); // Шаг для движения вверх-вниз (1.0/0.002 = 500) // инициализация процедуры // генерирования пилообразного сигнала rg1.StepAngleMax = _IQ(BASE_FREQ*T); // шаг для пилы, при подаче на вход 1 задания // за 5000 дискрет в 1 с должны получить 50 Гц. rg1.Gain = _IQ(1.0); // коэфф. усиления по размаху "пилы" rg1.Offset = _IQ(1.0); // смещение по начальному углу "пилы" // конфигурирация осциллографа dlog.iptr1 = &DlogCh1; // устанавливаем указатель на // первую переменную вывода dlog.iptr2 = &DlogCh2; //устанавливаем указатель на // вторую переменную вывода dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 1;// включаем синхронизацию dlog.size = 0x400; // задаем размер буфера для каждого сигнала dlog.prescalar = 1; //задаем коэффициент масштабирования 1 dlog.init(&dlog); // вставлен вызов функции конфигурации объекта //инициализация кривой // соотношения частота/напряжение vhz1.LowFreq = _IQ(0.1); // частота "малого" напряжения vhz1.HighFreq = _IQ(1.0); // частота при номинальном напряжении vhz1.FreqMax = _IQ(1.5); // максимальная частота vhz1.VoltMax = _IQ(1.0); // номинальное напряжение vhz1.VoltMin = _IQ(0.2); // напряжение при минимальногй частоте } void isr_PRD0() { IsrCounter++; // Вызов функции расчёта задатчика интенсивности // -------------------------------------------------------------------- rc1.TargetValue = _IQ(SpeedRef); rc1.calc(&rc1); // Вызываем функцию расчёта "пилы" // ---------------------------------------------------------------------- rg1.Freq = rc1.SetpointValue; rg1.calc(&rg1); // Вызов функции расчёта управления соотношением U/f // ---------------------------------------------------------------------- vhz1.Freq = rc1.SetpointValue; vhz1.calc(&vhz1); w=_IQtoF(rc1.SetpointValue); u=_IQtoF(vhz1.VoltOut); // Выполняем обратное преобразование Парка – Горева // ---------------------------------------------------------------------- ipark1.Ds = vhz1.VoltOut; ipark1.Qs = _IQ(0.0); ipark1.Angle = rg1.Out; ipark1.calc(&ipark1); // Расчет вектора напряжения //------------------------------------------------------------------------ sv1.Ualpha=ipark1.Alpha; sv1.Ubeta=ipark1.Beta ; sv1.calc(&sv1); // Подключение осциллографа /------------------------------------------------------------------------- DlogCh1 = (int16)_IQtoIQ15(sv1.Ta); DlogCh2 = (int16)_IQtoIQ15(sv1.Tb); DlogCh3 = (int16)_IQtoIQ15(ipark1.Alpha); DlogCh4 = (int16)_IQtoIQ15(ipark1.Beta); dlog.update(&dlog); temp=_IQtoF(rc1.SetpointValue); } В результате работы такой процедуры появляется характерный синусоидальный сигнал с горбом (сдвиг фаз между сигналами уже 120 градусов, так как система трехфазная). В зависимости от задания скорости SpeedRef изменяется частота и амплитуда сигналов. Рис.36 Для вывода сигнала управления на пины процессора необходимо использовать драйвер ШИМ. Такой драйвер является платформозависимой процедурой (при смене типа процессора необходимо создавать новый драйвер). Объявление экземпляра драйвера производится как: PWMGEN pwm_dr = F281X_EV1_FC_PWM_GEN;// стандартный драйвер ШИМ В процедуре main необходимо провести инициализацию драйвера //инициализация драйвера ШИМ F281X_EV1_PWM_Init(&pwm_dr); В процедуре прерывания необходимо задействовать процедуру выполнения драйвера // Подключение драйвера ШИМ //------------------------------------------------------------------------ F281X_EV1_PWM_Update(&pwm_dr); Результаты введения драйвера ШИМ можно наблюдать только с помощью реального осциллографа, на котором можно наблюдать лишь импульсы включения транзисторов стоек инвертора. Корректность работы системы можно в этом случае оценить по осциллограмме сигналов реальных токов, которые должны носить синусоидальный характер. В заключение введем в программу модель асинхронного двигателя, которой будем управлять с помощью разработанной системы. Предлагаемая модель является двухфазной, соответственно в качестве напряжения питания будем подавать на модель сигналы выходов обратного преобразования Парка. Чтобы добавить модель, необходимо скопировать в каталог Source файлы aci.c и aci_const.c. В первом файле содержится численное решение системы дифференциальных уравнений, описывающей работу асинхронного двигателя, во втором файле находится расчет коэффициентов системы дифференциальных уравнений исходя из параметров его схемы замещения, а также механических параметров. Оба файла необходимо добавить в проект через Project-Add Files to Project… В папке include должен находиться файл parameter.h c параметрами модели двигателя. Описание экземпляров вводимых объектов выполняется так: ACI aci1 = ACI_DEFAULTS;// двигатель ACI_CONST aci1_const = ACI_CONST_DEFAULTS;// набор параметров двигателя float LoadTorque=0.5; Переменная LoadTorque будет использована для имитации нагрузки на валу двигателя. Инициализация объектов следующая (в процедуре main) // Инициализация //модуля для расчёта констант уравнения модели АД, // константы находятся в файле parameter.h aci1_const.Rs = RS; aci1_const.Rr = RR; aci1_const.Ls = LS; aci1_const.Lr = LR; aci1_const.Lm = LM; aci1_const.p = P; aci1_const.B = BB; aci1_const.J = JJ; aci1_const.Ib = BASE_CURRENT; aci1_const.Vb = BASE_VOLTAGE; aci1_const.Wb = 2*PI*BASE_FREQ; aci1_const.Tb = BASE_TORQUE; aci1_const.Lb = BASE_FLUX; aci1_const.Ts = T; aci1_const.calc(&aci1_const); // Инициализация модуля для расчёта модели АД aci1.K1 = _IQ(aci1_const.K1); aci1.K2 = _IQ(aci1_const.K2); aci1.K3 = _IQ(aci1_const.K3); aci1.K4 = _IQ(aci1_const.K4); aci1.K5 = _IQ(aci1_const.K5); aci1.K6 = _IQ(aci1_const.K6); aci1.K7 = _IQ(aci1_const.K7); aci1.K8 = _IQ(aci1_const.K8); aci1.K9 = _IQ(aci1_const.K9); aci1.K10 = _IQ(aci1_const.K10); aci1.BaseRpm = 120*BASE_FREQ/P; aci1.LoadTorque = _IQ(TL/BASE_TORQUE); Расчет модели в прерывании осуществляется как: // Расчет модели двигателя // ----------------------------------------------------------------- aci1.Ualpha =ipark1.Alpha; aci1.Ubeta =ipark1.Beta ; aci1.LoadTorque = _IQ(LoadTorque); aci1.calc(&aci1); После компиляции необходимо в окно WatchWindow добавить переменные LoadTorque (для задания нагрузки), aci1.WrRpm (для наблюдения за скоростью вращения вала двигателя). После запуска программы при задании скорости в SpeedRef как «1» скорость вращения вала двигателя (согласно переменной aci1.WrRpm) будет находиться в диапазоне 1400÷1500 оборотов в минуту в зависимости от нагрузки LoadTorque, при снижении сигнала задания скорость уменьшается, при увеличении нагрузки скорость также падает, при критическом увеличении нагрузки скорость двигатель «сваливается» и начинает ускоряться в противоположную сторону. |
Учебно-методическое пособие Рекомендовано методической комиссией... Методы молекулярной диагностики: Учебно-методическое пособие. Авторы: А. Д. Перенков, Д. В. Новиков, С. Г. Фомина, Л. Б. Луковникова,... |
Учебно-методическое пособие Елабуга 2016 ббк 74. 58 Учебно-методическое... Методическое пособие предназначено для студентов 1 курса высших учебных заведений неязыковых специальностей |
||
Учебно-методическое пособие по клинической фармакологии Оренбург, 2007 Учебно-методическое пособие предназначено для самостоятельной работы студентов медицинских вузов, обучающихся по специальности «Лечебное... |
Методическое пособие Саратов 2008 г. Организация комплексной системы... Методическое пособие предназначено для руководителей и преподавателей- организаторов обж образовательных учреждений |
||
Учебно-методическое пособие ... |
Организация и технология документационного обеспечения управления учебно-методическое пособие ... |
||
Учебно-методическое пособие «Учебные игры и ситуационные задачи в... Учебные игры и ситуационные задачи в гинекологии: Учебно-методическое пособие / Под ред. А. А. Радионченко. – Томск: Сибгму,... |
Учебно-методическое пособие Казань 2010 Печатается по рекомендации... Учебно-методическое пособие по курсу «Организационное поведение» /Д. М. Сафина. – Казань: Казанский (Приволжский) федеральный университет;... |
||
Учебно-методическое пособие. Новосибирск, 2006 Учебно-методическое пособие предназначено инструкторам детско-юношеского и спортивного туризма с целью повышения уровня знаний и... |
Учебно-методическое пособие к лабораторным занятиям по курсу «Основы кристаллооптики» Практическое руководство по работе с поляризационным микроскопом для исследования петрографических объектов: Учебно-методическое... |
||
Учебно-методическое пособие организация инженерной защиты населения Учебно-методическое пособие разработано применительно к Программе обучения слушателей на курсах гражданской защиты Копейского городского... |
Учебно-методическое пособие Санкт-Петербург 2007 Автор: Черемисов... Учебно-методическое пособие предназначено для подготовки руководящего состава, специалистов гочс и пб, руководителей служб, аварийно-спасательных... |
||
Учебно-методическое пособие для студентов пм. 04.(07.) «Выполнение... Учебно-методическое пособие составлено в соответствии с требованиями Федерального Государственного образовательного стандарта по... |
Учебно-методическое пособие санкт-Петербург 2009г. Автор: Г. П. Подвигин... Учебно-методическое пособие предназначено для должностных лиц, специалистов го и рсчс организаций |
||
Учебно-методическое пособие Кемерово 2015 г. Согласовано: кроо «памск» Учебно-методическое пособие предназначено для студентов стоматологического факультета, гигиенистов стоматологических со средним медицинским... |
Федеральное государственное образовательное учреждение Высшего профессионального... Вакуумный практикум: Учебно-методическое пособие. Ростов-на-Дону, 2008. 55с |
Поиск |