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

 
 
> Синхронизация МК между собой
ivan24190
сообщение Feb 1 2017, 09:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 25-08-15
Из: Рыбное
Пользователь №: 88 141



Здравствуйте, уважаемые форумчане. Есть опытный образец тензоизмерительной системы на 64 канала на контроллере stm32f107.
Необходимо реализовать синхронизацию между несколькими такими системами.
И вот в чём трудность:
1) так как частота опроса одного канала 250 раз в секунду, то имеем времени на один канал порядка 62,5 микросекунд, каким образом можно добиться синхронизации, чтобы несколько модулей одновременно (или почти одновременно) выполняли преобразование по каждому каналу, за указанный промежуток времени?
2) как сделать так, чтобы в случае внезапного выхода из строя одного или нескольких модулей, работоспособные модули оставались синхронизированными?

Пока решили проблему с помощью двух выводов на одном из портов (эти выводы соединены соответственно у всех контроллеров между собой):
1)В начальный момент времени оба вывода настроены как входы с подтяжкой к питанию.
2)Перед запуском преобразования ПЕРВЫЙ вывод опрашивается до тех пор пока не будет прочитана "1" (или таймаут, сейчас он равен 10000 мс), т.е. определяем готовы ли все модули к работе.
3)Затем ПЕРВЫЙ вывод настраивается в режим выхода на все время опроса и держится равным "0" (сигнализируя нам о том, что модули находится в режиме опроса каналов).
4)Далее ВТОРОЙ вывод (перед началом преобразования АЦП) настраивается на выход и переводится в "0".
5)По завершению преобразования АЦП, ВТОРОЙ вывод настраивается на вход с подтяжкой к питанию и опрашивается до тех пор пока не будет прочитана "1" (или таймаут, сейчас он равен 55 мкс), т.е. все модули завершили преобразование по одному каналу.
6)После, пока не принята команда "СТОП", циклически повторяем пункты 4 и 5.
7)Когда принята команда "СТОП" ПЕРВЫЙ и ВТОРОЙ выводы настраиваются в режим входа с подтяжкой к питанию (сигнализируя нам о том, что модули вышли из режима опроса каналов).

Только есть проблема, если хотя бы один модуль повис (хотя в программе все циклы конечные) и не сменил состояние ВТОРОГО вывода, то остальные модули всегда ждут таймаут и переходят к следующему каналу, т.е. получается, что они уже не синхронизированы между собой.

Может быть есть какой-либо вариант решения проблемы? (например, один модуль мастер, а остальные слейвы, но что делать, если мастер завис?, в общем непонятно...).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ivan24190
сообщение Feb 1 2017, 10:12
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 25-08-15
Из: Рыбное
Пользователь №: 88 141



Нет частота может меняться и задается пользователем (я как-то не подумал, что это надо указать) от 20 до 250 Гц на канал, как и количество каналов в списке от 8 до 64. И управляется всё по Ethernet-UDP. В том-то и трудность, что времени нет на синхронизацию (по тому же Ethernet c PTP протоколом нет сервера PTP, и знаний на реализацию пока не хватает) на максимальной частоте опроса, вот и приходится городить... Поэтому и подумал, что вы подразумеваете, чтобы был ведущий МК.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 1 2017, 10:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ivan24190 @ Feb 1 2017, 12:12) *
Нет частота может меняться и задается пользователем (я как-то не подумал, что это надо указать) от 20 до 250 Гц на канал, как и количество каналов в списке от 8 до 64. И управляется всё по Ethernet-UDP. В том-то и трудность, что времени нет на синхронизацию (по тому же Ethernet c PTP протоколом нет сервера PTP, и знаний на реализацию пока не хватает) на максимальной частоте опроса, вот и приходится городить... Поэтому и подумал, что вы подразумеваете, чтобы был ведущий МК.

