PDA

Просмотр полной версии : MasterSCADA+ПЛК63-L



Alr
20.07.2010, 13:21
Господа любители и профессионалы, помогите организовать передачу переменных из ПЛК. Нужно лишь отображать значения без всяких задач. В ОРС RS-485 нет такого устройства, пытаюсь по Mudbus ASCII. Создаю переменную, назначаю ее тип, адрес, добавляю в Scada, а значения нулевые. Пытался через ОРС RS-485 делать ПЛК как МДВВ и МАВ8 значения аналоговых и дискретных входов отображаются. Но мне нужны и аналоговые и дискретные сигналы, поэтому бьюсь с Mudbus ASCII. Направте в нужном направлении, это мой первый опыт работы с ПЛК

AKHolod
21.07.2010, 02:37
Я так понял ваша задача из ПЛК получить дискретные и аналоговые сигналы в SCADA. Если так то вам необходимо:
1. OPC-сервер для приборов c интерфейсом RS-485 и протоколом Modbus, или OPC сервер лектус Lectus (по мне лучше)
2. В контроллере создаете подмодуль Modbus slave (RTU), задаете адресс контролла и т.д., внем создаете переменные сначала 8 bits - что соответствует 8 дискретным сигналам, затем аналоговые.
3. В ОРС создаете узел/прибор не стандартный, задаете соответствующие параметры связи.В узле создаете переменные, дискретные - тип байт адресс начиная с 0 (данная переменая будет соответствовать созданной в контроллере 8bits), затем создаете аналоговые с типом, соответствующим типу в контроллере, если вы создали одну переменную 8bits то первая аналоговая будет с адрессом - 1,если не создавали то адресс - 0,т.е. на все типы переменных одно адрессное пространство регистров. адресса вводятся в шестнадцатиричном формате.
4. В скаде получаете ваши переменные,дискретные типа byte разкладуете в скаде на 8 отдельных сигналов. Проверенно все работает замечательно.

Alr
21.07.2010, 06:50
AKHolod, по 2-ому пункту можно конкретнее описать или где почитать?

Sniper007
21.07.2010, 08:18
AKHolod не совсем прав по второму пункту. Так прокатило если бы это был ПЛК100. В ПЛК63 для работы по Modbus Slave зарезервированы ряд адресов, к ним и нужно обращаться. С ними вам и нужно работать - загнать туда дискретные сигналы, аналоговые. Подробнее написано в документации PLC63_configuration
В MasterSCADA для распаковки используется модуль "Распаковка 32-битного значения", модуль "событие" или скрипт - на выбор.

Alr
21.07.2010, 10:07
Sniper007 у нас Master Scada Demo без ограничения по времени. Где взять выше описаные модули? может нужно использовать версию ограниченную по времени?

Sniper007
21.07.2010, 10:41
У меня Demo версия. Какую версию использовать - это ваше дело, и зависит от задачи. Если вам нужно ли отображать пару дискретных сигналов то хватит и версии на 32 точки.
Модуль надо взять во вкладке "Вычисления" - Распаковка аналогового 32 битного значения.
Но есть проблема. Согласно лицензии каждый выход ФБ имеющий связи - тоже считается как точка. Поэтому вам может не хватит 32 точек.
Но вы попробуйте, если хватит - замечательно. Если превысите это значение, то я вам скажу один фокус.

Alr
21.07.2010, 11:55
Sniper007, в Owen OPC для Modbus создаем переменную типа float(double float) адрес HEX 0018 и на выходе получается "0" хотя к аналоговому входу ПЛК 63 подключен датчик температуры и корректно отображается температура на самом ПЛК. Делаем распаковку 32 битного значения- 0. С дискретными такая же беда. Конечн о же тип данных там Byte и адрес соответсвующий. Может нужно как-то в плк оределять переменные которые хочу вытащить, не пойму. В чем может быть проблема непонятно.

Sniper007
21.07.2010, 12:57
Попробуйте просто Float, функция чтения - 03, запись - нет.
Можно еще попробовать обратится к адресу 4098 (HEX 1002).
Да и посмотрите в статусе переменной в MasterSCADA качество переменной. Есть там ошибка или нет

Alr
21.07.2010, 13:14
мы пытались считать информацию с области памяти параметров плк. или может нужно записывать информацию в область пользовательских параметров(опп) и затем считывать с этой области? если второй вариант правильнее, то как записать в опп измеренные значения. садресом 4098 тоже 0.

Sniper007
21.07.2010, 13:30
А качество переменной какое? MasterSCADA в свойствах переменной OPC - признак качества. Идет ли вообще обмен.
И попробуйте еще опросить адрес 19 (или 1003).
Чтобы скопировать переменную, нужно объявить ее разделе переменных и присвоить нужный адрес. Вот тут написано
http://www.owen.ru/forum/showthread.php?t=4895&goto=nextoldest

