Просмотр полной версии : OPC сервер ИНСАТ
Добрый день. Помогите пожалуйста новичку. Получаю данные от счетчика в таком формате 9B 61 B9 3F FE C5 AF 42 2D 04 00 00 02 4E 00 00 00 00 6B B9.
Как мне настроить сервер чтобы отдельно прочитать 9B 61 B9 3F, отдельно FE C5 AF 42, отдельно 2D 04 00 00?
Если это Modbus, сделать разные запросы, или правильно настроить группу.
Если это иной протокол, типа просто известный запрос и массив полученных байт, то наверное парсить скриптами.
Вопрос не ясен в самом начале.
Модбас. Прикладываю скрин от производителя8042980430
Модбас.
Что-то не похоже. На первый взгляд.
Ну раз Modbus, то очень странно, что в OPC сервере вы не можете указать какие регистры какой переменной принадлежат. Это какой-то нонсенс. Значит читайте документацию на OPC сервер и его настройку.
Хотя да, а где в ответе адрес отвечающего слейв устройства и другие параметры заголовка ответа? И откуда там Modbus? сами придумали, или потому что расчет CRC аналогичный?
Ну да, CRC такая же как в Modbus. но протокол тут в целом при чем? :)
Нонсенс не нонсенс. Если б я знал я б не писал.
осталось выяснить, как вы прочитали данный ответ. Или вы просто скопировали его из документации протокола? :)
А с чего Вы вдруг решили, что там modbus? Если начиная с формата команды это на modbus не похоже ни разу.
Виноват. Не модбас. Как мне вычитать данные?
осталось выяснить, как вы прочитали данный ответ. Или вы просто скопировали его из документации протокола? :)
Чтоб меньше писать. Счётчик данные отправляет. Опс читает.
Если вы планируете использовать именно Инсат OPC, то берете Universal OPC сервер с поддержкой LUA или C++, и пишите опрос вашего устройства на одном из этих языков, на чем вам будет проще.
Примеры опроса вроде должны быть на сайте.
Так чем вы получаете данные? какой именно OPC точно?
бл.... у вас вопросы, по которым объяснений НОЛЬ.
Если вы получаете данные в виде строки или массива байт, и получаете это в какую-то scada, ну так в ней и смотрите, как вытащить данные. Поддержка скриптов наверняка же есть.
Проблема в том, что если даже пример будет перед моими глазами, я не пойму что это оно. Потому прошу помощи
Вы не помощи просите, а ищите того, кто это сделает за Вас. Это не обязательно делать на форуме.
Так я не прошу чтоб за меня делали. Я прошу подсказать
Я прошу подсказать
Так подсказали уже, просто Вы не поняли, наверное. Или сделали вид, что не поняли.
Если Вы используете MPS от ИнСАТ, используйте Script protocol. Документация и прочие материалы всё на русском.
80450
Вопрос прежний - КАК? вы прочитали OPC сервером указанный вами набор байт ?
Счетчик начинает отправлять данные после получения АА 02. В сервере включил преамбулу. В моем вопросе набор байт это пример от производителя. Полученные данные от счетчика соответствуют реальным фактическим данным. У меня тоже вопрос прежний
я уже не знаю, как спрашивать.
Смотрите что показал imaex, а так же смотрите возможности того ПО, куда вы это собрались передавать данные. Путей всегда несколько.
Не могу найти данную вкладку
Так подсказали уже, просто Вы не поняли, наверное. Или сделали вид, что не поняли.
Если Вы используете MPS от ИнСАТ, используйте Script protocol. Документация и прочие материалы всё на русском.
80450
Это Multi-Protocol MasterOPC Server?
Так вот с самого начала и надо начинать. Что именно вы используете, как именно вы используете со скриншотами и т.д.
А то сразу - как? Как Ванга скажет, так и сделаете. :)
Про Multi-Protocol MasterOPC Server я выше уже писал, там есть вариант с поддержкой LUA и вариант с поддержкой C++
У меня Modbus Universal MasterOPC Server
У меня Modbus Universal MasterOPC Server
Он не подходит для этой задачи. Он работает с устройствами по протоколу Modbus.
Ну если там можно указать не float а просто массив байт и для кого вы там читаете этот массив можно разобрать, то как-то фиолетово будет.
Ну если там можно указать не float а просто массив байт и для кого вы там читаете этот массив можно разобрать, то как-то фиолетово будет.
И в какой регистр писать команду AA 02 ? А с какого регистра читать ответ?
imaex - ну оно же что-то куда-то прочитало? просто не пользуюсь OPC Инсат. Он прочитал ответ, проверил CRC, может ли он это положить в массив байт и отдать дальше не разбираясь?
imaex - ну оно же что-то куда-то прочитало?
Вот и именно что "что-то". Прочитало то, что устройство ему выплюнуло на посылку непонятного формата. Каким образом (исходя из чего) такой TX получился? Расшифровать пробовали?
Да всё равно - "out_of_service"
Не взлетит.
И в какой регистр писать команду AA 02 ? А с какого регистра читать ответ?
Не в какой. В порт отправляются символы аа 02, и счётчик передаёт в ответ массив согласно руководству счётчика.
imaex - ну оно же что-то куда-то прочитало? просто не пользуюсь OPC Инсат. Он прочитал ответ, проверил CRC, может ли он это положить в массив байт и отдать дальше не разбираясь?
У счётчика есть своя программа для работы. Я просто подсмотрел какие команды проходят через порт во время опроса
Вот и именно что "что-то". Прочитало то, что устройство ему выплюнуло на посылку непонятного формата. Каким образом (исходя из чего) такой TX получился? Расшифровать пробовали?
Да всё равно - "out_of_service"
Не взлетит.
Счётчику все равно какой ТХ. Кроме команды фас в виде аа 02. После он сразу начинает отправлять текущие значения.
Вкратце для чего все это. Есть на предприятии КНС. В КНС насос который качает канализационные воды в очистные города. В насос попадает от батона до год-она. Насос засоряется и встаёт. Иногда с последствиями. КНС территориально далеко. И не всегда есть возможность контролировать. Есть операторы 24/7 и действующая скада. Я хочу чтобы операторы видели скорость потока и могли забить тревогу. Так как не специалист в этом вопросе, поэтому прошу помощи
МихаилГл
29.11.2024, 18:14
Вкратце для чего все это. Есть на предприятии КНС. В КНС насос который качает канализационные воды в очистные города. В насос попадает от батона до год-она. Насос засоряется и встаёт. Иногда с последствиями. КНС территориально далеко. И не всегда есть возможность контролировать. Есть операторы 24/7 и действующая скада. Я хочу чтобы операторы видели скорость потока и могли забить тревогу. Так как не специалист в этом вопросе, поэтому прошу помощи
Скажу тебе так... Операторам пофиг на эти скорости. Случай из прежнего места работы. Оператор запустила насос, один из четырех. Даже не она, а автоматика по датчику верхнего уровня. Я параллельно смотрю на скаду и вижу, что уровень не падает, звоню, говорю, включите другой насос. Мне такой вопрос: так этот же работает.
Пришлось учить, что если уровень не ушел в течении минуты, то насосу пи... Ну вы поняли. Им элементарно пофиг. Если только вы автоматически выключите, тогда поможет, а оператору эти цифры до одного места.
Не совсем. Хоть и красопеткам за 60, свои обязанности они знают.
МихаилГл
29.11.2024, 18:26
Ну с другой стороны, зачем ей голову забивать? Тогжа надо делать не просто расход, например, но и аварийное окошко на нижний предел. Тогда соглашусь. Но цифры... Сегодня они одни, завтра будут другие, и вместо того чтоб менять регламент при замене насоса, лучше в скаде поменять предел аварийной сигнализации.
Ну с другой стороны, зачем ей голову забивать? Тогжа надо делать не просто расход, например, но и аварийное окошко на нижний предел. Тогда соглашусь. Но цифры... Сегодня они одни, завтра будут другие, и вместо того чтоб менять регламент при замене насоса, лучше в скаде поменять предел аварийной сигнализации.
Согласен. Но, у меня операторы больше ориетируются по цифры. Специфика такая. Хоть со скриптами я не смог подружится, но на скаде при минимальных значениях, окошошко данных могу на красный поменять. Проблема не работы с операторами, а как из массива который отправляет счётчик получить реальные цифры
AJR. Встаёт вопрос какая scada.
Ну а если вкратце.
1. Разобраться, может ли текущий OPC отдать сырыми данными, которые вы прочли scada системе?
2. Сможет ли scada система "обналичить" эти сырые данные в нужные вам переменные?
Если первый пункт "нихт" то сразу брать мульти протокольный opc с поддержкой LUA и по примерам делать для scada с формированием нужных переменных для scada.
Судя по протоколу, там фигня полная, написать для RapdScada драйвер без красот не больше дня. Хотя не знаю, но в любом случае не долго.
И ее использовать как шлюз в OPC UA для вашей scada.
AJR. Встаёт вопрос какая scada.
Ну а если вкратце.
1. Разобраться, может ли текущий OPC отдать сырыми данными, которые вы прочли scada системе?
2. Сможет ли scada система "обналичить" эти сырые данные в нужные вам переменные?
Если первый пункт "нихт" то сразу брать мульти протокольный opc с поддержкой LUA и по примерам делать для scada с формированием нужных переменных для scada.
Ответ нихт. Simple scada. Может и умеет. Но я не умею к сожалению.
Не, эту не знаю. Точнее меня она не интересует, ибо вЫндоуз :)
LUA и C++ тож не знаю, так что не помогу. А для Рапид драйвер бы сделал, тут так понимаю он примитивный, так как фиксированный набор данных вроде.
80463
Сервер данные получает. Теперь надо как то расшифровать.
Покажите, какие типы в сервере можно задавать Tag-у ?
Если там нет строки, массива то забудьте.
Берите другой сервер и гирю, и пилите, она золотая.
А, это уже другой так понимаю.
Ищите примеры скриптов, как из буфера забирать нужные байты. И преобразовывайте.
По уму конечно порт опрашивать один раз, потом другими тегами забирать из опроса
Ищите примеры скриптов, как из буфера забирать нужные байты. И преобразовывайте.
Было бы так просто
блин, поищите, были примеры для LUA точно. Как минимум начните со всех файлов установленного OPC. + справка + сайт
Кроме сообщения "Победил все же" неплохо бы показать пример победы?
Прямо в OPC или смогли передать массив байт в Scada и там раскидать ?
В общем другим тоже было бы полезно узнать как одержали победу.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot