Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Mitsubishi Electric. Контроллеры, преобразователи частоты, HMI _ Программирование _ Предупреждение при возврате переменной из функции в GXW2

Автор: Starsonic 22.03.2018 - 14:59

Здравствуйте, столкнулся с такой проблемой, при возврате переменной из функции (не FB) компилятор выдает предупреждение:

Цитата
No. Result Data Name Class Content Error Code
1 WARNING QueueBySetOn Program compile A WORD/DWORD type label is being used in the return value. The instruction used for the generated code will be changed. When using the designated instruction, use ANY_SIMPLE type except WORD/DWORD type. C9026


Программа написана в GX Works2 на языке ST. ПЛК - FX3U.

Код
FOR i_var := 0 TO n_i BY 1 DO
    
    TempNumbs := Numbs;
    TempDevSetsOnPerTime := DevSetsOnPerTime;
    QueueBySetOn[i_var] := 0;
    
END_FOR;

QueueBySetOn[1] := TempNumbs[n_i];
QueueBySetOn[3] := 1;

FOR i_var := 0 TO n_i BY 1 DO
    
    IF (TempDevSetsOnPerTime[TempNumbs[i_var]] < MaxSetsOnPerTime) THEN
        
        QueueBySetOn[0] := TempNumbs[i_var];
        QueueBySetOn[3] := 0;
        
        EXIT;
    
    END_IF;
    
END_FOR;


https://imgbb.com/
https://ibb.co/dqLwUc

Получается, что GXW2 не может возвращать из функции обычное число? Если да, то как выйти из этого положения?

Автор: m_by 23.03.2018 - 10:17

Создать глобальную переменную, и присвоить в функции этой переменной число.

А вообще ошибка преобразования к типу WORD/DWORD, попробуйте присваивать к INT или что там есть в наличии (не использую GX Works).

Автор: Starsonic 23.03.2018 - 11:42

Цитата(m_by @ 23.03.2018 - 10:17) *
Создать глобальную переменную, и присвоить в функции этой переменной число.

А вообще ошибка преобразования к типу WORD/DWORD, попробуйте присваивать к INT или что там есть в наличии (не использую GX Works).


В GX Works2 INT это и есть WORD.

В общем, после написания поста, я нашел как исправить положение: при переводе всех локальных переменных в один тип данных WORD(Signed) предупреждение исчезло. Хотя эти переменные не пересекались в функции. Возможно, в ПЛК есть какой-то флаг который отвечает за знак числа и этот флаг в функции всего один для всех типов данных (может кто знает, подскажите пожалуйста).

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)