Кситал GSM-12T

Просмотр 15 сообщений - с 1 по 15 (из 28 всего)
  • Автор
    Записи
  • #26444
    Oakim
    Участник

    Подскажите контроллер Кситал GSM-12T может слать данные в тескстовом виде на определенный IP-адрес и TCP-порт в текстовом виде, типа:
    Формат пакета данных:

    #MAC[#NAME]\n
    #mac1#value1[#time1][#name1]\n
    ...
    #macN#valueN[#timeN][#nameN]\n
    ##

    Пример:

    #07-EF-E2-87-6A-39
    #T1#12.83#1540410942
    #T1#7.99#1540410342
    #T1#28.81#1540409742
    ##

    Как лучше разбирать подобные данные?
    Нужно писать драйвер, если да то на основании какого лучше?

    • Тема изменена 3 года, 8 месяцев назад пользователем Oakim.
    #26447
    manjey73
    Участник

    Наверное лучше модуль. А если писать драйвер, то надо чтобы он запустил в потоке прослушку и не отключал бы ее, а выполняя код Session просто проверял поступившие данные.

    #26448
    Oakim
    Участник

    А чем модуль отличается от драйвера?
    Или может эти сообщения можно разбирать как JSON?

    #26449
    manjey73
    Участник

    Это не json. JSON это ключ : значение а тут этим не пахнет
    Хотя манипуляциями в коде можно превратить ив json только уже смысла не имеет.

    Драйвер сам по себе работает от запроса до запроса, то есть вы вызываете в методе Session какой-то код и что-то обрабатываете, но между вызовами вы будете терять данные. По этому если делать как драйвер, надо что-то запустить в фоне, а потом при очередных подключениях проверять есть ли данные. Это в кратце.

    А модуль по идее запустится и будет слушать…

    По идее можно и так и так сделать, где именно будет проще, не знаю.

    #26451
    Romiros
    Участник

    По логике нужен драйвер в режиме slave. Модуль это всё-таки постобработка.

    #26458
    JurasskPark
    Участник

    На сайте производителя есть приложение написанное на Net Framework. Поставьте. Может там библиотека отдельно идёт. Чтобы код с нуля не писать.
    А два — обратитесь в тех. поддержку. Задайте им вопросы. Не укусят — это точно. Скажите, что хотите написать для SCADA. Может охотнее помогут. 🙂

    #26462
    Oakim
    Участник

    Я с производителем общался, но у него нет планов по реализации протокола Modbus в ближайшее время.
    У производителя есть два приложения (которые я знаю) одно для ПК для конфигурирования контроллера соединение через USB, второе под Android общается с контроллерами через SMS.
    По поводу приложения на .NET ничего не знаю.

    Я в принципе написал программку на .NET которая открывает порт и слушает его, нужно добавить парсинг и передавать данные в SCADA, подскажите какой драйвер можно взять за бызовый, который мозет работать TCP-сокетами?
    Или может лучше это реализовать в виде отдельного OPC-сервера и передавать в SCADA через OPC-соединение?

    #26463
    manjey73
    Участник

    Ну так и используйте свой кусок кода в драйвере.

    Если я правильно понял Михаила, то в драйвере в разделе public DevMyDriverLogic задаете ConnectionRequired = false;

    При вызове Session запускаете свой «приемник» в отдельном потоке и проверяете каждую Session что он запущен и слушает (то есть не запускаете каждый раз)

    При Терминировании Линии соответственно свой поток «приемника» закрываете

    Ну и проверяете, получил ли «приемник» данные.
    Линию по идее настраивать как TCP Сервер.

    Если честно, даже не подскажу, какой из драйверов подойдет из текущих. С открытием потока вроде нет примеров.

    #26464
    manjey73
    Участник

    Если своей программой пишите в файл, можно драйвер сделать, чтобы просто проверял файл.
    Есть пример по работе с файлом в драйвере но для 5-й версии. Могу поискать исходники старые, до ума так и не довел. На Raspberry читал датчики 1 Wire через crontab c записью в файл, а драйвером просто читал этот файл и забирал данные.

    #26465
    manjey73
    Участник
    #07-EF-E2-87-6A-39
    #T1#12.83#1540410942
    #T1#7.99#1540410342
    #T1#28.81#1540409742
    ##

    Тут у вас непосредственно по данным по сути массив строк, разделитель #, первое поле типа идентификатор, потом данные, вероятно с меткой времени

    #26467
    Oakim
    Участник

    #07-EF-E2-87-6A-39 — идентификатор прибора
    #T1 — Тип и номер датчика
    #12.83 — Показания датчика
    #1540410942 — Наименование датчика, может быть любым

    #26468
    manjey73
    Участник

    Не столь важно, вопрос как вы будете создавать теги, если Кситал ничего не прислал?

    Или его как-то можно опросить, чтобы он прислал все данные? например отправив SMS ?

    • Ответ изменён 3 года, 7 месяцев назад пользователем manjey73.
    #26474
    Mikhail
    Модератор

    Здесь подойдёт драйвер для Коммуникатора, а не модуль для Сервера.
    Из существующих драйверов, которые выложены на GitHub, все являются ведущими, а Вам нужен режим ведомого.
    Внутри логики устройства потребуется реализовать методы ReceiveIncomingRequest и ProcessIncomingRequest.

    #26485
    Oakim
    Участник

    Михаил, а если принять Коммуникатором сообщение, после чего его распарсить формулой из которой присвоить значения нескольким каналам?

    #26486
    manjey73
    Участник

    Совсем непонятный вопрос…
    На лету никак, так как чтобы присвоить каналу значение, этот канал нужно предварительно создать.

    То есть сделать шаблон тегов в Коммуникаторе. Создать их предварительно при запуске линии связи.

Просмотр 15 сообщений - с 1 по 15 (из 28 всего)
  • Для ответа в этой теме необходимо авторизоваться.