Страница 869 из 1044 ПерваяПервая ... 369769819859867868869870871879919969 ... ПоследняяПоследняя
Показано с 8,681 по 8,690 из 10436

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #8681

    По умолчанию

    Цитата Сообщение от AlexBut Посмотреть сообщение
    Мне надо в большой проект состоящий из отдельных объектов(КНС,ВНС) втянуть объект разработанный на другом комп-ре в другом большом проекте, так чтобы не напортачить, не изменить
    одноимённые объекты, т.е. в идеале втянуть только один объект(новый объект ВНС) а экспорт-импорт боюсь поломает одноимённые объекты т.к. я не увидел чтобы при импорте можно было выделить только один объект
    Как выделить написал выше, ничего не поломает при экспорте, импорте. Если объекты с одинаковыми именами, перед экспортом сразу переименовать.

  2. #8682
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от AlexBut Посмотреть сообщение
    Мне надо в большой проект состоящий из отдельных объектов(КНС,ВНС) втянуть объект разработанный на другом комп-ре в другом большом проекте, так чтобы не напортачить, не изменить
    одноимённые объекты, т.е. в идеале втянуть только один объект(новый объект ВНС) а экспорт-импорт боюсь поломает одноимённые объекты т.к. я не увидел чтобы при импорте можно было выделить только один объект
    Кто Вас заставляет экспортировать ВСЕ объекты из проекта-донора?
    Можете экспортировать всего ОДИН объект (новый объект ВНС) !

    ЗЫ
    Последний раз редактировалось petera; 30.03.2022 в 10:28.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #8683

    По умолчанию

    Здравствуйте. Вопрос по переменным IN_OUT в FB.
    Проблема такая. Я создаю блок с IN_OUT переменной. В документации написано, что передается адрес на переменную, нельзя константу, нельзя обратится напрямую через точку. В версии 3.5 все четко. Компилятор ругается на вышеописанные действия, блок работает правильно. А вот в версии 2.3 абсолютно такой же блок не работает. Причем я могу в переменную IN_OUT записать константу, обратится через точку и компилятор не выдает ошибку. Хотя если выбирать переменную в ниспадающем списке она отображается как IN_OUT. Если при вызове блока писать := то переменная работает как входная (т.е. переписывается внешним значением), а если => то как выходная (т.е. переписывает внешнюю переменную). А как IN_OUT не работает...

    Я на 2.3 не писал раньше и не могу понять в чем дело.
    Блок простейший:
    FUNCTION_BLOCK Test_In_Out
    VAR_IN_OUT
    test: INT := 0;
    END_VAR

    IF test<32000 THEN
    test:=test + 1;
    ELSE
    test:= 0;
    END_IF

    Вызов:
    VAR
    Test: Test_In_Out;
    Test_var: INT:=0;
    END_VAR
    Test(test:=Test_var); Такой вариант работает на 3.5 и не работает на 2.3 (на 2.3 test работает как входная переменная)

    единственный вариант заставить работать это после вызова блока дописать
    Test_var:=Test.test; Но это противоречит сути этой переменной и компилятор в 3.5 выдает ошибку. а на 2.3 нормально запускается....

    В чем может быть дело?

  4. #8684
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от hermano Посмотреть сообщение
    Здравствуйте. Вопрос по переменным IN_OUT в FB.
    Проблема такая. Я создаю блок с IN_OUT переменной. В документации написано, что передается адрес на переменную, нельзя константу, нельзя обратится напрямую через точку. В версии 3.5 все четко. Компилятор ругается на вышеописанные действия, блок работает правильно. А вот в версии 2.3 абсолютно такой же блок не работает. Причем я могу в переменную IN_OUT записать константу, обратится через точку и компилятор не выдает ошибку. Хотя если выбирать переменную в ниспадающем списке она отображается как IN_OUT. Если при вызове блока писать := то переменная работает как входная (т.е. переписывается внешним значением), а если => то как выходная (т.е. переписывает внешнюю переменную). А как IN_OUT не работает...

    Я на 2.3 не писал раньше и не могу понять в чем дело.
    Блок простейший:
    FUNCTION_BLOCK Test_In_Out
    VAR_IN_OUT
    test: INT := 0;
    END_VAR

    IF test<32000 THEN
    test:=test + 1;
    ELSE
    test:= 0;
    END_IF

    Вызов:
    VAR
    Test: Test_In_Out;
    Test_var: INT:=0;
    END_VAR
    Test(test:=Test_var); Такой вариант работает на 3.5 и не работает на 2.3 (на 2.3 test работает как входная переменная)

    единственный вариант заставить работать это после вызова блока дописать
    Test_var:=Test.test; Но это противоречит сути этой переменной и компилятор в 3.5 выдает ошибку. а на 2.3 нормально запускается....

    В чем может быть дело?
    Добрый день.

    Приведенный вами код не должен компилироваться в 2.3 из-за попытки инициализации VAR_IN_OUT переменной.

    2022-03-31_6-24-19.png

    Если убрать начальное значение - то программа компилируется и корректно работает.

    В версии V3.5 конкретно этот же код не вызовет ошибок, потому что там компилятор несколько более продвинутый - он видит, что вы пытаетесь инициализировать переменную нулем (а это дефолтное поведение), и вообще не генерирует никакого кода для этого случая. Но если бы вы заменили 0 на любое другое число - то ошибка бы проявилась и в V3.5.

    2022-03-31_6-27-26.png

  5. #8685

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.

    Приведенный вами код не должен компилироваться в 2.3 из-за попытки инициализации VAR_IN_OUT переменной.

    2022-03-31_6-24-19.png

    Если убрать начальное значение - то программа компилируется и корректно работает.

    В версии V3.5 конкретно этот же код не вызовет ошибок, потому что там компилятор несколько более продвинутый - он видит, что вы пытаетесь инициализировать переменную нулем (а это дефолтное поведение), и вообще не генерирует никакого кода для этого случая. Но если бы вы заменили 0 на любое другое число - то ошибка бы проявилась и в V3.5.

    2022-03-31_6-27-26.png
    Спасибо, но мой компилятор не выдает ошибку и блок не работает. Переменная не работает как IN_OUT! Работает нормально только если после вызова блока добавить Test_var:=Test.test; Но ведь компилятор должен ругаться на такое обращение к переменной IN_OUT?

    PS: Может это связано с версией codesys? У меня какой-то кривой, видимо, codesys 2.3, я на нем программирую только chitic. Установил 2.3.9, а потом установщик chitic что-то изменил в нем, и теперь codesys запускается только ярлыком chitic.
    Последний раз редактировалось hermano; 31.03.2022 в 08:54.

  6. #8686
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от hermano Посмотреть сообщение
    Спасибо, заработало! Странно, но у меня компилятор 2.3 не дает ошибку, если присваиваю начальное значение IN_OUT и если я обращаюсь к этой переменной через точку извне блока. Но переменная переставала себя вести как IN_OUT, поэтому я и не мог понять, что происходит! Вроде все нормально, но не работает.
    Еще раз спасибо!

    PS: Может это связано с версией codesys? У меня какой-то кривой, видимо, codesys 2.3, я на нем программирую только chitic. Установил 2.3.9, а потом установщик chitic что-то изменил в нем, и теперь codesys запускается только ярлыком chitic.
    Я использую версию 2.3.9.41 с нашего сайта.
    Если вы используете другую версию - то, возможно, в ней еще не было этой проверки.

  7. #8687

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Я использую версию 2.3.9.41 с нашего сайта.
    Если вы используете другую версию - то, возможно, в ней еще не было этой проверки.
    Извиняюсь, я изменил сообщение. Так как наспех проверил другой код. В итоге не работает блок и не выдает ошибок компилятор... Вы ответили на первый вариант моего сообщения.
    Сейчас поставлю опять версию с вашего сайта, попробую на ней.

  8. #8688
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от hermano Посмотреть сообщение
    Извиняюсь, я изменил сообщение. Так как наспех проверил другой код. В итоге не работает блок и не выдает ошибок компилятор... Вы ответили на первый вариант моего сообщения.
    Сейчас поставлю опять версию с вашего сайта, попробую на ней.
    Лучше выложите ваш конкретный проект - я попробую повторить проблему у себя.

  9. #8689

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Лучше выложите ваш конкретный проект - я попробую повторить проблему у себя.
    Вот проект. Он сделан в среде, которая получилась установкой Версии 2.3.9 с вашего сайта, а потом запущен установщик от chitic, который устанавливает таргеты, но при этом он создает свой ярлык на codesys и codesys запускается только с этого ярлыка...
    также во вложении установщик от chitic
    Вложения Вложения

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

    По умолчанию

    Цитата Сообщение от hermano Посмотреть сообщение
    Вот проект. Он сделан в среде, которая получилась установкой Версии 2.3.9 с вашего сайта, а потом запущен установщик от chitic, который устанавливает таргеты, но при этом он создает свой ярлык на codesys и codesys запускается только с этого ярлыка...
    также во вложении установщик от chitic
    из ОВЕН у Вас я так понял только учетная запись на форуме
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

Страница 869 из 1044 ПерваяПервая ... 369769819859867868869870871879919969 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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