Показано с 1 по 10 из 14

Тема: _REAL:=_POINTER_TO_REAL^ НЕ РАБОТАЕТ?!

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию _REAL:=_POINTER_TO_REAL^ НЕ РАБОТАЕТ?!

    Здравствуйте.
    Столкнулся с непонятным явлением. Исходный текст:

    VAR_OUTPUT
    Rate:REAL; (* рабочий расход *)
    NormRate:REAL; (* нормализованный расход *)
    Pressure:REAL; (* давление *)
    Temperature:REAL; (* температура *)
    TimeError:WORD; (* нерабочее время *)
    Acc:BYTE; (* признак ошибки по питанию *)
    END_VAR

    VAR
    Response:STRING[1024]; (* буфер для приёма данных, считанных с порта *)
    pnt_Data_Byte:POINTER TO BYTE;
    pnt_Data_Word:POINTER TO WORD;
    pnt_Data_Real:POINTER TO REAL;
    END_VAR


    (************************************************* *********************************)
    (************************************************* *********************************)
    (* если добрались до сюда, то извлекаем данные из ответа *)


    pnt_Data_Real:= ADR(Response)+15;
    (*!!!*) Rate:= pnt_Data_Real^;

    pnt_Data_Real:= pnt_Data_Real+4;
    NormRate:= pnt_Data_Real^;


    pnt_Data_Real:= pnt_Data_Real+4;
    Pressure:= pnt_Data_Real^;

    pnt_Data_Real:= pnt_Data_Real+4;
    Temperature:= pnt_Data_Real^;

    pnt_Data_Word:= ADR(Response)+31;
    TimeError:= pnt_Data_Word^;

    pnt_Data_Byte:= ADR(Response)+33;
    Acc:=pnt_Data_Byte^;

    Когда программа выполняет строку, помеченную восклицательными знаками, контроллер пикает и перезагружается, а CoDeSys выбрасывает окно обрыва коммуникации. Причем, все четыре байта, на которые в этот момент указывает pnt_Data_Real равны нулю, это я проверил.

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

    Проект на текущий момент.
    Опрос Гобой-1 ПЛК 100 Р.rar
    Последний раз редактировалось Serj_N; 06.08.2008 в 10:29.

Ваши права

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