Стартовая страница › Форумы › Разработка и интеграция › Драйвер ECL Comfort 300/200
- В этой теме 46 ответов, 3 участника, последнее обновление 1 год, 4 месяца назад сделано Mikhail.
-
АвторСообщения
-
02.05.2022 в 22:02 #233527inУчастник
Да, все верно. Т.к. адрес в RAM состоит из трёх hex символов.
03.05.2022 в 11:07 #23353manjey73УчастникТо есть из трех? по вашему же коду всего два байта… то есть 4 символа hex.
Ладно, пока это не важно… с одной стороны у нас есть для Температуры 0xCE + байт
Вот это 0xCE я могу вынести как отдельный элемент, но тогда получится что-то вроде вложенных классов и с ними будет труднее сделать графическую настройку драйвера (по опыту)
Проще в каждом запросе указывать этот байт a (0xCE и т.д.) но тогда сложнее сделать разделение переменных в таблице логирования устройства, хотя если учесть, что это только для Администратора то и нужно ли?Пока пытаюсь сделать плоскую структуру…
04.05.2022 в 07:26 #233547inУчастникпо вашему же коду всего два байта… то есть 4 символа hex
Все верно. Первый символ hex — это команда (чтение, запись high/lowbyte), остальные три это адрес в памяти. В этом можно убедиться открыв мой скриншот из протокола обмена (прикладывал выше) там в таблице указаны адреса в памяти — они состоят из трех hex символов.
Может быть есть смысл сделать драйвер вроде того, как реализовано чтение модбас регистров? Т.е. при настройке мы будем указывать вручную первый и второй байт (для записи нужно продумать механизм отдельно). Задачей драйвера в таком случае будет посчитать контрольную сумму, отправить массив байт, считать ответ, проверить контрольную сумму. Привести считанное значение к нужному виду можно уже через формулы в самой RapidSCADA, можно это в драйвере не реализовывать.
В таком случае драйвер получится универсальным и будет подходить под любое приложение. Минус в том, что вручную придется заносить все параметры.
Таким образом еще и решится проблема считывания только необходимых параметров. Т.к. драйвер будет читать только то, что мы сами задали, лишних запросов к устройству не будет.04.05.2022 в 09:00 #23355manjey73Участник@7in на данный момент я так и делаю. В файл шаблона заносится 1-й и 2-й байт.
А так же 1-й байт, если переменная и чтение и запись.Формат переменной — «float», «int» и т.д. тут вы сами потом добавите в код требуемые преобразования как для чтения, так и для записи.
А так же Код и Имя тега.
Графическую настройку пока не придумал как делать. В идеале сделать согласно протокола выпадающие списки, но тогда придется таблицу делать по столбцам другим кодом. Ранее я разобрался как автоматом создавать в DataGridView, но там тогда нужно ручками все прописывать, так как ComboBox туда не притянешь просто так.
У вас есть возможность организовать удаленный доступ к прибору чтобы попробовать ?
04.05.2022 в 12:00 #23356manjey73УчастникОтправка (5): CE 3A 00 00 F4
Отправка (5): CE 38 00 00 F6
Проверьте, КС соответствует передаваемым запросам ?
04.05.2022 в 14:31 #233577inУчастникКонтрольные суммы верные. В ручном режиме можно вот здесь считать/проверять:
https://onlinehextools.com/xor-hex-numbers
Доступ к прибору организую. Будет MOXA Nport в режиме TCP Server.
Чуть позже предоставлю IP адрес и порт для доступа к устройству.04.05.2022 в 14:33 #23358manjey73Участник04.05.2022 в 15:46 #23360manjey73УчастникА, нашел
private static final float NO_SENSOR = 192.0F; private static final float SENSOR_SHORTCIRCUIT = -64.0F;
Типа если нет сенсора то значение 192, если в коротком то -64
Это можно попробовать в События отправить, если будут такие значения.
15.06.2022 в 11:36 #23999manjey73УчастникВыкладываю то, что есть, разбирайтесь.
Команд на запись нет, не реализовано, читать должен. Mul и Div для дальнейшего умножения и деления полученных значений в зависимости от типа.
Если тип указан как temp то деление на 128 будет автоматически, можно установить тип float и умножить на 0,0078125 или разделить на 128 и получится то же самое по идее.p.s. делал по сути вслепую по ссылкам выше на javascript код, в коде есть лишнее вероятно, удалять не стал, вдруг пригодится кому.
Можете допиливать, если есть на чем тестировать, при необходимости добавлю или изменю текущие файлы…
- Этот ответ был изменен 1 год, 10 месяцев назад от manjey73.
15.06.2022 в 17:18 #24003MikhailМодераторДля какой версии Rapid SCADA?
Можно ли выложить этот драйвер в репозиторий модулей?16.06.2022 в 13:08 #24018manjey73УчастникДля 6-й версии. @7in писал, что неправильной записью команды можно уложить прибор, по этому без точного понимания что и куда пишется не стал делать команды.
По сути это набросок драйвера но был проверен на чтение.
09.09.2022 в 12:37 #248817inУчастникПриношу извинения за то, что пропал на некоторое время. Огромное Вам спасибо за проделанную работу. Изучу Ваш драйвер и протестирую на своих приборах. О результатах обязательно здесь отпишусь.
09.09.2022 в 14:10 #24882manjey73Участник@7in если еще более подробно напишите по командам, чтобы добавить и не напортачить, было бы полезно их добавить туда же в драйвер.
06.11.2022 в 21:16 #258607inУчастникУстановил драйвер на 6.0.0~rc1 — Работает!
https://disk.yandex.ru/d/_UA3RPpecwL4kw
В ближайшее время займусь добавлением всех необходимых параметров для считывания, и соответственно проверю стабильность работы.
После этого постараюсь сформулировать как должны работать команды на запись.
Еще раз большое спасибо.07.11.2022 в 09:17 #25863manjey73УчастникОк, пишите, постараюсь доработать. Если будут кусочки кода для понимания, будет даже быстрее.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.