PDA

Просмотр полной версии : Управление из 2-х мест



Солнечный заяц
12.11.2012, 11:35
Здравствуйте, господа!
Кто нибудь реализовывал управление с 2-х устройств на CDS3 одними и теми же переменными?
Возможно ли создание листа сетевых переменных с возможностью чтения/записи?
Или нужно создавать по паре специальных листов сетевых переменных (один на чтение, другой на запись) в каждом устройстве, с передачей по изменению. Но тогда придется искусственно копировать состояние из одного листа в другой в программе, что довольно ненадежно.

Может быть есть более очевидный и элегантный способ решения этой задачи?

capzap
12.11.2012, 12:12
это же работа без установления соединения, не важно кто прислал данные в определенный порт. Вообщем что во второй что в третьей версии UDP везде одинаков

Николаев Андрей
13.11.2012, 12:52
Как и написал Capzap - сетевые переменные по UDP - Ваш выбор.
Пример для второго CoDeSys есть. В третьем по аналогии.

Солнечный заяц
13.11.2012, 13:24
Похоже что произошло недопонимание. Нужно ведь не только писать, но и читать. Т.е. при изменении с одного "пульта управления" меняется состояние и второго "пульта управления".
При этом хотелось бы выполнять циклическую передачу, что бы при перебоях связи система оставалась согласованной.

amn
18.09.2014, 01:43
Приветствую всех! Хотелось бы узнать чем все закончилось? Элегантный способ решения нашли?

Валенок
18.09.2014, 11:10
А чего тут нового ? Простая задача.
Кол-во точек управления не имеет значения. Если инициировать запрос чтения/записи может любой из (условно) кучи "панелей" и "объекта", то в общем виде алгоритм такой:

1.Объект.
Cохраняет где-то в своем "ретайне" текущие настройки.
Как очнулся - выложил их в область обмена.
Как увидел изменения в области обмена - сохранил в "ретайн" [* и разослал всем Панелям]

2.Панели.
Ничего не хранят, но имеют область куда прилетают настройки.
Как очнулась - сначала читает в эту область настройки с Объекта и обеспечивает оператору возможность изменения в этой области, отображая текущие значения.
Если изменились по месту - шлет Объекту [* и всем Панелям] новые.
Так как Панели чем-то контролируют связь с Объектом, при отсутствии ее - сообщают об этом и, например, делают невозможным редактирование настроек, но при вновь обнаружении Объекта считывают с него текущие данные.


*Тут нужно решить - рассылка Панель-Панель делать напрямую или через Объект.

amn
18.09.2014, 14:29
Тут бы разобраться с сетевыми переменными. там ведь для обмена данными между контроллерами надо две папки с переменными. одна для отправки, другая для приема.

В документации читаем:
!Важно: Рекомендуется не ставить галочки чтение и запись для одной и той же группы «PRIMER» в одном контроллере. То есть только в одном контроллере переменные одной папки должны быть Write, в остальных контроллерах типа Read.
Если необходимо, чтобы у каждого контроллера были переменные, которые и опрашиваются, и задаются – необходимо сделать несколько таких папок.

То есть для обмена с панелью, которая находится на другом ПЛК надо иметь две разные переменные (одну для чтения другую для записи)

У меня панель подключена к ПЛК1, а скада будет подключена к ПЛК2. Панель и скада должны читать текущее значение параметра из ПЛК2 (сетевая переменная a). А также могут изменить его. В дальнейшем в эту же сеть будут включены еще и другие контроллеры, которые тоже будут обмениваться с панелью и скадой.
Пока нарисовал вот такую схему.
14462
Стрелочками указано направление пересылки значения сетевой переменной. В ПЛК1 в каждом цикле b:=a. При изменении значения сетевой переменной она пересылается в другой ПЛК. Похоже надо будет еще промежуточные переменные делать. Как-то совсем не элегантно получается.

Валенок
18.09.2014, 16:38
Чем пугают копии ? Просто работу с копиями лучше вынести куда-нить в отдельный технический уровень чтоб в основном алгоритме не раздваиватся шизофренически, а работать с одной переменной. Типа как в слейве из конфигурации кдс2

Если что-то "рекомендуется" значит до сих пор не реализовали такую ерунду как IN_OUT по сети ? Тогда это сделайте это поверх того что есть. Есть запись и чтение, пусть и в разных папках - это достаточно чтоб сделать работу с одной переменной как с IN_OUT по сети

По картинке.
Кто кому кем является и у кого на борту ? Конфигураций - море
А и B сидели на трубе можно синхронно изменять на всех 4х объектах