Gosha
21.07.2010, 15:18
у меня проблема решилась так, каждется,: адреса параметров в Opc надо было задавать в десятичной форме, в в описании плк они были приведены в 16-ричной форме.

или наоборот.

Alr
22.07.2010, 06:40
Sniper007, призеак качества "строковый". Значение 0х20.

Alr
22.07.2010, 06:50
Окончательно запутался. Беру пишу простую программу T:=t1; в глобальных переменных описываю все. t1 это аналоговый вход на котором висит датчик температуры. T это переменная в Submenu c адресом 82. И через MasterScada пытаемся обратиться к этому адресу и не получается.

Sniper007
22.07.2010, 08:50
Sniper007, призеак качества "строковый". Значение 0х20.
20 - это признак инициализации OPC.
В начальный момент после запуска, или когда MasterSCADA не запущена в режим исполнения там действительно висит 0х20.
А MasterSCADA при переводе в режим исполнения не выдает ошибок загрузки OPC?
Можно как вариант попробовать Lectus использовать. Можно даже к SCADA ее не подсоединять - в нем есть возможность просмотреть значения.

Gosha
22.07.2010, 09:48
Я же советовал- настройте адреса в OPC MODBUS -ASCII.
Переберите 2 варианта.
Все работает.
Адрес ПЛК требуется задавать в ОРС тоже либо в 16-ричном виде (10) либо в 10-чном (16).

Там всего 2 варианта(десятичное или 16- ричное задание адреса), и все заработает.

Выберите правильные ф- ии чтения по modbus.
ф-я 0x04 добавьте переменную с адресом 0 в OPC Это, кажется, аналоговый вход 0.

Соединяться кабелем КС2.

Программа проверки связи с ПЛК-63 по modbus-ascii с исходными текстами:
http://upload.caxapa.ru/plc63_modbus_test.zip


Соедините сначала все напрямую (232-232 без промежуточных преобразователей в 485).

Когда заработает, добавьте преобразователи.


Сняить log обмена rs232:
http://upload.caxapa.ru/Serial_Monitor_Pro322.zip
Программу log rs232 запустить до запуска master scada.
Log в студию.

Alr
22.07.2010, 11:56
Это log обмена по 232 - 232 при запуске Codesys . запустили codesys и нажали login, запустили программу записи логов и по истечению некоторого времени произошло отключение от программы. Вот этот лог и выложен.

Alr
22.07.2010, 12:36
аналоговый сигнал получили. настроили в Opc сервере протокол. заменили Ascii на Rtu.

Alr
22.07.2010, 13:09
всем спасибо. буду двигаться дальше, будут вопросы надеюсь получу помощь. первый бой он трудный самый.

Gosha
22.07.2010, 16:40
всем спасибо. буду двигаться дальше, будут вопросы надеюсь получу помощь. первый бой он трудный самый.

Т.е. все получилось?
Log был нужен "неправильный": не при обмене codesys-PLC.
А при обмене того, что не работает: Sсada- PLC
Там запрос информации к ПЛК и ответ ПЛК. Все в ascii формате.

Alr
23.07.2010, 05:48
Да, сейчас все отлично считывает, пирчем по корректным адресам. Просто решил еще раз все проверить, поменял Modbus ASCII на RTU и все чудо произошло. Аналоговый сигнал считывает без проблем, дискретный почемуто работает если тип переменной не byte, а word.

Gosha
27.07.2010, 13:11
Да, сейчас все отлично считывает, пирчем по корректным адресам. Просто решил еще раз все проверить, поменял Modbus ASCII на RTU и все чудо произошло. Аналоговый сигнал считывает без проблем, дискретный почемуто работает если тип переменной не byte, а word.

Если в настройках OPC читается ф-ями 0x03, 0x04 ("read register"),
в спецификации modbus регистр - 16бит.

Ievgen
11.01.2011, 23:00
Скиньте пожалуйста рабочий пример связи ПЛК63(CODESYS 2.3) - (ОВЕН) ОРС - (МАСТЕР) СКАДА. Никак не пойму, как работать с портом при отправке или приеме значений в CODESYS 2.3

Gosha
14.01.2011, 11:02
Скиньте пожалуйста рабочий пример связи ПЛК63(CODESYS 2.3) - (ОВЕН) ОРС - (МАСТЕР) СКАДА. Никак не пойму, как работать с портом при отправке или приеме значений в CODESYS 2.3

Примера такого у меня нет. :(
Я программировал в QT designer - работа через порт RS232 без применения SCADA и OPC.
http://caxapa.ru/upload/files/1f3f50a9207a1cdaa55a36d81ab7381e0f06b681

Ievgen
14.01.2011, 12:28
Спасибо, но слишком сложно.мне нужно получить данные в SCADA. неужели ни у кого нету простой реализации?

Sniper007
14.01.2011, 13:05
Вы можете просто получать данные через протокол Modbus RTU, а в скаду через OPC или MasterLink.
Обратитесь в раздел ПЛК.