Страница 13 из 31 ПерваяПервая ... 3111213141523 ... ПоследняяПоследняя
Показано с 121 по 130 из 303

Тема: Подключение устройств с нестандартными протоколами

  1. #121

    По умолчанию

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

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

  2. #122

    По умолчанию

    здравствуйте. проштудировал форум и мануалы, но так и не нашел информации по подключению теплосчетчика спт к Plc. если несложно - ткните носом пожалуйста. лучше в пример. спасибо.

  3. #123

    По умолчанию

    пишите на plc@owen.ru - вышлем.

  4. #124

    По умолчанию Опрос расходомеров Гиперфлоу-3Пм

    Здравствуйте!

    Не могу победить следующую проблемму:
    Пытаюсь наладить опрос расходомеров Гиперфлоу-3Пм с ПЛК Овен-100. Тестирую пока на программе-эмуляторе Гиперфлоу.
    Запросы на чтение мгновенных измеренных параметров (перепад, давление, температура, расход) проходят нормально.
    Ответы читаю в массив 40 байт (преамбула, стартовый байт, адрес, команда, длина, статус, данные, контрольная сумма по XOR).
    Проблеммы начинаются когда пытаюсь разобрать ответ гипера на мгновенные измеренные параметры: dP - байты с 18 по 21,
    P - байты с 24 по 27, T - байты с 30 по 33, Q - байты с 36 по 39. Трабл возникает когда преобразую эти параметры
    в REAL значения через указатель pt1 : POINT TO REAL следующим образом:
    pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [18]);
    Arr_Giper [Rx_Addr].dP := pt1^;
    pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [24]);
    (* Arr_Giper [Rx_Addr].P := pt1^; *)
    pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [30]);;
    Arr_Giper [Rx_Addr].T := pt1^;
    pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [36]);
    (* Arr_Giper [Rx_Addr].Q := pt1^; *)
    ,где Arr_Giper - массив структур гиперов, Rx_buffer : ARRAY [1..40] OF BYTE - ответ от гиперов.
    Причем dP и T преобразуются без проблем, указатели на P и Q в строках 3,7 берутся нормально а когда убираю коментарий
    с 4 и 8-ой строки контроллер при запуске перегружается.
    В файле debug.txt появляются следующие записи:
    17 E PLC was reset by watchdog!
    3 M Last run module Id =100
    3 M Last post module Id =100
    3 M Total control code =18
    3 M Max cache utilisation =6
    3 M local_status =3
    3 M run_level =2
    3 M ff 45 ff ff ff 0 0 0 0 0 0 0 0 0 0 0
    Т.е. как я понимаю, ПЛК перегружается по сторожевому таймеру.
    Когда тестировал на CDS SP RTE все работало без проблем.

    Help me please!

  5. #125

    По умолчанию

    Не соблюдается выравнивание данных в памяти.
    начальные адреса REAL должны быть кратны 4, при объявлении байтового массива его начальный адрес может быть случайным, далее если угадали положение dP, то потом вклиниваются байты 22 и 23 которые нарушают выравнивание. Надо объявить переменную REAL, и через ADR копировать
    байты из массива, а не пытаться считать их через указатель.

    Примерно так

    varReal: REAL;
    pReal: pointer to array[0..3] of byte;

    pReal:=ADR(varReal);
    Последний раз редактировалось Логвиненко Андрей; 14.02.2011 в 13:29.

  6. #126

    По умолчанию

    Между параметрами dP, P, T, Q есть 2 пустых байта.
    dP и T нормально преобразуются.
    Чтобы проверить что с указателями не ошибся, создал 4 отдельных указателя pt1 : POINTER TO REAL;
    pt2 : POINTER TO REAL;
    pt3 : POINTER TO REAL;
    pt4 : POINTER TO REAL;
    и разделяю параметры следующим образом:
    pt1 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [18]);
    Arr_Giper [Rx_Addr].dP := pt1^;
    pt2 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [24]);
    (*Arr_Giper [Rx_Addr].P := pt2^;*)
    pt3 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [30]);;
    Arr_Giper [Rx_Addr].T := pt3^;
    pt4 := ADR (Arr_Giper [Rx_Addr].Rx_buffer [36]);
    (*Arr_Giper [Rx_Addr].Q := pt4^;*)
    при этом адреса получаются вроде как правильные:
    pt1 = <202b9204>, pt2 = <202b920a>, pt3 = <202b9210>,
    pt4 = <202b9216>
    Почему 1-ый и 3-ий параметры преобразуются, а 2-ой и 4-ый не хотят?
    Повторюсь, на SP RTE все работало.

  7. #127

    По умолчанию

    Адреса как-раз неправильные, так как идут через 6. Адреса 1 и 3 параметров получаются кратными 4, поэтому и преобразуются.
    Выравнивать адеса требует ARM, в SP RTE наверное это не требуется.

    Попробуете так:
    varReal: REAL;

    SysMemCpy(ADR(varReal),pt1,4);
    Последний раз редактировалось Логвиненко Андрей; 14.02.2011 в 14:00.

  8. #128

    По умолчанию

    Спасибо! Попробую.

  9. #129

    Thumbs up

    Ура! Заработало!
    Логвиненко Андрей, большое Вам спасибо!

  10. #130

    По умолчанию

    Цитата Сообщение от Anthonymus Посмотреть сообщение
    здравствуйте. проштудировал форум и мануалы, но так и не нашел информации по подключению теплосчетчика спт к Plc. если несложно - ткните носом пожалуйста. лучше в пример. спасибо.
    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    пишите на plc@owen.ru - вышлем.
    Это секретная информация и её не выдают для всех?
    Почему нельзя просто выложить на форуме ссылку на док-ию?

Страница 13 из 31 ПерваяПервая ... 3111213141523 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 18
    Последнее сообщение: 26.09.2014, 21:12
  2. Ответов: 0
    Последнее сообщение: 16.10.2012, 15:03
  3. Подключение устройств к ПЛК
    от инок в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 05.08.2012, 23:23
  4. Подключение устройств к SCADA
    от lirq в разделе Эксплуатация
    Ответов: 7
    Последнее сообщение: 10.01.2011, 16:25
  5. ТРМ 101 (Подключение выходных устройств)
    от Михалыч в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 17.04.2008, 11:47

Ваши права

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