Страница 5 из 5 ПерваяПервая ... 345
Показано с 41 по 50 из 61

Тема: Свободное чтение RS-485

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Я приложил код, так и сделано - ищет FF 03 CC и через 20 байт FF FF.

    Что на счет переполнения буфера? и из конца или начала я их беру когда использую команду "Read"
    Делаете буфер, в 100 байт, например.
    1. Читаете порт, пока не встретите FF
    2. По его получению, начинаете заполнять буфер.
    3. По получению FFFF (FFFE) - прекращаете заполнять буфер, переходите к №5
    4. Если за 100 байт FFFF не встречен, переходите на №1
    5. Рассчитываете CRC.
    6. если совпадает с указанным в пакете, переходите №7, иначе №1
    7. Разбираете остальные данные пакета.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  2. #2

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    не так.
    IF (buffer[i] = 16#FF) AND (buffer[i+1] = 16#03) AND (buffer[i+2] = 16#CC) AND (buffer[i+20] = 16#FF) AND (buffer[i+21] = 16#FF) THEN

    Перестановка мест слагаемых, я так понимаю?

    Цитата Сообщение от Валенок Посмотреть сообщение
    считывать всё возможное а не хватать иногда куски. Хотя "и так пойдет" имеет право на жизнь видимо. Хозяин - барин
    А как считывать все что есть то?
    Это измерение веса. Вес измерять чаще чем раз в 20 сек смысла нет.
    Я хочу просто быть уверенным в:
    1. Не наступит переполнения буфера
    2. Я получаю последние данные, а не те что дольше всех в буфере

    И так как я не понимаю как устроен буфер - не знаю.

    Вы даете какие-то абстрактные ответы, где 70% ответа это что-то про семечки и крякающую утку.
    Если обладаете знаниями - можете их оформить пожалуйста без дополнительных художественных украшений.....

  3. #3
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Это измерение веса. Вес измерять чаще чем раз в 20 сек смысла нет.
    Я хочу просто быть уверенным в:
    1. Не наступит переполнения буфера
    2. Я получаю последние данные, а не те что дольше всех в буфере

    И так как я не понимаю как устроен буфер - не знаю.
    1. Проверяете, что вы считали с порта байт, столько же, либо меньше, чем длинна буфера (в моем примере буфер = 100байт).
    2. Буфер порта обычно 1500-1600 байт. Можете раз в 200 мс выполнить приведенный мной алгоритм, но раз вам не важны все данные, а только самые свежие, надо будет добавить пункт 0 - Сброс буфера COM порта (Flush). 200ms при потребности данных в 1s выбран для того, что бы иметь запас по времени (пропуск пакета, пакеты передаются с ошибкой).
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  4. #4

    По умолчанию

    Цитата Сообщение от keysansa Посмотреть сообщение
    но раз вам не важны все данные, а только самые свежие, надо будет добавить пункт 0 - Сброс буфера COM порта (Flush)
    А что за флуш? в сисКомЛиб нема такого

    Ваш пример точно такой же как мой в глобальном смысле.

    Я так и не пойму:
    1. ждет меня переполнение или нет?
    2. я данные командой Read беру самые новые из буфера или самые старые?
    Последний раз редактировалось Raikkonen; 28.05.2022 в 21:57.

  5. #5
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    А что за флуш? в сисКомЛиб нема такого
    Clear bufer. Возможно в данной библиотеке он по другому называется.
    Как "лайфхак" - закрыть и открыть порт заново. При этом обчно буфер очищается.
    Или в вашем случае, открывать порт каждый раз перед опросом. Да, возможно в начале будет "хвост" какой-то посылки, но следующую вы точно отловите.

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Ваш пример точно такой же как мой в глобальном смысле.
    Не совсем. Вы стараетесь считывать каждое сообщение от весов, я же предлагаю, "выдёргивать" пакет из потока, именно тогда, когда вам необходимо.

    Цитата Сообщение от Raikkonen Посмотреть сообщение
    Я так и не пойму:
    1. ждет меня переполнение или нет?
    2. я данные командой Read беру самые новые из буфера или самые старые?
    1. При подходе, который я вам предложил, не будет.
    2. Даже если очистка буфера не предусмотрена в команде Com.Open (в чем я сомневаюсь, общепринята практика очистки буфера при открытии порта), вы получите данные не старше, чем глубина буфера.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  6. #6
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Я прошу прощения, забыл спросить, у вас дозирование или взвешивание?
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

  7. #7
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    926

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Разброд и шатания :

    или
    ?
    Вы не чувствуете разницы между "как можно чаще" и "все"? Или у вас "разброд и шатание" сегодня?
    Чем чаще вы снимаете данные с АЦП тензодатчика (ограничено скоростью преобразования АЦП), чем чаще вы получите данные в контроллере, и тем быстрее сможете отреагировать на заданный вес (ограничено скоростью контроллера, временем срабатывания исполнительных устройств, количеством материала, который уже невозможно остановить).
    Конечно, если дозировать 2гр/мин при допустимой точности в +/-2 кг, можно и не торопиться. В дозу попадём. Видимо вы в таких условиях и работаете. Но у меня скорости дозирования выше. А так же требования к точности.



    Цитата Сообщение от Валенок Посмотреть сообщение
    Это - напрягает.
    И вы уже в курсе "допустимой точности дозирования" ?
    Где здесь потоки ?
    Написал чуть выше, поток в моем примере - 2гр/мин, точность +/- 2 кг. Я считаю, что разбираюсь, пишите аргументы, если не согласны.

    Цитата Сообщение от Валенок Посмотреть сообщение
    Тут не нужно гадать - "максимум","чаще всего" и т.п. Тут всё чётко:
    Вы видимо много пенистого взяли. )


    Цитата Сообщение от Валенок Посмотреть сообщение
    и что там в данных вроде как пофиг
    16 байт данных - там актуальное значение веса. Вы думаете Int (float) 16 байт занимает или string?
    Цитата Сообщение от Валенок Посмотреть сообщение
    Где здесь потоки ?
    Как вы думаете на контроллерах реализуются несколько "задач" с разными циклами?
    Последний раз редактировалось keysansa; 02.07.2022 в 22:20.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

Страница 5 из 5 ПерваяПервая ... 345

Похожие темы

  1. Свободное ПО для опроса устройств (Modbus)
    от o_nik в разделе Трёп (Курилка)
    Ответов: 28
    Последнее сообщение: 28.08.2025, 02:52
  2. Ответов: 6
    Последнее сообщение: 05.03.2018, 10:46
  3. ПЛК110 М02 и свободное место на USB Flash?
    от Антон_Б в разделе ПЛК1хх [М02]
    Ответов: 0
    Последнее сообщение: 01.07.2017, 12:21
  4. чтение из плк
    от Wanted в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 03.12.2010, 13:18
  5. Свободное место на Flash диске
    от Логвиненко Андрей в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.11.2009, 15:04

Ваши права

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