Показано с 1 по 10 из 10

Тема: Codesys 2.3 параметры функции по ссылки типа REAL

  1. #1

    По умолчанию Codesys 2.3 параметры функции по ссылки типа REAL

    Здравствуйте,

    Допустим, такой код

    Код:
    FUNCTION function3 : BOOL
    VAR_INPUT
    END_VAR
    VAR_IN_OUT
    	param1 : REAL;
    END_VAR
    VAR
    END_VAR
    ...
    param1 := param1 + 1;
    function3 := TRUE;
    В "Режим эмуляции" вылетает окно с сообщением -"Доступ по несуществующему адресу! ПЛК остановлен".
    Вложения Вложения
    • Тип файла: zip real.zip (23.3 Кб, Просмотров: 21)

  2. #2
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Не заморачивайся, это глючок КДС. Но только оффлайн. В онлайне все гут.

  3. #3

    По умолчанию

    Попробовал на трех компах, двух win7 x64, одном win7 x86. Результат одинаковый. Когда "проект" заливаешь в ПЛК все хорошо, попробовал на ПЛК100 и ПЛК110. Вот ведь. А говорят чудес не бывает

  4. #4
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Ну какие чудеса, что вы прям... Просто баг компилятора или симулятора как и в случае с NaN'ами. Находка хорошая, в копилку, спасибо.

  5. #5
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    так то ассистент не дает функции добавить поля объявлений IN_OUT, а за ручное написание видимо немцы не предусмотрели какое нибудь запрещающее действие, поэтому только на уровне компиляции всё выясняется.
    Через указзатель всё прокатит
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #6
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    Если приспичила эмуляция, то как временное решение - пихнуть реал в структуру

    type _real
    struct
    x : real;
    end_struct
    end_type

    причем синоним
    type
    _real : real;
    end_type
    не катит


    var
    number2 : _real;

    function3
    var_in_out
    param : _real;
    ---
    param.x := param.x + 1;
    ...

    вызов:
    ...
    function3(number2);
    ...


    А ввиду того что размер структуры совпадает с размером поля, то для function2 можно передать и adr(number) и adr(number.x) - без разницы

  7. #7
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    так то ассистент не дает функции добавить поля объявлений IN_OUT
    ... что странно, потому как IEC 61131-3 предусматривает эту секцию в функциях:

    function_io.png

    только на уровне компиляции всё выясняется
    Поправка: на уровне среды исполнения. Очевидно, компилятор молча съедает код и не выдаёт ошибок.

  8. #8

    По умолчанию

    Всем спасибо.
    Для меня эта проблема не имеет особого значения. Просто всю неделю один проект делал с перерывами только на еду и сон. Вчера вечером, вроде как, закончил и решил попробовать то, что можно посмотреть без железа. И тут cds енту фигню выдал. Ведь на cds сразу не подумаешь. Начал в коде ковыряться. Мозги начали закипать. Потом создал новый "пустой" проект. Запускаю. Опять эта фигня вылезла. Тут у меня мозг окончательно взорвался и я полез на форум.
    Я вчера ночью даже cds переставлял с target-ами. Хорошо, что еще windows не додумался переставить А сегодня на работе все и выяснилось.
    За то приобрел бесценный опыт.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от monteg Посмотреть сообщение
    Всем спасибо.
    Для меня эта проблема не имеет особого значения. Просто всю неделю один проект делал с перерывами только на еду и сон. Вчера вечером, вроде как, закончил и решил попробовать то, что можно посмотреть без железа. И тут cds енту фигню выдал. Ведь на cds сразу не подумаешь. Начал в коде ковыряться. Мозги начали закипать. Потом создал новый "пустой" проект. Запускаю. Опять эта фигня вылезла. Тут у меня мозг окончательно взорвался и я полез на форум.
    Я вчера ночью даже cds переставлял с target-ами. Хорошо, что еще windows не додумался переставить А сегодня на работе все и выяснилось.
    За то приобрел бесценный опыт.
    если честно, то тот Ваш код можно было бы проще сделать, если бы вход сложили с константой и подали на выход, по сути зачем там буль на выходе, только потому что в КДС нет типа void. А в родительском блоке, ни чего страшного не произойдет если переменной присвоить результат функции с аргументом эта же переменная
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #10

    По умолчанию

    Проект, который я выложил практического применения не имеет. Это для форума, чтобы коротко показать суть проблемы.

Похожие темы

  1. ПЛК308 тип REAL в Codesys 3
    от Knive87 в разделе ПЛК3хх
    Ответов: 4
    Последнее сообщение: 20.01.2016, 10:04
  2. Ответов: 26
    Последнее сообщение: 06.02.2015, 12:29
  3. Не передаются параметры функции
    от Ильнур в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 01.06.2012, 18:51
  4. Функции и процедуры CodeSys
    от LSE в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 26.03.2010, 18:45

Ваши права

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