PDA

Просмотр полной версии : Сеть из ПЛК 150 по RS485/Ethernet



ck1zy
27.10.2010, 19:53
День добрый.

Есть несколько стендов с ПЛК 150(~5-7). Требуется объединить их в сеть по RS485. Каждый контроллер управляет своим учебным стендом. Всю информацию с контроллеров нужно выводить на независимый компьютер, причем с возможностью управлять с него, при этом главным остается локальный компьютер.

Для начала решил сделать сеть по Ethernet(чтобы иметь представление о сети как таковой). Настраивал ПЛК по примеру http://www.owen.ru/catalog/55710393. Хотел сделать пересылку чисел(как пример), но видно делаю что-то не так ибо контроллеры их не видят.

Что я делаю не так?

lara197a
27.10.2010, 21:25
зайдите на форум в примеры и полезности. там все есть.
1-н контроллер мастер-остальные слейв.
мастер свяжите с пк.
или
не знаю как там у вас задумано, но можно сделать мастером пк, и опрашивать все плк, как слейвы.

ck1zy
02.02.2011, 18:02
В описание к библиотеке UNM.lib обнаружил следующее:

9) INITCOM : DWORD* – инициализация модуля параметрами, заданными в структуре COM_INI. Функция позволяет инициализировать последовательный порт новыми параметрами, например, изменить скорость передачи данных.
но в самой библиотеке этой функции нет.
Библиотека 2006, новей не нашел(если она вообще есть). Это ошибка в описании или в самой библиотеке?

Николаев Андрей
02.02.2011, 18:17
Рано Вам к библиотекам.
Отпишите конкретней что и к чему и по какому интерфейсу подключать.
Паралелльно почитайте док по конфигурированию PLC Configuration

ck1zy
02.02.2011, 19:14
Подключаю контроллеры Овен 150 по RS-485 в сеть. Передачу между 2 контроллерами уже реализовал с помощью SysLibCom, но нужно сделать прием и передачу от нескольких. Один является ведущим, остальные ведомые. Ведомые "молчат" до появления запроса от ведущего. Пока делаю так, т.к. со SCADA-системой не знаком и заменить ведуший не знаю как.

Николаев Андрей
03.02.2011, 11:03
Эх... :)
Правильно ли я понял, что Вам необходимо объеденить ПЛК150 (4 шт) в сеть по RS485, и проашивать их из SCADA системы?
Оставьте пока SysLibCom и прочие приятности.
Сколько переменных надо забирать\записывать с каждого ПЛК?
В каждом контроллере настраиваете ModBus Slave. Примеры и описания есть в полной мере.
Скачиваете, к примеру, Lectus OPC сервер. В нем настраиваете опрос всех четырех ПЛК. Пример настройки OPC сервера так же полноценный доступен.

Для проверки - правильно ли мы все настроили - скачиваем Matrikon OPC Client (или любой другой OPC клиент) - проверяем настройку.

Дальше ставим SCADA систему, и уже опрашиваем Lectus не Matrikon-ом, а SCADA системой.

ВАЖНО: Lectus бесплатен только в виде демоверсии, с ограничением по времени работы.

ck1zy
03.02.2011, 13:34
Да, все верно. 4 контроллера в сети, управление как с локального компьютера, так и с сервера(приоритет за локальным).
Спасибо за подробную информацию.

ck1zy
03.02.2011, 18:25
Где бы наити документацию по OPC серверу для чаиников?
Скачал хелпер, но думаю его маловато будет.

Николаев Андрей
03.02.2011, 18:34
По этому и посоветовал Lectus - на его страничке скачивается прям пошаговое описание оч. подробное.

ck1zy
03.02.2011, 19:18
Видно не обратил внимание.

ck1zy
07.02.2011, 00:49
Не подскажите еще какую-нибудь SCADA-систему?
Выбор большой, но какую выбрать не знаю.

Александр Приходько
07.02.2011, 10:30
Мы являемся официальным дилером Master Scada.

ck1zy
07.02.2011, 17:26
Включает несетевую исполнительную систему на 1 час работы без ограничения числа точек - из описания. Т.е. после часа работы она екнется?

Николаев Андрей
08.02.2011, 10:49
Отключится

ck1zy
09.02.2011, 17:22
Нашел в примерах как передавать данные из OPC в ПЛК, но ссылка(первая в списке) оказалась битой. http://owen.ru/forum/showpost.php?p=37441&postcount=52
Нельзя ли куда-нибудь перезалить?

ck1zy
16.02.2011, 21:58
а каким макаром подключать контроллеры? слышал что-то про 4-х проводную схему но так и не понял что это за зверь такой

