Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: предупреждение при компиляции

  1. #1

    Cool предупреждение при компиляции

    Здравствуйте коллеги! При добавлении модуля Blink из Util и компиляции выскакивает предупреждение: (*PUTBIT (2): Operand TO be shifted has no explict type. Pleise use a typed literal, like 'DWORD#1'*).
    Хотя все вроде бы и работает, но все равно не приятно и не понятно чего он хочет . Что это такое?

  2. #2

    По умолчанию

    Напиши номер предупреждения. Там должно быть написано: warning ****: и далее название.
    Или посмотри в описании, прилагаемом к CoDeSyS, что означает предупреждение с этим номером.

  3. #3

    По умолчанию

    Warning 1511. В руководстве такая ошибка не описана.

  4. #4

    По умолчанию

    Вероятно Blink не корректно соединяется с PUTBIT. Предупреждение относится именно к нему.

    Смысл предупреждения такой: Есть некий блок, который обладает полиморфизмом. Т.е. компилятор дает разный машинный код для операндов разного типа. Например, сложение или сдвиг – понятно, что сдвиг байта, это одно, сдвиг двойного слова - совсем другое. Какой именно код генерировать компилятор определяет по типу входов. Так если на вход блока подана переменная типа BYTE, то все очевидно. Если же вдруг на такой вход подвешено число 2, что делать компилятору? Генерировать ли ему код для BYTE или для WORD? В такой ситуации компилятор подбирает минимально приемлемый под эту константу тип данных (в данном случае BYTE) и на всякий случай выдает предупреждение: "Не ясен тип операнда для операции сдвига. Используйте типизированную константу, 'DWORD#1'."

    Задайте явно тип константы на входе, например 'WORD#2' или 'BYTE#2', а не просто 2. Компилятор получит четкое указание, относительно типа входа и не будет давать предупреждение.

  5. #5

    По умолчанию

    дело в том, что у Blink нет переменных типа Dword, есть только Bool и Time. поэтому это или баг компилятора или функции Blink?!
    а вообще спасибо за ответ, а то сейчас форум стал какой то вялый и ленивый!!

  6. #6

    По умолчанию

    Цитата Сообщение от Назаров Александр Посмотреть сообщение
    дело в том, что у Blink нет переменных типа Dword, есть только Bool и Time. поэтому это или баг компилятора или функции Blink?!...
    В сообщении явно указан блок PUTBIT – именно он вызывает проблему. Где-то в программе он стоит. Внутри Blink сдвиговых операций нет, он тут вообще не причем. . Попробуете воткнуть его в пустой проект и никаких сообщений не будет 100%.

  7. #7

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    В сообщении явно указан блок PUTBIT – именно он вызывает проблему. Где-то в программе он стоит. Внутри Blink сдвиговых операций нет, он тут вообще не причем. . Попробуете воткнуть его в пустой проект и никаких сообщений не будет 100%.
    Попробовал, результат тотже. В проекте один оператор
    VAR
    f:BLINK;
    END_VAR

    f(ENABLE:= TRUE, TIMELOW:=t#0.5s , TIMEHIGH:=t#0.5s); - два предупреждения!!!!

  8. #8

    По умолчанию

    Результат должен быть как на вложенной картинке (CoDeSys V2.3.9.4).

    Блок Blink реализован в биб-ке Util.lib. Она точно подключена к проекту? Она случаем не изменена/повреждена?
    Это внутренняя биб-ка, ее можно открыть в CoDeSys и посмотреть исходный текст данного блока. Должно быть так:

    FUNCTION_BLOCK BLINK
    (* Function block to simulate a turn signal *)
    VAR_INPUT
    ENABLE:BOOL; (* TRUE:run Blink, FALSE: OUT keeps its value*)
    TIMELOW:TIME; (* Time for OUT=FALSE *)
    TIMEHIGH:TIME; (* Time for OUT=TRUE *)
    END_VAR
    VAR_OUTPUT
    OUT:BOOL; (* output variable, starting with FALSE *)
    END_VAR
    VAR
    CLOCK:TP;
    END_VAR

    CLOCK; (* call Timer *)
    IF CLOCK.Q=FALSE AND ENABLE THEN (* time passed or init *)
    CLOCK(IN:=FALSE); (* reset Timer *)
    CLOCK(IN:=TRUE); (* restart Timer *)
    IF OUT=FALSE THEN
    CLOCK.PT:=TIMEHIGH;
    ELSE
    CLOCK.PT:=TIMELOW;
    END_IF;
    OUT := NOT OUT; (* invert *)
    END_IF

    Здесь в принципе нет никаких сдвигов, которые могли бы вызвать подобные сообщения
    Изображения Изображения
    • Тип файла: jpg blink1.JPG (62.4 Кб, Просмотров: 36)

  9. #9

    По умолчанию

    Версия CoDeSys_v2381. Библиотека вроде бы нормальная. Результат в приложении.
    Вложения Вложения
    • Тип файла: rar Blink.rar (77.8 Кб, Просмотров: 19)

  10. #10

    По умолчанию

    Ругается опять же на функцию PUTBIT в биб-ке Util… Правильная биб-ка вложена. Попробуйте ее просто заменить.
    Вложения Вложения
    • Тип файла: zip Util.zip (8.2 Кб, Просмотров: 32)

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •