Просмотр полной версии : MasterSCADA+ПЛК63-L
Господа любители и профессионалы, помогите организовать передачу переменных из ПЛК. Нужно лишь отображать значения без всяких задач. В ОРС RS-485 нет такого устройства, пытаюсь по Mudbus ASCII. Создаю переменную, назначаю ее тип, адрес, добавляю в Scada, а значения нулевые. Пытался через ОРС RS-485 делать ПЛК как МДВВ и МАВ8 значения аналоговых и дискретных входов отображаются. Но мне нужны и аналоговые и дискретные сигналы, поэтому бьюсь с Mudbus ASCII. Направте в нужном направлении, это мой первый опыт работы с ПЛК
Я так понял ваша задача из ПЛК получить дискретные и аналоговые сигналы в 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 отдельных сигналов. Проверенно все работает замечательно.
AKHolod, по 2-ому пункту можно конкретнее описать или где почитать?
Sniper007
21.07.2010, 08:18
AKHolod не совсем прав по второму пункту. Так прокатило если бы это был ПЛК100. В ПЛК63 для работы по Modbus Slave зарезервированы ряд адресов, к ним и нужно обращаться. С ними вам и нужно работать - загнать туда дискретные сигналы, аналоговые. Подробнее написано в документации PLC63_configuration
В MasterSCADA для распаковки используется модуль "Распаковка 32-битного значения", модуль "событие" или скрипт - на выбор.
Sniper007 у нас Master Scada Demo без ограничения по времени. Где взять выше описаные модули? может нужно использовать версию ограниченную по времени?
Sniper007
21.07.2010, 10:41
У меня Demo версия. Какую версию использовать - это ваше дело, и зависит от задачи. Если вам нужно ли отображать пару дискретных сигналов то хватит и версии на 32 точки.
Модуль надо взять во вкладке "Вычисления" - Распаковка аналогового 32 битного значения.
Но есть проблема. Согласно лицензии каждый выход ФБ имеющий связи - тоже считается как точка. Поэтому вам может не хватит 32 точек.
Но вы попробуйте, если хватит - замечательно. Если превысите это значение, то я вам скажу один фокус.
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 качество переменной. Есть там ошибка или нет
мы пытались считать информацию с области памяти параметров плк. или может нужно записывать информацию в область пользовательских параметров(опп) и затем считывать с этой области? если второй вариант правильнее, то как записать в опп измеренные значения. садресом 4098 тоже 0.
Sniper007
21.07.2010, 13:30
А качество переменной какое? MasterSCADA в свойствах переменной OPC - признак качества. Идет ли вообще обмен.
И попробуйте еще опросить адрес 19 (или 1003).
Чтобы скопировать переменную, нужно объявить ее разделе переменных и присвоить нужный адрес. Вот тут написано
http://www.owen.ru/forum/showthread.php?t=4895&goto=nextoldest
у меня проблема решилась так, каждется,: адреса параметров в Opc надо было задавать в десятичной форме, в в описании плк они были приведены в 16-ричной форме.
или наоборот.
Sniper007, призеак качества "строковый". Значение 0х20.
Окончательно запутался. Беру пишу простую программу 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 ее не подсоединять - в нем есть возможность просмотреть значения.
Я же советовал- настройте адреса в 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 в студию.
Это log обмена по 232 - 232 при запуске Codesys . запустили codesys и нажали login, запустили программу записи логов и по истечению некоторого времени произошло отключение от программы. Вот этот лог и выложен.
аналоговый сигнал получили. настроили в Opc сервере протокол. заменили Ascii на Rtu.
всем спасибо. буду двигаться дальше, будут вопросы надеюсь получу помощь. первый бой он трудный самый.
всем спасибо. буду двигаться дальше, будут вопросы надеюсь получу помощь. первый бой он трудный самый.
Т.е. все получилось?
Log был нужен "неправильный": не при обмене codesys-PLC.
А при обмене того, что не работает: Sсada- PLC
Там запрос информации к ПЛК и ответ ПЛК. Все в ascii формате.
Да, сейчас все отлично считывает, пирчем по корректным адресам. Просто решил еще раз все проверить, поменял Modbus ASCII на RTU и все чудо произошло. Аналоговый сигнал считывает без проблем, дискретный почемуто работает если тип переменной не byte, а word.
Да, сейчас все отлично считывает, пирчем по корректным адресам. Просто решил еще раз все проверить, поменял Modbus ASCII на RTU и все чудо произошло. Аналоговый сигнал считывает без проблем, дискретный почемуто работает если тип переменной не byte, а word.
Если в настройках OPC читается ф-ями 0x03, 0x04 ("read register"),
в спецификации modbus регистр - 16бит.
Скиньте пожалуйста рабочий пример связи ПЛК63(CODESYS 2.3) - (ОВЕН) ОРС - (МАСТЕР) СКАДА. Никак не пойму, как работать с портом при отправке или приеме значений в CODESYS 2.3
Скиньте пожалуйста рабочий пример связи ПЛК63(CODESYS 2.3) - (ОВЕН) ОРС - (МАСТЕР) СКАДА. Никак не пойму, как работать с портом при отправке или приеме значений в CODESYS 2.3
Примера такого у меня нет. :(
Я программировал в QT designer - работа через порт RS232 без применения SCADA и OPC.
http://caxapa.ru/upload/files/1f3f50a9207a1cdaa55a36d81ab7381e0f06b681
Спасибо, но слишком сложно.мне нужно получить данные в SCADA. неужели ни у кого нету простой реализации?
Sniper007
14.01.2011, 13:05
Вы можете просто получать данные через протокол Modbus RTU, а в скаду через OPC или MasterLink.
Обратитесь в раздел ПЛК.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot