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

Тема: Ошибка 4051: PLC_PRG: не является функцией

  1. #1

    По умолчанию Ошибка 4051: PLC_PRG: не является функцией

    Добрый день!

    Заранее отмечу что help внутри программы я читал, руководство по codesys читал, форум читал(хотя может что то и не доувидел).
    На форуме нет четкого ответа на эту ошибку, кроме наплевательского "смотрите пример". Сделал все по примеру. Результат на картинке.
    Отличие от примера (который компилит нормально) в том, что в нем не т конфигурации, я работаю пока нет живого ПЛК в режиме эмуляции (на картинке показано). PS Другие способы вызова я пробовал, хотя согласно примеру этот должен работать.

    Хотелось бы услышать ответ в чем же моя "детская" ошибка и надюсь кому то это еще пригодится, для этого и была создана отдельная тема(вопрос).


    Пример программы на случай если не отображается картинка (в конфигурации PLC 160 M)
    функция из примера (название мое)
    __________________
    FUNCTION_BLOCK fbAIScale
    VAR_INPUT
    delta: REAL;
    END_VAR
    VAR_OUTPUT
    out1: REAL;
    END_VAR
    VAR
    END_VAR
    -----
    out1:=out1+delta;
    __________________

    PROGRAM PLC_PRG
    VAR
    i1: REAL;
    END_VAR
    -----
    fbAIScale(delta:=1 , out1=>i1);
    __________________
    Ошибка 4051: PLC_PRG(4): 'FBAISCALE' не является функцией

    Question-2.png

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

    По умолчанию

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

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

  3. #3

    По умолчанию

    Спасибо, добрый человек, наконец то получилось и я частично понял)
    привожу пример доработки, для тех кто будет искать свои ответы (для быстроты), доработана только программа в которой вызываются функциональные блоки
    __________________
    PROGRAM PLC_PRG
    VAR
    i1: REAL;
    fbAIScale1:fbAIScale; (*ДОРАБОТАНО ЗДЕСЬ - ДОБАВЛЕНО ЭТО ОБЪЯВЛЕНИЕ*)
    END_VAR
    -----
    fbAIScale1(delta:=1 , out1=>i1);(*ДОРАБОТАНО ЗДЕСЬ - НЕМНОГО ИЗМЕНЕН ВЫЗОВ FB*)
    Последний раз редактировалось Denis_Kay; 03.11.2016 в 06:54.

  4. #4

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    раз создали функцию сканирования как блок, то в программе его надо объявлять
    пока недалеко от кассы хотелось бы уточнить, в программе надо объявлять только функциональные блоки? или функции также? нужно ли объявлять библиотечные функции и функ блоки?

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

    По умолчанию

    только ф.блоки, любые
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  6. #6

    По умолчанию

    Спасибо за помощь!

    В итоге, признаю, в примере это было, но я не обратил внимание на это, в след раз постараюсь быть более сконцентрированным. ;-)
    добавлю, что в руководстве это тоже есть, нашел также опосля "Руководство пользователя по программированию ПЛК в CoDeSys 2.3" стр. 2-3, когда знаешь что конкретно искать - находится быстро.
    но все же считаю вопрос актуальным для новичков в кодесисе, думаю пригодится кому-нибудь

  7. #7

    По умолчанию

    Не поленитесь еще раз прочитать справку по Codesys, в частности раздел "что есть что в codesys". Там достаточно четко объясняется разница между функцией и функциональным блоком. ФБ, в отличие от функций, имеют экземпляры, которые нужно объявлять в разделе объявления переменных, каждый экземпляр со своим именем. при этом у каждого экземпляра будет свой собственный набор данных, хранящих результаты его работы. А функция один раз отрабатывает, выдает результат, и ничего нигде не хранит. Это ключевые вещи, их нужно четко прояснить с самого начала, тогда все остальное пойдет легче.

  8. #8

    По умолчанию

    Цитата Сообщение от YuriBel Посмотреть сообщение
    Не поленитесь еще раз прочитать справку по Codesys, в частности раздел "что есть что в codesys". .
    уже указал где нашел и даже номер страницы, там практически ваша цитата "Руководство пользователя по программированию ПЛК в CoDeSys 2.3" стр. 2-3

Похожие темы

  1. PLC_PRG на SFC или ST? За и против.
    от Антон_Б в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 25.10.2016, 16:16
  2. подключение фб к Plc_prg
    от Сергей_Cyber в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 02.10.2009, 09:51
  3. проблема с функцией blinker
    от mp3moto в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 22.12.2008, 19:19
  4. Функциональный блок в PLC_PRG
    от -=OLeGA=- в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 20.10.2008, 20:32
  5. проблема с функцией Real_to_string
    от mettled в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 25.04.2008, 17:23

Ваши права

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