реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> затруднение с RS485
DASM
сообщение Oct 24 2007, 09:32
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата
если данные не идут в течении определенного времени
в этот момент играющий на втором WinDVD запросил очередную порцию фильма с винта, винда этим занялась и тут
Цитата
- вываливаюсь по TIMEOUT-у

А Modbus - да фик с ним, с Modbusom
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 24 2007, 10:07
Сообщение #17


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(DASM @ Oct 24 2007, 13:32) *
А Modbus - да фик с ним, с Modbusom

Под вываливаюсь по таймауту подразумевается обработка принятого пакета.
Go to the top of the page
 
+Quote Post
prm
сообщение Oct 24 2007, 10:41
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 4-04-07
Пользователь №: 26 760



Нет, перед приемом пакета устанавливаю время, в течение которого я жду данные, если это время истекает, а данных нет, генерируется исключение, т.е. данных никаких не пришло. Далее расцениваю это как "модуль не ответил" и реагирую в зависимости от ситуации.
Ну и повторюсь, что пользую ModBus RTU-подобный протокол, заточенный под мои задачи.
А то, что "винда не real time" - это точно smile.gif
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 24 2007, 10:52
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Ну так в любом случае этот ложный таймаут может появиться именно из-за действий винды ! Можно конечно real time приоритет выставить, но это моветон
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 24 2007, 11:02
Сообщение #20


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(prm @ Oct 24 2007, 14:41) *
Нет, перед приемом пакета устанавливаю время, в течение которого я жду данные, если это время истекает, а данных нет, генерируется исключение, т.е. данных никаких не пришло. Далее расцениваю это как "модуль не ответил" и реагирую в зависимости от ситуации.
Ну и повторюсь, что пользую ModBus RTU-подобный протокол, заточенный под мои задачи.
А то, что "винда не real time" - это точно smile.gif

Так, уже интересно.
Вариантов может быть 2 более-менее разных.
1. При приеме очередного символа, таймаут довзводится.
При истечении таймаута анализируется пакет, указатель приемного буфера на начало.
2. При приеме очередного символа, подсчитывается CRC16.
Если СКС16==0 обрабатывается пакет, указатель приемного буфера на начало.
Таймер таймаута используется для еще одной установки указателя приемного буфера на начало.
Что за вариант используется у Вас ?
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 24 2007, 11:10
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Мужики, то, что ложных пакетов таким образом не нахватешь - точно. А вот потерять - запросто
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 24 2007, 11:16
Сообщение #22


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(DASM @ Oct 24 2007, 15:10) *
Мужики, то, что ложных пакетов таким образом не нахватешь - точно. А вот потерять - запросто

2-3 % убитых и раненых на учениях - это нормально. Главное шпионов в плен не брать. smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 24 2007, 11:41
Сообщение #23


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(DASM @ Oct 24 2007, 12:32) *
А Modbus - да фик с ним, с Modbusom

Так и есть. Потом повтор команды и т.д..

Но на помощь может прийти "умный" конвертер 232<->485.
Который в отличие от тупого, будет знать modbus, и уметь обрамлять/раздевать стаффинги. Пакеты "к компу" обрамлять тагами байт стаффинга, а "в сеть" - снимать таги компа - и слать чистый modbus RTU с требуемыми задержками. Работать не по CRC а по таймаутам, с проверкой CRC после обнаружения таймаута в 4 символа.
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 24 2007, 11:43
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Ну не знаю.. меня системы на жесткой времянке нервируют и раздражают. И по F9 занудно их пошагово трассировать sad.gif

Цитата(defunct @ Oct 24 2007, 15:41) *
Так и есть. Потом повтор команды и т.д..

Но на помощь может прийти "умный" конвертер 232<->485.
Который в отличие от тупого, будет знать modbus, и уметь обрамлять/раздевать стаффинги. Пакеты "к компу" обрамлять тагами байт стаффинга, а "в сеть" - снимать таги компа - и слать чистый modbus RTU с требуемыми задержками. Работать не по CRC а по таймаутам, с проверкой CRC после обнаружения таймаута в 4 символа.

Угу, а CAN еще лучше придет на помощь. По-моему проектировать умный конвертер автору пока не хочется, но можно спросить его smile.gif
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 24 2007, 11:48
Сообщение #25


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(defunct @ Oct 24 2007, 15:41) *
Работать не по CRC а по таймаутам, с проверкой CRC после обнаружения таймаута ...

Этот вариант считается предпочтительным.
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 24 2007, 12:01
Сообщение #26


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(DASM @ Oct 24 2007, 14:43) *
Ну не знаю.. меня системы на жесткой времянке нервируют и раздражают. И по F9 занудно их пошагово трассировать sad.gif

Дык, это ж только транспорт на жесткой времянке.. Один раз отладить и все..
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 24 2007, 12:04
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



А зачем ? Если есть Wake ? Стаффинг и ноль проблем.
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 24 2007, 12:15
Сообщение #28


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(DASM @ Oct 24 2007, 15:04) *
А зачем ? Если есть Wake ? Стаффинг и ноль проблем.

Пригодится. Нынче много готовых слейвов имеется которые понимают Modbus RTU, но не понимают Wake. sad.gif
Да и работает чистый RTU неплохо на самом деле (когда мастер не PC wink.gif )
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 24 2007, 12:22
Сообщение #29


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(defunct @ Oct 24 2007, 16:15) *
Пригодится. Нынче много готовых слейвов имеется которые понимают Modbus RTU, но не понимают Wake. sad.gif
Да и работает чистый RTU неплохо на самом деле (когда мастер не PC wink.gif )

Добавлю, что ModBus RTU является самым распространенным стандартом выполнения RS485.
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 24 2007, 12:35
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



RS485 вообще программный уровень не стандартизирует. А с чем доводилось работать - было либо ASCII либо и то и то вместе. А еще чаще просто текстовые строки - любят юзера, чтобы в обычной терминалке можно было бы с прибором поговорить.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01474 секунд с 7
ELECTRONIX ©2004-2016