PDA

Просмотр полной версии : CODESYS V3.5. Архивация



Страницы : [1] 2

Евгений Кислов
31.08.2017, 08:28
Добрый день, уважаемые коллеги.

Достаточно часто у пользователей контроллеров, программируемых в среде CODESYS V3.5, возникают вопросы, связанные с работой с файлами. Среди них можно выделить два наиболее часто встречающихся:

1. Как записать данные программы на USB/SD-накопитель? (для ведения архива параметров)
2. Как считать данные с USB/SD-накопителя в программу? (для импорта рецептов)

Ответы на эти (и другие) вопросы вы найдете в документе CODESYS V3.5. Архивация. Документ содержит:


общие сведения о работе с файлами;
описание и пример использования компонента OwenArchiver;
описание библиотеки CAA File, которая используется для работы с файлами в тех случаях, когда функционала OwenArchiver оказывается недостаточно;
подробный пример работы с библиотекой.


Примеры разработаны для контроллера СПК1хх [М01] в среде CODESYS V3.5 SP11 Patch 5 и доступны для скачивания в формате .projectarchive.
При необходимости запустить их на другом контроллере - просто замените таргет-файл.

Новый компонент OwenArchiver представляет собой предельно простую в настройке систему архивации. Теперь для создания архивов в проекте достаточно сконфигурировать компонент архивации – и обойтись без усложнения кода программы. Достаточно всего лишь выбрать устройство для архивации (внутренняя память контроллера, USB, SD), задать режим архивации (циклический, по команде, по изменению значения) и привязать нужные переменные. Архив ведется в формате .csv, который может быть открыт Microsoft Excel и другим офисным ПО. Работа с компонентом описана в документе CODESYS V3.5. Архивация.

35411


https://youtu.be/rpwvyahHevw

Ссылки: OwenArchiver v3.5.4.10 (https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/01_Components/OwenArchiver_v3.5.4.10.package) / документ CODESYS V3.5 Архивация [3.0] (https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Archives_v3.0.pdf) / примеры (https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/05_Archives/)

Версия компонента 3.5.4.10 подходит для контроллеров с системой исполнения 3.5.17.30.
Для контроллеров с более старой системой исполнения следует использовать версию компонента OwenArchiver v3.5.4.9 (https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/01_Components/OwenArchiver_v3.5.4.9.package).

Евгений Кислов
04.09.2017, 18:10
Проблемы с фтп решены - все ссылки активны.

Alexey0027
26.09.2017, 20:19
Слушайте , вы чего издеваетесь !!! Старые библиотеки не работают и поддержка прекращена, новые скачать кроме как прочитать лицензионное соглашение невозможно !!! Несерьезно для крупной конторы!

Евгений Кислов
26.09.2017, 20:36
Слушайте , вы чего издеваетесь !!! Старые библиотеки не работают и поддержка прекращена, новые скачать кроме как прочитать лицензионное соглашение невозможно !!! Несерьезно для крупной конторы!

Добрый вечер. Старые библиотеки работают (в случае их корректного использования) и техподдержка в любом случае осуществляет по ним консультации; "новых" библиотек в данный момент нет.
Если вы детально опишите, в чем проблема (лучше - в виде письма на support@owen.ru) - то, разумеется, мы постараемся вам помочь.

Alexey0027
27.09.2017, 10:34
какие данные для правильного ответа ван необходимы? Я сделал все как в вашем примере уже пробовал по разному никак не работает архивация , данные видно что в архив идут а флэшка хронически монтируется и не определяются обьемы размер 4 гига. Я уже не первый год с вашими ПЛК работаю. всегда решал проблемы если нужно в обход на втором кодесе , но тут полный капут с 3-м , когда касается библиотек. СПК 207,03,00-CS-WEB.Могу скинуть проект на поглядеть там только тест библиотеки

Alexey0027
27.09.2017, 11:07
Добрый вечер. Старые библиотеки работают (в случае их корректного использования) . а где описание ина русском языке библиотеки ArchiverSPK. нет ее кроме нескольких примеров найденных в сети и не на сайте овен .

Евгений Кислов
27.09.2017, 11:18
Описание библиотеки (т.е. описание одного блока, из которого она состоит) интегрировано в библиотеку.

По поводу вашего проекта.

1. Если вы используете прошивку из этой темы (http://www.owen.ru/forum/showthread.php?t=25756), то библиотеку необходимо обновить до версии 3.5.4.2:
http://ftp.owen.ru/index.html/CoDeSys3/04_Library/02_Manual_installation/09_ArchiverSPK/3.5.4.2/ArchiverSPK_3.5.4.2.compiled-library
Об этом упомянуто в той же теме, в спойлере Модернизация существующего проекта.

2. В вашем проекте некорректно реализована настройка параметров архивации.

У вас: Arch1.ARCH_Data[0].dDT
Надо: ARCH_Data[0].dDT
(и так далее со всеми параметрами)

3. В вашем проекте некорректный порядок вызова блоков - архиватор вызывается еще до того, как были заданы параметры архивации (у его блока номер 0).

После исправлений ваш проект у меня работает корректно.

Morozbl4
09.11.2017, 10:43
Добрый день!
При тесте примера на контроллере СПК207 модуль не видит USB, при этом SD карта и внутренняя память видны и операции с файлами выполняются.

Евгений Кислов
09.11.2017, 11:14
Добрый день!
При тесте примера на контроллере СПК207 модуль не видит USB, при этом SD карта и внутренняя память видны и операции с файлами выполняются.

Добрый день.

Проверьте, соответствует ли накопитель требованиям, приведенным в п. 2.3.
Подключитесь к контроллеру с помощью WinSCP (см. п. 2.8) и сделайте скриншот содержимого папки /mnt/ufs/media.
Выложите скриншот сюда.

Morozbl4
10.11.2017, 15:29
Извиняюсь. Все по неопытности.
Обновили всю конфигурацию - все видно.

Дополнительный вопрос:
На странице 10 руководства есть такой абзац:
При архивировании строк типа WSTRING для корректного отображения архива в текстовом
редакторе (или другом ПО) следует использовать маркер последовательности байт.

Как это должно выглядеть в программе?
Есть проблема с кодировками записываемого файла.


+ по аналогии с Вашим примером сделал "сшивание строк" при помощи WCONCAT - не работает функция (аналог Вашей CONCAT11 - там менял STRING на WSTRING)
пришлось все склеивать руками, хотя с массивами быстрее было бы.

Евгений Кислов
10.11.2017, 15:32
Я на следующей неделе постараюсь подготовить небольшой пример на тему WSTRING.


+ по аналогии с Вашим примером сделал "сшивание строк" при помощи WCONCAT - не работает функция (аналог Вашей CONCAT11 - там менял STRING на WSTRING)
пришлось все склеивать руками, хотя с массивами быстрее было бы.

Сложно что-то сказать, не видя кода. Но сама концепция подойдет и для WSTRING.

Morozbl4
10.11.2017, 16:05
ну я переделал модуль примерно так:

FUNCTION CONCAT11 : WSTRING
VAR_INPUT
asSTR: ARRAY [0..c_MAX_STR] OF WSTRING;
END_VAR
VAR
sBuffer: WSTRING; // промежуточная переменная
i: INT; // счетчик для цикла
END_VAR

VAR CONSTANT
c_MAX_STR: INT:=10; // размер массива строковых переменных
END_VAR

и, соответственно переменные с которыми он работает заменил на WSTRING.
Склеивание через массив не проходило, хотя переменные было видно.

Сейчас есть проблема с кодировкой, к сожалению... В CSV файле белиберда...

Евгений Кислов
13.11.2017, 08:45
Итак, по поводу архивации в WSTRING/Unicode.

1. Берем исходный пример и везде, где идет работа с сохраняемыми данными, меняем тип STRING на WSTRING (это касается как кода программы StringFileExample_PRG, так и вспомогательных функций и ФБ типа CONCAT11, SPLIT_DT_TO_FSTRINGS и всех остальных). Также меняем строковые функции из библиотеки Standard на аналогичные из Standard64 (CONCAT на WCONCAT и т.д.).

2. При записи в файл умножаем длину строки на 2 (т.к. у WSTRING каждый символ весит 2 байта):


fbFileWrite(xExecute:=TRUE, hFile:=hFile, pBuffer:=ADR(wsArchEntry), szSize:=2*INT_TO_UDINT(WLEN(wsArchEntry)));

3. У семейства Unicode есть разные кодировки - Utf8, Utf16, Utf32. Кроме того, бывают разные вариации с порядком байт (Big Endian и Little Endian). Чтобы упростить жизнь, придумали такую штуку, как маркер последовательности байт. В сущности - это несколько спецсимволов, которые записываются в начало файла и содержат информацию о кодировке/порядке байт. В текстовом редакторе, соответственно, эти символы не отображаются. Подробнее по ссылке (https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE% D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0 %B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0% B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2).

В CODESYS тип WSTRING связан с кодировкой UCS2. В принципе, это тот же UTF16, только каждый символ всегда занимает ровно 2 байта.
Давайте добавим к нашему файлу маркер. Создадим в программе переменную wsByteOrderMark и инициализируем ее в коде (поскольку маркер - спецсимвол, то задаем его прямо побайтно):


wsByteOrderMark[0]:=16#FEFF; // почему именно такое значение - см. ссылку выше


Маркер должен быть в начале файла - т.е. в нашем случае перед заголовком архива. Поэтому склеим его и заголовок в переменную wsFirstString:


wsFirstSting:=WCONCAT(wsByteOrderMark, c_sTitle);


И теперь везде в программе, где мы раньше использовали c_sTitle, заменим ее на wsFirstSting. Собственно, вот и вся история с маркером.

4. Не все текстовые редакторы адекватно отображают Unicode-файлы, в которых есть маркеры и спецсимволы. Например, стандартный Блокнот и встроенный редактор WinSCP - не лучший выбор. Лучше использовать что-то типа Notepad++.


Прикладываю к посту архив с адаптированным примером, в котором ведется архивация строк типа WSTRING в файл формата .txt.

FoeNicks
20.11.2017, 09:17
ФТП опять отвалился? Не могу скачать ни один файл по Кодесису 3.

Евгений Кислов
20.11.2017, 09:41
ФТП опять отвалился? Не могу скачать ни один файл по Кодесису 3.

К сожалению, да.

Upd. - починили.

Mettall
06.12.2017, 11:23
FTP - снова не работает((!

Евгений Кислов
06.12.2017, 13:26
FTP - снова не работает((!

Да, к сожалению.
Пока воспользуйтесь зеркалом:
https://yadi.sk/d/7byrC_E73QAQhC

Serhioromano
07.12.2017, 17:00
Вопрост такой. Допустим у меня есть процесс некий из 4х шагов. Это процесс сушки форукта. Под каждый фрукт разные настройки. Я хочу сохранить настройки в файл например и потом загрузить из файла.

В принципе из документа все понятно, как записать и как прочитать, как вывести список файлов, выбрать и т.д. С этим воросов нет. Но вот мне не свосем понятно с форматом. Я пришел из веб прогрммирования. Там я мог сохранять в файлы JSON потом читать и просто декодировать обратно в объект.

Что можно использовать тут что бы можно было просто обратно прочитать в в переменные? Какой формат записи что бы потом леко прочесть? Моя конфигурация это просто набор имен и значений.

RV9WFJ
07.12.2017, 17:03
Посмотрите не работу с файлами а использование рецептов.

Евгений Кислов
07.12.2017, 18:21
Проще всего читать то, что имеет заранее известный размер. Например, бинарные данные (пример есть в документе) или строки фиксированной длины.

Serhioromano
08.12.2017, 13:39
К стати только что нашел CAA Settings по моему как раз то что нужно что бы сделать небольшую базу рецептов настроек.

Евгений Кислов
08.12.2017, 13:55
Подскажите как правильно ткрыть вайл архива проекта? Просто запустить его? У меня просто открывается много ошибок и потом там не файла основной программы.

Какую версию CODESYS используете? Пример создан в SP7 Patch4.

Serhioromano
08.12.2017, 15:16
А я использовал раннюю версия. Только что скачал 7й патч но не уверено боюсь ставить. У меня много рабочих проектов, я не совсем понимаю что произодйет. Будут ли мои проекты грузиться в старые устройства или нет. Там 2 файла установочный ехе и патч. Мне их оба нужно поставить? Моя текущая версия КДС сохраниться?

Евгений Кислов
08.12.2017, 16:01
Поставьте в отдельную папку - никаких проблем не возникнет (старый КДС сохранится, все будет, как и раньше).
Установочный файл там один - формата exe.

Евгений Кислов
05.02.2018, 08:03
Состоялся релиз нового компонента архивации - OwenArchiver.
Теперь настройка архивов происходит максимально просто - через дерево проекта и в несколько кликов мыши.
Скачать компонент можно по ссылке:
http://www.owen.ru/catalog/codesys_v3/80224381

Описание работы с компонентом приведено в документе СПК. Архивация (1.0) - см. первый пост темы.

lectorleo
07.02.2018, 13:35
Добрый день. Попробовал библиотеку owenArchiver, работает. Спасибо. Но есть ньюанс: в инструкции сказано что можно не чаще чем раз в секунду если по команде старт. Но настройки не позволяют меньше 5ти секунд сделать. А мне надо раз в секунду записывать. И буквально только 5 параметров в течении 3х минут. и только один параметр в это время будет изменяться. Можно как-то обойти блокировку в 5 секунд?

Евгений Кислов
07.02.2018, 13:42
Добрый день. Попробовал библиотеку owenArchiver, работает. Спасибо. Но есть ньюанс: в инструкции сказано что можно не чаще чем раз в секунду если по команде старт. Но настройки не позволяют меньше 5ти секунд сделать. А мне надо раз в секунду записывать. И буквально только 5 параметров в течении 3х минут. и только один параметр в это время будет изменяться. Можно как-то обойти блокировку в 5 секунд?

Добрый день.

Выберите режим архивирования По команде.
На вкладке Соотнесение входов-выходов привяжите к каналу Команда записи переменную типа BOOL.
Каждую секунду генерируйте этой переменной импульсы по переднему фронту (например, с помощью таймера TON).
В результате по каждому импульсу в файл архива будет добавляться новая запись.

lectorleo
07.02.2018, 14:43
Спасибо, помогли.
По невнимательности, когда поставил По команде, забыл поставить Запуск Архиватора. И думал почему же не создается архив.

lectorleo
12.02.2018, 11:56
Добрый день.
В вашей библиотеке когда архив заполняется то он переименовывается и создается новый. А можно это как-то самому делать? Провести измерения, переименовать архив, создать новый и по новой.

Евгений Кислов
12.02.2018, 12:27
Добрый день.
В вашей библиотеке когда архив заполняется то он переименовывается и создается новый. А можно это как-то самому делать? Провести измерения, переименовать архив, создать новый и по новой.

В данный момент нет - архиватор использует фиксированные имена файлов.
Мы зафиксируем ваше пожелание для следующей версии.

Для вашей задачи пока лучше использовать архиватор совместно с библиотекой CAA File - с помощью нее можно переименовать файл после окончания архивации.

sin230376
25.02.2018, 02:41
Добрый день.

Скачал OwenArchiver, но при добавлении к проекту СПК110.Д72 v.3.5.4.26 при компиляции выдает вот такую серию ошибок:
------ Компиляция : Приложение: Device.Application -------
типизировать код...
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): ArchiverDriver: C0077: Неизвестный тип: 'Standard.R_TRIG'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): IoDrvStartBusCycle [ArchiverDriver]: C0018: 'm_fb_ArchiveWriteTrigger.CLK' is no valid assignment target
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): IoDrvStartBusCycle [ArchiverDriver]: C0077: Неизвестный тип: 'Standard.R_TRIG'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): IoDrvStartBusCycle [ArchiverDriver]: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): IoDrvStartBusCycle [ArchiverDriver]: C0077: Неизвестный тип: 'Standard.R_TRIG'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): IoDrvStartBusCycle [ArchiverDriver]: C0035: Вместо 'm_fb_ArchiveWriteTrigger' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): FB_Init [ArchiverDriver]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(gc_sInitDone, m_Info.szDeviceName)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): FB_Init [ArchiverDriver]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): FB_Init [ArchiverDriver]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): setChildsConnectors [ArchiverDriver]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(gc_sFindChildConnectors, m_Info.szDeviceName)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): setChildsConnectors [ArchiverDriver]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): setChildsConnectors [ArchiverDriver]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(gc_sUpdateConfiguration, m_Info.szDeviceName)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(m_c_sLogFilePath, _sArchiveName)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(_sArchiveName, m_c_sLogFileExtension)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [ArchiverDriver]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenfileutils, 3.5.4.8 (production association owen): write [BufferedWriter]: C0035: Вместо 'Stu.StrLenA' требуется имя программы или экземпляр функционального блока
[ERROR] owenfileutils, 3.5.4.8 (production association owen): write [BufferedWriter]: C0046: Идентификатор 'Stu' не задан
[ERROR] owenfileutils, 3.5.4.8 (production association owen): append [BufferedWriter]: C0035: Вместо 'Stu.StrLenA' требуется имя программы или экземпляр функционального блока
[ERROR] owenfileutils, 3.5.4.8 (production association owen): append [BufferedWriter]: C0046: Идентификатор 'Stu' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): FB_Init [CSVStructureArchive]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(gc_sInitDone, m_Info.szDeviceName)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): FB_Init [CSVStructureArchive]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): FB_Init [CSVStructureArchive]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(gc_sUpdateConfiguration, m_Info.szDeviceName)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(m_c_sAdditionalArchivePath, m_c_sUSBFlash)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0046: Идентификатор 'Standard' не задан
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0032: Невозможно конвертировать тип 'Неизвестный тип: 'Standard.CONCAT(m_c_sAdditionalArchivePath, m_c_sSDCard)'' в тип 'STRING(255)'
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0035: Вместо 'Standard.CONCAT' требуется имя программы или экземпляр функционального блока
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): getConfigurationParameters [CSVStructureArchive]: C0046: Идентификатор 'Standard' не задан
Компиляция завершена -- 37 ошибок, 0 предупреждений

