Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 30

Тема: ADR(%X.X) в указатель неверного типа — бип-бип и стоп

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

    По умолчанию ADR(%X.X) в указатель неверного типа — бип-бип и стоп

    Если сделать вот так...
    Код:
    VAR
    	pointer: POINTER TO INT;
    	integer: INT;
    END_VAR
    
    pointer := ADR(%IB1.0);
    integer := pointer^;
    ... то ПЛК160 начинает лихорадить: он проглатывает программу, но при её запуске пару секунд думает, издаёт сигнал и останавливается. КДС при этом теряет соединение и разлогинивается. При повторных попытках КДС перед заливкой проги сообщает об отсутствии программы на контроллере. Стоит переделать тип указателя на BYTE, как всё встаёт на свои места. А странно здесь то, что Codesys не знает размер %IB1.0 и не сообщает об ошибке в программе.

  2. #2

    По умолчанию

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

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

    По умолчанию

    либо
    pointer := ADR(BYTE_TO_INT(%IB1.0));
    должно несколько разрядить обстановку, правда сам не пробовал

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

    По умолчанию

    Я в свое время разбирался с этим вопросом, консультировался у И. Петрова. Давно, года 4 назад.
    Не помню точно, то ли в этой платформе, то ли в этом контроллере, но битовая адресация по указателю не работает.
    BYTE используйте.

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

    По умолчанию

    у битовых переменных свои команды, это прописано и в codesys_v23_ru.pdf. В вопросе изачально стоит байт, а указатель на два байта, отсюда и вся "котовасия", её можно решить явным преобразованием или в конфигураторе присвоить требуемому байту имя и с ним уже работать в программе

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

    По умолчанию

    Не, то же не работают.
    Я когда с указателями в целом разбирался, то столкнулся с тем, что команды есть, а выполнения нет. Обращался в Пролог.

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

    По умолчанию

    однозначно POINTER TO работает с байтами и выше, что же касается BITADR то его значение, чем то схоже с указателями из сименса, младшие три разряда отведены под биты, остальное зависит от установленных свойств, либо сразу номер по порядку байта, либо через разряд

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

    По умолчанию

    Я и говорю, что с BYTE работает.

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

    По умолчанию

    Честь и хвала КДС что он при работе с указателями разрешает юзеру брать всю ответственость на себя а не считает юзера априори дебилом.
    Как-то непоследовательно получается. Где тогда сишные «булевые»? Где работа с указателем-результатом функции без временных переменных? Хочу GetPointer()^.DoSomething(), а нельзя.

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

    По умолчанию

    это Вы сейчас с кем разговаривали и на каком языке?
    Вам вроде все подсказали как поступить в приведенном в первом посте случае. Опишите следующую задачу, так же поможем. С командой BITADR можно читать булевы значения, только записать невозможно без созданния дополнительного блока

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

Похожие темы

  1. как логировать старт/стоп?
    от Ушаков Николай в разделе ПЛК1хх
    Ответов: 13
    Последнее сообщение: 18.01.2017, 11:42
  2. Ответов: 2
    Последнее сообщение: 13.01.2011, 15:47
  3. стоп плк
    от Дмитрий Прибытов в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 11.11.2010, 03:38
  4. бит через указатель
    от Freddy в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 20.07.2010, 09:08
  5. Ответов: 5
    Последнее сообщение: 02.04.2010, 10:05

Ваши права

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