PDA

Просмотр полной версии : Построение сети из 5 СПК



Stalker46k
26.02.2019, 15:31
Добрый день.
Прошу помощи с построением сети. Имеется 5 контроллеров СПК: один щит оператора и 4 устройства.
Необходимо с щита оператора считать порядка 15-16 дискретных сигналов и передать 1 сигнал на запуск.
Настройки мастера:
ModBus_COM версия 3.4.0.0
ModBus_Master_COM_Port версия 3.5.5.0
ModBus Slave версия 3.5.4.0 (все 4)
Настройки слейва:
ModBus_COM версия 3.4.0.0
ModBus_Serial_Device 3.5.5.0
При включении щит оператора видит только 2-3 слейва. В чем может быть проблема?
Второе, для считывания и для записи дискретных сигналов в настройках мастера с каким типом доступа лучше создавать каналы? Пока пробовал Read Holding Registers, но ничего не заработало.
Третье, в слейвах в ModBus_Serial_Device есть типы каналов Inputs и Outputs. Я так понимаю, те значения которые должен считывать мастер я заношу в Inputs, а та переменная которую мастер должен записывать в слейв я прописываю в Outputs?
Четвертое, в первом слейве я заношу свои 15-16 переменных в первое слово для считывания. Необходимо ли во втором слейве заносить переменные во второе слово для считывания или во втором слейве заносим всё так же как в первом?
Извините что много вопросов, но с СПК работаю впервые и голова уже кругом идет.
Заранее спасибо за советы.

Евгений Кислов
27.02.2019, 07:50
Добрый день.

1. Сложно разобраться без проведения экспериментов. Основных вариантов два - проблема или на физическом уровне (ошибки в распиновке кабеля, неправильная топология сети и т.д.), или на программном (ошибки в проекте).
2. Для чтения - Read Input Register, для записи - Write Single Register (в вашем случае досточно записывать один регистр, как я понял).
3. Нет, все строго наоборот (в CODESYS выбрана не совсем удачная терминилогия в данном случае).
4. Нет, можно все слэйвы настраивать одинаково. Отличаться они будут адресом устройства (ID).

Stalker46k
27.02.2019, 12:39
Спасибо за ответ, почти всё получилось, пока осталась только проблема с одним из слейвов, на шине он первый после мастера. Программы в первом и втором слейве полностью одиковые, отличие только в номере слейва. Пробовал поменять СПК местами, не помогло. Пробовал поменять местами порты в первом слейве. Блоки расширения работают, а связь в мастере не высвечивается, хотя в слейве связь горит. Настройки слейвов в мастере вроде бы совершенно одинаковые. Может быть есть ещё какие то варианты?

Евгений Кислов
27.02.2019, 17:18
Сложно что-то сказать, не видя проектов и полную cхему сети.
Я правильно понял, что второй слэйв опрашивается без ошибок независимо от места подключения к шине?

Stalker46k
28.02.2019, 05:43
Да, второй слейв опрашивается стабильно, сегодня проверю одно предположение, поменяю первый и второй слейвы местами программно. Ошибка скорее всего в построении сети, хотя странно, первый слейв физически расположен первым после мастера.

Stalker46k
28.02.2019, 07:43
Проблема решилась смешно, монтажник один и проводов обжал вместе с изоляцией в этом шкафу. Линк появился, вроде бы все работает.

Stalker46k
01.03.2019, 13:14
Нашёл ещё одну проблему. Пока все оборудование стоит, опрос 4 слейвов проходит на ура, вижу срабатывание всех датчиков и прочего. Но как только мастер даёт команду на запуск 2 слейва из 4, опрос слейвов прекращается. То есть в случае аварии на месте, мастер об этом не узнает. При этом команды на включение/выключение мастера слейвы продолжают воспринимать. Команды на запуск передаю с помощью Write Single Register (триггер циклический время цикла пробовал 100/1000мс). Считываю значения со слейва путём read input register(триггер циклический время цикла пробовал 100/1000мс) остальные настройки по умолчанию. Modbus_COM скорость передачи пробовал 115200, отваливается всё почти мгновенно. На 9600 работает подольше. Чётность отключена, бит 8, стоковых бит 1. Посоветуйте что ещё можно попробовать в настройках изменить для более стабильной работы сети.