При чем как на CS3.5 sp5 так и на sp7.

В чем причина? библиотечка очень нужна.

Евгений Кислов
25.02.2018, 09:14
Добрый день.

Архив репозитория у вас установлен?

sin230376
25.02.2018, 10:33
Наверное нет.

Где его взять?

sin230376
25.02.2018, 10:35
Это он?
SPK Repository Archive 3.5.4.20 (Архив Репозитория для СПК target 3.5.4.20)

sin230376
25.02.2018, 10:48
Установил, ошибок стало меньше, но все же остались:

------ Компиляция : Приложение: Device.Application -------
типизировать код...
[ERROR] owenfileutils, 3.5.4.8 (production association owen): write [BufferedWriter]: C0035: Вместо 'Stu.StrLenA' требуется имя программы или экземпляр функционального блока
[ERROR] owenfileutils, 3.5.4.8 (production association owen): write [BufferedWriter]: C0046: Идентификатор 'Stu' не задан
[ERROR] owenfileutils, 3.5.4.8 (production association owen): append [BufferedWriter]: C0035: Вместо 'Stu.StrLenA' требуется имя программы или экземпляр функционального блока
[ERROR] owenfileutils, 3.5.4.8 (production association owen): append [BufferedWriter]: C0046: Идентификатор 'Stu' не задан
Компиляция завершена -- 4 ошибок, 1 предупреждений

sin230376
25.02.2018, 10:58
очистил, перекомпилировал. Все заработало. СПАСИБО ОГРОМНОЕ ЗА ПОМОЩЬ!!!

sin230376
05.03.2018, 08:57
Подскажите, можно ли из программы СПК менять место хранения архива?

Евгений Кислов
05.03.2018, 08:59
Подскажите, можно ли из программы СПК менять место хранения архива?

Пока такая возможность не предусмотрена. Планируем реализовать ее в следующей версии.
Вы не могли бы описать, в какой ситуации вам потребовался такой функционал?

Николай2
21.03.2018, 22:05
Добрый вечер.
Оба примера на СПК107 работают. Пользуюсь V3.5 SP10.
Попробывал по аналогии написать свою програмку на CFC, компиляцию проходит, создаёт файл в корне папки, пишет названия столбцов, а данные записывать не желает.
Помогите люди добрые.

Ильнур Гибадуллин
21.03.2018, 22:54
Добрый вечер.
Оба примера на СПК107 работают. Пользуюсь V3.5 SP10.
Попробывал по аналогии написать свою програмку на CFC, компиляцию проходит, создаёт файл в корне папки, пишет названия столбцов, а данные записывать не желает.
Помогите люди добрые.

Добрый вечер!

Архивацию осуществляете посредством компонента OwenArchiver или через библиотеку CAA File?

Николай2
21.03.2018, 23:23
Сам создал проблему, сам нашёл. Режим активации, надо было поставить /периодически/, а стояло /по команде/.

Николай2
21.03.2018, 23:26
Спасибо за оперативность.
Использую OWENArchiver.
Я уже решил проблему.
Спасибо.

SA104
26.04.2018, 09:50
Доброго времени.
Подскажите, OWENArchiver должен с виртуальным контроллером работать?
У меня пример рабочий с этим компонентом кучу ошибок при компиляции дает, если целевая платформа - виртуальный контроллер, а с реальным таргетом СПК - все ОК.

Евгений Кислов
26.04.2018, 10:15
Доброго времени.
Подскажите, OWENArchiver должен с виртуальным контроллером работать?
У меня пример рабочий с этим компонентом кучу ошибок при компиляции дает, если целевая платформа - виртуальный контроллер, а с реальным таргетом СПК - все ОК.

Не должен.

