Подскажите пожалуйста как соединить 2 ПЛК по протарголу TCP_IP с последующим снятием данных на мастере
Вид для печати
Подскажите пожалуйста как соединить 2 ПЛК по протарголу TCP_IP с последующим снятием данных на мастере
Это очень сложный вопрос! :)
примеры в разделе "примеры программ и полезности"
modbusTCP в примерах вроде не представлен, но если необходимо на одном ПЛК и принмать информацию с подчиненных и передавать вышестоящему, то мастер и слейв могут находиться на разных портах, не обязательно на 502, главное чтоб сконфигурировать с таким же портом воторого участника обмена.
ЗЫ Давно не пользовался конфигуратором, все вышесказанное будет точно работать если протокол modbusTCP реализовывать самостоятельно используя сокеты
Всем доброго времени суток! Решил не создавать новую тему.
Ранее не работал с контроллерами. Появилась задача, поиски путей решения привели меня к Вам. Сначала обрисую задачу:
На некотором заводе необходимо установить систему сигнализации аварийной остановки ряда агрегатов в количестве 3 шт. Агрегаты находятся в разных частях завода, работают самостоятельно и не требуют постоянного присутствия человека. Иногда (2-3 раза за смену) возникают неполадки. Наладчик находится в отдельном помещении в админ. корпусе завода. Необходимо просигнализировать остановку любого из агрегатов на панели в помещении наладчика, используя заводскую сеть Ethernet (очень не хочется тянуть дополнительный кабель по всей территории завода).
На каждом агрегате устанавливаем ПЛК100-24.К-L. К его входу подключаем сигнал «авария».
В комнате наладчика устанавливаем ПЛК100-24.К-L к его выходу подключаем светосигнальную колонну и бипер.
Для связи используем уже проложенную сеть ethernet протокол Modbus TCP (например...). ПЛК на агрегатах настраиваем как Slave в комнате наладчика как Master. При замыкании входа на любом из агрегатов, зажигается соответствующий выход в комнате.
Вопрос 1: эта схема рабочая? Вопрос касается связи 4х контроллеров по Modbus TCP – один мастер и три слейва.
Вопрос 2: В данный момент у меня есть 2 контроллера ПЛК100-24.P-L. На данном форуме нашел пример обмена по протоколу Modbus TCP через порт Ethernet http://www.owen.ru/forum/showthread.php?t=11235 под ПЛК100-24.К-L. Когда пытаюсь заменить ПЛК К на ПЛК Р во вкладке «Конфигурация ПЛК» теряются все данные! Вкладка просто пустая!!! Подскажите, что не так делаю!!
Вопрос 3: Как я понимаю в данном примере только настроена «конфигурация ПЛК» теперь необходимо написать программу, в которой устройство мастер будет опрашивать устройство слейв. Слейв в свою очередь будет возвращать значение, какой либо переменной? Буду очень признателен если подскажете как это сделать - подкинете какой-нить пример. Либо направите в какую сторону копать.
Вопрос 4: Может кто-то подскажет более простое решение с использованием продукции Овен. Единственно, что для связи между контроллерами хочется использовать сеть Ethernet
Подозреваю, что некоторые вопросы звучат глупо, Вы уж не велите казнить!!! :)
Добавлю к выше написанному. Основные азы работы с контроллерами уже освоил! пишу простые программы, работаю со входами/выходами.
В комнате мастеров можно обойтись и без ПЛК, почитайте что такое SCADA или HMI, этого будет в полне достаточно, :) за одно ребята и в игрушки поиграют
Комната мастеров это утрированное название! это довольно большое помещение к кучей оборудования, в котором находится наладчик. При этом он постоянно выполняет работу по обслуживанию находящегося в цеху оборудования. В цеху довольно громко, поэтому бипер – для привлечения внимания, номер лампы на световой колонне – номер агрегата.
Все-таки хотелось бы услышать ответы на вопросы. Особенно на 1,2,3!!!!
100% ;)
Нашел интересный пример:
http://www.owen.ru/forum/showpost.ph...8&postcount=10
Это как раз то, что мне нужно!
В инструкции описано как расшарить переменную! Но не могу понять как законнектить два устройства с IP например 192.168.0.1 и 192.168.0.2
Нашел более правильный пример!!!
http://www.owen.ru/forum/showthread.php?t=11235
Примеры сетевого обмена, пример №3 - Пример сетевого обмена по протоколу UDP через Ethernet.
Инструкция та же, что и в первом но во вкладке «Глобальные переменные» появилась следующая позиция «Networkmanagement implicit Variables UDP» подскажите пожалуйста, что это такое, откуда оно взялось и с чем его едят? (для чего она)
Пример, конечно, интересный! Но без комментариев, на данном этапе не имеет для меня никакого интереса! Сделайте описание как в предыдущем примере и я буду Вам очень благодарен!!! Да не только я… последующие поколения тоже!!!
Для начала думаю, стоит разобраться с предыдущим примером! По аналогии сделал программу для своего ПЛК. При замыкании на ПЛК Write входа 1, на ПЛК Read должен загореться выход 1. ПЛК подключены через свич прямыми пачкордоми. Программа не работает, подскажите, что не верно?!!
Нашел ошибку! Все работает! Теперь вопрос к уважаемому capzap. Чем плох пример, который я разбирал? Расскажите, пожалуйста, как работает Ваш пример, опишите что из себя представляют его основные блоки! Самый идеальный вариант сделать описание в виде вложения!
На клиенте и сервере открываете соответствующие UDP - порты и каждый занимается своей работой. Клиент заполняет массив и отправляет, сервер принимает массив и после его разбора выполняет определенные действия. Кроме того задействована кнопка ПЛК, если включен первый выход (то нажатие кнопки приводит к его закрытию, в остальных случаях перезагружается сокет)
:) Зачем там описание и коменты если код состоит из двух строчек
Я не смотрел Ваш код, не знаю плох ли он, но помнится, для работы с сетевыми переменными, необходимо править целевую платформу, в моем проекте просто работа с сокетами
Кроме 2х строк в программе PLC_PRG в папке POU есть 4 программы и 1 функция! Какую роль выполняет каждая? Поверьте, я не из вредности спрашиваю и прошу дать комментарии! Для новичка, типа меня, Ваша программа все равно, что написана в машинных кодах!!! Без понимания, за что отвечает каждый блок и как он работает разобраться, как его сделать самому – нереально!!!
мой проект с расширением EXP, а TcpUdpLibExample.pro это пример работы с библиотекой
Интуитивно должно быть понятно, что UdpOpenSendSocket(PORT) и UdpOpenReceiveSocket(PORT) для открытия сокетов(портов), а UdpSendData(clSocket,PORT,pszHostName,ADR(S_BUF),S IZEOF(S_BUF)) и UdpReceiveData(diSocket, PORT, ADR(R_BUF), SIZEOF(R_BUF)) для отправки и приема информации, в последние функции входит сокет, порт, указатель на массив данных и размер массива, pszHostName имя хоста куда отправляется, типа "127.0.0.1"