Илья Кареткин
17.02.2011, 13:46
Нашел в примерах как передавать данные из OPC в ПЛК, но ссылка(первая в списке) оказалась битой. http://owen.ru/forum/showpost.php?p=37441&postcount=52
Нельзя ли куда-нибудь перезалить?

Ссылки, обновил. Связь с OPC там через модем или по TCP.
http://www.owen.ru/catalog/81758762 - инструкции по данным подключениям.


а каким макаром подключать контроллеры? слышал что-то про 4-х проводную схему но так и не понял что это за зверь такой
Определитесь по какому интерфейсу подключаете ПЛК.. RS-485(2х проводка), TCP(Ethernet), RS-232(3х проводка). Но на выбор это влияет..

ck1zy
18.02.2011, 15:33
Определитесь по какому интерфейсу подключаете ПЛК.. RS-485(2х проводка), TCP(Ethernet), RS-232(3х проводка). Но на выбор это влияет..
Подключать буду по RS-485. Схему нашел http://www.bolid.ru/support/tech/recommendations/orion/orion_32.html вопрос в том нужно ли мне ставить сопротивление если моя сеть не превышает 20м?

За ссылки спасибо.

Илья Кареткин
21.02.2011, 13:37
При 20 метрах, можно обойтись без них.

ck1zy
30.03.2011, 21:15
Опрос переменных с ПК организовал, но вот как писать в ПЛК не понял. Значения у всех переменных всегда Q, а мне бы желательно I&Q.
http://ipic.su/img/img2/tn/1.1301504857.jpg (http://ipic.su/img/img2/fs/1.1301504857.jpg)
И еще не совсем понял с адресами переменных. Как их вычислить?
http://ipic.su/img/img2/tn/121212.1301505228.jpg (http://ipic.su/img/img2/fs/121212.1301505228.jpg)
Т.е. для первой переменной адрес по умолчанию - 0000, для второй методом тыка был установлен - 0010, но вот как дальше?

Николаев Андрей
31.03.2011, 20:38
Для второй переменной адрес - 0001.
А принцип четко прописан в документе по PLC Configuration.
То, что все переменные попадают в МЭК память выходов никак не помешает Вам записывать в них по ModBus необходимые значения.

capzap
31.03.2011, 23:25
Опрос переменных с ПК организовал, но вот как писать в ПЛК не понял. Значения у всех переменных всегда Q, а мне бы желательно

ОРС-ами никогда не занимался, но вот на картинках видно что в ПЛК слейв устройство, есть переменные типа WORD, на картинке ОРС-а тоже WORD, а функция модбаса чтение бита и запись отсутствует, видимо когда поставить соответствующую функцию и запись разрешится или я не прав?

ck1zy
01.04.2011, 11:14
Для второй переменной адрес - 0001.
А принцип четко прописан в документе по PLC Configuration.
То, что все переменные попадают в МЭК память выходов никак не помешает Вам записывать в них по ModBus необходимые значения.
При задании адреса 0001 Матрикон(а опрос веду им) не видит данную переменную. Собственно как и запись - при изменении значения в ПЛК переменные не меняются.

ОРС-ами никогда не занимался, но вот на картинках видно что в ПЛК слейв устройство, есть переменные типа WORD, на картинке ОРС-а тоже WORD, а функция модбаса чтение бита и запись отсутствует, видимо когда поставить соответствующую функцию и запись разрешится или я не прав?
Картинку делал не с рабочего места поэтому такие и значения.

Николаев Андрей
01.04.2011, 17:23
Итого. В ModBus Slave Вы добавили несколько переменных. Двух-байтных. Итого это регистры ModBus с адресом 0 и с адресом 1.
Это 100% так и это проверялось уже не одним десятком различных устройств.

ck1zy
05.04.2011, 20:10
С чтением переменных разобрался. Но как записывать в ПЛК так и не понял.
Простейшая программа
http://ipic.su/img/img2/tn/1.1302019431.jpg (http://ipic.su/img/img2/fs/1.1302019431.jpg)
Настройки драйвера
http://ipic.su/img/img2/tn/2.1302019558.jpg (http://ipic.su/img/img2/fs/2.1302019558.jpg)
http://ipic.su/img/img2/tn/3.1302019592.jpg (http://ipic.su/img/img2/fs/3.1302019592.jpg)
http://ipic.su/img/img2/tn/6.1302019625.jpg (http://ipic.su/img/img2/fs/6.1302019625.jpg)
Остальные переменные аналогично.
Результат:
http://ipic.su/img/img2/tn/SRRRSRRS.1302019726.jpg (http://ipic.su/img/img2/fs/SRRRSRRS.1302019726.jpg)

