Форум Zentec

Оборудование => Программируемые логические контроллеры бытового назначения => Программируемый логический контроллер Z401 => Тема начата: Danial от 14 Июнь 2017, 18:00:56

Название: Контроллер Z401 не связывается с контроллером Z400
Отправлено: Danial от 14 Июнь 2017, 18:00:56
Здравствуйте. Я столкнулся с такой проблемой, что контроллер Z400, показанный на схеме в приложении, не может обратиться к переменным контроллера Z401 (блоками R(slave), W(slave)). Эти блоки выдают ошибку 16 (нет ответа от устройства в течение установленного таймаута).
Если перевести контроллер Z400 в режим моста и попробовать обновить контроллер Z401, то он выдаёт ошибку "Несовпадение контрольной суммы". Хотя если на шину порта СОМ1, контроллера Z400, посадить пульт Z033 - они работают нормально.
Если же подключить адаптер с контроллеру  Z401 напрямую, то обновляется и программируется он нормально. Через утилиту Modbus Poll к нему так же можно обратиться.
Подскажите, может на контроллерах какие-то дип-переключатели нужно включить? Или я что-то в настройках мог не учесть?
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 14 Июнь 2017, 19:09:03
А какая программа загружена в контроллеры?
Можно посмотреть проект?
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: Danial от 14 Июнь 2017, 23:32:43
Да. Проект с шаблонами в приложении.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: serov от 15 Июнь 2017, 01:26:21
Если честно я не разбирался с блоком "Запись по Modbus" и делал всегда так.
К тому же в описании однозначно написано:
Запись по Modbus - этот блок позволяет, в режиме подчиненного устройства Modbus, обработать команду записи, полученную от главного. На выходе «val» появляется (на время одного цикла) значение, полученное в команде записи, а на выходе «rdy» - признак получения команды записи. При отсутствии команды на этих выходах всегда присутствует 0.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: VoronovMaksim88 от 15 Июнь 2017, 04:50:32
 serov прав.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 08:31:54
Добрый день!
Посмотрел вашу программу.
Можно дать несколько советов?
Я не разбирался детально в коде, потому что он не очень удобно написан.
Пожалуйста, как бы вы не спешили, создавайте "красивую" программу, - в ней будет проще самому разобраться через 2-3 года. Это касается любого дела, которое ты делаешь в жизни, даже когда это не касается программ)).

Давайте я кратко пробегусь по узлам:

1. "Буря в стакане воды"
Посмотрите сколько преобразований!
Так конечно же можно сделать, но смысл?

Гораздо проще все привести к одному масштабу.
Блок ABS не нужен, достаточно в свойствах блока преобразователя типа данных поставить свойство "установить граничное значение"
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 08:40:35
2. Если вам не нужна детекция действий от главного, то зачем вы сменили тип переменной? Достаточно сделать так:
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 08:42:16
Так же, у вас не заблокированы переменные в карте подчиненного, это может быть большой проблемой.
Надо сделать блокировку адресов:
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 08:48:03
Ну и большое упущение, что вы не пользуетесь симулятором. Он вас бы ускорил в 200 раз.

Для вашего проекта можно создать вот такую структуру:
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 09:07:25
Что изображено на этой картине?
Порт VCOM0 используется как виртуальная среда передачи данных от мастера к подчиненным.
Причем, если "Порт 5" настроить на реальный порт компьютера, то к нему можно будет подключить реальную панель и она будет опрашиваться.
Если  "Порт 1" настроить на другой реальный порт компьютера, то из вне можно запрашивать основной контроллер.
То есть у вас получится симуляция 2х контроллеров в виртуальном пространстве, которое может взаимодействовать с реальным миром.
Не забудьте поставить эту галочку в свойствах всех виртуальных портов.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 09:12:24
Смотрим результат (мне панель лень было к компу цеплять, но взаимодействие 2х контроллеров можно увидеть на скриншоте)

То, что помечено цифрой 1 - это мастер, цифрой 2 - подчиненный.

Проект прикрепил.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: Danial от 15 Июнь 2017, 10:52:58
mike, спасибо конечно за то, что вы показали как делать симуляцию 2-х контроллеров, и за замечания, но судя по последним скриншотам вы делали отладку только в виртуальной среде, потому как на входах Ain1-Ain3 контроллера Z401 нули. На реальном контроллере при разомкнутом аналоговом выходе там было бы 1023.
Вы не пробовали подключать реальные контроллеры  Z400 и Z401? Они у вас нормально взаимодействуют?
 
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 10:55:58
Нули, потому что я в симуляторе указал ноль на вход.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 15 Июнь 2017, 10:57:56
mike, спасибо конечно за то, что вы показали как делать симуляцию 2-х контроллеров, и за замечания, но судя по последним скриншотам вы делали отладку только в виртуальной среде, потому как на входах Ain1-Ain3 контроллера Z401 нули. На реальном контроллере при разомкнутом аналоговом выходе там было бы 1023.
Вы не пробовали подключать реальные контроллеры  Z400 и Z401? Они у вас нормально взаимодействуют?

В реальной жизни контроллеры будут вести себя подобным образом, за исключением помех в линии.
Я показал принцип отладки обмена по сети.
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: Danial от 17 Август 2017, 11:34:48
В реальной жизни контроллеры будут вести себя подобным образом, за исключением помех в линии.
Я показал принцип отладки обмена по сети.

В общем разобрался я, что с ним было не так. Дело в том, что изначально контроллера были расключены так, как показано на схеме 1 в приложении. И по всей видимости, то ли через клапан, то ли через "общий" трансформатор, получалась какая-то гальваническая завязка. Я правда не знаю, что там китайцы понамутили в этом железе, и каким образом и почему, эта завязка влияет на СОМ-порт, но она влияет на СОМ-порт совершенно точно, потому как после того, как я поставил контроллеру Z401 отдельный трансформатор на 12В, связь между контроллерами нормализовалась.

Ещё одна неприятная штука случилась, после того, как я попробовал замкнуть входы GND контроллеров Z400 и Z401 (ещё тогда, когда оба контроллера сидели на одном трансформаторе, как на схеме 1). Мне казалось, что я ничего страшного не делаю, но в итоге контроллер Z401 пыхнул у меня на глазах (результат смотрите на фото 2 в приложении). Но сгорел там, судя по всему, только диод (что выделен в красную рамку) и  дорожка, которую видно невооруженным взглядом. Я эти вещи заменил и контроллер вроде как возобновил нормальную работу...
Название: Re: Контроллер Z401 не связывается с контроллером Z400
Отправлено: mike от 17 Август 2017, 11:57:27
Не китайцы, а мы.
И все совершенно очевидно. На портах стоят супрессоры для защиты порта. Через эти цепи и идет "подсос" напряжения.
А контроллер "пыхнул", потому что была замкнута диагональ моста контроллера 401 (по вашей схеме).
Такое включение недопустимо.
Так что прежде чем хаять "китайцев" нужно убедиться в правильности формулы:
1. Руки прямые
2. Извилины кривые.
И ни в коем случае не наоборот!