Но задаётся она кому? Одному из этих МК? Или все МК знают установленную частоту?
Тогда можно генерить эту частоту таймерами этих МК: каждый МК запускает таймер, по истечении таймаута на каком-то выводе МК формируется 0, все такие выводы МК имеют ОК и соединены "монтажным И". И данный вывод заведён также на все эти МК как вход прерывания от внешнего сигнала и по событию "переход в 0" на данном выводе, запускается преобразование, а также останавливается и перезапускается свой таймер. Так что - если Вы боитесь, что какой-то из МК зависнет, то тут если хотя-бы один из МК не завис, то генерация будет идти.
Ну а если боитесь, что повисший МК зафиксирует линию в постоянном "0", можно сигнал с МК на эту общую линию заводить не напрямую, а через дифференцирующую цепочку или через ждущий мультивибратор (который из перехода 1->0, будет формировать импульс "0" фиксированной длительности).

Цитата(Plain @ Feb 1 2017, 12:37) *
Похоже, нам придётся Вас ещё немного доозвучить, а именно, что каждый модуль ни с чем в этом мире не связан, кроме как по локальной сети, в которой Вы не специалист.

Если Ethernet заведён на все эти МК, то конечно синхронизировать их всех и нужно от этого Ethernet.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ivan24190   Синхронизация МК между собой   Feb 1 2017, 09:10
- - jcxz   Цитата(ivan24190 @ Feb 1 2017, 11:10) И в...   Feb 1 2017, 09:18
- - ivan24190   Т.е. получается должен быть ведущий МК, я правильн...   Feb 1 2017, 09:54
|- - jcxz   Цитата(ivan24190 @ Feb 1 2017, 11:54) Т.е...   Feb 1 2017, 09:57
|- - Lmx2315   Цитата(ivan24190 @ Feb 1 2017, 12:54) Т.е...   Feb 2 2017, 10:37
|- - Plain   Цитата(ivan24190 @ Feb 1 2017, 13:12) как...   Feb 1 2017, 10:37
- - Сергей Борщ   QUOTE (ivan24190 @ Feb 1 2017, 11:10) оба...   Feb 1 2017, 10:28
- - ivan24190   ПЕРВЫЙ и ВТОРОЙ вывод не соединены между собой, он...   Feb 1 2017, 10:33
- - ivan24190   Plain, насчет единого времени, да пробел, но я тол...   Feb 1 2017, 10:56
|- - jcxz   Цитата(ivan24190 @ Feb 1 2017, 12:56) Pla...   Feb 1 2017, 11:21
- - ivan24190   jcxz, т.е. синхронизацию необходимо делать перед с...   Feb 1 2017, 11:31
|- - jcxz   Цитата(ivan24190 @ Feb 1 2017, 13:31) jcx...   Feb 2 2017, 08:44
- - ivan24190   jcxz, т.к. софт на управляющем компьютере уже разр...   Feb 2 2017, 12:22
|- - jcxz   Цитата(ivan24190 @ Feb 2 2017, 14:22) И к...   Feb 2 2017, 13:25
- - BackEnd   Цитата(ivan24190 @ Feb 1 2017, 09:10) 1) ...   Feb 2 2017, 12:26
- - ivan24190   BackEnd, в качестве центрального модуля, собирающе...   Feb 2 2017, 12:33
- - ivan24190   jcxz, так я же и прошу разъяснить, хотя бы в общих...   Feb 2 2017, 13:52
|- - jcxz   Цитата(ivan24190 @ Feb 2 2017, 15:52) jcx...   Feb 3 2017, 09:12
- - ivan24190   То что я многого не знаю, я не оспариваю, знал бы,...   Feb 2 2017, 15:03
|- - HardEgor   Цитата(ivan24190 @ Feb 2 2017, 22:03) Нав...   Feb 3 2017, 06:04
|- - Plain   Цитата(ivan24190 @ Feb 2 2017, 18:03) для...   Feb 3 2017, 11:44
- - ivan24190   Plain, модули соединены через коммутатор Ethernet ...   Feb 3 2017, 12:18


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

 


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


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