При изменении типа переменных получается следующее(на примере одной переменной):
http://ipic.su/img/img2/tn/SSRRRRSSRRSSSRSRyoSSRyoSSRSRyoRRS.1302019767.jpg (http://ipic.su/img/img2/fs/SSRRRRSSRRSSSRSRyoSSRyoSSRSRyoRRS.1302019767.jpg)

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

Что делать, как быть?

ck1zy
21.04.2011, 21:21
Может быть для записи нужна специальная функция CoDeSyS, которая записывает переменную в ПЛК?
Пробовал записывать с помощью различных программ:
dOPCDAClient
SST_Client
ну и сам Metrikon, результата нет.

Николаев Андрей
22.04.2011, 15:53
Может быть для записи нужна специальная функция CoDeSyS, которая записывает переменную в ПЛК?
Пробовал записывать с помощью различных программ:
dOPCDAClient
SST_Client
ну и сам Metrikon, результата нет.
Простенькая программа http://ifolder.ru/23109124

1. Как то не прилично просить о помощи и зарабатывать. Лично я не буду ничего скачивать, "просматривая рекламу". Перевыложили бы что ли файл...
2. Все записывается - 1000 раз проверялось. Единственное, что может помешать - объявление переменной, как выходной, а в выходную переменную записать ничего нельзя. Либо Вы в своей же программе после получения значения перетираете его.

ck1zy
22.04.2011, 16:02
1. Как то не прилично просить о помощи и зарабатывать. Лично я не буду ничего скачивать, "просматривая рекламу". Перевыложили бы что ли файл...
2. Все записывается - 1000 раз проверялось. Единственное, что может помешать - объявление переменной, как выходной, а в выходную переменную записать ничего нельзя. Либо Вы в своей же программе после получения значения перетираете его.

1. скажите куда перелить-перелью. залил на первое что попалось под руку

2. переменные объявлены в PLC_PRG, далее передаются в модуль Modbus(slave) где они объявлены как Q, но как сказали мне на форуме это не влияет на запись

ck1zy
22.04.2011, 16:07
ссылки удалены

ck1zy
22.04.2011, 16:13
прикрепил наконец-то

Николаев Андрей
22.04.2011, 17:34
Проблема как и предполагал: предыдущий ответ п.2 часть 2.
Переменные скорее всего записываются.
Но уже в следующем цикле ПЛК Вы им снова приравниваете значения var11, var22, var33...
Вопрос видимо в неточном понимании работы ПЛК (в принципе, не ОВЕН)
1.Опрашивается область входов.
2.Выполняется программа. С первой строчки до последней, последовательно, строчка за строчкой. (в примитиве).
3.Результаты записываются в область выходов.
4.Идем в пункт 1.

У Вас в 1 шаге переменные могут записываться, но уже во втором Вы видите старые значения, потому, что записали из в теле программы.
И уже в шаге 3, как и предполагалось видите не измененные значения.

ck1zy
22.04.2011, 17:45
Теперь понятно, сам замечал что при смене значения(в самом ПЛК), новое значение держится буквально мгновение а потом меняется на предыдущее, но думал это проблема в записи.

Но как сделать чтобы они не менялись? В документации есть что-нибудь про это?

Мне-то нужно управлять с сервера(отдельный ПК) через RS-485 стендом у которого уже есть локальный ПК с программой. Т.е. я могу отправлять команды как с локального, так и с удаленного(сервер) ПК. Приоритет при этом за локальным.

Николаев Андрей
23.04.2011, 04:22
Тут уж как Вы фантазию включите...
Например можно сравнивать значения, поступающие с ПК с предыдущими значениями, поступившими с ПК.
И если значения изменились - записать то, которое нужно в нужную переменную.

Ну и не делать изначального присвоения значения переменной значением другой переменной.
Саму переменную при инициализации можно инициализировать любым числом. А переменные из конфигурации ПЛК так же можно объявлять в программе через МЭК адрес.

ck1zy
25.04.2011, 20:59
Задаю значение переменных в ПЛК, вижу эти данные в Scada, но при попытке записи любого значения записывается единица, т.е. если переменная была равна 10 то она меняется на 11. Менял значения настройки сервера OPC: скорость обмена данными, тип преобразователя, протокол, а также тип переменной и функции чтения/записи - безрезультатно.

До меня все никак не может дойти почему он при попытке записи переменной(любого числа) записывает(меняет) на единицу, т.е. ПК пишет в ПЛК но почему он не делает это правильно. При этом все настройки проверял по несколько раз, но наити ошибку так и не получилось.

