Автор: 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) предупреждение исчезло. Хотя эти переменные не пересекались в функции. Возможно, в ПЛК есть какой-то флаг который отвечает за знак числа и этот флаг в функции всего один для всех типов данных (может кто знает, подскажите пожалуйста).