Сцепить каналы в строку

Просмотр 15 сообщений - с 31 по 45 (из 76 всего)
  • Автор
    Сообщения
  • #38504
    manjey73
    Участник

    Да можно отображать строки любой длины.
    Там проблема в их обработке.
    Когда у вас массив, формула выполняется для каждого элемента массива.
    Одно из правил, вы должны написать формулу так, чтобы она обрабатывала весь массив, но при этом выполнилась только в 0 элементе массива, а в остальных случаях отрабатывала вхолостую.

    #38505
    manjey73
    Участник

    И какова строка в данном случае? Как она в ПЛК отображается?
    SN???????? или ????????SN

    Сдается что один регистр это две буквы, а остальные 8 это уже просто число.

    • Ответ изменён 5 месяцев, 2 недели назад пользователем manjey73.
    #38508
    petuhovdmitry
    Участник

    > Сдается что один регистр это две буквы, а остальные 8 это уже просто число.
    Да, четыре числа, хранящиеся в отдельных ячейках регистра.

    Этот пример — это версия прошивки ПЛК.
    Должна бы выглядять как: 1.0.5.114.NS

    Пока нашел допустимым выводить в табличке, как:
    Версия прошивки ПЛК | 105.114
    Суффикс версии прошивки ПЛК | NS

    Далее, нужно будет научится выводить GTIN (14 цифр), дату производства (DD.MM.YYYY), партию (может содержать не только цифры)
    https://ncloud.interra.company/s/HEqAmtpK6DenaRS

    Ну, и вишенкой на торте — код маркировки, который 31+ символов

    #38511
    manjey73
    Участник

    А, тогда понятно. Было такое предположение.
    Да, вам придется считывать 5 регистров, и писать общую формулу для создания строки длиной 2 или 3, чтобы ещё точки добавить.

    #38512
    manjey73
    Участник

    Все 5 как ushort. Там где буквы переставлять. Ну и потом скриптом это все сцеплять, обрабатывая.
    В общем сделать можно.

    #38513
    manjey73
    Участник

    Дату наверное даже проще вывести 😀

    #38514
    manjey73
    Участник

    GTIN это число всегда? Насколько большое?

    Тут больше вопрос, для чего все это надо?
    Вот типа а нафига хранить версию ПЛК в базах? Если просто можно выводить на экран и не хранить.
    Для чего в дальнейшем остальные параметры?
    Может рассмотреть вариант использования Postgre с настройкой базы под задачу и экспортировать данные из Рапиды модулем?
    Формулы в строки все равно делать, но у вас будет бд под требуемую задачу параллельно с нормальными данными, а не с массивами double, которые ещё надо постоянно преобразовывать?

    #38515
    petuhovdmitry
    Участник

    Да, всегда число, но он, как правило начинается с нуля, поэтому его хранят как строку, чтобы не терять ведущий ноль.
    https://markirovka.ru/knowledge/fast_start/glossary/gtin

    Версию ПЛК возможно хранить для истории взаимодействия, при анализе ошибок, для удобства обслуживания.

    Партия, дата выпуска — это параметры производственного задания,,
    Код маркировкий — результат работытсистемы цифройой маркировки.

    Да, есть мысль, что в ПЛК будет храниться только идентификатор задания (ссылка), а все подробности — в базе postgre, но сейчас я пытаюсь, на основе нашей текущей реализации включть Рапиду, как средство централизованного контроля и управления. В первом своем посте я об этом упоминал вскользь — «Понятное дело, что для этого в скаде, нужно будет настроить хренения в PostgreSQL. Сие возможно нынче?»

    #38516
    petuhovdmitry
    Участник

    Все 5 как ushort. Там где буквы переставлять. Ну и потом скриптом это все сцеплять, обрабатывая.

    Примерно так и сделал в формуле:
    Val(43).ToString() + Val(44).ToString() + Val(45).ToString() + «.» + Val(46).ToString()

    #38517
    petuhovdmitry
    Участник

    Дату наверное даже проще вывести

    Придется же резать 2 символа года, иначе не войдет в 8?

    #38518
    petuhovdmitry
    Участник

    А, тогда понятно. Было такое предположение.
    Да, вам придется считывать 5 регистров, и писать общую формулу для создания строки длиной 2 или 3, чтобы ещё точки добавить.

    Так режет скада, если больше 8 символов в результате, не включает остальное в ячейку таблицы на вывод

    #38519
    manjey73
    Участник

    Ну можно и встроенные бд использовать, но если надо забирать другими системами, то лучше Postgre.
    Вопрос подхода. Если просто сделать бд Postgre, вы получите ту же шляпу с массивами double и преобразованиями.
    Если нужно данные использовать другими системами, то во внутренней или Postgre бд так, как понимает Рапида, создание дополнительных бд для строк в нужном виде и экспорт из Рапиды в доп базы.

    #38520
    manjey73
    Участник

    Я понял, сейчас вам надо привести все к строками. Один пример с NS есть.
    Остальное в виде логов запрос/ответ выкладывайте, и как оно должно выглядеть в виде строки.
    Сделаем скрипты.

    #38545
    Mikhail
    Модератор

    Добрый день

    Сие возможно нынче?

    Да. По сравнению с 2018 годом, когда начата эта тема, стало проще.

    Это значит, что я в принципе в табличных представлениях не смогу, например, отобразить (и хранить изменения) GTIN продукта (14 цифр), не говоря уж о Коде маркировки 31+ символов, номер партии, который может быть 8+ символов, не раскладывая это по восьмибайтным кускам?

    В табличном представлении можно отобразить значение канала в 16-ричной форме, но в одном канале 8 байт, соответственно максимум 16 символов.
    Если строка длиннее, то либо отобразить её как несколько разных каналов 16-ричном виде, либо склеить в длинную строку как символы.

    #38546
    Mikhail
    Модератор

    Получите исходные данные в каналы и присылайте скриншоты, чтобы было понятнее, что с ними удобнее сделать.

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