//В архиве сама прога(немного измененная)[1111.pro], а так же настройки конфигурации OPC-драйвера[21.mbc].

Николаев Андрей
26.04.2011, 00:42
1. Так у вас же программа не изменилась... НИЧЕГО и не будет работать...
2. Изменяется видимо по тому, что контроллер не стартуете. Так то вообще изменяться не должна...
Начните с простого.
Создайте две переменных.
Одну на запись, одну на чтение.

Убедитесь, что и читать и писать получается.
дальше программно уже реализуйте то, что Вам необходимо.

ck1zy
26.04.2011, 12:16
Извеняюсь, конфигурацию Modbus-драивера добавил, а программу обновить забыл. Выложил одну программу.

Вот та с которой сейчас работаю. Переменные просто объявлены и никакой "затирки" по-идее быть не может, но проблема все таже.

Алгоритм работы: CoDeSyS->Login->Start

Далее записываю в первые 3 переменные какие-либо значение, ну скажем 10, 20, 30, в var4 и var5 оставляю без изменения(т.е. там 0). С помощью Matrikon вижу эти переменные: var1=10, var2=20, var3=30, var4=0, var5=0

Опрос идет, пытаюсь записать в эти переменные с ПК: в var1-20, в var2-30, в var3-40, в var4-50, в var5-60, но вместо этих значений в ПЛК записывается следующее: var1=11, var2=21, var3=31, var4=1, var5=1
При этом совершенно не важно что я хочу записать, на любое значение в ПЛК переменная увеличивается на 1.

И вот тут у меня возникает вопрос - почему контроллер не хочет писать переменные?

ck1zy
27.04.2011, 13:06
Может проблема в Matrikon и его надо настраивать каким-то специальным способом?

ck1zy
28.04.2011, 12:41
Создайте две переменных.
Одну на запись, одну на чтение.

Убедитесь, что и читать и писать получается.


Создал. Читает без проблем, а писать не хочет.

Ельцов Андрей
03.05.2011, 14:31
Извеняюсь, конфигурацию Modbus-драивера добавил, а программу обновить забыл. Выложил одну программу.

Вот та с которой сейчас работаю. Переменные просто объявлены и никакой "затирки" по-идее быть не может, но проблема все таже.

Алгоритм работы: CoDeSyS->Login->Start

Далее записываю в первые 3 переменные какие-либо значение, ну скажем 10, 20, 30, в var4 и var5 оставляю без изменения(т.е. там 0). С помощью Matrikon вижу эти переменные: var1=10, var2=20, var3=30, var4=0, var5=0

Опрос идет, пытаюсь записать в эти переменные с ПК: в var1-20, в var2-30, в var3-40, в var4-50, в var5-60, но вместо этих значений в ПЛК записывается следующее: var1=11, var2=21, var3=31, var4=1, var5=1
При этом совершенно не важно что я хочу записать, на любое значение в ПЛК переменная увеличивается на 1.

И вот тут у меня возникает вопрос - почему контроллер не хочет писать переменные?

Скиньте настройку Лектуса, пожалуйста.

ck1zy
04.05.2011, 01:35
Для опроса использую стандартный драивер-modbus, от лектуса отказался.

Настроики либо в картинках http://www.owen.ru/forum/showpost.php?p=58611&postcount=25 либо в фаиле http://www.owen.ru/forum/showpost.php?p=60085&postcount=34
Сама программа http://www.owen.ru/forum/showthread.php?t=9051&page=4

Мне не понятно, почему пишет имеено таким образом. Опрашивает - идеально, но пишет каким-то непонятным мне способом. Вроде уже и настроики менял по-всякому и интернет облазил, но как писать правильно так и не понял. А время поджимает.

ck1zy
20.05.2011, 13:14
А можно где-нибудь узнать чем OPC-драйвера версии 1.0b отличаются от 1.4? Что добавили или наоборот убрали, что изменили и т.д.
1.0b работает нормально, то 1.4 работать отказывается(проверялось на нескольких компьютерах)

Ельцов Андрей
20.05.2011, 13:22
ОРС драйвер предназначен для подключения наших приборов к SCADA системам сторонних производителей.
1.4 - Owen Process Manager - это наша SCADA система, которой не нужен ОРС-сервер, она работает с приборами напрямую.

Это координально разные продукты и сравнивать их нельзя.

ck1zy
20.05.2011, 13:31
В данный момент использую 1.0b для подключения к MasterScada. Теперь пишет только первую переменную(которая по умолчанию), остальные только читает, вот и думал что новая версия драйверов решит эту проблему.