Н.В. Клиначев

Модель векторного электропривода с комбинированной пространственно-векторной коммутацией стоек силового трехфазного моста

Рабочие файлы: [SVM-60 ч1] [SVM-60 ч2] [SVM-120 ч3] [SVM-120 ч4] [C-SVM ч5]

...

Чертёж 1

Форма 1. Программный код dll-блока (javascript)

...

Приложение. Листинги программного кода преобразователей синусоидальной трехфазной последовательности для пространственно-векторной коммутации

Листинг 1. SVM-60


        // Пространственно-векторный коммутатор силового
        // моста с замиранием стоек на 60 градусов
        if (x[0] >= 0) {
            if (x[1] >= 0) {
              u[0] = x[0] - (1 + x[2]);
              u[1] = x[1] - (1 + x[2]);
              u[2] = -1;
            } else if (x[2] >= 0) {
              u[2] = x[2] - (1 + x[1]);
              u[0] = x[0] - (1 + x[1]);
              u[1] = -1;
            } else {
              u[1] = x[1] + (1 - x[0]);
              u[2] = x[2] + (1 - x[0]);
              u[0] = +1;
            }
        } else {
            if (x[1] < 0) {
              u[0] = x[0] + (1 - x[2]);
              u[1] = x[1] + (1 - x[2]);
              u[2] = +1;
            } else if (x[2] < 0) {
              u[2] = x[2] + (1 - x[1]);
              u[0] = x[0] + (1 - x[1]);
              u[1] = +1;
            } else {
              u[1] = x[1] - (1 + x[0]);
              u[2] = x[2] - (1 + x[0]);
              u[0] = -1;
            }
        }

Листинг 2. SVM-120

        // Пространственно-векторный коммутатор силового
        // моста с замиранием стоек на 120 градусов
        if (x[0] < x[1]) {
            if (x[0] < x[2]) {
                u[1] = x[1] - (1 + x[0]);
                u[2] = x[2] - (1 + x[0]);
                u[0] = -1;
            } else {
                u[0] = x[0] - (1 + x[2]);
                u[1] = x[1] - (1 + x[2]);
                u[2] = -1;
            }
        } else if (x[1] < x[2]) {
            u[2] = x[2] - (1 + x[1]);
            u[0] = x[0] - (1 + x[1]);
            u[1] = -1;
        } else if (x[2] < x[1]) {
            u[0] = x[0] - (1 + x[2]);
            u[1] = x[1] - (1 + x[2]);
            u[2] = -1;
        } else {
            u[0] = -1; u[1] = -1; u[2] = -1;
        }

Листинг 3. Combined-SVM

        // Программный код преобразователя 3-х фазной синусоидальной последовательности
        // пространственно-векторного коммутатора силового моста с комбинированным
        // алгоритмом замирания стоек (в основе – SVM-120, при насыщении – SVM-60)
        //
        if (x[0] < x[1]) {
            if (x[0] < x[2]) {
                u[1] = x[1] - (1 + x[0]);
                u[2] = x[2] - (1 + x[0]);
                if (u[1] > 1) { u[2] = x[2] - (x[2] < 0 ? x[1] - 1 : 1 + x[0]); u[1] = 1; }
                if (u[2] > 1) { u[1] = x[1] - (x[1] < 0 ? x[2] - 1 : 1 + x[0]); u[2] = 1; }
                u[0] = -1;
            } else {
                u[0] = x[0] - (1 + x[2]);
                u[1] = x[1] - (1 + x[2]);
                if (u[1] > 1) { u[0] = x[0] - (x[0] < 0 ? x[1] - 1 : 1 + x[2]); u[1] = 1; }
                u[2] = -1; /* -- // -- */
            }
        } else if (x[1] < x[2]) {
            u[2] = x[2] - (1 + x[1]);
            u[0] = x[0] - (1 + x[1]);
            if (u[2] > 1) { u[0] = x[0] - (x[0] < 0 ? x[2] - 1 : 1 + x[1]); u[2] = 1; }
            if (u[0] > 1) { u[2] = x[2] - (x[2] < 0 ? x[0] - 1 : 1 + x[1]); u[0] = 1; }
            u[1] = -1;
        } else if (x[2] < x[1]) {
            u[0] = x[0] - (1 + x[2]);
            u[1] = x[1] - (1 + x[2]);
            if (u[0] > 1) { u[1] = x[1] - (x[1] < 0 ? x[0] - 1 : 1 + x[2]); u[0] = 1; }
            u[2] = -1; /* -- // -- */
        } else {
            u[0] = -1; u[1] = -1; u[2] = -1;
        }                                           /* (c) Клиначев Николай Васильевич */

7.09.2015