Страница 12 из 26 ПерваяПервая ... 2101112131422 ... ПоследняяПоследняя
Показано с 111 по 120 из 303

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

Комбинированный просмотр

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

    По умолчанию

    Не соблюдается выравнивание данных в памяти.
    начальные адреса 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.

  2. #2

    По умолчанию

    Между параметрами 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 все работало.

  3. #3

    По умолчанию

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

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

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

  4. #4

    По умолчанию

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

  5. #5

    Thumbs up

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

  6. #6

    По умолчанию

    Всем привет!Столкнулся вот с такой задачей.Необходимо считать данные о расходе со счетчика РСВУ-1400(производство "Белсимет",г.Минск).
    Подключается по rs232.Использовал ПЛК100-К-L.
    Протокол у счетчика вот такой:

    1.Асинхронная передача данных;
    2.Скорость 1200 бод;
    3.Передаваемая посылка 10 битстартовый бит,8 бит данных,стоповый бит)
    Вот например последовательность для считывания текущего расхода.
    посылка прием

    0х72 0х72 - команда чтения
    0х2А 0хХХ - младший байт
    0х72 0х72
    0х2В 0хХХ - старший байт


    На форуме нашел примеры программ на нестандартные протоколы,
    и взял за основу.
    В программе с помощью syslibcom отправляю в счетчик функцию чтения(в данном случае 0х72).И как я понимаю должен ее получать обратно.Но нестабильный обмен,то вообще не получаю,то получаю,но не такое же число.
    С чем это связано?Посмотрите программу пожалуйста.
    Вложения Вложения
    • Тип файла: zip rsvy.zip (78.3 Кб, Просмотров: 44)

  7. #7

    Wink

    Цитата Сообщение от metrolog_77 Посмотреть сообщение
    Всем привет!Столкнулся вот с такой задачей.Необходимо считать данные о расходе со счетчика РСВУ-1400(производство "Белсимет",г.Минск).
    Подключается по rs232.Использовал ПЛК100-К-L.
    Протокол у счетчика вот такой:

    1.Асинхронная передача данных;
    2.Скорость 1200 бод;
    3.Передаваемая посылка 10 битстартовый бит,8 бит данных,стоповый бит)
    Вот например последовательность для считывания текущего расхода.
    посылка прием

    0х72 0х72 - команда чтения
    0х2А 0хХХ - младший байт
    0х72 0х72
    0х2В 0хХХ - старший байт


    На форуме нашел примеры программ на нестандартные протоколы,
    и взял за основу.
    В программе с помощью syslibcom отправляю в счетчик функцию чтения(в данном случае 0х72).И как я понимаю должен ее получать обратно.Но нестабильный обмен,то вообще не получаю,то получаю,но не такое же число.
    С чем это связано?Посмотрите программу пожалуйста.
    Увеличте минимальное время цикла до 5-10 мс. К сожалению при использовании данной библиотеки цикл необходимо сильно увеличивать.
    Есть альтернативная библиотека UNM, пример работы с ней, тоже на форуме:
    http://www.owen.ru/forum/showpost.ph...3&postcount=63

  8. #8

    По умолчанию

    Водочсетчик(РСВУ) пока отложил в сторону,решил с электросчетчиком "Энергомера" пока разобраться.Так вот какая проблема.Работаю с программой взятой из примера,поставил номер порта "0"(rs485),в online CodeSys показывает ошибку "INVALID 0".Это что значит.
    Может кто писал программу обмена с Энергомерой?

  9. #9

    По умолчанию

    Цитата Сообщение от metrolog_77 Посмотреть сообщение
    Водочсетчик(РСВУ) пока отложил в сторону,решил с электросчетчиком "Энергомера" пока разобраться.Так вот какая проблема.Работаю с программой взятой из примера,поставил номер порта "0"(rs485),в online CodeSys показывает ошибку "INVALID 0".Это что значит.
    Может кто писал программу обмена с Энергомерой?
    То что он выдает Invalid 0 красным цветом, это нормально, на это не стоит обращать внимание.


    Просто указать номер порта и настройки - этого мало. Как минимум вам еще нужно поддержать ваш протокол обмена.

  10. #10

    По умолчанию

    Обмен при этом идет? На порт 0 он даже при нормальном обмене ошибку пишет...

Страница 12 из 26 ПерваяПервая ... 2101112131422 ... ПоследняяПоследняя

Похожие темы

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

Ваши права

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