Ильнур Гибадуллин
01.03.2019, 15:43
Нашёл ещё одну проблему. Пока все оборудование стоит, опрос 4 слейвов проходит на ура, вижу срабатывание всех датчиков и прочего. Но как только мастер даёт команду на запуск 2 слейва из 4, опрос слейвов прекращается. То есть в случае аварии на месте, мастер об этом не узнает. При этом команды на включение/выключение мастера слейвы продолжают воспринимать. Команды на запуск передаю с помощью Write Single Register (триггер циклический время цикла пробовал 100/1000мс). Считываю значения со слейва путём read input register(триггер циклический время цикла пробовал 100/1000мс) остальные настройки по умолчанию. Modbus_COM скорость передачи пробовал 115200, отваливается всё почти мгновенно. На 9600 работает подольше. Чётность отключена, бит 8, стоковых бит 1. Посоветуйте что ещё можно попробовать в настройках изменить для более стабильной работы сети.

Можете приложить архивы проектов (Файл --> Архив проекта --> Сохранить/отправить архив) к посту?

Ильнур Гибадуллин
01.03.2019, 15:43
Нашёл ещё одну проблему. Пока все оборудование стоит, опрос 4 слейвов проходит на ура, вижу срабатывание всех датчиков и прочего. Но как только мастер даёт команду на запуск 2 слейва из 4, опрос слейвов прекращается. То есть в случае аварии на месте, мастер об этом не узнает. При этом команды на включение/выключение мастера слейвы продолжают воспринимать. Команды на запуск передаю с помощью Write Single Register (триггер циклический время цикла пробовал 100/1000мс). Считываю значения со слейва путём read input register(триггер циклический время цикла пробовал 100/1000мс) остальные настройки по умолчанию. Modbus_COM скорость передачи пробовал 115200, отваливается всё почти мгновенно. На 9600 работает подольше. Чётность отключена, бит 8, стоковых бит 1. Посоветуйте что ещё можно попробовать в настройках изменить для более стабильной работы сети.

Можете приложить архивы проектов (Файл --> Архив проекта --> Сохранить/отправить архив) к посту?

Евгений Кислов
01.03.2019, 17:03
Также хотелось бы узнать, что означает "как только мастер даёт команду на запуск 2 слейва из 4".
Что собой представляет слейв и как происходит его запуск? Срабатывают ли при этом контакторы или какое-либо силовое оборудование?

Stalker46k
01.03.2019, 17:55
Слейв 1, при команде на пуск включаются два контактора. Мощность насосов где-то 0,4кВт. Слейв 3 идентичен.
Слейв 2, при команде на пуск включается софтстартер на 11кВт и пару контакторов. Слейв 4 идентичен.
Контакторы и софтстартер шнайдеровские. В щите где установлен мастер стоит только три реле. Мастер включает либо 1-2 слейв, либо 3-4.
Одна из ошибок, я думаю, нужно было в мастере в настройках канала выставлять триггер RISING_EDGE. Только когда я это пробовал, переменную вписывал в адрес %QX118.0 тип BOOL. А правильно я так понял %QX116.0 тип BIT.
Плюс думаю все таки прикрутить модуль диагностики и перезагрузки порта.
Заранее спасибо за помощь.

Евгений Кислов
01.03.2019, 19:14
Прямые адреса (%QX118.0 и т.д.) лучше вообще не использовать - привязывайте к каналам переменные (для триггеров обмена - нужен именно тип BOOL) и работайте с ними.

Наблюдаемые явления однозначно связаны с физическим уровнем. Анализ возможных причин (витая пара вместо экранированного МКЭШ, прокладка силовых линий рядом с сигнальными, соединение клеммы функционального заземления с защитной землей и т.д.) может помочь устранить или редуцировать проблему.

С программной точки зрения - диагностика и перезагрузка порта, конечно, является возможным обходным решением. См. вот это:
http://www.owen.ru/forum/showthread.php?t=28167&p=272286&viewfull=1#post272286

Если при возникновении проблем ошибки не детектируются (но при этом останавливается чтение и т.п.), то можно выполнять рестарт порта после подачи каждой команды на запуск (с некой задержкой):

переменная RISING EDGE --- > вход TON ---> по срабатыванию выхода TON делаем рестарт

Stalker46k
01.03.2019, 19:36
Спасибо за ответ.
К сожалению опробовать данные варианты смогу только в понедельник. На выходных объект будет мне недоступен.