Страница 1 из 21 12311 ... ПоследняяПоследняя
Показано с 1 по 10 из 203

Тема: ПЛК63 + SysLibCom, потеря байтов

  1. #1

    По умолчанию ПЛК63 + SysLibCom, потеря байтов

    Симптомы - при чтении из "порта" кол-ва байт меньше чем находится в буфере.
    Например в буфере 10 байт,

    SysComRead( port, ADR( dest ), 10, 0 ) -> 10

    все хорошо,

    SysComRead( port, ADR( dest ), 16, 0 ) -> 10

    все хорошо, а

    SysComRead( port, ADR( dest1 ), 5, 0 ) -> 5
    SysComRead( port, ADR( dest2 ), 5, 0 ) -> 4

    причем теряется шестой байт.
    НА ПЛК100 ВСЕ РАБОТАЕТ !!! Следовательно проблема не в кривой ПРОГРАММЕ, не в кабельном соединении а именно в ( ПЛК63 + SysLibCom )
    Выкладываю примеры, где можно увидеть данную проблему.

    БЫЛО БЫ ОЧЕНЬ ЗДОРОВО, ЕСЛИ ПРЕДСТАВИТЕЛИ "ОВЕН" ОТПИСАЛИСЬ БЫ ПО ДАННОЙ ТЕМЕ.

    P.S. Разница между xxxmaster1 и xxxmaster2:
    xxxmaster1 - чтение ответа в одном цикле
    xxxmaster2 - чтение ответа "разнесено" по циклам
    Вложения Вложения

  2. #2

    По умолчанию

    О примерах.
    В примерах организован обмен данными по протоколу modbus через rs485.
    plc63master-plc100slave
    ПЛК100 - modbus slave, через "PLC Конфигуратор" ( plc100slave.pro )
    ПЛК63 - modbus master ( plc63master.pro ), отправка запросов и чтение ответов через SysLibCom. Запрос - константа "REQUEST", ожидаемый ответ - константа "RESPONSE". Ответ от slave "складывается" в part1 и part2.
    Eсли ( FIRST_PART_SIZE = 0 ) или ( FIRST_PART_SIZE = RESPONSE_SIZE ), то " все хорошо ", иначе " потеря данных "
    plc100master-plc63slave
    ПЛК63 - modbus slave, через "PLC Конфигуратор" ( plc63slave.pro )
    ПЛК100 - modbus master( plc100master.pro ), отправка запросов и чтение ответов через SysLibCom.
    Это было сделано, для того, чтобы показать - на ПЛК100 + SysLibCom работает нормально.

  3. #3

    По умолчанию

    Техподдержка отпишитесь, пожалуйста. Проект встал на этапе выбора контроллера: ПЛК63, ПЛК100+ИП320, или панельный контроллер другого производителя. Просто надо будет налаживать обмен по нестандартным протоколам и если на ПЛК63 SysLibCom нормально работать не будет, то будем рассматривать другие варианты, а не ковыряться с этой проблемой.

  4. #4

    По умолчанию

    Крайне непонятный код. Постоянно какие-то смещения в разных массивах. Зачем все это?
    А просто 2 подряд чтения без всех этих состояний работает? Без реального прибора сэмулировать только на 1 ПЛК63 не получится.
    Тролль-наседка, добрый, нежный и ласковый

  5. #5

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Крайне непонятный код. Постоянно какие-то смещения в разных массивах. Зачем все это?
    А просто 2 подряд чтения без всех этих состояний работает? Без реального прибора сэмулировать только на 1 ПЛК63 не получится.
    Не по существу.

  6. #6

    По умолчанию

    Берем 2 контроллера, соединяем их по rs485, заливаем в ПЛК100 - plc100slave.pro, запускаем, отключаемся. Заливаем в ПЛК63 plc63master.pro, делаем breakpoint на 52-ой строчке и следим за переменными resultOfRead, part1, part2. Чтение ответа от устройства специально разбито на две части. Размеры частей задается константой FIRST_PART_SIZE. Если ( FIRST_PART_SIZE = 0 ) или ( FIRST_PART_SIZE >= 0 ), то "ответ" будет читаться одним куском.

  7. #7

    По умолчанию

    Может у меня просто контроллер неисправный, или мозги, или это болезнь всех ПЛК63.
    В случае с мозгами, пожалуйста, скажите где ошибка в коде.

  8. #8

    По умолчанию

    Цитата Сообщение от monteg Посмотреть сообщение
    Берем 2 контроллера, соединяем их по rs485, заливаем в ПЛК100 - plc100slave.pro, запускаем, отключаемся. Заливаем в ПЛК63 plc63master.pro, делаем breakpoint на 52-ой строчке и следим за переменными resultOfRead, part1, part2. Чтение ответа от устройства специально разбито на две части. Размеры частей задается константой FIRST_PART_SIZE. Если ( FIRST_PART_SIZE = 0 ) или ( FIRST_PART_SIZE >= 0 ), то "ответ" будет читаться одним куском.
    Если ( FIRST_PART_SIZE = 0 ) или ( FIRST_PART_SIZE >= RESPONSE_SIZE ), то "ответ" будет читаться одним куском.

  9. #9

    По умолчанию

    на вскидку попробуйте поставить вместо
    SysComRead( port, ADR( part1[ counter ] ), firstPartSize - counter + 1, 0 );
    код
    SysComRead( port, ADR( part1[ counter ] ), (firstPartSize - counter) + 1, 0 );
    это все таки Паскаль на не C

    может я и ошибаюсь
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  10. #10

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    на вскидку попробуйте поставить вместо
    SysComRead( port, ADR( part1[ counter ] ), firstPartSize - counter + 1, 0 );
    код
    SysComRead( port, ADR( part1[ counter ] ), (firstPartSize - counter) + 1, 0 );
    это все таки Паскаль на не C

    может я и ошибаюсь
    "Грешно смеяться над больными людьми"

Страница 1 из 21 12311 ... ПоследняяПоследняя

Похожие темы

  1. плк63-пм01 потеря байт
    от Elka в разделе ПЛК63/73
    Ответов: 35
    Последнее сообщение: 06.11.2012, 15:26
  2. потеря байтов в ответной посылке с периодом 4-5 с.
    от Смирнов Роман в разделе ПЛК1хх
    Ответов: 44
    Последнее сообщение: 23.04.2009, 08:16
  3. SysLibCom
    от demon в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 20.03.2009, 13:08
  4. ПЛК 150 и SysLibCom.lib.
    от Анатолий в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 13.12.2008, 13:48
  5. SysLibCom 16#FF
    от powerind в разделе ПЛК1хх
    Ответов: 28
    Последнее сообщение: 28.10.2008, 13:41

Ваши права

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