Nazar
24.06.2018, 11:28
При использовании модуля OwenArchiver 3.5.4.7 в архиве не отображаются русские буквы (За исключением шапки первого столбца (Дата).

Дата;Дата;Время;ТгаЕ;РўРїСЂ;РўРѕР±СЂ; РўРїСЂ-РўРѕР±СЂ;V;P;Рў1;Рў2;Рў3;Рў4;Ua;Ub;Uc;Ia;Ib;Ic

В чем может быть причина?

Евгений Кислов
24.06.2018, 11:30
Выложите, пожалуйста, архив вашего проекта.

Осинский Алексей
24.06.2018, 11:40
При использовании модуля OwenArchiver 3.5.4.7 в архиве не отображаются русские буквы (За исключением шапки первого столбца (Дата).

Дата;Дата;Время;ТгаЕ;РўРїСЂ;РўРѕР±СЂ; РўРїСЂ-РўРѕР±СЂ;V;P;Рў1;Рў2;Рў3;Рў4;Ua;Ub;Uc;Ia;Ib;Ic

В чем может быть причина?

Мы наблюдали такое поведение, если архиватор перенесли из другого проекта при помощи "копировать - вставить".
При этом в проекте отображается кириллица, но по факту кодировка символов изменилась.

Если Вы переносили именно так, то попробуйте добавить и настроить архиватор заново. Должно помочь.
Если архиватор добавляли штатным образом - то, как и попросил Евгений, выложите архив проекта. Посмотрим и разберемся.

Nazar
24.06.2018, 11:57
Отправил по e-mail

Tok
09.08.2018, 06:25
Здравствуйте, а подскажите при загрузке проекта вылазит ошибка
[ERROR] owenarchiverdrivers, 3.5.4.7 (production association owen): Менеджер библиотек: Невозможно открыть библиотеку 'Standard, 3.5.2.0 (System)'. (Причина: Библиотека 'Standard, 3.5.2.0 (System)' не установлена в системе.)
[ERROR] owenarchiver, 3.5.4.7 (production association owen): Менеджер библиотек: Невозможно открыть библиотеку 'CmpErrors Interfaces, 3.5.2.0 (System)'. (Причина: Библиотека 'CmpErrors Interfaces, 3.5.2.0 (System)' не установлена в системе.)
[ERROR] owenfileutils, 3.5.4.8 (production association owen): Менеджер библиотек: Невозможно открыть библиотеку 'StringUtils, 3.5.4.0 (System)'. (Причина: Библиотека 'StringUtils, 3.5.4.0 (System)' не установлена в системе.)
Стоит CODESYS V3.5 SP5 Patch 5 библиотеки Repository_OWEN_SPK_3.5.4.20, OwenArchiver_v3.5.4.7, SPKxxx_target_3.5.4.26 .
При компиляций много ошибок. Изначально сам проект нормально компилировался все началось после попытки сделать архив. Архив делаю в OwenArchiver и делаю пример из вашего руководства. заново устанавливал и библиотеки и сам CODESYS не помогло.
Что могу делать не так?

Евгений Кислов
09.08.2018, 06:56
Добрый день. Попробуйте поставить CODESYS Repository Archive V3.5 SP4 (ссылка в подписи).

Tok
09.08.2018, 09:33
Спасибо помогло!

Евгений Кислов
14.09.2018, 08:16
Выпущена новая версия компонента OwenArchiver - v3.5.4.9.
Эта версия может быть использована как в CODESYS V3.5 SP5 Patch 5 (для СПК1хх, СПК207), так и в 3.5. SP11 Patch 5 (для СПК1хх [М01]).
Изменения:



устройство архивации и имя архива можно задавать через переменные (изменения вступают в силу по переднему фронту канала Запустить архиватор);
доступна архивация в директорию FTP-сервера (только для СПК1хх [М01];
дата и время теперь записываются в архив отдельными столбцами;
компонент может быть использован на виртуальном контроллере.


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

Обновленная документация будет доступна ближе к началу продаж СПК1хх [М01].

Скачать (https://ftp.owen.ru/CoDeSys3/04_Library/04_Components/OwenArchiver_v3.5.4.9.package)OwenArchiver v3.5.4.9 (https://ftp.owen.ru/CoDeSys3/04_Library/04_Components/OwenArchiver_v3.5.4.9.package)

LStrong
16.10.2018, 11:56
Мои 5 копеек. Для не слишком продвинутых, но настырных :). Как я понял.
OwenArchiver, обеспечивает функцинал для создание архива.
Для операций с созданным архивом нужно дополнительно использовать функционал из Example_CAA_File_v2.project.
Мне для ежедневного снятия архива на USB Flash понадобиться и то и это.
Хотя может у кого-нибудь есть другие варианты???

Осинский Алексей
16.10.2018, 12:08
Для операций с созданным архивом нужно дополнительно использовать функционал из Example_CAA_File_v2.project.
Мне для ежедневного снятия архива на USB Flash понадобиться и то и это.

Какие операции с архивом Вы имеете в виду?
OwenArchiever создает архив и наполняет его записями в соответствии с заданными настройками (периодически раз в N секунд \ по команде).

Если записанные в архив данные необходимо вычитывать и каким-то образом обрабатывать, то да. Понадобится дополнительно работа с файлами при помощи библиотеки CAA File.

LStrong
16.10.2018, 12:41
Именно так.
OwenArchiever создаст архив с заданными параметрами на SD карте, где он будет постоянно вестись.
Библиотеки CAA File позволят копировать архив на USB Flash. И далее на ПК работать со снятым архивом.

Осинский Алексей
16.10.2018, 13:20
Именно так.
OwenArchiever создаст архив с заданными параметрами на SD карте, где он будет постоянно вестись.
Библиотеки CAA File позволят копировать архив на USB Flash. И далее на ПК работать со снятым архивом.

Если у Вас архив ведется в один файл, то используйте блок Copy из библиотеки CAA File.
Если же архив ведется как структура файлов, то директорию архива проще будет скопировать через команду Linux


cp -R путькпапке путькновомуместу

(в CAA File 3.5.5.0 нет ФБ для копирования директорий).

Дать команду на копирование можно при помощи библиотеки CmpSysExec (http://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/07_CmpSysExec/1.0.0.2/CmpSysExec_1.0.0.2.compiled-library).

LStrong
16.10.2018, 15:50
Алексей, спасибо, буду делать, пока в один файл, думаю все получится. Забрал в закладки :)
Пример не осилю, времени нет, ну как у всех, но постараюсь отписать что выйдет для начинающих понимать - а на хрена он нужен этот CoDeSys

LStrong
16.10.2018, 16:18
Если у Вас архив ведется в один файл, то используйте блок Copy из библиотеки CAA File.
Если же архив ведется как структура файлов, то директорию архива проще будет скопировать через команду Linux


cp -R путькпапке путькновомуместу

(в CAA File 3.5.5.0 нет ФБ для копирования директорий).

Дать команду на копирование можно при помощи библиотеки CmpSysExec (https://www.owen.ru/license-file?f=http://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/07_CmpSysExec/1.0.0.2/CmpSysExec_1.0.0.2.compiled-library).

На FTP я конечно попал, но если не вынести в начале адреса ссылку на сайт то веселые вещи происходят в FireFox, меню сайта не дают принять соглашение, выскакивают и перекрывают его.

Осинский Алексей
16.10.2018, 16:27
На FTP я конечно попал, но если не вынести в начале адреса ссылку на сайт то веселые вещи происходят в FireFox, меню сайта не дают принять соглашение, выскакивают и перекрывают его.

Прошу прощения. Изменил ссылку в сообщении на корректную.

LStrong
18.10.2018, 13:34
OwenArchiever отлично справляется, делал по примеру, из примера взял только индикацию записи, размер архива и пуск/стоп. На SD архив пишется.
Example_CAA_File_v2.project. использовал для копирования на USBFlash предварительно записанного на SD архива, получилось. Единственное неудобство - ручной ввод имени файла архива, не забывайте вводить полностью имя файла и расширение, в моем случае "ArhUSPS.csv" (для ввода точки меняйте шифтом регистр)
Сейчас пока полностью интегрирую пример Example_CAA_File_v2.project. в свою программу. Заработает попробую убрать лишнее. Хотя откуда там лишнее, все по делу.

Осинский Алексей
18.10.2018, 13:57
OwenArchiever отлично справляется, делал по примеру, из примера взял только индикацию записи, размер архива и пуск/стоп. На SD архив пишется.
Example_CAA_File_v2.project. использовал для копирования на USBFlash предварительно записанного на SD архива, получилось. Единственное неудобство - ручной ввод имени файла архива, не забывайте вводить полностью имя файла и расширение, в моем случае "ArhUSPS.csv" (для ввода точки меняйте шифтом регистр)
Сейчас пока полностью интегрирую пример Example_CAA_File_v2.project. в свою программу. Заработает попробую убрать лишнее. Хотя откуда там лишнее, все по делу.

Добрый день!
Спасибо за отзыв. Приятно, когда у наших клиентов все получается.
Если появятся вопросы - обращайтесь, мы поможем.

LStrong
22.10.2018, 10:22
Значит так.
CoDeSys 3.5 SP13 Patch1. (согласен, мажорство) Стиль визуализации - иначе не работает у меня.
39369
OwenArchiver установил, добавил в проект, появилось -
39370
Каждый архивируемый канал для каждого параметра делается отдельно, на фото пока 7 каналов REAL.
Задал три переменные и соотнес их с нужными мне для работы с архивацией тремя параметрами (REAIN убрал позже, нет необходимости).
39371
39372
Ну и задал параметры архивации, куда и как часто. С частотой переборщил, но для эксперимента нормально.
39373
Все. Запись пошла, запись останавливается и запускается, единственное Arh_START (старт/стоп архивирования) нужно будет в TRUE по умолчанию поставить чтобы при перезапуске СПК110 начинал писать сразу. Поправлю.

Для работы с архивом в режиме: запись на SD с последующим копированием на USBFlash ежедневно применил Example_CAA_File_v2 следующим образом:
-открыл свой проект и Example_CAA_File_v2
- сразу поменял стиль визуализации в проекте Example_CAA_File_v2 на тот что выше (иначе тормоза)
- все чего нет в моем проекте вставил из Example_CAA_File_v2 как есть в папку Application, чтобы не было косяков в адресации вставляемых переменных (когда пихал в отдельную папку замучился соотношения менять). Обязательно добавьте в проект библиотеки CAA DTUtil и CAA File. Не забывайте про MainTask, тоже все добавляем.
При добавлении, если совпадают имена то меняем в своей программе, имена из Example_CAA_File_v2 сохраняем, поверьте так надежнее :)
39374
PLC_PRG это именно из Example_CAA_File_v2, а свою я переименовал в PLC_PRG_SPK.

Был момент CoDeSys решил, что СПК это не СПК, дал две ошибки и поковырявшись я решил, что я не настолько умен, откатился на шаг назад и повторил все с начала. Так что сохраняйте проект с нарастающими именами при каждом удобном случае.
Далее перенес все папки в отдельную простым перетаскиванием.
Функционал Example_CAA_File_v2 обрезать не стал, может пригодиться да и не факт, что сделаю это правильно.
Главное все работает, один раз прописал название нужного файла для копирования и теперь когда втыкаю USBFlash вижу что она примонтирована, копирую, извлекаю, каширно.

Конечно не идеально, но работает, пока так, буду допиливать.

LStrong
23.10.2018, 17:47
Все работает, СПК отключается от питания, подключается, программа обновляется (дописываю), всегда архив корректно останавливается и снова запускается, единственное нужно смотреть пока USB Flash моргает - идет копирование архива (кнопка записи только инициирует запись, на ее индикатор не стоит обращать внимание)

Morozbl4
02.11.2018, 14:21
Добрый день!
Можно ли не используя функции CAA File (маркер последовательности байт) работать с русским языком в OwenArchiver?

Евгений Кислов
02.11.2018, 14:31
Добрый день!
Можно ли не используя функции CAA File (маркер последовательности байт) работать с русским языком в OwenArchiver?

Добрый день.
Можно, никаких дополнительных средств для этого не требуется.
Возможно, я не до конца понял ваш вопрос? Почему он у вас возник?

optikras
20.12.2018, 11:43
Добрый день.

Загрузил пакет OwenArchiver 3.5.4.9. Попробовал добавить архиватор в проект, как написано в инструкции. (Нажмите ПКМ на узел Device и добавьте компонент OwenArchiver, расположенный во вкладке Разн. (Miscellaneous)). Нет такой вкладки.
40456
Версия 3.5.5.5
Как добавить устройство?

Евгений Кислов
20.12.2018, 11:47
Добрый день.
Попробуйте галочки поставить внизу меню.

optikras
20.12.2018, 12:12
40459
Ничего не получилось...

Евгений Кислов
20.12.2018, 12:16
Попробуйте включить профессиональный режим настроек согласно п. 8.2 из документа:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_FAQ_v.1.3.pdf

optikras
20.12.2018, 12:26
Да. Появилось все. Спасибо, Евгений!

optikras
20.12.2018, 14:20
Еще появились вопросы.
Записал данные в память - все чудесно.
Попытался записать данные на флешку - результат в картинках:
40462
40463
Похоже, необходимо примонтировать флешку. Автоматически она не видна.
Как это сделать?

Флешка отформатирована в FAT32 4Гб.

Евгений Кислов
20.12.2018, 14:31
Судя по скриншоту - вы как раз в память пытаетесь архивировать.
Флешка автоматически монтируется, но вы в узле Drives не активировали канал Enable Drives - поэтому не видите информацию.

optikras
20.12.2018, 14:52
Проставил в Конфигурации архива - USB-flash
40464
А как этот канал Enable Drives активировать? Не нашел...

Евгений Кислов
20.12.2018, 14:58
В столбце Подготовленное значение задайте TRUE и запишите нажатием Ctrl+F7.

optikras
20.12.2018, 15:33
Подключил переменную, включил считывание информации
40465
А флешка все равно не монтируется автоматически.
Может флешку заменить? Или чего еще нажать?

Евгений Кислов
20.12.2018, 15:38
Попробуйте флешку отформатировать утилитой HP Format Storage Tool.

SA104
20.12.2018, 15:43
Добрый день.
Пробую архивировать в папку на FTP, проект взял из примера
Соединяюсь Total Commander ом , папку архива вижу, но в ней пусто, хотя СПК размер файла показывает
на флешку все ОК пишет
какие то нюансы есть для такого режима?

Евгений Кислов
20.12.2018, 15:45
Добрый день.
Пробую архивировать в папку на FTP, проект взял из примера
Соединяюсь Total Commander ом , папку архива вижу, но в ней пусто, хотя СПК размер файла показывает
на флешку все ОК пишет
какие то нюансы есть для такого режима?

Нюанс - надо прошивку обновить на ту, что на сайте (релизную). И таргет вместе с ней.

optikras
20.12.2018, 15:58
Все равно не монтируется в автомате. Завтра принесу другую...

SA104
20.12.2018, 16:02
Спасибо !

optikras
21.12.2018, 16:19
Спасибо - все работает.

LStrong
10.01.2019, 13:12
Жень, вопрос из прошлого года, сейчас архив суточный каждый божий день приходится читать через Excel (без графиков к сожалению никак), была надежда, что в перспективе программа от МСД200 тоже сможет читать эти текстовые файлы. Сам я пока ничего не сделал, все как у людей, нет времени на крупные дела т.к. начальство заставило заниматься ерундой.
Вопрос - планы еще есть или функция мало востребована и естественно не в приоритете. :) Задолбался я в Excel вставлять удалять и ждать пока он решит показать значение под курсором. Других адекватных решений со скроллингом не нашел.
Есть у меня варианты, если что пущу всю свою энергию туда, а это будет резервный архив :))))) Буду видеографический регистратор требовать, выпрашивать, ныть, угрожать и т.д....

LStrong
10.01.2019, 13:18
Проверил, пока никак. График ОВЕН (последний) ругается на неправильную структуру.

Евгений Кислов
10.01.2019, 13:35
Формат архива, совместимого с МСД200 - запланирован к разработке.

LStrong
18.01.2019, 12:32
Неожиданный сюрприз, пару месяцев шло архивирование, ограничение размера архива установлено 20 Мб, намотал он 27 Мб с копейками без каких либо ошибок и неожиданно встал.... Обнаружилось через сутки, при просмотре снятого архива. Что интересно после перезагрузки СПК110 на SD карте (там формируется и храниться архив) появился архивный файл ArhUSPS_old.csv (так и должно было быть) с записью до момента сбоя и появился новый ArhUSPS.csv со значениями уже после перезагрузки, почти сутки выпали.
Посмотрим что будет через пару месяцев при новом заполнении. Сейчас не могу даже найти время для "поковыряться".
Почему то не отработало штатно. Пока рекомендую контролировать размер архивного файла и до того как "трах тибидох" с переполнением произойдет "ручками" на карте делать новый файл, а старый сохранять под новым именем. В смысле наоборот, ну Вы поняли, старый сохранять потом новый делать и пихать SD обратно в СПК.

Осинский Алексей
18.01.2019, 15:25
Добрый день.
Спасибо за обращение.
Я проверю. Пришлите, пожалуйста, проект (projectarchive) на support@owen.ru с пометкой "Для Осинского Алексея".
Несколько вопросов, чтобы мне было проще воспроизвести ситуацию:

Неожиданный сюрприз, пару месяцев шло архивирование
Все пару месяцев СПК работал непрерывно (не выключался)?

неожиданно встал.... Обнаружилось через сутки, при просмотре снятого архива.
После того, как "встал" никаких ошибок не было?

Что интересно после перезагрузки СПК110 на SD карте (там формируется и храниться архив) появился архивный файл ArhUSPS_old.csv
А до перезагрузки его там не было? Или не смотрели?

при просмотре снятого архива.
Архив просматривается каждые сутки? SD-карта извлекается корректно? (Остановили архивацию -> Дождались подтверждения от архиватора -> Извлекли SD-карту через функционал таргет-файла -> Получили подтверждение -> Извлекли физически).
Или просто физически извлекаете SD-карту без этого процесса?

