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

 
 
> Многопроцессорные системы, Диагностирование зависания оборудования
fakel
сообщение May 16 2008, 06:09
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 16-04-06
Пользователь №: 16 164



Здравствуйте!
Хотелось бы узнать мнение разных людей по следующему вопросу.
Имеется многопроцессорная система (два платы: одна опрашивает оборудование, решает пару математических задач и записывает в RAM (по I2C) (Назавем его Процессорый модуль) второй платы. Во второй плате реализован MODBUS, что позволяет с удаленной машины считывать данные из RAM (Назавем его Модуль передачи данных)) Возникает следующая проблема: если зависает Процессорый модуль, в RAM Модуля передачи данных остается информация записанная туда Процессорным перед зависанием. Комп считывает данные из Модуля передачи данных как будто все нормально! (питание то на Модуле передачи данных осталось). Вопрос: как можно этого избежать?!

Я предлагаю следующее: Процессорый модуль постоянно изменяет 1 байт в RAM Модуля передачи данных (например банальный счетчик). Комп считывает RAM, смотрит изменяется ли этот байт (т.е. теперешнее значение отличается от предыдущего или нет) и если в течении 5 циклов значение не изменяется, то Процессорый модуль завис (ну или питание на нем пропало).

Может существует какой-то уже отработанный метод?!
Так же рад был бы узнать ваше мнение.

(Код меня не очень интересует smile.gif, напишу как-нибудь сам... интерес подход))))

Заранее спасибо!!!

P.S. Думал так же о том, чтобы снабжать данные временными метками... но в реализации это сложнее.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Dog Pawlowa
сообщение May 16 2008, 06:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Отработанный метод - это как сброс WDT - импульсы длительностью не более заранее определенной.
При переводе на программные средства достаточно одного бита - он должен инвертироваться не позже, чем определенной время.
Все остальное - от лукавого и ограничивается только фантазиями программиста.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение May 16 2008, 06:30
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



В моей двухпроцессорной системе два проца общаются между собой. Проводят "мягкую синхронизацию" в определённых точках программы, обмениваются диагностической информацией.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 16 2008, 07:42
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Ввести в обиход понятие "время жизни принятых от проца данных".
Go to the top of the page
 
+Quote Post
fakel
сообщение May 16 2008, 08:10
Сообщение #5





Группа: Новичок
Сообщений: 11
Регистрация: 16-04-06
Пользователь №: 16 164



Цитата(_Pasha @ May 16 2008, 13:42) *
Ввести в обиход понятие "время жизни принятых от проца данных".

Как вариант да...
Прикинул по реализации, примерно столько же, как и на флаг обновления.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 16 2008, 08:28
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Каждый микропроцессор должен размещать в ОЗУ свой статус.
В этом статусе должны передаваться на ПК интересующие данные. Например - Время последней записи, наличие ошибок (При срабатывании WDT), текущий режим работы - ну и так далее.
Go to the top of the page
 
+Quote Post
Nick_Shl
сообщение May 16 2008, 09:41
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 17-04-08
Пользователь №: 36 850



Цитата(fakel @ May 16 2008, 09:09) *
Имеется многопроцессорная система (два платы: одна опрашивает оборудование, решает пару математических задач и записывает в RAM (по I2C) (Назавем его Процессорый модуль) второй платы. Во второй плате реализован MODBUS, что позволяет с удаленной машины считывать данные из RAM (Назавем его Модуль передачи данных)) Возникает следующая проблема: если зависает Процессорый модуль, в RAM Модуля передачи данных остается информация записанная туда Процессорным перед зависанием. Комп считывает данные из Модуля передачи данных как будто все нормально! (питание то на Модуле передачи данных осталось). Вопрос: как можно этого избежать?!
Я конечно не спец, но мне кажется что идеология какая-то не правильная... А если комп опрашивать будет быстрее чем ПМ будет выдавать? По несколько раз одни и те же данные будем получать?
Как вариант завести флаг обновления. При записи ПМ в память определённую ячейку ставить в 1. А при пересылке на комп МПД будет её сбрасывать в 0. Правда в случае работы ПМ быстрее опросов - часть данных будет пропадать.
Кстати, можно подробнее как оно сделано? Не на одну же микросхему памяти два устройства повешены...
Go to the top of the page
 
+Quote Post
defunct
сообщение May 16 2008, 09:46
Сообщение #8


кекс
******

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



Цитата(Nick_Shl @ May 16 2008, 12:41) *
Кстати, можно подробнее как оно сделано? Не на одну же микросхему памяти два устройства повешены...

А разве есть препятствия?
По i2c можно хоть 10 мастеров на 1 слейв.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 16 2008, 20:08
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Nick_Shl @ May 16 2008, 12:41) *
Я конечно не спец, но мне кажется что идеология какая-то не правильная...

Идеология вполне нормальная. По крайней мере не вижу никаких серьёзных перекосов. Короче - один из вариантов.
Go to the top of the page
 
+Quote Post

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

 


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


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