Страница 55 из 699 ПерваяПервая ... 545535455565765105155555 ... ПоследняяПоследняя
Показано с 541 по 550 из 6985

Тема: CODESYS V3.5. Вопросы и ответы

  1. #541

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Не зажимайте и перетаскивайте, а кликните один раз на индикатор на Панели элементов, затем - кликните на рабочее поле.
    Большое спасибо! Получилось!

  2. #542

    По умолчанию

    Добрый день, я немного покалечил ПЛК 323 своим кодом, решил разобраться с динамической памятью, после чего в один из прекрасных моментов как залил программу и нажал "запустить" у меня сразу ПЛК вылетел с "Ошибка сети : сетевой вызов не удался" и теперь так все время. При этом счетчик висит в локалке по адресу 192.168.0.77 и пингуется без проблем. НО все время "Ошибка сети : сетевой вызов не удался" создавал новый проект, нажимал "очистить все", отключал от питания ничего не помогает. Как его ресетнуть? Только перепрошивать заново?

    PS при этом все лампочки (ошибка - она всегда горела и до и после, связь, питание) кроме РАБОТА - горят.

    UPD: пришлось перепрошить, помогло.
    Последний раз редактировалось ntro123; 07.01.2016 в 19:26.

  3. #543

    По умолчанию

    Можно ли в одни ФБ передать другой ФБ, но любого типа?

    FUNCTION_BLOCK first_fb
    VAR_INPUT
    anyfb:ANY_FB;
    ...
    вот что-то типо того есть в codesys 3.5?

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

    По умолчанию

    Цитата Сообщение от ntro123 Посмотреть сообщение
    Можно ли в одни ФБ передать другой ФБ, но любого типа?


    вот что-то типо того есть в codesys 3.5?
    можно, читайте про указатели
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #545

    По умолчанию

    Про указатели я знаю, и использую очень активно, вот выдержка из мануала для cds 2.5:
    Указатели позволяют работать с адресами переменных или функциональных блоков.
    Синтаксис:
    <Имя_указателя>: POINTER TO <Тип данных/Функциональный блок>;
    И как мне указатель использовать для объявления ЛЮБОГО типа?

    Может быть я не так выразился, приведу еще один пример того, что мне требуется:

    VAR
    var1:fb1;
    var2:fb2;
    cmd:execution;
    END_VAR

    КОД:
    cmd(var1); // или через указатели т.е. передать адрес ФБ, каким-то хитрым образом передать адрес ФБ и потом узнать что за ФБ через его SIZEOF и как-то вызвать?
    cmd(var2);


    PS просто вариант:
    VAR_INPUT
    in_fb:POINTER TO BYTE;
    VAR_END

    КОД:
    in_fb^();


    Если он и работает то похож на костыль, не?

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

    По умолчанию

    Цитата Сообщение от ntro123 Посмотреть сообщение
    Про указатели я знаю, и использую очень активно, вот выдержка из мануала для cds 2.5:
    ...
    Если он и работает то похож на костыль, не?
    назовите причину, по которой Вы занимаетесь такми глупостями в среде разработки промышленной автоматизации, работали раньше на яваскрипте, так и оставайтесь там
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  7. #547

    По умолчанию

    Есть функция, скажем запись времени в счетчик:

    write_meterDT(addr:=123123, datetime:=DT#2016-1-1-1:1:1);

    Запишет время DT#2016-1-1-1:1:1 в счетчик с номером 123123, т.е. подготовит запрос и отправит его через ФБ send()

    Если addr=0 то значит широковещательная команда, и подготовит запрос и отправит его через send_broadcast()

    Сейчас это реализовано так, минусы:
    Используя другие ФБ для записи/чтения в счетчики у меня куча избыточных повторяющихся операций/кода которые не получается все полностью вынести в отдельные функции и действия, а хотелось бы в таких ФБ как запись врмени, тарифов и тп, сделать просто самый обычный send, без условий "IF addr=0 THEN send_broadcast() ELSE send() END_IF" - т.к. в связи с особенностями библиотеки (она универсальная для всех моделей), не получить сделать вот такой простое и красивое условие, обязательно нужно еще кучу кода добавить, а хотелось бы все это дело убрать от туда и отправлять все тупо на 1 счетчик, и пусть send_broadcast() сама подставляет addr других счетчиков.

    Поэтому я решил сделать так:

    VAR
    wdt:write_meterDT;
    END_VAR

    КОД:
    Есть ФБ для отправки широковещательного запроса, send_broadcast

    wdt.datetime:=DT#2016-1-1-1:1:1;

    send_broadcast(any_action:=wdt);

    И тогда он по циклу из всего списка счетчиков в addr будет автоматом подставлять и выполнять этот запрос для всех счетчиков. Т.е. у всех ФБ был бы одинаковый входной параметр addr, а все другие параметры инициализировались до отправки в send_broadcast().


    PS ну если нельзя, то нельзя, просто очень интересно стало =)
    Последний раз редактировалось ntro123; 14.01.2016 в 12:56.

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

    По умолчанию

    подходов куча, если пришли из других языков, то можно через ООП один родитель, а реализация методов разная в каждом конкретном случае, если по стандартному, то наличие множества блоков ни как не должно мешать, повторяющийся код укладывайте в функцию и используете одну везде
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  9. #549

    По умолчанию

    Да пришел из с/с++ и конечно же как вы указали JS +прочии веб языки. Да использую ООП, читал на тему ООП в codesys, пришел к выводу, что не нужно его использовать + очень мало документации по синтаксису ООП в codesys, вообще ладно оставлю все как есть, разумеется повторяющийся код уже давно по максимуму запихнул в функции.

    Спасибо за ответ!

  10. #550

    По умолчанию

    добрый день!
    Подскажите, с FBD никогда не сталкивался и возник вопрос:
    например на st код
    if mv.rRead1 > 25 then
    mv.wOut1:=TRUE;
    ELSE
    mv.wOut1:=FALSE;
    Элементарный код.... как его оформить на FBD?

Страница 55 из 699 ПерваяПервая ... 545535455565765105155555 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3177
    Последнее сообщение: Вчера, 12:47
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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