Как установить, что связь оборвалась? |
Ответить |
Автор | |
Новичок Присоединился: 14 Октябрь 2008 Категория: Kazakhstan Online Status: Offline Публикации: 19 |
Опубликовано: 07 Ноябрь 2008 05:50 |
Fastwel CPC-101 (CPU-188-5) подключен к компьютеру. ПО на UltraLogik32. Подключение RS-485 PLCNet-Slave.
Как на контроллере определить, что связь с компьютером пропала (соответственно данные записывать в архивчик)?? Как на контроллере определить, что связь с компьютером появилась (соотвественно данные из массивчика передать на компьютер) ?? |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
"Все очень просто" (в кавычках)!!!
1 Вариант. Пишете перехватчик обращения к памяти (сетевым переменным) и определяете что считывание данных переменных производилось (за какойто период времени). 2 Вариант. Пишете перехватчик работы СОМ порта, работает или нет. 3 Вариант Разбираетесь с протоколом обмена. Пишете серверную часть для контроллера. Встраиваете код для контроля приемо-передачи и если запросов нет (за период нормального цикла опроса контроллеров) пишете в архив. 4 Вариант Все время пишете в архив (массив данных), а данные вытаскиваете из массива на ПК по возможности. P.S. 2 года назад реализовывал 3 вар. (без контроля приемо-передачи). В данный момент пишу нечто подобное варианту 4. Система: 6 контроллеров, преобразователи интерфейса, радиомодемы! Из за сбоев радиосвязи все данные хранятся в массиве и вытаскиваются на ПК по мере возможности. Но одна особенность, заполнение массива идет не постоянно, а по командам "загрузка", "выгрузка" с дискретностью 25 сантисекунд, в течении минуты. |
|
Vel
|
|
Действительный член Присоединился: 15 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 805 |
|
Заведите переменную - контроллер плюсует ее когда значение четное, а компьютер - когда нечетное. Если перестало меняться - связи нет, вновь меняется - связь есть. Вариант? |
|
и от стальной его груди отскакивают стрелы.
|
|
Новичок Присоединился: 14 Октябрь 2008 Категория: Kazakhstan Online Status: Offline Публикации: 19 |
|
Похожим решением и было реализовано, думал что есть специальные функции.... |
|
Новичок Присоединился: 14 Октябрь 2008 Категория: Kazakhstan Online Status: Offline Публикации: 19 |
|
Спасибо за развернутый ответ. Можно по-подробнее узнать про передачу данных с модемов? Получается каждую минуту модем записывает 240 строчек в массив и, надо полагать, при передаче их все передает и запись идет опять с нулевой строчки. А как обрабатываются ситуации, когда ПК не доступен несколько минут (например, минут 20)? У нас стоит подобная задача, когда ПК может быть недоступен какое-то время, и данные необходимо сохранять в контроллере. Поэтому хотелось бы про это по-больше узнать и алгоритмов подобных (именно для контроллеров) увидеть... |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Для начала - принцип работы: Есть несколько машин, которые переезжают с места на место. По достижении её места назначения , она "паркуется", и начинает "выгрузку". По этой команде создается "ячейка массива" (500 байт) с шапкой (дата, время, тех. параметры и т.д.). Каждые 25 сантисекунд в данную ячейку массива записывается значение тока. Таких "ячеек 60. Примерно тоже самое с загрузкой (60 ячеек, по 10 байт), но без записи тока. Тамже в массиве данные для дисплея (подключен к контроллеру через СОМ1) с данными следующей "выдачи" для машиниста. Для дисплея данные (график) загружаются с ПК. Их два по 60х4 + шапка. В массиве все работает по кругу. Появились новые данные ПК считывает (по возможности). Если данные не считаны, то следующие добавляются в конец. Если дошли до 60 несчитанных, то данные смещаются на -1 и новая запись пишется в конец. (работа по кругу, сохранение последних 60). На ПК работает "сервер" (на основе моей PLC_dll.dll) который и следит за всем, распаковывает полученные данные, пишет в базу данных, ведет лог сбоев связи (сколько и в каком месте) и т.д. Да, данные для ПК "упакованы" для уменьшения трафика. В контроллере массив хранится в области памяти под батарейкой (60 кБ). Сетевых переменных в контроллере всего 20. Работа PlcNet без таймаутов, тоесть за секунду 6..8 циклов опроса и записи всех контроллеров. Скорость 57600. Пишите, что интересует конкретно! |
|
Vel
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |