Имя: Пароль:
IT
 
Как общаться двум ПК по RS-485 по протоколу Modbus?
0 Kseniya_
 
08.08.16
21:06
Добрый день!

Я давно ищу реализацию или объяснение, как заставить общаться двум компьютерам по рс-485 (а не компьютеру и Контроллеру) по протоколу модбас. И каждый раз, в каждой статье, натыкаюсь на объяснение общения ПК и ПЛК, но ни одной статьи про общение компьютеров. В будущем компьютеров будет больше двух. Не встречался ли кто-то с такой задачей?
1 Zamestas
 
08.08.16
21:08
(0) Для чего?
2 Kseniya_
 
08.08.16
21:13
(1) Для реализации режима работы программы ведущий-ведомый. Несколько компьютеров связаны кабелем рс-485. И ещё по ком-порту связан один из компьютеров с контроллером (но речь не о нем), один из компьютеров ведущий опрашивает контроллер и отправляет всем остальным компьютерам по модбаз, что он жив, и данные, которые он опросил. Остальные компьютеры отвечают ведущему о своей живучести. Дальше если ведущий выключается/ломается, то ведомые не получив от него данных, один из ведомых становится ведущим и сам начинает опрос контроллера.
3 vde69
 
08.08.16
21:14
во первых модбус - требует единомоментного мастера, или постоянного или циклического...

во вторых в стандарте зашиты команды управления периферийкой а не софтом...

в третьих - есть библиотеки для комп-комп, реально видел...
4 vde69
 
08.08.16
21:15
(2) ринг-мастер поддерживается кучей других (более простых протоколов)
5 H A D G E H O G s
 
08.08.16
21:21
жесть какая.
6 Kseniya_
 
08.08.16
21:23
(4) Ринг-мастер это имеется ввиду ведомый-ведущий? А другие протоколы работают с рс-485?
7 H A D G E H O G s
 
08.08.16
21:23
Бяги девочка оттуда. Эта полупромышленная херь никуда не уперлась.
8 Kseniya_
 
08.08.16
21:27
(7) Уже почти сбежала. Вот без этой жести не отпустят никак)
9 vde69
 
08.08.16
21:29
(7) вообще надстройки над модбусом в каждом авто работают :)

это один из самых распространённых классов протоколов в мире...

но вот в реализации они тяжелые, ибо стандарт жесткий и требует полной реализации. Я хотел его делать в умном доме, но пришел к собственному велосипеду по двум причинам, первая - требование полной реализации...
10 H A D G E H O G s
 
08.08.16
21:30
(9) Все функции в ардуино лениво прописать?
11 Garykom
 
гуру
08.08.16
21:32
А шо еще нету реализации tcp/ip поверх модбаса?
12 vde69
 
08.08.16
21:33
(10) памяти и так мало, и размер кадра избыточно велик...

написал свое, тестировал неделю включая в сеть специальный генератор белого шума, все работает очень надежно...
13 vde69
 
08.08.16
21:33
(11) есть
14 Garykom
 
гуру
08.08.16
21:39
(13) Гм, не нашел нашел только Modbus TCP который реализация модбаса поверх tcp/ip протокола

http://www.modbus.org/tech.php
15 H A D G E H O G s
 
08.08.16
21:40
(11) Как оно?
16 vde69
 
08.08.16
21:47
(14) ну да, я немного не правильно тебя понял :)

тут основная проблема - это необходимость мастера, а делать ринг-мастер а по верх него TCP - по моему это просто глупо :)
17 Garykom
 
гуру
08.08.16
21:47
(16) нашел https://toster.ru/q/74322
18 Zamestas
 
08.08.16
21:52
(2) А комп часто мрет?
19 vde69
 
08.08.16
21:53
может лучше юзать https://ru.wikipedia.org/wiki/LanDrive
20 Garykom
 
гуру
08.08.16
21:54
(16) Да мастер нужен который по сути будет роль шлюза играть и заниматься пересылкой/забором пакетов со слейвов.
На слейвах нужен буфер на исходящие пакеты чтобы дождаться пока мастер обратится за ними.

И самый изврат в (0) когда мастер помирает и "новый мастер" заново делает "dhcp" ))
21 Garykom
 
гуру
08.08.16
21:57
(19) Да хотел предложить но оно заточено на умный дом а не обмен между компами в этой извращенной сети.
Проще свое написать будет прямо на modbus он же простой совершенно.

Еще есть готовое http://www.mesta-automation.com/modbus-with-c-sharp-libraries-examples/ в разных видах как платные "обертки" так и фри.
22 Kseniya_
 
08.08.16
21:58
(18) Мастер умирает не часто, просто в ситуации, когда выключают компьютер (не каждый день, а по какой-то особой причине - переставить его нужно и пр. или он просто сломался, предположительно раз в 2-4 недели, к примеру.
23 Garykom
 
гуру
08.08.16
22:06
24 Kseniya_
 
08.08.16
22:07
А пользоваться вместо модбаз запись/чтение в ком-порт номер 1, например, так не получится с рс-485?
25 Garykom
 
гуру
08.08.16
22:07
26 Garykom
 
гуру
08.08.16
22:08
(24) Оно так по сути и работает, но по очереди устанавливает serial соединение между матером и слейвами.
Слейвы сами ничего не могут пока жив мастер.
27 Kseniya_
 
08.08.16
22:09
(26) Слейвы смогут прочитать в этой библиотеке данные из пакета с мастера, но не смогут мастеру ответ дать?
28 vde69
 
08.08.16
22:10
(21) вообще-то LanDrive это надстройка над Modbus/RTU

так, что можно смело его реализацию брать :)
29 Zamestas
 
08.08.16
22:11
(27) Не могут - только по запросу.
30 Garykom
 
гуру
08.08.16
22:14
(29) +1

(27) слейв может ответить мастеру, если мастер ничего на запросил то слейв будет молчать в тряпочку.
31 Garykom
 
гуру
08.08.16
22:17
Кстати задачка (0) нерешаема для более чем одного резервного мастера, без дополнительного канала коммуникации.

Можно настроить один из слейвов что если ему долго не сообщает о своей работе мастер (не соединяется с ним) то этот слейв будет считать что мастер сдох и сам начнет "мастерить".

Но вот два резервных мастера в один момент времени не может быть. И в случае отказа мастера и запасного мастера остальные слейвы будут тупо ждать.
Если одному из них каким то способом не сообщить что теперь ты мастер (резервный же не успел назначить запасного себе).
32 Kseniya_
 
08.08.16
22:18
(30) Может быть такой вариант и каким-то образом сгодился бы по ком-порту, в принципе слейву и надо отвечать мастеру, самостоятельно без запроса что-то отправлять мастеру слейву не нужно
33 Garykom
 
гуру
08.08.16
22:21
(32) Это можно, ссылки на либы в ветке.
В случая отказа одновременно обоих мастеров основного и запасного будет привет ))
34 Garykom
 
гуру
08.08.16
22:23
35 vde69
 
08.08.16
22:29
(32) я-бы сабж решал железным способом, берем тригер с циклическим сдвигом на 10 портов, 5 портов завязываем через кондер на RX железки RS485,

и в зависимости от того какой интерфейс работает на прием выставляем соответствующий тригер из 5 остальных, далее ставим 5 преобразователей TTL, и все... с компаов можно читать эти TTL выхода на котором будет только 1 текущий активный уровень...

ну как-то так...

то есть железка сама будет определять какой RS485 , будет считатся мастером
36 Garykom
 
гуру
08.08.16
22:38
(35) Ты изобрел уплотнение )) примерно так GSM пашет и еще много чего
37 Zamestas
 
08.08.16
22:46
А я бы решил сабж по другому: Поставил бы не глюкавую железку и запретил её таскать.
38 Garykom
 
гуру
08.08.16
22:58
(37) Чем поможет "не глюкавая" железка когда провод оборвут? Только к этой "не глюкавой" железке.
39 Zamestas
 
08.08.16
23:03
(38) У ТС в (22) данная проблема не возникает.
40 Garykom
 
гуру
08.08.16
23:10
(39) Тогда не понимаю смысла (2) как резервного мастера. Думал то нуна автоматом чтобы мастер сам поднимался, а не направительным пинком от человека.

По сути это и есть дополнительный канал коммуникации. Просто реализовать мастер/слейв на каждом компе и мастера запускать только на том что нуна.
41 Йохохо
 
09.08.16
00:20
485 это же "общая шина"? если на нее навесить пачку 485-232 слышать будут все? и если прокинуть общую шину всем резервным дело останется за программной реализацией?
42 Kseniya_
 
09.08.16
00:46
(40) Кажется и правда можно и нужно обойтись обычным ком-портом. Мастер выбираться должен 1 раз или по-умолчанию, а вообще, человек там не должен что-то включать и пр, компьютер должен сам понять, что мастера нет и кто-то один из компьютеров должен принять на себя работу мастера.
43 Kseniya_
 
09.08.16
00:47
(41) Да, вроде бы там сейчас должно быть все внутри этой сети слышно, я это не сразу поняла.
44 Йохохо
 
09.08.16
09:00
(42) бывает схема "делаю, потому что могу". Мастера слушают шину и считают сколько в сети старше их по айди. Если один, то в отсчет предыдущего + время ответа + 400мс опрашивают устройство самостоятельно
45 Kseniya_
 
09.08.16
15:17
(44) Уже пробую по этой схеме делать. Большое спасибо всем!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс