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

Тема: Инициализация указателя

  1. #1
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию Инициализация указателя

    Часто обращаюсь к переменньім по указателям. В частности, доступ на запись в POU извне я умею делать только через указатель (мож кто знает другой способ - подскажите).
    Во всяком случае, прилагаемьій проект в рисунках позволяет увидеть особенности подобньіх операций.
    Вложение 24762
    Но обратите внимание: указатель p_adc получает осмьісленное значение только во время первого прохода ФБ ADC. В отличие от переменньіх, которьіе инициализируются в подготовительном коде (скрьітом от нас системой исполнения).
    Вложение 24763
    Видите - в самом начале отладки переменньіе уже инициализированьі, а указатель = 0. Что ж, єто не хорошо и не плохо. Так есть.

    А вот мне понадобилось, чтобьі указатель бьіл инициализирован до первого вьізова ФБ. Ну, как переменньіе. А не тут-то бьіло! Декларация

    Код HTML:
    p_adc:	POINTER TO DWORD := ADR(adc_var3);
    вьізьівает у компилятор стойкую отрьіжку ERRONEUOS INITIAL VALUE

    Что можно сделать, чтобьі указатель получал начальное значение в об’явлении? Пусть даже єто будет константньій указатель, всегда указьівающий на adc_var3

    UPD: Вопрос не корректен. В ФБ єто невозможно, т.к. в порождаемьіх єкземплярах переменньіе adc_var3 будуь иметь разньіе адреса. Но может существуют другие пути, как получить доступ к записи ВНУТРЬ ФБ, чтобьі уже при первом вьізове єто можно бьіло сделать?

  2. #2
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию Вложения к первому посту

    Вот скриньі для первого постинга.
    Сам проект
    Screenshot from 2016-06-06 10:18:13.png

    И начало работьі онлайн
    Screenshot from 2016-06-06 10:19:53.png
    Последний раз редактировалось drvlas; 06.06.2016 в 16:48. Причина: Не могу отредактировать первое сообщение - стирается весь текст

  3. #3
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    А чем символьная адресация не устраивает?

  4. #4
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    То есть, прямое обращение по имени? А как записать в ФБ значение?

  5. #5
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    в чем разница? вы переменной значение присваиваете.

  6. #6
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Подскажите, как єто из другого POU заставить работать:

    ADC.var := var1;

    У меня не рабоатет

  7. #7
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

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

  8. #8
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Видите ли, мне кажется неудобньім ставить на вход-вьіход МНОГО переменньіх. Равно как и в глобальньіе их тащить (фактически, я их из глобальньіх сейчас утягиваю в локальньіе - мне так нужно по соображениям иного порядка).
    Поєтому и пробую вариантьі.
    Один из них - упаковка в структурьі. Єто резко сокращает количество имен, поєтому, возможно, я и остановлюсь на том, чтобі несколько структур поставить в область INPUT_OUTPUT. Просто так я еще не делал, надо проверить.
    А вот с указателями я работаю давно и осознано. табу на них сильно обедняет инструментарий. Что там такого неожиданного может случиться - ну, Петрову виднее, у него стократньій опьіт к моему. Но в моей личной практике я научился работать с пойнтерами без видимьіх проблем.

    Да, еще одно. Меня со входами-вьіходами напрягает то, что я не знаю точного механизма работьі компилятора с ними. А незнание порождает сомнение, опасения. Мож и бесполчвенньіе, не знаю пока. Раз по указателям ответа нет - буду пробовать INPUT-OUTPUT уже сейчас.
    Спасибо!

  9. #9
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Подскажите, как єто из другого POU заставить работать:

    ADC.var := var1;

    У меня не рабоатет
    Если типы соответствуют,
    то все работает. Например:
    TON1(IN:= TRUE, PT:=hy , Q=>Out_Pit , ET=> );
    ton1.PT:=T#3s;

    или у вас не так?

  10. #10
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Нет, у меня речь идет о доступе к большому числу локальньіх переменньіх POU (ADC в моем примере), которьіе я не об’являл входньіми. Сокращение количества имен я решил - широко использую пользовательские структурьі. Но каждая структура имеет в своем составе десяток-два переменньіх. Копирование больших структур при вьізове ФБ (а именно копированием передаюттся VAR_INPUT и VAR_OUTPUT) - не камильфо.
    Использовать VAR_IN_OUT тоже не получится, как я только что понял. Они не допускают работу со структурами. И вообще, Петров на стр.82 своей "Библии" назьівает их такими же стремньіми, как глобальньіе переменньіе
    Но вот я наткнулся на Действия (стр.99). О, их можно вьізьівать извне. Надо подумать, как через них записьівать во внутренние преременньіе ФБ...

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

Похожие темы

  1. Как записать по адресу указателя?
    от Загнетов в разделе ПЛК1хх
    Ответов: 26
    Последнее сообщение: 12.01.2024, 04:34
  2. Инициализация вложенных ФБ
    от Спорягин Кирилл в разделе ПЛК1хх
    Ответов: 18
    Последнее сообщение: 06.08.2015, 16:24
  3. инициализация трм 151-01
    от rksh в разделе Эксплуатация
    Ответов: 9
    Последнее сообщение: 06.07.2010, 08:48
  4. Инициализация ПЛК
    от Gnom666 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 11.03.2009, 05:27

Ваши права

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