> Это можно и без SQLite сделать - достаточно CAA File
Да можно, конечно, но фильтрация вывода... Свои фильтры городить же придётся. Я надеялся, что какой-никакой доступ к SQL-хранилищу есть, а они...
> Это можно и без SQLite сделать - достаточно CAA File
Да можно, конечно, но фильтрация вывода... Свои фильтры городить же придётся. Я надеялся, что какой-никакой доступ к SQL-хранилищу есть, а они...
Снимок.JPG Здравствуйте, подскажите пожалуйста, где найти библиотеку visutrendstorageacess 3.5.16.20 ?
Здравствуйте.
Эта библиотека входит в дистрибутив CODESYS.
У вас проблема не в ней, а в том, что в эмуляции тренды не работают.
Используйте виртуальный контроллер:
http://www.owen.ru/forum/showthread....l=1#post296706
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Здравствуйте, подскажите как быть. Делал проект года 4 назад на спк 105. После этого винда менялась раз 5. Проект сохранил к сожалению не как архив(((. Теперь после установки Codesys с библиотеками при компиляции пишет ОООчень много ошибок. В том числе я так понимаю и на библиотеки. Где теперь их искать? Или лучше вообще заново писать? Почему при создании абсолютно нового проекта для СПК105, он пишет опять таки много ошибок при компиляции?1.png Спасибо.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Добрый день!
Подскажите, пожалуйста. Есть главный цикл, внутри главного цикла другой цикл, где побайтно собирается строка, привязанная к элементу "Текстовое поле" в визуализации (строго говоря, там массив строк, элементов текстовое поле 16 штук). Должна ли быть меньше нагрузка на подсистему КДС, связывающую программу с визуализацией, если сначала собирать строку в независимую промежуточную переменную, а потом, после выхода из внутреннего цикла, присвоить текстовому полю уже собранную строку. У меня поступает в парсер пачкой 16 строк по ~ 8-10 символов. Пробовал и так, и так - честно говоря, особой разницы во времени цикла (среднем, после сброса) не заметил. Как есть примерно 150 микросекунд, так и есть.
Петр Петрович Я могу ответить невпопад, так как прочитал "строка" и про это и хотел сказать.
а) Конечно, сначала лучше собирать всё во временную переменную, а потом один раз её визуализации присваивать. Иначе же визуализация каждый раз будет пытаться обновляться. Скорости это может и не добавить, но так правильнее.
б) Работа со строками чем сделана? Штатные функции тормозят, и всем советуют переходить на работу со строками по указателям (библиотека StringUtils - НЕ OwenStringUtils, а просто). У меня при переходе со штатных CONCAT на StringUtils загрузка процессора в одном из проектов упала с 97% до 70%. Сразу прям.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Спасибо за ответы! Да, там внутри парсера цикл FOR. Насчет временной переменной понял. Тоже думал, что пока подсистема визуализации протолкнет туда каждый символ... эти переключения на другую задачу для каждого символа стабильности не добавят. А работа со строками там как таковая отсутствует - проверяется заголовок в массиве принятых по TCP байт, далее результирующая строка собирается посимвольно, через индексы (в цикле FOR, т.к. заранее известна только максимально возможная длина сообщения, выход из цикла по стоповому байту и EXIT) и пищется признак конца строки.
Последний раз редактировалось Петр Петрович; 24.07.2021 в 10:27.
Вот например:
\xE0\x00\x3A\x58\xD0\x01\x75\x44\xD0\x02\x75\x44\x C0\x03\x00\x3A\xC0\x04\x00\x44\xC0\x05\x00\x11\xF0 \x06\x7F\x4E\xF0\x07\x7F\x4E\xF0\x08\x7F\x58\xF0\x 09\x7F\x67\xC0\x0A\x00\x11\xC0\x0B\x00\x2E\xC0\x0C \x00\x4C\xF0\x0D\x7F\x52\xF0\x0E\x7F\x5D\xC0\x0F\x 00\x11\xF0\x10\x7F\x4E\xF0\x11\x7F\x4E\xF0\x12\x7F \x58\xF0\x13\x7F\x67\xC0\x14\x00\x11\xC0\x15\x00\x 2E\xC0\x16\x00\x4C\xC8\x17\x20\x31\x50\x4F\x2E\x33 \x46\x4D\xFF\xC8\x18\x31\x30\x32\x2C\x33\x30\xFF\x C8\x19\x20\x31\x50\x4F\x2E\x33\x46\x4D\xFF\xC8\x1A \x20\x31\x50\x4F\x2E\x33\x46\x4D\xFF\xC8\x1B\x20\x 31\x50\x4F\x2E\x33\x46\x4D\xFF\xC8\x1C\x20\x31\x50 \x4F\x2E\x33\x46\x4D\xFF\xC8\x1D\x20\x31\x50\x4F\x 2E\x33\x46\x4D\xFF\xC8\x1E\x20\x31\x50\x4F\x2E\x33 \x46\x4D\xFF\xC8\x1F\x20\x31\x50\x4F\x2E\x33\x46\x 4D\xFF\xC8\x20\x20\x31\x50\x4F\x2E\x33\x46\x4D\xFF \xC8\x21\x20\x31\x50\x4F\x2E\x33\x46\x4D\xFF\xC8\x 22\x20\x31\x50\x4F\x2E\x33\x46\x4D\xFF\xC8\x23\x20 \x31\x50\x4F\x2E\x33\x46\x4D\xFF\xC8\x24\x20\x31\x 50\x4F\x2E\x33\x46\x4D\xFF\x80\x28\x80\x2B
Кусок, начинающийся с C8h и заканчивающийся FFh - это строка символов, данные + индекс сигнала. А \x80\x2B (их хорошо в конце видно) это логическая единица, второй байт индекс сигнала. Вот я и прохожу последовательно весь массив входных данных, разбираю что к чему. В общем, алгоритм простейший линейный, нашли сигнатуру типа сигнала, определили индекс в какой элемент визуализации выдавать, определили конец строки в процессе прохода, если сигнал - строка символов. А как еще?