Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Сцепить каналы в строку
- В этой теме 75 ответов, 6 участников, последнее обновление 4 месяца, 3 недели назад сделано
Mihail.D..
-
АвторСообщения
-
25.05.2025 в 00:06 #38504
manjey73УчастникДа можно отображать строки любой длины.
Там проблема в их обработке.
Когда у вас массив, формула выполняется для каждого элемента массива.
Одно из правил, вы должны написать формулу так, чтобы она обрабатывала весь массив, но при этом выполнилась только в 0 элементе массива, а в остальных случаях отрабатывала вхолостую.25.05.2025 в 00:21 #38505
manjey73УчастникИ какова строка в данном случае? Как она в ПЛК отображается?
SN???????? или ????????SNСдается что один регистр это две буквы, а остальные 8 это уже просто число.
-
Ответ изменён 5 месяцев, 2 недели назад пользователем
manjey73.
25.05.2025 в 09:34 #38508petuhovdmitry
Участник> Сдается что один регистр это две буквы, а остальные 8 это уже просто число.
Да, четыре числа, хранящиеся в отдельных ячейках регистра.Этот пример — это версия прошивки ПЛК.
Должна бы выглядять как: 1.0.5.114.NSПока нашел допустимым выводить в табличке, как:
Версия прошивки ПЛК | 105.114
Суффикс версии прошивки ПЛК | NSДалее, нужно будет научится выводить GTIN (14 цифр), дату производства (DD.MM.YYYY), партию (может содержать не только цифры)
https://ncloud.interra.company/s/HEqAmtpK6DenaRSНу, и вишенкой на торте — код маркировки, который 31+ символов
25.05.2025 в 10:41 #38511
manjey73УчастникА, тогда понятно. Было такое предположение.
Да, вам придется считывать 5 регистров, и писать общую формулу для создания строки длиной 2 или 3, чтобы ещё точки добавить.25.05.2025 в 10:43 #38512
manjey73УчастникВсе 5 как ushort. Там где буквы переставлять. Ну и потом скриптом это все сцеплять, обрабатывая.
В общем сделать можно.25.05.2025 в 10:44 #38513
manjey73УчастникДату наверное даже проще вывести 😀
25.05.2025 в 10:51 #38514
manjey73УчастникGTIN это число всегда? Насколько большое?
Тут больше вопрос, для чего все это надо?
Вот типа а нафига хранить версию ПЛК в базах? Если просто можно выводить на экран и не хранить.
Для чего в дальнейшем остальные параметры?
Может рассмотреть вариант использования Postgre с настройкой базы под задачу и экспортировать данные из Рапиды модулем?
Формулы в строки все равно делать, но у вас будет бд под требуемую задачу параллельно с нормальными данными, а не с массивами double, которые ещё надо постоянно преобразовывать?25.05.2025 в 12:09 #38515petuhovdmitry
УчастникДа, всегда число, но он, как правило начинается с нуля, поэтому его хранят как строку, чтобы не терять ведущий ноль.
https://markirovka.ru/knowledge/fast_start/glossary/gtinВерсию ПЛК возможно хранить для истории взаимодействия, при анализе ошибок, для удобства обслуживания.
Партия, дата выпуска — это параметры производственного задания,,
Код маркировкий — результат работытсистемы цифройой маркировки.Да, есть мысль, что в ПЛК будет храниться только идентификатор задания (ссылка), а все подробности — в базе postgre, но сейчас я пытаюсь, на основе нашей текущей реализации включть Рапиду, как средство централизованного контроля и управления. В первом своем посте я об этом упоминал вскользь — «Понятное дело, что для этого в скаде, нужно будет настроить хренения в PostgreSQL. Сие возможно нынче?»
25.05.2025 в 12:12 #38516petuhovdmitry
УчастникВсе 5 как ushort. Там где буквы переставлять. Ну и потом скриптом это все сцеплять, обрабатывая.
Примерно так и сделал в формуле:
Val(43).ToString() + Val(44).ToString() + Val(45).ToString() + «.» + Val(46).ToString()25.05.2025 в 12:13 #38517petuhovdmitry
УчастникДату наверное даже проще вывести
Придется же резать 2 символа года, иначе не войдет в 8?
25.05.2025 в 12:15 #38518petuhovdmitry
УчастникА, тогда понятно. Было такое предположение.
Да, вам придется считывать 5 регистров, и писать общую формулу для создания строки длиной 2 или 3, чтобы ещё точки добавить.Так режет скада, если больше 8 символов в результате, не включает остальное в ячейку таблицы на вывод
25.05.2025 в 12:16 #38519
manjey73УчастникНу можно и встроенные бд использовать, но если надо забирать другими системами, то лучше Postgre.
Вопрос подхода. Если просто сделать бд Postgre, вы получите ту же шляпу с массивами double и преобразованиями.
Если нужно данные использовать другими системами, то во внутренней или Postgre бд так, как понимает Рапида, создание дополнительных бд для строк в нужном виде и экспорт из Рапиды в доп базы.25.05.2025 в 12:17 #38520
manjey73УчастникЯ понял, сейчас вам надо привести все к строками. Один пример с NS есть.
Остальное в виде логов запрос/ответ выкладывайте, и как оно должно выглядеть в виде строки.
Сделаем скрипты.26.05.2025 в 14:39 #38545
MikhailМодераторДобрый день
Сие возможно нынче?
Да. По сравнению с 2018 годом, когда начата эта тема, стало проще.
Это значит, что я в принципе в табличных представлениях не смогу, например, отобразить (и хранить изменения) GTIN продукта (14 цифр), не говоря уж о Коде маркировки 31+ символов, номер партии, который может быть 8+ символов, не раскладывая это по восьмибайтным кускам?
В табличном представлении можно отобразить значение канала в 16-ричной форме, но в одном канале 8 байт, соответственно максимум 16 символов.
Если строка длиннее, то либо отобразить её как несколько разных каналов 16-ричном виде, либо склеить в длинную строку как символы.26.05.2025 в 14:40 #38546
MikhailМодераторПолучите исходные данные в каналы и присылайте скриншоты, чтобы было понятнее, что с ними удобнее сделать.
-
Ответ изменён 5 месяцев, 2 недели назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.