IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Предупреждение при возврате переменной из функции в GXW2
Starsonic
сообщение 22.03.2018 - 14:59
Сообщение #1


Читатель
*

Группа: Пользователи
Сообщений: 2
Регистрация: 22.03.2018
Пользователь №: 11002



Здравствуйте, столкнулся с такой проблемой, при возврате переменной из функции (не 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;





Получается, что GXW2 не может возвращать из функции обычное число? Если да, то как выйти из этого положения?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
m_by
сообщение 23.03.2018 - 10:17
Сообщение #2


Гигант мысли
****

Группа: Пользователи
Сообщений: 252
Регистрация: 15.11.2007
Пользователь №: 6407



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

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

Сообщение отредактировал m_by - 23.03.2018 - 10:24
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Starsonic
сообщение 23.03.2018 - 11:42
Сообщение #3


Читатель
*

Группа: Пользователи
Сообщений: 2
Регистрация: 22.03.2018
Пользователь №: 11002



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

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


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

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

Сообщение отредактировал Starsonic - 23.03.2018 - 11:42
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 28.03.2024 - 12:46