Просмотр полной версии : МВ210-101 + ПЛК-150-А-М
Здравствуйте уважаемые форумчане.
Подскажите, пожалуйста, где и что не так делаю...
В одной подсети имеется настроенный МВ210-101 с подключенными 8 датчиками, и ПЛК-150-А-М с подключенными 2 датчиками и одним клапаном с AI и AO. Они опрашиваются и управляются через OWENCLOUD, т.е. заданное через OWENCLOUD, обработанное ПЛК и ушедшее на клапан через AO, я вижу на аналоговом входе ПЛК опять таки в OWENCLOUD.
Теперь надо организовать обмен между МВ210-101 и ПЛК150 по локальной сети.
Что сделано:
1. В конфигурации ПЛК создан элемент "Modbus (Master)"
2. Добавлен подэлемент "Universal Modbus Device" с настройками:
IP: 192.168.11.51
Max timeout : 150 ms
TCPPort: 502
NetMode (режим работы в сети): TCP
ModuleSlaveAddress (Адрес подчиненного устройства): 1
WorkMode (режим работы): by poll time (по времени)
PollingTime (): по умолчанию 100
Visibility (Видимость): no
Amount Repeat (число повторов): 3
Byte Secuence (Порядок передачи байтов посылки): native.
Порт и "ModuleSlaveAddress" посмотрел в OWENCONFIGURATOR
3. Пытаюсь опросить 1 и 2 входы МВ210-101, и прочитать из них переменные типа FLOAT и Integer.
Для этого в "Universal Modbus Device" добавлен несколько подэлементов типа "real input module" со следующими настройками:
Real Input Module (VAR)_0: Registr Address=4000, Command=Read Holding Registers (0x03)
Real Input Module (VAR)_1: Registr Address=4001, Command=Read Input Registers (0x04)
Real Input Module (VAR)_2: Registr Address=4002, Command=Read bytes (0x70)
Real Input Module (VAR)_3: Registr Address=4003, Command=Read Holding Registers (0x03)
Real Input Module (VAR)_0: Registr Address=4064, Command=Read Holding Registers (0x03)
Соответственно созданы глобальные переменные для каждого из подэлементов, программа прогружена в контроллер и запущена.
Вопрос в том, что модуль не опрашивается, и ни одна из этих переменных не изменяется.
Что я делаю не так?
Real Input Module (VAR)_1: Registr Address=4001, Command=Read Input Registers (0x04)
Real Input Module (VAR)_2: Registr Address=4002, Command=Read bytes (0x70)
Real Input Module (VAR)_3: Registr Address=4003, Command=Read Holding Registers (0x03)
Вот откуда вы это все взяли ???????
Адреса взял из РЭ МВ210-101, табл. 6.2
А вот откуда брать команды, я не знаю.
внимательнее читайте РЭ, а то вы тут начали читать 4001 регистр, когда он же используется в 4000-м так как это вторая половина флоата.
А 4002 что ?
А если это в конфигураторе групповой запрос и получилась каша.
4001 я начал читать, когда в 4000 получил "пусто". 4002 это Float на втором входе.
Я ж написал, что создали несколько real input в universal modbus.
И приложил скрин куска табл. 6.2
Яж поэтому и попросил объяснить, что делаю не так.
Нормального мануала для чайников я не нашел. А в примере обмена между МВ210-310 и ПлК110 только дискретный модуль.
Мне вот хочется спросить тех, кто делал этот прибор, Куда делись регистры между двумя значаниями float ??????
Евгений Багаев
25.01.2019, 15:24
Куда делись регистры между двумя значаниями float ??????
Они есть и содержат циклическое время измерения. РЭ находится на правке, скоро регистры будут указаны в таблице.
Ранее писал об этом тут (http://www.owen.ru/forum/showthread.php?t=30395&p=296265&viewfull=1#post296265).
"Мне вот хочется спросить идиотов" ну пока идиотом себя чувствую я.
Всё-таки подскажет кто нибудь, как их сконектить, и правильно ли я поставил "real input" для значения float?
я бы предложил спрашивающему поиграться порядком расположения байт или оставить в конфигураторе плк только целочисленные регистры
Целочисленные я тоже прописал. Данные с первого канала. Тип - INT16, адрес регистра - 4064. Но непонятно, какую команду прописывать далее - тех, которые, вроде, подходят по смыслу несколько штук:
Read Holding Registers (0x03)
Read Input Registers (0x04)
Read bytes (0x70)40908
ну наконец то даже скрины появились, сразу же смотреть дальше не буду, убирайте шаблоны, нормальной работы у контроллера не будет, это только для процесса самообучения/привыкания
Зря не посмотрели.
Они просто так стоят. Я их прописал, чтобы было от чего отталкиваться в выборе типов, и в отросах они не участвуют. Не хочу 1000 лишних раз прогрудать контроллер. То, что нужно находится над этим шаблоном.
В правой части выделен первый канал с чтением типа integer.
И, если так критично, могу его удалить, и предоставить нужный скрин, или саму программу.
REAl это FLOAT? Я для уточнения.
Чтение одиночных регистров, это Вы имеете ввиду, что надо удалить все "real input", оставив один, и в нем экспериментировать с адресами регистров?
Если да, то с какого адреса начать (4000, как в мануале?), и с каким шагом?
я бы единственным регистром выбрал в начале 900(0x384), если он покажет хоть какое то значение, то можно добавить второй регистр и снимать информацию с регистров 4000 и 4001, если из них можно на ПК будет получить флоат/реал то можно попытаться использовать input real
Уважаемый capzap. Не могли бы Вы объяснить чайнику как сделать следующее:
1. "я бы единственным регистром выбрал в начале 900(0x384)," - где это сделать? Я
40915
2. думал, что этот регистр выбирается в "Real Input Module (VAR)", который я прописал в "Universal Modbus Device".
40916
Возможно, в чем нибудь , поможет этот снимок:
40917
40918
40919
внизу таблицы регистров, 900 определяет время архивирования, его тип слово(регистр), а не флоат.
Ну пусть будет Real Input Module с 4000, если в режиме онлайн Вы видите число близкое к нулю, попробуйте поменять 10 пункт из первого скрина Trace на Native
40920
40921
Забыл опрос периода архивирования добавить
40922
Ну и еще одно редактирование - посмотрел статус канала "Last error" модуля "Modbus (Мастер)", а там ошибка "85" - Ошибка при приеме/передаче по сети TCP/IP.
40923
Теперь уже другой вопрос - почему она может возникать?
В общем получается так:
Добавляю "Modbus (Мастер) (VAR)" и прогружаю, с запуском "Онлайн" - все нормально: Last error=0
Добавляю "Universal Modbus Device" с настройками по умолчанию (NetMode=serial) и прогружаю, с запуском "Онлайн" - все нормально: Last error=0
Меняю настройки на данные моего модуля и прогружаю, с запуском "Онлайн" - все нормально: Last error=0
40924
Добавляю "Register input module" для чтения 900 адреса - Last error=85 (Ошибка при приеме/передаче по сети TCP/IP)
40925
ну раз сокеты закончились, наверное стоит сделать на плк сброс
Холодный сброс или заводской сброс через CODESYS или как то по другому?
помимо конфигуратора в проекте есть какое нибудь управление сокетами?
Да вроде нигде ничего не прописывал, программа видна на экране: задействованы только глобальные перем
Прошивку делали, после этого таргеты переустанавливали?
Прошивка v.2.17.0_PLC100 (с поддержкой OwenCloud).
Таргет - v2.12_for_PLC100_PLC150_PLC154 (с поддержкой OwenCloud). Но в ПЛКИНФО пишет, что 2.10 - это мне непонятно.
Сначала делал прошивку, потом скачал и установил таргет и запустил CODESYS для создания нового проекта. Сделал правильно?
Нет. Что нибудь можете посоветовать?
Установил
409294093040931
попробовал
40932409334093440935
Результаты не порадовали - что это может быть?
А косяк, то пока получается в адресах регистров. Потому, что чтение регистра float - херня какая то, а integer показывает правильно.
реальное значение температуры - около 30 градусов.
40937
установил еще и owen opc server.
Но в CODESYS все равно не работает.
поигрался с режимами Trace mode <=> Native
В очередной раз прописал "Real input module" с адресов читаемого регистра 4071 (Значение (integer) на входе 8 в формате int16).
Но сразу же ошибка 85!
нет не в адресах, надо изменить порядок байт то что в запросе 786041А6 получается 30 градусов на скрине
А можно попонятнее это объяснить.
Во первых, что за data monitor? И в нем ли надо изменить порядок опроса?
Да, при этом изменении
40939
В MasterOPC все заработало
40940
Осталось с ПЛК разобраться!
В ОвенOPC Изменил значения
40941
И он тоже заработал
40942
Ну и остался сущий пустяк - разобраться со связкой МВ210 - ПЛК150 по TCP!
Попробовал - не работает. Float пока даже не трогаю. Пробую int16.
409444094540946
409474094840949
Ильнур Гибадуллин
26.01.2019, 23:37
Попробовал - не работает. Float пока даже не трогаю. Пробую int16.
409444094540946
409474094840949
Здравствуйте!
Обратите внимание на IP адрес в Конфигурации ПЛК - он выставляется с двоеточиями между числами, а не точками. Например, 192:168:11:51. У Вас же стоят точки.
Также, если Вы считываете один регистр, то следует использовать Register Input Module, если float (real), то, соответственно, Real Input Module.
ДА ТВОЮЖ ......
Например, 192:168:11:51
40955
Ильнур, спасибо ОГРОМНОЕ!!! Две недели мучаюсь, зат..... техподдержку, здесь всех зат... ну тоже самое сделал, а оказывается дело в моем зрении!!!
Все заработало!!!
40954
ВСЕМ ОГРОМНОЕ СПАСИБО!!!
Еще раз здравствуйте.
Остался последний вопрос
если Вы считываете один регистр, то следует использовать Register Input Module, если float (real), то, соответственно, Real Input Module.
с int16 все нормально, а если возможность в CODESYS сделать перестановку байт в пакете, что бы получить значение "float" с устройства?
Или это делается как то по другому, например с помощью какой то биб-ки?
Ильнур Гибадуллин
27.01.2019, 13:25
Еще раз здравствуйте.
Остался последний вопрос
с int16 все нормально, а если возможность в CODESYS сделать перестановку байт в пакете, что бы получить значение "float" с устройства?
Или это делается как то по другому, например с помощью какой то биб-ки?
Получение значения типа float аналогичен считыванию показаний типа int16. Как я ранее упомянул, достаточно выбрать Real Input module и указать адрес регистра, например, 4000. Если полученное значение будет слишком мало или слишком высоко, в параметре Byte Sequence в Universal Modbus device следует выбрать Native или Trace_Mode.
Получение значения типа float аналогичен считыванию показаний типа int16. Как я ранее упомянул, достаточно выбрать Real Input module и указать адрес регистра, например, 4000. Если полученное значение будет слишком мало или слишком высоко, в параметре Byte Sequence в Universal Modbus device следует выбрать Native или Trace_Mode.
Спасибо.
Забыл его поменять - все работает.
ОГРОМНОЕ спасибо уважаемым capzap и Ильнуру Гибадуллину за помощь в решении моего вопроса.
Все работает.
Тему можно закрыть
PS А флеш контроллера я, все таки, кажется угробил!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot