Страница 4 из 21 ПерваяПервая ... 2345614 ... ПоследняяПоследняя
Показано с 31 по 40 из 203

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

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

    По умолчанию

    SysComRead(ComHandle, ADR(rBuf), SIZEOF(rBuf), 0) не пробовали нолик заменить на другое значение и всетаки приемный буфер читать не прерывно, через операцию WHILE

  2. #32

    По умолчанию

    capzap, если честно, смотрел примеры?
    Все это пробовал... Я этим 2 дня сидел, уже много чего попробовал

    Интересная техподдержка у Овена. Попробуй то, попробуй сё.
    Я примеры прислал, а никто их так не посмотрел толком.
    Ладно, если завтра ответа не будет, то будем искать что-то другое.
    Проблему с чтением ответа по частям конечно можно обойти, но очень уж не хочется ставить на объект глючный контроллер. Мало-ли что еще вылезет.

    Все спасибо за участие

  3. #33
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,053

    По умолчанию

    глючный контроллер.
    Код. Раз не работает.
    Замороченный, особенно с таймерами. Вы хотите чтоб с этим разбирались ?

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

    По умолчанию

    Ладно Вам дуться, я по десять раз проверяю проект, а трехгодовалый ребенок подходит и набирает комбинацию клавиш и выскакивает какой нибудь глюк, несуществует в природе понятия все проверил, всегда можно что то упустить

  5. #35

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Код. Раз не работает.
    Замороченный, особенно с таймерами. Вы хотите чтоб с этим разбирались ?
    Что именно, не работает:
    1. открытие порта
    2. настройка порта
    3. отправка запроса
    4. чтение ответа

    что?
    Функции для работы с таймером специально написал, что не засорять код, а привлечь внимание к главной проблеме.
    И да, я хочу чтобы Вы разбирались. Мне же пришлось с этим разбираться. У меня были готовые "либы" для работы с определенными устройствами на ПЛК100. Тот же самый код очень глючит на ПЛК63.
    Я же не просто написал, что "у меня программа глючит, и теряет где-то байты". Я не поленился и написал примеры, где эту проблему можно обнаружить. И чет мне не вериться, что техподдержка Овена не может найти ПЛК100 и ПЛК63, чтобы этот пример проверить. Понимаю, что влом, но у каждого своя работа.
    Кто-нибудь пробовал примеры на "железе"??? Никто ни одного конструктивного вопроса по программе не задал.

  6. #36

    По умолчанию

    Если у Вас есть примеры, где ответ от какого-то устройства читается частями, и все работает, то был очень признателен его получить.

  7. #37
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,053

    По умолчанию

    1.У меня все работает
    2.Про исходник modbus.lib говорил. Хотя я и её не использую - только syslibcom. Но modbus.lib рабочая - изучайте
    3.Я использую групповые запросы везде где это возможно в принципе
    4.Делая 63-ого мастером, и опрашивая, например МВА8 - размер ответа 101 байт. СП270 читал/писал блоками по 50..100 байт. ПЛК110-60 слейв - чисто попробывал - 248 байт (Почему-то 250 не шмог )
    5.Я до сих пор не понимаю акцента на слове "частями"
    Всё что в п.4 я никогда и не пытался сделать в одном цикле. Зачем ?
    6.Так работая с таймерами вы только за..ли код и моск
    7.Ну накой вам чётность ? Краткое описание Вашего нестандартного протокола ? Там нет похожего на контрольную сумму ?
    8.Не забывайте что ПЛК100 слейв отвечает в рамках modbus(RTU)
    И ровно в этих рамках надо ловить ответ. См. Википедию
    9.У Вас с этого ПЛК modbus.lib работает ?
    10. Пример - см. п.2

  8. #38

    По умолчанию

    В Modbus.lib читают одним блоком в

    rBuf: ARRAY[0..511] OF BYTE;
    ....
    Size := DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf), SIZEOF(rBuf), 0));

    Это я у же писал. Что еще изучать по данной теме в modbus.lib я не знаю.
    Это ни нестандартный протокол а modbus rtu. Суммы там правильные:

    REQUEST : ARRAY [ 1..REQUEST_SIZE ] OF BYTE := 16#10, 16#04, 16#00, 16#00, 16#00, 16#04, 16#F2, 16#88;

    16- адрес устройства
    04 - код функции
    00, 00 - адрес первого регистра
    00,04 - кол-во регистров
    crc - 88F2
    Если под рукой нет программы для подсчета crc,
    http://www.lammertbies.nl/comm/info/...lculation.html

    а по поводу "частями", пожалуйста почитайте самый первый пост.
    Если у Вас есть примеры обмена данными для ( ПЛК63 + SysLibCom ), буду очень признателен их увидеть.
    К функциональности modbus.lib никаких вопросов. Но меня он в данном случае не интересует. Для обмена данными этот протокол был выбран только потому, что он есть в PLC Конфигураторе, а протоколе ОВЕН мне разбираться лень........

  9. #39
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,053

    По умолчанию

    В Modbus.lib читают одним блоком в
    В разные циклы читают последовательные куски одного блока

  10. #40

    По умолчанию

    Еще раз

    Симптомы - при чтении из "порта" кол-ва байт меньше чем находится в буфере.
    Например в буфере 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
    причем теряется шестой байт.

    я не говорю SysLibCom в ПЛК63 вообще не работает. Я прошу пояснить именно ЭТУ проблему.
    Пытаться прочитать весь ответ в одном цикле конечно не стоит, особенно если он несколько сот бай.
    Раз уж я взял modbus rtu. Можно так:

    resultOfRead : DWORD;
    buffer : array [ 0..255 ] of byte;
    ....
    resultOfRead := SysComRead( port, adr( buffer ), sizeof( buffer ), 0 );
    " перекладываем из буфера в контейнер ответа"
    И это будет работать, потому что из буфера "заберут" все содержимое.
    По протоколу ответ не может превышать 256 байт.
    А если из буфера порта забрать меньше его содержимого, то происходит ПОТЕРЯ ДАННЫХ.

Страница 4 из 21 ПерваяПервая ... 2345614 ... ПоследняяПоследняя

Похожие темы

  1. плк63-пм01 потеря байт
    от Elka в разделе ПЛК63/73
    Ответов: 35
    Последнее сообщение: 06.11.2012, 14:26
  2. потеря байтов в ответной посылке с периодом 4-5 с.
    от Смирнов Роман в разделе ПЛК1хх
    Ответов: 44
    Последнее сообщение: 23.04.2009, 07: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

Ваши права

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