Стартовая страница › Форумы › Разработка и интеграция › Протокол JP
- В этой теме 34 ответа, 3 участника, последнее обновление 1 месяц, 2 недели назад сделано Mikhail.
-
АвторСообщения
-
02.12.2024 в 23:57 #35958JurasskParkУчастник
История. Начало.
Сейчас я пишу разработку для RapidScada. Ничего необычного, простой Modbus (стандартный), но там на устройстве Динамограмма.
https://vseonefti.ru/useful/kak-chitat-dinamogrammy.htmlС чтением и отрисовкой проблем у меня не должно быть.
Но во время разработки я задумался о том, что рисовать на вебе кнопочки, картинки я еще смогу, но вот передачу команд 15 и 16 функцией сделать — гемморойно. + ощущение что динамограмму на графике бесплатном я не нарисую.Подумал, ага, раз ты такой ленивый, ну сделаешь плагин к Администратору и пускай человек запускает Администратор, нажимает кнопочку плагина и будет там рисоваться из сервера показания текущие, на тренд графике отрисовываться динамограмма… Но…
Стоит ли выдумывать какой-то свой протокол Client — TCP, который будет общаться с драйвером на Коммуникаторе или лучше изучить протокол RapidScada и научиться Telecommand отправлять из плагина?
P.S.
А то я уже продумал стандарт протокола JP (смесь Modbus и SECS).03.12.2024 в 00:26 #35959JurasskParkУчастникhttp://jurasskpark.ru//up/1733173954f7faa6e.jpg
Читаю протокол (возможно старый, т.к. 2022 года), понимаю, что клиент — это Server, а сервер — это коммуникатор.
Потому что только Server может знать поступали ли команды с веба и админки в очередь и с какого id пользователя.Но вот если с длиной команды, функцией, Id пользователя, тип команды — всё ясно и понятно, то что такое номер канала управления и как по нему будет определяться устройство на коммуникаторе — мне не ясно.
+ последовательность обмена данными еще надо реализовывать… 🙁03.12.2024 в 00:35 #35960JurasskParkУчастникЧто еще…
По сути опять мы же знаем, что драйвер отправляет логи на сервер. Сервер их получает и пишет на диск. Читает ли Администратор логи с диска или получает пот сервера по TCP — не смотрел и не изучал. Врать не буду. Но интересно )Вообщем нужно ваше мнение. Как лучше сделать и правильнее.
03.12.2024 в 01:04 #35961JurasskParkУчастникРади интереса, какой протокол я смиксовал.
Байт[00] — Длина сообщения
Байт[01] — Master или Slave (0 — Master, 1 — Slave)
Байт[02] — Необходим ответ на сообщение или нет (0 — нет, 1 — да)
Байт[03] — Адрес устройства (мл.)
Байт[04] — Адрес устройства (ст.)
Байт[05] — Раздел устройства (информация об устройстве, данные текущие, исторические) (от 0 до 255)
Байт[06] — Функция
Байт[07] — ID записи (счётчик)
Байт[08] — ID записи (счётчик)
Байт[09] — ID записи (счетчик)
Байт[10] — ID записи (счетчик)
———————
Данные [n] — элементов
Байт[х0] — Формат данных
Байт[х1] — Длина данных
Байт[х2-xn] — Данные
———————
Байт[n] — Check Sum (сумма всех элементов в сообщении без последнего байта)В формате данных будут стандартные
SHORT
USHORT
INT
UINT
LONG
ULONG
FLOAT
DECIMAL
Так и текстовые
ASCII
UTF8
Так и необычные
LIST[количество элементов] список
BOOL истина / ложь
То есть в текстовом виде LIST
LIST[2]
UTF8[5] USERS
INT[2] 01.02.03.04 05.06.07.0803.12.2024 в 08:29 #35962manjey73УчастникМихаил как-то упоминал, что можно сделать драйвер, поверх другого драйвера.
Если применительно к Modbus.
То есть добавить те самые функции Modbus, которых сейчас в нем нет.Читает логи, если я правильно понимаю Администратор через Агента с диска, так как Коммуникатор и Web могут быть на других ПК. Там вообще взаимодействие идёт через Агента.
03.12.2024 в 08:47 #35963manjey73Участник1. Много приборов, где есть информация, которой не место в штатных БД scada, просто чтобы не занимало место. Но которую иногда хочется видеть и понимать.
Думаю Динамограммы попадают в эту категорию. Но сейчас в 6-й версии появились раздельные настройки для БД и этим надо научиться пользоваться.
По мне, так все равно можно было сделать по другому 🙂 на текущий момент можно ограничить время хранения БД. Или как вариант попробовать писать по изменению, но с хранением больший промежуток времени. в общем надо разбираться и тестировать какой из режимов больше подойдет для хранения диаграмм.
Тогда просто под каждый прибор создается БД для диаграммы на нужное количество каналов.
В драйвере можно указывать маску архива БД.2. то что такое номер канала управления и как по нему будет определяться устройство на коммуникаторе
тут ничего не понял, но возможно это из той же серии, как определять входные, выходные и т.д. каналы в базе при работе из Модуля? то есть обращаясь к базе можно по номеру канала определить в принципе все связи, в том числе и какое устройство.3. Драйвер не отправляет логи на сервер, он их пишет в файл там, где работает Коммуникатор, то есть это функция Коммуникатора сохранять логи. Потом их читает Админка через Агент.
з.ы. мое мнение, надо не придумывать свое, а использовать то, что есть в ядре, возможно улучшая.
03.12.2024 в 08:51 #35964manjey73УчастникТак же Михаил писал, что через Агента из WEB можно даже сервер перегрузить.
И вроде как через Агента можно прочитать всю базу и получить нужную информацию.03.12.2024 в 08:52 #35965JurasskParkУчастникhttp://jurasskpark.ru/pubimg/up/173320503291b7e3b.jpg
Нашел новую версию документа.
Вообщем, я подумал, что коммуникатор же читает все конфиги при запуске, и по номеру каналу (который у нас не повторяется) знает, к какому каналу и девайсу он относится.03.12.2024 в 08:58 #35966JurasskParkУчастникВообщем, вердикт использовать протокол Михаила. 🙂
А по номеру канала(тега) научиться отправлять команды Telecommand.Теперь вопрос другой.
Точка входа для Телекоманды должен быть сервер.
Если сервер и агент(коммуникатор) общаются по протоколу — тут ясно и понятно.А вот как отправить команду в сервер, чтобы он дальше здоровался и общался как ему хочется и с кем хочется(агент или коммуникатор)? 🙂
03.12.2024 в 08:58 #35967manjey73Участникне доступен твой сайт. Ни с работы, ни из дома (проверил только что)
03.12.2024 в 09:01 #35968JurasskParkУчастник03.12.2024 в 09:02 #35969JurasskParkУчастник03.12.2024 в 09:04 #35970manjey73УчастникПод протоколом имеется ввиду взаимодействие между сервером и другими компонентами, Коммуникатор, Агент и т.д.? Ну наверное да, если в нем есть все необходимое.
Возможно надо будет писать Модуль, который будет переводить команды WEB плагина в нужные команды Серверу и Коммуникатору.
Модуль с..ка быстрый 🙂Надо понять архитектуру что и как. Если это Modbus, только те команды, которых нет в штатном, я так понял лучше делать свой драйвер поверх штатного драйвера Modbus. Чтобы не писать уже готовые по новому кругу, а только то, что требуется сверху. Ну и учитывать возможность штатной настройки архивов или по маске сразу из драйвера (конфига для чего-то)
А дальше думать. Просто плагин Web, плагин плюс модуль или как-то иначе.
03.12.2024 в 09:08 #35971JurasskParkУчастникГлавная задача понять, как в сервер передать команду, чтобы он разрулил где канал находится и сам передал в коммуникатор.
Если Михаил ответит, что так нельзя (но веб же отправляет в сервер), то тогда будем из плагина напрямую в агент или коммуникатор учиться слать.03.12.2024 в 09:09 #35972manjey73УчастникИз дома открыл. з.ы. а почему просто ссылку на протокол не написать?
Надо бы ее поискать, сам не помню, какой у меня последний 🙂В общем надо точно понимать, что ты хочешь получить в итоге?
Например есть ли необходимость писать прямо таки плагин, если с чтением диаграмм может справиться штатный График или Графики Про ?
Подать в свой драйвер (или надстройку над другим драйвером) команды из web можно ведь и через Сервер штатными средствами.Если штатные Графики или Про не справятся с отрисовкой — тогда да, свой плагин.
2. Справятся ли текущие БД при определенных настройках с задачей?
Отсюда уже и плясать.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.