LStrong
23.01.2019, 12:12
Извиняюсь, был занят. Алексей, я все отписал на почту.
Сейчас я все основательно проверю сначала у себя, с "краш тестами" :), сейчас архивирование идет как ни в чем не бывало.
Буду мучать СПК110 по полной. Обязательно отпишусь. Потребуется время конечно на несколько циклов проверок. По результатам посмотрим. Тем более хочется СПК с 3 RS485 и юзернетом......, но думаю спалить USB контролер на СПК110 только коротким по питанию удасться.
К стати, а нельзя по окончании записи архива с SD на USB автоматом размонтировать USB флеш, а монтирование USB флеш наоборот только по команде??? Так дельнее будет.
Еще раз, СПК110 работал и продолжает работать без сбоев, единственный сбой архивирования проверяется :)

LStrong
23.01.2019, 12:37
Может подскажете, если сделать посуточный архив то как копировать с SD на USB эти папки. Может мне этот вариант применить? Копировать предыдущий и текущий день и все. Без ограничений размеров архива на SD.

Осинский Алексей
23.01.2019, 14:04
Добрый день.

К стати, а нельзя по окончании записи архива с SD на USB автоматом размонтировать USB флеш, а монтирование USB флеш наоборот только по команде??? Так дельнее будет.
Дело в том, что архиватор не единственный, кто может писать на внешний накопитель и при попытке размонтировать по окончанию работы архиватора может произойти 3 вещи:
1) накопитель не размонтируется т.к. занят кем-то еще;
2) накопитель размонтируется и все остальные не смогут продолжить работу;
3) накопитель размонтируется, и в его расположении (например /mnt/ufs/media/sda1) образуется RAM-диск и все, кто работали с FLASH-накопителем так и не узнают о том, что накопителя уже нет.
Именно поэтому перед размонтированием нужно удостовериться, что на накопитель не идет запись.

Я предполагаю, что причиной пропажи части архива в Вашем случае стал №3.

Осинский Алексей
23.01.2019, 14:16
Может подскажете, если сделать посуточный архив то как копировать с SD на USB эти папки. Может мне этот вариант применить? Копировать предыдущий и текущий день и все. Без ограничений размеров архива на SD.

Самым простым вариантом будет скопировать директорию архива при помощи команд Linux (выполнить их из CODESYS можно при помощи функционала библиотеки CmpSysExec).
Например, для полного копирования содержимого SD-карты (путь к ней /mnt/ufs/media/mmcblk0p1) на USB-Flash (путь /mnt/ufs/media/sda1) необходимо будет выполнить команду


cp -R /mnt/ufs/media/mmcblk0p1 /mnt/ufs/media/sda1


Либо можно скопировать файлы (сгенерировав их имена из текущей даты) при помощи ФБ Copy библиотеки CAA File.

Но это будет "костылем".
Я все же предлагаю совместно найти причины пропажи части архива, и устранить их.
Письмо Ваше получил, спасибо за развернутое описание. Пробую повторить.

LStrong
23.01.2019, 14:51
Про накопитель понятно, непонятно зачем пихать на USB пользователю или СПК еще что либо при наличии SD. В смысле при работе на объектах конечно.
Это не каприз. Когда я прихожу на участок (или не я, тем более) в кармане только флешка. Linux это где то в другой галлактике, ну как минимуум в Африке. Скаде на ПК я не верю, полюбому более слабое звено.
Любой знающий как играть в "косынку" должен без проблем снять архив, задача такая, при этом запись должна идти постоянно (опасный производственный обьект по версии ростехнадзора).
Так же реализовывался ввод уставок с панели СПК (резервный вариант) и-или из Скады в любом сочетании (отказ ПК со скадой возможен, а блокировка работы участка преступление), сделали же :-), Жень Кислов, спасибо еще раз. Сейчас решаю ввод значения с запятой со стороны СПК.
По возможному останову архивирования из-за "кривых рук", не хотел, но после окончания проекта буду ограничивать доступ "детей из КИПиА" к изменению параметров, пока так пугалку поставил.
Божатся что не трогали, значит все таки №3..
Тема интересная, пробуем тестим. Может мэтры подтянутся, поделятся опытом.

Осинский Алексей
23.01.2019, 15:12
Linux это где то в другой галлактике, ну как минимуум в Африке.
Просто, чтобы исключить возможное недопонимание:
обратите внимание, что я предлагал выполнять команды Linux из программы на CODESYS (не предполагая любого другого доступа к ПЛК) как более простой способ скопировать директорию т.к. стандартного функционала для копирования директорий с содержимым CODESYS нет (на сколько мне известно) и его пришлось бы изобретать самостоятельно.

LStrong
27.01.2019, 11:19
Это понятно.
Дописываю новый вариант программы и буду все это дело испытывать.
Сбой архива как выяснилось действительно вариант №3. КИПовцы не виноваты, не в этот раз :)
Аппаратчик ночью решил подключить USB флеш к ПК со Скадой. Пока на передней панели торчат в гермовводе два входа от шнурков идущих к СПК и ПК, мне это нужно для работы. ПК не запаролен (не успел грамотно сконфигурировать чтобы под пользователем при перезагрузке автоматом запускалась визуализация Скады) и новоявленный юзер напихал USB флеш во все "Дырки" :(. Win7 сдала его с потрохами.
Запись на SD продолжилась, а вот примонтировать USB флеш в 8.00 не вышло. Далее повторная попытка в 10.00 и уже я сам понатыкал чего не надо - размонтировал из программы SD карту соответственно архив встал....
Сейчас дописываю код под датчики переполнения резервуаров и разнесу и обозначу входа на передней панели шкафа. Скорее всего вход шнурка от СПК под пломбу. Плюсом разьяснительная беседа с персоналом.
Извините что пишу много, крупное кроется в мелочах, система должна работать без сбоев.

Осинский Алексей
29.01.2019, 11:17
размонтировал из программы SD карту соответственно архив встал....

Я понял. Спасибо, что сообщили. Это не поясняет почему при ограничении в 20мб архив разросся до 27 (я проверяю). Но уже легче.
Если появится еще информация - давайте знать пожалуйста.

LStrong
30.01.2019, 20:04
Конечно отпишу, добавлю архивируемых параметров, частоту записи и уменьшу размер. Примерно чтобы каждый час переполнялся.

LStrong
12.02.2019, 13:11
Что сделал. Записки эксплуататора.
1. Вписал имя архива, ID флешки USB и SD в дефолт, при перезагрузках СПК ненужно по новой выбирать откуда куда копировать. Это более чем логично при ежедневном снятии архива. см. фото.
2. При корректном извлечении SD можно вынимать, после возвращения в СПК продолжается запись в архив (просто пока нет SD нет новых данных в текстовом файле) и это здорово товарищи! Плюсом при всех заливках в СПК с USB флеш новой программы в записи появлялись строки с нулями и после загрузки СПК архив продолжал писаться корректно. Двойным плюсом после успешного падения СПК по причине неправильного загиба рук и успешного восстановления прошивки сразу после заливки программы архив пошел дописываться, звезда в шоке... см. фото
3. Переполнение архива отрабатывается корректно, предыдущий скидывается в "имя_архива"_old.csv но нужно сделать чтобы предыдущие архивы не затирались, пока не знаю как.
4. Подключение к СПК на лицевой стороне щита защитил убрав USB разьем из рабочей зоны на периферию и все это под камеру наблюдения.
5. Чудеса закончились. :-)

С дерганьем USB пока еще не баловался. Ненужные мне визуализации из блока архивирования убрал, частично порезал просмотр каталогов, работу с бинарными и строковыми данными, но осторожно, крашится на раз и два, сохраняться приходится постоянно меняя имя проекта, иначе можно потерять все.

Осинский Алексей
13.02.2019, 09:55
3. Переполнение архива отрабатывается корректно, предыдущий скидывается в "имя_архива"_old.csv но нужно сделать чтобы предыдущие архивы не затирались, пока не знаю как.
Может Вам лучше использовать не архив одним файлом, а структуру?
Каждый день будет создаваться новый файл.
Старые будут удаляться только если превышено ограничение по размеру.


5. Чудеса закончились. :-)
Отлично!

LStrong
13.02.2019, 12:07
Здравствуйте Алексей, мне нравится оборудование ОВЕН, я имею возможность эксплуатировать его и в хвост и в гриву, соответственно я пытаюсь описать те моменты которые производитель не может учесть и испытать, не всякая эксплуатационная потребность очевидна, а также описать трудные моменты с которыми сталкивается пользователь.
Поэтому к сожалению много флуда от меня, ну а шо делать?
Как я снимаю архив:
- прихожу на участок примерно 7.30 - 8.05, проверяю соблюдение дисциплины (трудовой, производственной и т.д. и т.п.) минуты за три;
- сутки у нас считаются с 8.00 до 8.00, соответственно чтобы рассчитать суточный расход я снимаю с СПК110 архив;
сейчас это так: вставил флешь, перешел на главный экран, кликнул снять, кликнул извлечь, вернулся на информационно-развлекательный экран.
т.е. никаких вводов названия файлов, архив берется как есть, докуда записан. Единственное НО, может "выпасть" часть при переполнении размера в _old и придется вынимать SD.

Про каждый день, неплохо, но я еще не разбирался, нужно перекроить сутки на наш манер и не ясно как снимать архив, к примеру нужно за 3 дня (после выходных).
В перспективе - новый СПК110 с Юзернетом и не доконца использованы возможности скады работающей в паре с СПК110.

Сейчас я по техминимуму ввел АСУТП в пуско-наладочные и правлю программу, визуализирую все предупреждения и отработку защит. Архив работоспособен сейчас, обязательно заниматься буду, но безопасность в приоритете.

Флешку из СПК дергал вчера, но это его "родная", архив устоял. Сейчас другую подсуну раз 10 с NTFS посмотрим что будет. Надеюсь порт выдержит.

По мере поступления информации буду отписывать.

Осинский Алексей
13.02.2019, 12:35
Здравствуйте Алексей, мне нравится оборудование ОВЕН, я имею возможность эксплуатировать его и в хвост и в гриву, соответственно я пытаюсь описать те моменты которые производитель не может учесть и испытать, не всякая эксплуатационная потребность очевидна, а также описать трудные моменты с которыми сталкивается пользователь.
Поэтому к сожалению много флуда от меня, ну а шо делать?
Все ОК.
Мне, как разработчику, архиватора обратная связь очень полезна.


Как я снимаю архив:
- прихожу на участок примерно 7.30 - 8.05, проверяю соблюдение дисциплины (трудовой, производственной и т.д. и т.п.) минуты за три;
- сутки у нас считаются с 8.00 до 8.00, соответственно чтобы рассчитать суточный расход я снимаю с СПК110 архив;

В таком случае структура файлов не совсем подходит.
У нас создание нового файла происходит в 00:00.
Т.е. с утра Вам придется копировать 2 файла: за предыдущий день и за текущий день. Что не будет удобно.
Я подумаю, возможно, в будущих версиях введем настройку, отвечающую за то, во сколько происходит смена суток.



т.е. никаких вводов названия файлов, архив берется как есть, докуда записан.

При разработке не предусматривался такой сценарий использования.
Возможно, стоит предусмотреть возможность получить имя архива за текущий и предыдущий дни?



Единственное НО, может "выпасть" часть при переполнении размера в _old и придется вынимать SD.

Возможно стоит в настройках увеличить максимальный размер архива, чтобы не было ситуаций, когда за сутки появляется 2 файла?
Или при копировании сразу копировать оба файла: и стандартный и _old?


Обязательно заниматься буду, но безопасность в приоритете.
Когда будет нужно - обращайтесь, я почти каждый день здесь.

LStrong
20.02.2019, 13:44
В точку, когда архив переполнился (вижу по маленькому размеру нового архива) я просто считываю текущий архив, потом добавляю к названию _old и считываю предыдущий. Далее либо убрать _old чтобы завтра считать новый архив, либо для неопытных просто перезагрузить СПК110.
По размеру - больше 10 Мб уже возрастает время снятия архива до неприемлемого. 20 Мб снимал ваапще долго (по моим меркам :-))))
Сейчас все работает стабильно.
Я смотрю в сторону возможности выбрать нужный файл для копирования из меню просмотра содержимого SD. Меню просмотра есть, но можно только посмотреть......

yurya
22.02.2019, 14:39
Добрый день.
Вопрос по монтированию флэшки с целью создания архива на СПК110.
Размонтировать флэшку я могу, используя канал USB Unmount узла Drives.
А как грамотно смонтировать флэшку?

Осинский Алексей
22.02.2019, 15:28
как грамотно смонтировать флэшку?

Добрый день.
Как USB-Flash, так и SD-карта монтируются автоматически в момент подключения устройства.

alexx12
05.03.2019, 22:14
Добрый вечер. Осваиваю архиватор. Пишу 6 переменных типа WSTRING и одну переменную типа REAL. Екселевский формат. В строковых переменных-слова, введенные с русско-английской клавиатуры на русском языке. Наименования столбцов также на русском языке. Файл архива создается, переменные пишутся. Но не смог подобрать кодировку при открытия файла: Наименования столбцов отображаются верно, а переменные-крякозябрами. Какую кодировку надо выбирать в екселе, или каким образом настроить архиватор, чтобы архивируемые переменные были на русском языке? Контроллер 107 новой редакции.

Осинский Алексей
06.03.2019, 10:13
Добрый вечер. Осваиваю архиватор. Пишу 6 переменных типа WSTRING и одну переменную типа REAL. Екселевский формат. В строковых переменных-слова, введенные с русско-английской клавиатуры на русском языке. Наименования столбцов также на русском языке. Файл архива создается, переменные пишутся. Но не смог подобрать кодировку при открытия файла: Наименования столбцов отображаются верно, а переменные-крякозябрами. Какую кодировку надо выбирать в екселе, или каким образом настроить архиватор, чтобы архивируемые переменные были на русском языке? Контроллер 107 новой редакции.

Добрый день.
Я правильно понял, что Вы переменную типа WSTRING привязали к модулю переменной "STRING variable"?
41560

Если так, то не сработает: значение в переменной WSTRING кодируется двумя байтами, а переменная STRING - одним байтом.
Конвертируйте WSTRING в STRING при помощи функции UNICODE_TO_CP1251 из библиотеки OwenStringUtils (http://www.owen.ru/forum/showthread.php?t=25981).

LStrong
18.03.2019, 11:28
Манипуляциями с USB флешками архиватор сбить с толку не удалось. Но вот к сожалению повторилась ситуация с переполнением архива, старый превысил 10 Мб ( в итоге размер _old.csv файла 10241 Кб), а новый с 0 размером (сразу увидел в окне с размером файла архива). old скопировал, прочитал, новый ушел в отказ. Перезагрузил СПК он начал сразу писать новый архив (размер появился).
Это для информации. Разбираться придется непосредственно на СПК, буду совать почти полный архив и смотреть где "собака зарыта".
Во время сбоя никаких действий не производилось, выходные дни, только запись :)
Буду искать и отпишу если найду в чем причина, возможно некорректно удалил неиспользуемый мной функционал блока. Восстановлю все в полном обьеме и буду проверять. Пока так.

Осинский Алексей
18.03.2019, 11:46
Добрый день.
Я правильно понял, что "новый ушел в отказ" значит, что в новый файл не писались значения?



в итоге размер _old.csv файла 10241 Кб

Странно, посмотрю из-за чего могло на 1Кб переполнится.

LStrong
19.03.2019, 11:47
Возможно я что то упустил, но после копирования csv файла с флешки на компьютер он сильно потерял в весе при одинаковом количестве данных, судя по сравнению таблиц. То есть я каждый раз копирую с флешки на комп (так удобнее и быстрее) и тут заметил, что файл с флешки больше, а данные одинаковы.
ArhUSPS_old.csv оригинал с флешки, второй файл взят с компьютера.
Как всегда добраться до СПК не дают, как будто это только мне нужно, так что быстро не получиться посмотреть что там, но сделаю - отпишусь.

trejer
01.04.2019, 14:09
Здравствуйте.
СПК 107 М01.
Пишу архив на USB-flash. (OwenArchiver Версия: 3.5.4.9)
Можно ли как либо считывать файлы архива компьютером, по сети (Ethernet)?

Евгений Кислов
01.04.2019, 14:15
Здравствуйте.
СПК 107 М01.
Пишу архив на USB-flash. (OwenArchiver Версия: 3.5.4.9)
Можно ли как либо считывать файлы архива компьютером, по сети (Ethernet)?

Добрый день.
Можно по FTP, например - в архивации выбрать устройство Директория FTP.
Подключение рассмотрено тут, п. 9.7:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.2.0.pdf

RV9WFJ
01.04.2019, 14:16
Через SCP или FTP как вариант.

trejer
01.04.2019, 16:41
Добрый день.
Можно по FTP, например - в архивации выбрать устройство Директория FTP.
Подключение рассмотрено тут, п. 9.7:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.2.0.pdf

Спасибо Евгений.
Я всё понял. Проверка займёт некоторое время.

trejer
01.04.2019, 17:14
Добрый день.
Можно по FTP, например - в архивации выбрать устройство Директория FTP.
Подключение рассмотрено тут, п. 9.7:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.2.0.pdf

Евгений, ещё раз спасибо!
Всё работает.

plot1948
04.06.2019, 07:58
Здравствуйте Алексей.Применил в своем проекте OwenArchiver,мне функционала данного компонента вполне хватает,кроме периода архивации,хотелось бы почаще.Не собираетесь ли обновлять OwenArchiver в скорм времени? Пример с библиотеками CAA File быстро не осилю,знаний маловато, да и для меня он избыточен,а как всегда надо побыстрее запустится.

Осинский Алексей
04.06.2019, 08:39
Здравствуйте Алексей.Применил в своем проекте OwenArchiver,мне функционала данного компонента вполне хватает,кроме периода архивации,хотелось бы почаще.Не собираетесь ли обновлять OwenArchiver в скорм времени? Пример с библиотеками CAA File быстро не осилю,знаний маловато, да и для меня он избыточен,а как всегда надо побыстрее запустится.

Добрый день!
Спасибо за отзыв.

Какой период архивации Вам нужен?
Показания какого процесса архивируете?

Работы по архиватору запланированы на ближайшее будущее, более конкретных сроков, пока, не назову.

plot1948
04.06.2019, 10:49
У меня быстрый рост давления,потом резкое падение и мне надо зафиксировать высшую точку.На СПК110 я делал это через ArchiverSPK,период архивации был 200ms.

Осинский Алексей
04.06.2019, 13:18
У меня быстрый рост давления,потом резкое падение и мне надо зафиксировать высшую точку.На СПК110 я делал это через ArchiverSPK,период архивации был 200ms.

Если речь об одном параметре, то можно настроить архивацию по команде. В программе мониторить изменение давления и в высшей точке подавать команду на архивацию.
Так в архиве будут содержаться только высшие значения давления.
Такой способ подойдет только если скачки давления имеют период более 1с (т.к. в режиме архивации по команде архивация не чаще 1 раза в секунду).

plot1948
05.06.2019, 08:34
На данный момент так и сделал(по команде 1 раз в секунду), а дальше будем думать.Очень не хочется связываться с CAA File,стандартный компонент всем устраивает,да и не программист я.

plot1948
06.06.2019, 11:40
Добрый день,Алексей.При примонтировании флешки канал USB Mounted остается FALSE,канал ENABLE Drives TRUE до примонтирования.

Андрей_Б.
07.08.2019, 15:43
Коллеги, добрый день!
Почитал мануалы, потестировал примеры - всё работает. Прибор - СПК110 [М01].
Задача такая: несколько параметров считываются с датчиков. Их нужно архивировать с некоторой периодичностью. В любой момент оператор может подойти к прибору и просмотреть архив, как в табличном представлении, так и на графике.
Запись на SD потестировал с помощью OwenArchiver. Прекрасно работает. Думаю, что и CAA File я бы без проблем осилил.
Дальше - график.
Как я понял, тренд с заданной периодичностью складывает в свою таблицу значение переменной (или нескольких) и отображает их на графике. Где он хранит свою таблицу - не ясно, в настройках не нашёл прямого указателя на место сохранения. Потестировал: график строится, но на карте пусто. Что-то мне подсказывает, что связать его с OwenArchiver не получится..

Подскажите, как связать тренд и архив на карте памяти?

Евгений Кислов
07.08.2019, 18:13
Добрый день.
Проще всего привязать к тренду и OwenArchiver одни и те же переменные (т.е. компоненты будут работать независимо).

Андрей_Б.
08.08.2019, 10:18
Решение так себе, если честно. Если произойдёт перезагрузка контроллера - график в архив уже не заглянет, будет показывать только вновь накопленные данные. К тому же, если числе параметров будет полсотни, хватит ли ресурсов, с учётом того, что всё это не основная задача?
В примитивах есть ломаная линия, координаты каждой точки можно сопоставить с элементами массива - это даёт шанс разработать собственный визуальный компонент. Проблема с отображением текстовой информации вдоль осей: координаты текстовых блоков нельзя менять в run-time... Или можно?

Евгений Кислов
08.08.2019, 10:25
Решение так себе, если честно. Если произойдёт перезагрузка контроллера - график в архив уже не заглянет, будет показывать только вновь накопленные данные. К тому же, если числе параметров будет полсотни, хватит ли ресурсов, с учётом того, что всё это не основная задача?
В примитивах есть ломаная линия, координаты каждой точки можно сопоставить с элементами массива - это даёт шанс разработать собственный визуальный компонент. Проблема с отображением текстовой информации вдоль осей: координаты текстовых блоков нельзя менять в run-time... Или можно?

Можно менять, у элементов визуализации есть соответствующие параметры.

Андрей_Б.
08.08.2019, 10:49
Тогда попутно ещё вопрос: есть ли возможность разработки/установки сторонних визуальных компонентов, написанных на других языках (скажем, на си)?

Евгений Кислов
08.08.2019, 11:02
Тогда попутно ещё вопрос: есть ли возможность разработки/установки сторонних визуальных компонентов, написанных на других языках (скажем, на си)?

У пользователей такой возможности нет.

Serrk
07.11.2019, 14:18
Не подскажете почему СПК 107 м1 отказывается с WinSCP соединяться?

45499 45500

Евгений Кислов
07.11.2019, 14:25
Сначала надо в конфигураторе задать пароль на консоль.

Serrk
12.11.2019, 11:23
А , где его вводить ?

Евгений Кислов
12.11.2019, 11:34
См. скриншоты.

45546

45547

Serrk
12.11.2019, 16:07
Спасибо соединились. А путь для спк 107 м1 к флешке и CD карте не подскажете?

Евгений Кислов
12.11.2019, 17:12
для USB: /mnt/ufs/media/sda1
для SD: /mnt/ufs/media/mmcblk0p1

Спорягин Кирилл
27.01.2020, 19:48
Добрый вечер.

Подскажите, где найти коды ошибок для компонента OwenArchiver.
В документе по архивации сказано, следующее "Код последней ошибки архиватора. См. библиотеку
OwenArchiveErrors, содержащую функции декодирования ошибок".

Но не понятно, где эта библиотека. Да и просто хотелось бы коды знать.

Спорягин Кирилл
27.01.2020, 19:49
Нашел. Спасибо.

Спорягин Кирилл
27.01.2020, 19:57
Теперь другой вопрос.
Вынимаю флешку из СПК107 без записи переменной "USB Unmount".
Иногда переменная "USB Mounted" сбрасывается в false, а иногда нет.
От чего это зависит?

Как тогда мне определить в программе, что флешку вытащили "неправильно", т.е. без размонтирования?

Евгений Кислов
27.01.2020, 20:28
Никак - поэтому это и "неправильно".

Евгений Кислов
06.02.2020, 07:54
Документ обновлен до версии 2.2 - выполнена актуализация информации для CODESYS V3.5 SP14 Patch 3 и последних версий прошивок контроллеров.
Пример работы с библиотекой CAA File адаптирован для CODESYS V3.5 SP14 Patch 3: скачать (https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/05_Archives/Example_CAA_File_3514v1.projectarchive)

Serrk
06.02.2020, 10:53
Подскажите пожалуйста. На СПК 107 м1
Тип: 4096
ID: 1628 0073
Версия: 3.5.11.57

На влешку писался архив. Через месяц перестал. Файл удалили, хоть и места оставалось валом. А дальше писать не хочет. Что делать нет ни каких идей.

Евгений Кислов
06.02.2020, 10:56
Подскажите пожалуйста. На СПК 107 м1
Тип: 4096
ID: 1628 0073
Версия: 3.5.11.57

На влешку писался архив. Через месяц перестал. Файл удалили, хоть и места оставалось валом. А дальше писать не хочет. Что делать нет ни каких идей.

Каким образом вы писали архив? Через OwenArchiver?
Флешку в процессе работы извлекали из контроллера?

Serrk
06.02.2020, 17:52
Да через OwenArchiver. На счёт извлекали, возможно. СПК на объекте.

Евгений Кислов
06.02.2020, 18:01
Да через OwenArchiver. На счёт извлекали, возможно. СПК на объекте.

Если извлекали без размонтирования - тогда описанная ситуация совершенно закономерна.
Но после перезагрузки контроллера архив должен начать писаться заново.

Serrk
06.02.2020, 22:08
Попробуем перезагрузить. Спасибо. хорошо бы помогло.С помощью CodeSys "Сброс" не помогло. "Сброс холодный" и "сброс заводской" забоялся. Не подскажете в чём разница? И что они значат. А то панель от меня в 400км.

Евгений Кислов
07.02.2020, 06:29
Попробуем перезагрузить. Спасибо. хорошо бы помогло.С помощью CodeSys "Сброс" не помогло. "Сброс холодный" и "сброс заводской" забоялся. Не подскажете в чём разница? И что они значат. А то панель от меня в 400км.

Сброс - переинициализация переменных (кроме энергонезависимых)
Сброс холодный - переинициализация переменных, включая RETAIN
Сброс заводской - полное удаление программы из контроллера

Serrk
07.02.2020, 08:44
Сброс через СodeSys не помогает. Нужно выдернуть питание?

Евгений Кислов
07.02.2020, 08:53
Сброс через СodeSys не помогает. Нужно выдернуть питание?

Да, нужно перезагрузить контроллер по питанию.

r_vector
02.03.2020, 11:10
Здравствуйте. Судя по описанию в инструкции и по ошибкам компиляции (c0127: Недостаточно кодовой памяти), модуль OwenArchiver не годится для архивирования большого кол-ва переменных (50+/-) на СПК110 предыдущей модификации? Библиотеку CAA File возможно использовать, как альтернативу?

Евгений Кислов
02.03.2020, 13:18
Здравствуйте. Судя по описанию в инструкции и по ошибкам компиляции (c0127: Недостаточно кодовой памяти), модуль OwenArchiver не годится для архивирования большого кол-ва переменных (50+/-) на СПК110 предыдущей модификации? Библиотеку CAA File возможно использовать, как альтернативу?

Добрый день.
Да, все верно. Использование CAA File в качестве альтернативы, лишенной подобных ограничений - возможно.

Tacio
05.05.2020, 13:30
А можно ли сделать, чтобы в режиме архивирования "По изменению переменной", период архивации был 1 сек? По аналогии с режимом "По команде".
В архив пишутся значения переменных из нескольких FB и делать режим "По команде" в моём случае не очень удобно.

Евгений Кислов
05.05.2020, 13:41
А можно ли сделать, чтобы в режиме архивирования "По изменению переменной", период архивации был 1 сек? По аналогии с режимом "По команде".
В архив пишутся значения переменных из нескольких FB и делать режим "По команде" в моём случае не очень удобно.

Нет, так сделать нельзя.

Vladimir_Ch
29.06.2020, 23:03
Здравствуйте.
Пытаюсь организовать на СПК110 МО1 хранение списка операторов в строковый файл с помощью библиотеки CAA File.
Структура примерно такая 1111;Иванов Иван Иванович (табельный номер;ФИО).
При загрузке контроллера файл извлекается в массив и в зависимости от введенного табельного привязывает к нему имя оператора, планируется добавление и удаление операторов.
С записью вроде разобрался а вот с чтением никак.
Мож кто подкинет пример чтения строковых данных?

Юрко
19.08.2020, 14:05
Добрый день! Пытаюсь повторить пример архивации CAA File на виртуальном контроллере. В проект не стал добавлять действие act01_DriveInfo. Добавил пока только act02_DirExample и act03_DirList. В функции DEVICE_PATH указал пути 'D:\OWEN\USB\' и 'D:\OWEN\SD\'. После загрузки, в блоке DIR_INFO при каждом вызове FILE.DirList выдает информацию только о первом вложении '.' , и весь массив astDirInfo заполняется только им. В итоге FILE.DirList не выдает NO_MORE_ENTRIES и переменная uiEntryPos зацикливается до бесконечности. Создать, переименовать и удалить каталог работает.
Скачал Example_CAA_File_3514v1. В нем обновил устройство до виртуального, в DEVICE_PATH пути поменял на 'D:\OWEN\PLC_MEMORY\' , 'D:\OWEN\USB\' , 'D:\OWEN\SD\' и 'D:\OWEN\FTP\'. Все работает, массив заполняется '.' '..' и далее тем что вложено.
Создал второй проект. В главную программу внес только код из блока DIR_INFO, и больше ничего. Так все работает. Начал добавлять частями остальное с периодическим тестом. В итого весь код тот же, что и в первом проекте, только без визуализации, и при этом все работает. Частично добавил визуализацию, проверок не делал. Через неделю загружаю, опять не работает...
В чем проблема?

Евгений Кислов
20.08.2020, 08:00
Добрый день.
Выложите, пожалуйста, проект, на котором DIR_INFO не работает - без этого не представляется возможным дать какие-либо комментарии.

Юрко
20.08.2020, 08:57
Второй вариант, который работал. Теперь как и с первым проблема.

Евгений Кислов
20.08.2020, 09:18
Второй вариант, который работал. Теперь как и с первым проблема.

Вы в ФБ DIR_INFO зачем-то заменили вызовы типа fbDirOpen(xExecute:=FALSE); на fbDirOpen.xExecute:= FALSE;
Во втором случае вызова ФБ с FALSE на входе ("сброса") не происходит - и поэтому все работает некорректно.
Сделайте именно так, как в примере - тогда все опять станет нормально.

Юрко
20.08.2020, 10:18
Вот блин!!! Это уже невнимательность. Сто раз просматривал, так и не заметил. Спасибо!

Gardo
03.11.2020, 12:57
Добрый день, хочу опробовать пример с OwenArchiver, где архиватор добавляется как доп устройство, устройства на руках пока нет, потому эмулятор. Можно как-то указать свой путь сохраняемого файла? В инструкции упоминается только перечисление из OwenArchiverDrivers.

Евгений Кислов
03.11.2020, 13:02
Добрый день, хочу опробовать пример с OwenArchiver, где архиватор добавляется как доп устройство, устройства на руках пока нет, потому эмулятор. Можно как-то указать свой путь сохраняемого файла? В инструкции упоминается только перечисление из OwenArchiverDrivers.

Добрый день.
Используйте устройство "Директория CODESYS" - тогда файл сохранится в папке виртуального контроллера (не эмулятора, в эмуляции работать с файлами нельзя):
C:\ProgramData\CODESYS\CODESYSControlWinV3\...

Gardo
03.11.2020, 13:14
Понятно, спасибо.

SemAndr
16.12.2020, 10:28
Добрый день! Вопрос может быть не совсем в тему, но все же. Поиск инфо не дал. Как долго проживет флеш-накопитель, если на него будет постоянно вестись запись/перезапись данных? Если я правильно помню, то очистка накопителя происходит секторами, то есть раз в секунду стирается сектор и записывается заново? При этом, если мы используем только 2 файла (новый и старый) будет использоваться только 1 сектор памяти накопителя?

Евгений Кислов
16.12.2020, 10:40
Добрый день! Вопрос может быть не совсем в тему, но все же. Поиск инфо не дал. Как долго проживет флеш-накопитель, если на него будет постоянно вестись запись/перезапись данных? Если я правильно помню, то очистка накопителя происходит секторами, то есть раз в секунду стирается сектор и записывается заново? При этом, если мы используем только 2 файла (новый и старый) будет использоваться только 1 сектор памяти накопителя?

Добрый день.
Вы спрашиваете про внешние накопители?

farta
16.12.2020, 11:16
Доброго времени суток. Использую CODESYS 3.5 SP14 Patch 3 и компонент OwenArchive для архивации двух переменных. Всё это хранится в директории FTP, чтобы у сервера был вечный доступ к архивам. Недавно решил реализовать запись архива на флешку по команде на случай, если пропадёт связь сервера с контроллером. Как я понимаю, реализовать это можно только через библиотеку CAA File? Скачивал пример, пытался разобраться, но понял не всё (по профилю видно, что я новичок:)). Если говорить проще, то мне необходимо в точности повторить act04_ActionWithFiles, часть визуализации с размонтированием флеш-карты, и жестко задать путь "текущего устройства" (директория фтп) и "устройства назначения" (флеш-карта)? Или есть какой-то другой способ?

SemAndr
16.12.2020, 11:22
Да, про внешние. Хотя, думаю, с внутренними дела должны обстоять точно также

Евгений Кислов
16.12.2020, 11:35
Да, про внешние. Хотя, думаю, с внутренними дела должны обстоять точно также

Тогда в даташите на накопитель должна быть приведена вся информация по вашему вопросу - число циклов перезаписи и т.д.

Евгений Кислов
16.12.2020, 11:37
Доброго времени суток. Использую CODESYS 3.5 SP14 Patch 3 и компонент OwenArchive для архивации двух переменных. Всё это хранится в директории FTP, чтобы у сервера был вечный доступ к архивам. Недавно решил реализовать запись архива на флешку по команде на случай, если пропадёт связь сервера с контроллером. Как я понимаю, реализовать это можно только через библиотеку CAA File? Скачивал пример, пытался разобраться, но понял не всё (по профилю видно, что я новичок:)). Если говорить проще, то мне необходимо в точности повторить act04_ActionWithFiles, часть визуализации с размонтированием флеш-карты, и жестко задать путь "текущего устройства" (директория фтп) и "устройства назначения" (флеш-карта)? Или есть какой-то другой способ?

Описанный вами способ звучит логично.

SemAndr
16.12.2020, 12:04
Тогда в даташите на накопитель должна быть приведена вся информация по вашему вопросу - число циклов перезаписи и т.д.

Разъясните, пожалуйста, тогда про внутреннюю память. Из документации про архивацию: "Максимальный размер архива, Мб – суммарный объем всех файлов архива, максимальное значение – 2047 Мб (для режима архивации Непрерывный архив (см. пп. 4) " - это про непрерывное ведение архива. Из документации: "Непрерывный архив – все данные будут записываться в один файл. По достижению его максимального размера (см. пп. 3) будет создан новый файл, а по достижению максимального размера нового файла – первый файл будет удален. Таким образом, фактически архив состоит из двух файлов – текущего (в который записываются данные) и предыдущего;"

То есть цикл записи получается - когда у нас старый файл удаляется, а новый записывается? Или цикл записи это каждая операция записи данных в архив?

Евгений Кислов
16.12.2020, 12:09
Разъясните, пожалуйста, тогда про внутреннюю память. Из документации про архивацию: "Максимальный размер архива, Мб – суммарный объем всех файлов архива, максимальное значение – 2047 Мб (для режима архивации Непрерывный архив (см. пп. 4) " - это про непрерывное ведение архива. Из документации: "Непрерывный архив – все данные будут записываться в один файл. По достижению его максимального размера (см. пп. 3) будет создан новый файл, а по достижению максимального размера нового файла – первый файл будет удален. Таким образом, фактически архив состоит из двух файлов – текущего (в который записываются данные) и предыдущего;"

То есть цикл записи получается - когда у нас старый файл удаляется, а новый записывается? Или цикл записи это каждая операция записи данных в архив?

Цикл записи - это любая запись в файл.
В даташитах обычно приводится "число циклов перезаписи на блок данных".
Размер блока данных может быть разным для разных накопителей.

С практической точки зрения - я пока не видел ни одного случая, когда кто-то "перетер" архивами память контроллера.

farta
22.12.2020, 18:48
Создал "копию" примера архивации у себя в проекте - создал необходимые переменные, функции (всё что касается копирования файлов архива из директории ftp на usb), привязал всё ко всему, в общем так же как в примере. Но на практике эта созданная мною часть программы не работает. Битый час не могу разобраться, в чем же дело :confused:, и вот пришёл за помощью сюда :). Буду благодарен за помощь.

Оставлю свой проект здесь:
https://dropmefiles.com/lgmRi

Евгений Кислов
22.12.2020, 18:56
А где в проекте задается значение для sVisuFileName?

farta
22.12.2020, 19:01
Имя архива формируется само, исходя из текущей даты

Евгений Кислов
22.12.2020, 19:17
Имя архива формируется само, исходя из текущей даты

Это замечательно. И где происходит запись этого имени в переменную sVisuFileName?

farta
22.12.2020, 19:37
Понял, такого в программе у меня нет. Сейчас я привязал эту переменную к имени архива в настройках компонента OwenArchive. Такое действие корректно или нужно как-то по-другому записывать эту переменную?

Евгений Кислов
22.12.2020, 19:42
Это действие некорректное. "Путь архивации" - это не имя архива, а путь, по которому будет сохраняться файл архива.

При вызове fbFileCopy вы передаете sFileNameSource (путь к файлу, который надо скопировать) и sFileNameDest (путь к файлу, который будет получен в результате копирования).
Сейчас на эти входы у вас передаются только пути директорий без названия файлов - соответственно, блок не может ничего скопировать, так как не знает имя нужного файла для копирования.

farta
22.12.2020, 19:47
Так я записал переменную в ячейку "Имя архива", а не в "Путь архивации"

Евгений Кислов
22.12.2020, 19:56
Так я записал переменную в ячейку "Имя архива", а не в "Путь архивации"

Да, но это тоже некорректно. Это переменная для управления архиватором - в документе описано, как она работает.

farta
22.12.2020, 20:04
Хорошо, тогда задам название архива вручную.
P.S. Дело не только в отсутствии копирования. При подключении usb не происходит автоматического монтирования, лампочка "usb смонтирован" не загорается.

Евгений Кислов
22.12.2020, 20:22
Хорошо, тогда задам название архива вручную.
P.S. Дело не только в отсутствии копирования. При подключении usb не происходит автоматического монтирования, лампочка "usb смонтирован" не загорается.

Тогда надо часть с этого - возможно, накопитель не соответствует требованиям.

farta
23.12.2020, 10:31
На данный момент накопитель файловой системы NTFS (он поддерживается), но планирую сделать FAT.

В руководстве написано перед началом работы рекомендуется отформатировать накопитель с помощью утилиты HP
USB Disk Storage Format Tool. Я такого еще не делал. ПЛК может не видеть флешку только из-за этого?

Евгений Кислов
23.12.2020, 10:35
На данный момент накопитель файловой системы NTFS (он поддерживается), но планирую сделать FAT.

В руководстве написано перед началом работы рекомендуется отформатировать накопитель с помощью утилиты HP
USB Disk Storage Format Tool. Я такого еще не делал. ПЛК может не видеть флешку только из-за этого?

Да, лучше отформатировать в FAT этой утилитой.

farta
23.12.2020, 19:09
Флешку видит, всё нормально. Сама монтируется, размонтирование тоже работает.
Форматировал этой утилитой в формат FAT, после чего проверил в конфигураторе ПЛК, видит флешку или нет. Там была кнопка форматирования флешки, пишет в формат FAT32. Это просто информация для других пользователей, нет смысла качать утилиты, когда сам ПЛК форматирует.

Появилась вот какая мысль, скажите мне, такое можно реализовать или нет: архив пишется ежедневно, каждый день отдельным файлом, можно ли копировать всю папку, содержащую в себе все архивы? Потому что копировать по одному файлу - так себе перспектива.

Евгений Кислов
23.12.2020, 19:11
Флешку видит, всё нормально. Сама монтируется, размонтирование тоже работает.
Форматировал этой утилитой в формат FAT, после чего проверил в конфигураторе ПЛК, видит флешку или нет. Там была кнопка форматирования флешки, пишет в формат FAT32. Это просто информация для других пользователей, нет смысла качать утилиты, когда сам ПЛК форматирует.

Появилась вот какая мысль, скажите мне, такое можно реализовать или нет: архив пишется ежедневно, каждый день отдельным файлом, можно ли копировать всю папку, содержащую в себе все архивы? Потому что копировать по одному файлу - так себе перспектива.

Да, это можно сделать через ФБ DirCopy.
Нужно контролировать, в момент копирования нет обращения к файлам архивов.

farta
23.12.2020, 19:27
Да, это можно сделать через ФБ DirCopy.
Нужно контролировать, в момент копирования нет обращения к файлам архивов.

То есть, если в момент копирования условно 10 архивов один ещё только пишется, а ко второму обращается OPC Server, то скопируются только 8 архивов, или же ни один не скопируется?

Евгений Кислов
23.12.2020, 19:29
То есть, если в момент копирования условно 10 архивов один ещё только пишется, а ко второму обращается OPC Server, то скопируются только 8 архивов, или же ни один не скопируется?

Если у вас какой-то архив пишется и в этот момент начнется его копирование - то скопированный файл может получится некорректным (в нем будет присутствовать только часть данных от последней записи).

farta
23.12.2020, 19:38
Где-то есть пример с работой ФБ DirCopy?

Евгений Кислов
23.12.2020, 19:41
Где-то есть пример с работой ФБ DirCopy?

В документации есть описание входов и выходов. Отличия от ФБ Copy минимальны.

saii
25.12.2020, 23:11
А есть возможность из Codesys отправлять файлы по SCP/SFTP-протоколам?

Евгений Кислов
26.12.2020, 07:30
А есть возможность из Codesys отправлять файлы по SCP/SFTP-протоколам?

А FTPS не подойдет?

saii
26.12.2020, 09:41
А FTPS не подойдет?

Пока не знаю, вопрос смогут ли настроить, а SCP/SFTP уже есть.

Евгений Кислов
26.12.2020, 09:46
Пока не знаю, вопрос смогут ли настроить, а SCP/SFTP уже есть.

Технически - scp (https://www.opennet.ru/man.shtml?topic=scp&category=1&russian=0) в прошивке есть.
Но FTPS было бы использовать значительно проще (потому что он у нас включен в curl, в отличии от scp и sftp).

saii
26.12.2020, 11:50
А с scp можно работать не интерактивно? Я что-то не нашел возможности указать пароль для подключения, только ввод с клавиатуры.

Евгений Кислов
26.12.2020, 11:54
А с scp можно работать не интерактивно? Я что-то не нашел возможности указать пароль для подключения, только ввод с клавиатуры.

Насколько я помню - должна быть возможность работать без пароля, если настроить ssh-ключи.

saii
26.12.2020, 12:48
кстати, я с плк210 работаю по ключам, через тотал камандер sftp идет сразу, только двойной клик и ни каких вводов пользователя/пароля

Проблема в том, что мне нужно файлы отправлять с СПК на сторонний сервер, на котором на данный момент настроен SFT/SCP. Когда настроят что-то другое FTP/FTPS/HTTP/HTTPS - вопрос. А отлаживать взаимодействие СПК - сервер и работу сервера хотелось бы сейчас. Руками в терминале все работает через scp. Можно было бы через curl по SFTP, но на СПК SFTP в curl не поддерживается.


Насколько я помню - должна быть возможность работать без пароля, если настроить ssh-ключи.
Пока я их не нашел :(. Зато в подсказке говорит про ключи -B и -v, но при использовании на первый говорит, что в этой версии он заблокирован, а на второй, что не известный ключ. :)
Может есть возможность как-то взаимодействовать с командами из программы?

Евгений Кислов
26.12.2020, 12:58
Может есть возможность как-то взаимодействовать с командами из программы?

Нет, CmpSysExec не поддерживает интерактивный режим.
На вашем месте я бы сконцентрировал усилия на общении с теми, кто обслуживает сервера - поднять ftp, в общем-то, не самая сложная задача.

capzap
26.12.2020, 13:13
если на машине работает scp, то наверное используя ключи, команда так должна выглядеть scp -vCq -i private_key.pem откуда куда чтоб отправить на удаленный сервер
Хотя если -В заблокирован значит вообще ключами пользоваться не получится

saii
26.12.2020, 13:53
Разобрался с scp. Всем спасибо за помощь и подсказки куда копать.

farta
04.02.2021, 15:41
Доброго времени суток! Подскажите, где можно найти полный перечень ошибок архиватора? Заранее спасибо

Евгений Кислов
04.02.2021, 16:28
В библиотеке OwenArchiverErrors:

53369

farta
05.02.2021, 07:24
Большое спасибо!

Солнечный заяц
08.02.2021, 11:51
Здравствуйте, возможно ли запустить архивацию на самых первых модификациях СПК207 (без маркировки МХХ)? Если да, какая версия прошивки требуется? Спасибо.

Евгений Кислов
08.02.2021, 11:54
Здравствуйте, возможно ли запустить архивацию на самых первых модификациях СПК207 (без маркировки МХХ)? Если да, какая версия прошивки требуется? Спасибо.

Добрый день.
Вообще, архиватор никак не связан с версией прошивки.
Тут, наверное, вопрос в том, какая версия рантайма CODESYS в тех СПК - я не в курсе, честно говоря.

Солнечный заяц
08.02.2021, 12:21
Добрый день.
Вообще, архиватор никак не связан с версией прошивки.
Тут, наверное, вопрос в том, какая версия рантайма CODESYS в тех СПК - я не в курсе, честно говоря.
Версию рантайма можно определить по проекту? Может быть по версии библиотек.

Евгений Кислов
08.02.2021, 12:23
Версию рантайма можно определить по проекту? Может быть по версии библиотек.

Если библиотеки версий 3.5.4.3 работают - то, по идее, и архиватор должен.
Надо проверять, мы не тестировали на таких старых модификациях (они уже к моменту релизу архиваторы несколько лет как были сняты с продажи).

Солнечный заяц
08.02.2021, 15:48
Если библиотеки версий 3.5.4.3 работают - то, по идее, и архиватор должен.
Надо проверять, мы не тестировали на таких старых модификациях (они уже к моменту релизу архиваторы несколько лет как были сняты с продажи).

Не работает. Видимо, все таки нужен более новый таргет. Как я понимаю, ошибка из-за отсутствия в таргете элементов со второго рисунка, из инструкции (выделено красным)

Солнечный заяц
08.02.2021, 16:04
Если библиотеки версий 3.5.4.3 работают - то, по идее, и архиватор должен.
Надо проверять, мы не тестировали на таких старых модификациях (они уже к моменту релизу архиваторы несколько лет как были сняты с продажи).

На сколько я понимаю, для версии СПК207 без маркировки М, самая поздняя версия прошивки 3.947, таргет 2.5.4.20v23. В нем так же нет элементов "Buzzer", "Drives", "Network_info" и т.д.
На каких моделях СПК207 тестировался модуль архивации? Возможно, мы найдем подходящую модификацию.

Евгений Кислов
08.02.2021, 16:37
На сколько я понимаю, для версии СПК207 без маркировки М, самая поздняя версия прошивки 3.947, таргет 2.5.4.20v23. В нем так же нет элементов "Buzzer", "Drives", "Network_info" и т.д.
На каких моделях СПК207 тестировался модуль архивации? Возможно, мы найдем подходящую модификацию.

Тестировался на модификациях М04/М05.

Солнечный заяц
08.02.2021, 16:50
Тестировался на модификациях М04/М05.

Спасибо, будем искать

-=Vovka=-
05.05.2021, 15:04
Нужен совет.
ПЛК210 каждую секунду опрашивает датчики, формирует данные длиной около 200 байт и отправляет на сервер по TCP Socket.
В случае не ответа сервера данные должны где-то сохраняться, чтобы потом, когда появится связь с сервером, их передать на сервер.
Возможна ситуация, когда связь может и неделю отсутствовать - тогда скорей всего данные придется перезаписывать по кольцу.
Посоветуйте, куда сохранять данные: карту памяти, USB-Flash, память контроллера...? И какой библиотекой воспользоваться?

Евгений Кислов
05.05.2021, 15:06
Посоветуйте, куда сохранять данные: карту памяти, USB-Flash, память контроллера...?

SD-карту или USB-накопитель.


И какой библиотекой воспользоваться?

CAA File

-=Vovka=-
05.05.2021, 15:57
Спасибо!

Что-то с размером карты не то:
54975
а в кодесисе встроенная флеш и ММС флеш имеют одни и те же значения:
54976

Евгений Кислов
05.05.2021, 16:21
Отформатируйте карту в Fat32.

-=Vovka=-
05.05.2021, 17:21
Отформатируйте карту в Fat32.

Так она и была в FAT32:
54979

На всякий случай сделал полное форматирование - ничего не изменилось!

Воткнул через кардридер в USB - ничего не поменялось:
54980

а карта новая, в обед купленная!

Евгений Кислов
05.05.2021, 17:40
У вас почему-то карта примонтировалась не по ожидаемому пути.
Чтобы сказать, почему так произошло - нужно подключаться и смотреть в консоли.
Вы можете вручную перемонтировать ее на /mnt/ufs/media/mmcblk0p1- тогда в CODESYS все станет нормально.

-=Vovka=-
05.05.2021, 17:59
У вас почему-то карта примонтировалась не по ожидаемому пути.
Пробовал перемонтировать, делал заводской сброс - все равно не тот путь!


Чтобы сказать, почему так произошло - нужно подключаться и смотреть в консоли.
Вы можете вручную перемонтировать ее на /mnt/ufs/media/mmcblk0p1- тогда в CODESYS все станет нормально.
А как перемонтировать?
Хотя это не вариант - потом объяснять людям, что нужно после монтирования еще и с путем воевать...

-=Vovka=-
05.05.2021, 18:10
Вытащил из автомагнитолы флешку, вставил в USB, нажал на кнопку "Создать config":
54981

в итоге:
54982

Евгений Кислов
05.05.2021, 18:12
Пробовал перемонтировать, делал заводской сброс - все равно не тот путь!

А как перемонтировать?
Хотя это не вариант - потом объяснять людям, что нужно после монтирования еще и с путем воевать...

В web-конфигураторе на вашем скриншоте видна кнопка Изменить.

А какая у вас версия прошивки?

-=Vovka=-
05.05.2021, 18:34
В web-конфигураторе на вашем скриншоте видна кнопка Изменить.
Изменил, но в кодесисе ничего не поменялось (ПЛК перезапускал через заводской сброс)
54983



А какая у вас версия прошивки?
54984
ПЛК куплен буквально пару недель назад

Евгений Кислов
05.05.2021, 18:35
Давайте 11 мая свяжемся с вами по TeamViewer.

-=Vovka=-
05.05.2021, 18:41
В общем получилось установить путь:
1. Вставляем SD-карту и в WEB-конфигураторе жмем "Создать config".
2. Путь к карте исправляем на /mnt/ufs/media/mmcblk0p1 в "Монтирование разделов", нажав на кнопку "Изменить"
3. Смотрим, изменился ли путь на /mnt/ufs/media/mmcblk0p1 в "Смонтированные разделы": если нет, то размонтируем карту, извлекаем
4. В Windows проверяем SD-карту на ошибки
5. Перезагружаем ПЛК и повторяем с п1

-=Vovka=-
06.05.2021, 17:07
Появились вопросы:
1. На SD-карте открыт файл для записи-чтения. Обязательно его закрывать перед размонтированием карты (данные сохранены)?
2. Размонтирую программно: Application.TargetVars.stDrives.xSdUnmount := TRUE; Этого достаточно или еще что-то нужно сделать перед вытаскивание SD-карты?
Спрашиваю потому, что когда вставляю карту в ПК Windows выводит окно на проверку целостности карты.
3. Как программно смонтировать карту?

Евгений Кислов
06.05.2021, 17:33
1. Да.
2. Нужно проверить, что Unmount Done имеет значение TRUE.
3. Это происходит автоматически. Никакие действия в CODESYS или конфигураторе для этого не нужны.
https://youtu.be/rpwvyahHevw?t=340

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

Pavel_L
11.05.2021, 08:53
Добрый день. Начал изучать контроллер ПЛК200 в части регистрации данных на SD-карте.
Сразу возник вопрос - как можно удаленно скачать записанные данные с SD-карты?
И второй вопрос - можно ли скачать эти данные (с SD-карты) через FTP?

Евгений Кислов
11.05.2021, 08:58
Добрый день. Начал изучать контроллер ПЛК200 в части регистрации данных на SD-карте.
Сразу возник вопрос - как можно удаленно скачать записанные данные с SD-карты?
И второй вопрос - можно ли скачать эти данные (с SD-карты) через FTP?

Добрый день.

1. Например, так: https://youtu.be/IemOlv7FcQI
2. В данный момент такой возможности нет - она появится в следующей прошивке.

Дмитрий V
12.05.2021, 12:35
Добрый день. В библиотеке период архивации минимум 1 секунда. Есть ли какие-то другие способы архивации с периодичностью в 10 мс(ну или близкие с этой цифрой)?

Евгений Кислов
12.05.2021, 12:57
Добрый день. В библиотеке период архивации минимум 1 секунда. Есть ли какие-то другие способы архивации с периодичностью в 10 мс(ну или близкие с этой цифрой)?

Добрый день.
В принципе, можно реализовать подобное с помощью библиотек (скорее всего, тут подойдет только синхронная SysFile).
Но сама постановка задачи выглядит очень странной.
Почему бы не буферизировать данные и, например, раз в минуту не записывать их в архив?

Дмитрий V
12.05.2021, 13:54
Добрый день.
В принципе, можно реализовать подобное с помощью библиотек (скорее всего, тут подойдет только синхронная SysFile).
Но сама постановка задачи выглядит очень странной.
Почему бы не буферизировать данные и, например, раз в минуту не записывать их в архив?

А подскажите, пожалуйста, как этот буфер потом отправить в архив? не сталкивался с таким

Евгений Кислов
12.05.2021, 13:56
А подскажите, пожалуйста, как этот буфер потом отправить в архив? не сталкивался с таким

Таким же образом, как и одну запись.

Дмитрий V
12.05.2021, 14:33
Таким же образом, как и одну запись.

То есть, в OwenArchiver добавить устройство, например LREAL, а в соотнесении входов-выходов привязать к переменной мой буферный массив?

Евгений Кислов
12.05.2021, 14:38
То есть, в OwenArchiver добавить устройство, например LREAL, а в соотнесении входов-выходов привязать к переменной мой буферный массив?

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

Дмитрий V
12.05.2021, 14:45
Нет, в вашем случае OwenArchiver не подойдет - так или иначе, но потребуется использовать библиотеку.

С помощью SysFile или CAA File?

Евгений Кислов
12.05.2021, 14:49
С помощью SysFile или CAA File?

При архивации раз в минуту - лучше CAA File.

urix2003
30.05.2021, 12:16
День добрый. В рабочий проект добавляю функционал архивации. Возник вопрос - можно ли привязать для архивации не переменную, а свойство некоего объекта.
В визуализации для этого существует спец настройка в проекте, а как быть с архивом?
Можно, конечно, тупо копировать свойства в простые переменные и их направить в архив, но как то не красиво получается.

Евгений Кислов
31.05.2021, 06:26
День добрый. В рабочий проект добавляю функционал архивации. Возник вопрос - можно ли привязать для архивации не переменную, а свойство некоего объекта.
В визуализации для этого существует спец настройка в проекте, а как быть с архивом?
Можно, конечно, тупо копировать свойства в простые переменные и их направить в архив, но как то не красиво получается.

Добрый день.
Привязать к каналу архиватора свойство нельзя.

Pronto72
31.05.2021, 09:24
Добрый день. Существует ли новая редакция Руководства пользователя "Архивация"? На сайте последняя версия 2.2, которой более двух лет. За это время например в библиотеке CAA File добавлен режим MREADPLUS. Думаю это не одно добавление/исправление.

Евгений Кислов
31.05.2021, 09:45
Добрый день. Существует ли новая редакция Руководства пользователя "Архивация"? На сайте последняя версия 2.2, которой более двух лет. За это время например в библиотеке CAA File добавлен режим MREADPLUS. Думаю это не одно добавление/исправление.

Добрый день.
Версия 2.2 руководства была выпущена год назад (дату забыли поменять на титульнике).
Режим MREADPLUS в ней описан.
Других значимых изменений не было (точнее, они произошли только в вышедшей совсем недавно версии V3.5 SP17, которая еще не поддерживается нашими контроллерами).

urix2003
31.05.2021, 21:58
Подскажите, как в программе получить имя файла архива, которое сконфигурировано у "OWENArchiver.Имя архива". И каков будет полный путь к файлу, не считая пути устройства архивации?

Евгений Кислов
01.06.2021, 10:20
Подскажите, как в программе получить имя файла архива, которое сконфигурировано у "OWENArchiver.Имя архива".

В явном виде такой возможности нет - можно только косвенно определить путь на основании выбранных настроек.


И каков будет полный путь к файлу, не считая пути устройства архивации?

Для непрерывных архивов:
Директория CODESYS - <директория CODESYS>/PlcLogic/Archives/<имя_архива>.csv
USB, SB - /путь к накопителю/<имя_архива>.csv
Директория FTP - /mnt/ufs/home/ftp/in/Archives/<имя_архива>.csv

Для суточных архивов:
Директория CODESYS - <директория CODESYS>/PlcLogic/Archives/<имя_архива>/<структура директорий архива - год/месяц/день.csv или год/месяц_день.csv>
USB, SB - /путь к накопителю/<имя_архива>/<структура директорий архива - год/месяц/день.csv или год/месяц_день.csv>
Директория FTP - /mnt/ufs/home/ftp/in/Archives/<имя_архива>/<структура директорий архива - год/месяц/день.csv или год/месяц_день.csv>

Вячеслав90
11.10.2021, 11:55
Добрый день! Подскажите, есть ли какая-то возможность ведения архива показаний с датчика с периодом 200 мс? Инструмент Тренд сохраняет показания с такой частотой, но данные сохраняются в виде SQLite, а хотелось бы сразу в CSV.

Евгений Кислов
11.10.2021, 12:20
Добрый день! Подскажите, есть ли какая-то возможность ведения архива показаний с датчика с периодом 200 мс? Инструмент Тренд сохраняет показания с такой частотой, но данные сохраняются в виде SQLite, а хотелось бы сразу в CSV.

Добрый день.
Штатно такой возможности нет - только самостоятельно реализовывать через библиотеки.

capzap
11.10.2021, 12:32
Добрый день! Подскажите, есть ли какая-то возможность ведения архива показаний с датчика с периодом 200 мс? Инструмент Тренд сохраняет показания с такой частотой, но данные сохраняются в виде SQLite, а хотелось бы сразу в CSV.

это одна консольная команда, неужели сложности вызывают, один из примеров как это делается https://www.sqlitetutorial.net/sqlite-tutorial/sqlite-export-csv/

Вячеслав90
11.10.2021, 12:47
Спасибо за ссылку, сложностей и правда нет. Просто решил уточнить, чтобы не городить велосипед в том месте, где уже все давно работает.
Может тогда еще подскажете, где почитать про форматы, в котором Тренд сохраняет значения в базу SQLite? А то и временная координата, и значения переменной типа REAL сохраняются в виде INTEGER.

capzap
11.10.2021, 14:13
Спасибо за ссылку, сложностей и правда нет. Просто решил уточнить, чтобы не городить велосипед в том месте, где уже все давно работает.
Может тогда еще подскажете, где почитать про форматы, в котором Тренд сохраняет значения в базу SQLite? А то и временная координата, и значения переменной типа REAL сохраняются в виде INTEGER.

pragma table_info('какая_то_таблица_в_базе_данных');

Mal31
22.01.2022, 18:46
Добрый день.
В видео рассматривается SP11, а вот в SP16 есть такая вкладка "ArchiveVariable МЭК-объектов". Есть ли описание этой вкладки в каком-то мануале, возможно я просто не нашёл? Спасибо.
58863

Евгений Кислов
22.01.2022, 19:04
Добрый день.
В видео рассматривается SP11, а вот в SP16 есть такая вкладка "ArchiveVariable МЭК-объектов". Есть ли описание этой вкладки в каком-то мануале, возможно я просто не нашёл? Спасибо.
58863

Добрый день.
На этой вкладке отображается список экземпляров ФБ, которые неявно создаются при добавлении в проекте канала архиватора.
У пользователя нет необходимости с ними взаимодействовать.
Так что вкладка носит исключительно информационный характер.

LexSL
18.04.2022, 15:01
Добрый день, по архиватору вопрос.
В архиваторе стоит структура архива как "Год/Месяц/День" и задано "Имя архива - Переменная = TRUE", т.е я даю возможность изменять имя архива оператору (например, для архивирования данных конкретного эксперимента, напр - эксперимент_1, эксперимент_2 и т.д). В рук-ве написано, что при указанной структуре архива ("Год/Месяц/День") при достижении максимального размера (2047 МБ) будут удаляться самые старые файлы. Вопрос: удаляться файлы будут исходя из текущего имени архива? То есть в папке "эксперимент_1/год/месяц..." если текущее имя архива = "эксперимент_1"? И для продолжения архивации надо будет менять имя архива?

Евгений Кислов
18.04.2022, 16:11
Добрый день, по архиватору вопрос.
В архиваторе стоит структура архива как "Год/Месяц/День" и задано "Имя архива - Переменная = TRUE", т.е я даю возможность изменять имя архива оператору (например, для архивирования данных конкретного эксперимента, напр - эксперимент_1, эксперимент_2 и т.д). В рук-ве написано, что при указанной структуре архива ("Год/Месяц/День") при достижении максимального размера (2047 МБ) будут удаляться самые старые файлы. Вопрос: удаляться файлы будут исходя из текущего имени архива? То есть в папке "эксперимент_1/год/месяц..." если текущее имя архива = "эксперимент_1"? И для продолжения архивации надо будет менять имя архива?

Добрый день.
Удаление файлов будет происходить исходя из даты их создания.

LexSL
19.04.2022, 07:43
Спасибо. А максимальный размер на весь архив (каталог "Имя_архива/..." с подкаталогами)? или только на файл?

Евгений Кислов
19.04.2022, 07:47
Спасибо. А максимальный размер на весь архив (каталог "Имя_архива/..." с подкаталогами)? или только на файл?

На весь архив.

alexander.kinsfator@gmail.com
27.04.2022, 15:21
Вопрос не совсем по Архивации.
Файлы формирую и записываю через CAA File. Всё работает.
Нужно через Web клиента скачать файл(ы) и вот тут проблемы:
FileDialog через onMouseClick OpenDialog Visudialogs.FileOpenSave приводит к исключению в визуализации.
Передача файла через onMouseClick не описан толком и не понятно какое там нужно имя файла. Имя файла из корня узла Device не подходит, имя вида /mnt/.... тоже не подходит. Появляется ошибка 6 или 1.
Что посоветуете посмотреть?

Евгений Кислов
27.04.2022, 16:07
Вопрос не совсем по Архивации.
Файлы формирую и записываю через CAA File. Всё работает.
Нужно через Web клиента скачать файл(ы) и вот тут проблемы:
FileDialog через onMouseClick OpenDialog Visudialogs.FileOpenSave приводит к исключению в визуализации.
Передача файла через onMouseClick не описан толком и не понятно какое там нужно имя файла. Имя файла из корня узла Device не подходит, имя вида /mnt/.... тоже не подходит. Появляется ошибка 6 или 1.
Что посоветуете посмотреть?

Добрый день.
Посмотрите это:
https://youtu.be/d-gLwtmJnlk

В нашей библиотеке OwenVisuDialogs есть кастомизированная версия диалога выбора файлов с более приятным внешним видом:
https://owen.ru/forum/showthread.php?t=34327

alexander.kinsfator@gmail.com
27.04.2022, 19:11
Спасибо,
Выбор файлов заработал. А вот передача, нет.
На выходе выбора файла получаем 'visu/title.bmp'
При скачивании файла в переменную "код ошибки" попадает значение 6 - Ошибка чтения файла. Файл присутствует в контроллере и скачивается через scp.
Пробовал и с полным путём '/root/CODESYS/PlcLogic/visu/title.bmp' .У меня ПЛК200, поэтому Ваш проект не запустился.

Евгений Кислов
27.04.2022, 19:29
Спасибо,
Выбор файлов заработал. А вот передача, нет.
На выходе выбора файла получаем 'visu/title.bmp'
При скачивании файла в переменную "код ошибки" попадает значение 6 - Ошибка чтения файла. Файл присутствует в контроллере и скачивается через scp.
Пробовал и с полным путём '/root/CODESYS/PlcLogic/visu/title.bmp' .У меня ПЛК200, поэтому Ваш проект не запустился.

Можно попробовать в переменную действия Передача файла отдавать путь в таком виде: '$$visu$$/title.bmp'
Хотя у меня и 'visu/title.bmp' работает.

alexander.kinsfator@gmail.com
27.04.2022, 20:05
Заработало, моя невнимательность помешала.
А вот при использовании полного пути '/root/CODESYS/PlcLogic/visu/title.bmp' не работает.
Так что проблема видимо не в том, что файл находится не во внутренней памяти, а в том, что он "не понимает" полный путь, а значит накопитель SD нам пока не светит.

Евгений Кислов
27.04.2022, 20:09
Заработало, моя невнимательность помешала.
А вот при использовании полного пути '/root/CODESYS/PlcLogic/visu/title.bmp' не работает.
Так что проблема видимо не в том, что файл находится не во внутренней памяти, а в том, что он "не понимает" полный путь, а значит накопитель SD нам пока не светит.

Все верно - абсолютные пути не работают из-за соображений безопасности.
Но это не мешает работать с накопителями.
Используйте плейсхолдеры $$USB$$ и $$SD$$.