amn
18.09.2014, 18:31
Не понял про аналогию со слэйвом из конфигурации. И про IN_OUT тоже. Разъясните, пожалуйста. А то у меня мысли неправильные пошли сделать ФБ с одной входной переменной (с которой предполагается работать в основном алгоритме), в котором имеются еще две сетевые переменные для обмена. Причем получается для каждой переменной нужно по две сетевые. Может так и надо?
Подправленный вариант схемы. Тут вроде бы не надо создавать дополнительных переменных. В ПЛК1 в каждом цикле b:=a, а в ПЛК2 в каждом цикле a:=b. ИП320 читает и пишет в сетевую переменную a, Скада читает и пишет в сетевую переменную b.
14463
По картинке подробнее:
ИП320 (мастер) подключен к ПЛК1 по RS232.
ПЛК1 и ПЛК2 между собой подключены по Ethernet (пока напрямую, но на объекте будут через свитч, так как там планируется несколько контроллеров подключить между собой)
Скада (мастер) будет подключена к ПЛК2 если получится, то тоже через свитч.

Валенок
18.09.2014, 20:17
Про слейв в конфигурации - его можно читать, писать не заморачиваясь. Стандартный мастер - разделяет сознание. Но через библиотеки нетрудно сделать работу с 1й переменной. Поменяли тут - поменялось и там. Поменялось там - поменялось и тут. Это и есть IN_OUT. Странно что не сделано на уровне системы.

А цепаните ип мастером на 485 для обоих ПЛК. Скада опять же - мастер для каждого ПЛК. А области слейвов в плк для 485 и tcp - совместите.
Правдоть это для кдс2. Есть похожее в кдс3 ?

amn
19.09.2014, 09:39
Но через библиотеки нетрудно сделать работу с 1й переменной.
Ключевое слово "нетрудно", мне нравится. Вопрос как? Я ведь не такой опытный как Вы. В смысле какими библиотеками пользоваться, чтобы реализовать это с сетевыми переменными.

А цепаните ип мастером на 485 для обоих ПЛК. Скада опять же - мастер для каждого ПЛК. А области слейвов в плк для 485 и tcp - совместите.
Правдоть это для кдс2. Есть похожее в кдс3 ?
у меня 485 интерфейсы заняты, а Ethernet свободен у всех контроллеров. Все это будет как раз в КДС2. В этой теме пишу, чтобы новую не создавать, тем более выше сказано, что работа с сетевыми переменными В КДС3 не отличается от КДС2. Можно конечно через АС3-М попробовать, но пока еще не знаю будут ли свободны 232 интерфейсы на остальных контроллерах.

petera
19.09.2014, 10:43
Эх, а в "устаревших" СП270 управление с разных мест решается элементарно! Причем на аппаратном уровне, ничего писать не надо и число мест может быть не только два, а любое, конечно в разумных пределах. http://www.owen.ru/forum/showthread.php?t=14368

http://www.owen.ru/forum/attachment.php?attachmentid=12746&d=1398336024

Валенок
19.09.2014, 12:20
у меня 485 интерфейсы заняты, а Ethernet свободен у всех контроллеров
Лучше бы полный список моделей привести. И кто в каком шкафу.

amn
20.09.2014, 01:14
Шкаф-1.
ПЛК110, по RS485-1 подключены модули, по RS232 панель ИП320.

Шкаф-2.
ПЛК100, по RS485 подключены модули, и еще будут частотники (Дельта 2 штуки в отдельном шкафу), возможно по RS232 через АС3-М (я еще пока не знаю уживутся ли они на одном интерфейсе с другими модулями (аналоговыми, и дискретными).
ПЛК100 (1 или 2 штуки, пока не определились) с разными модулями по RS485.

Шкаф-3 в другом здании (недалеко). ПЛК100 с модулями по RS485.

Все это хозяйство планируется объединить в сеть по Ethernet. При помощи панели ИП320 или скады менять параметры в любом контроллере.

Валенок
20.09.2014, 10:17
Например c помощью АС3 сделать 2й 485 каждому ПЛК. На этот 485 посадить ИП320.
Все ПЛК 1й 485 юзают для своих модулей и частотников (уживутся), по 2-му - совмещенные с tcp слейвы

amn
21.09.2014, 15:31
Валенок, спасибо за советы. А сетевые переменные видимо не для моего случая.

amn
21.09.2014, 15:33
petera, Вам тоже спасибо, большое дело делаете.