PDA

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



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

alexander.kinsfator@gmail.com
27.04.2022, 21:47
Класс, работает. Получилось скачать файлы с SD через Web- клиента.
Пора видео переделывать :-). Там Вы говорили, что пока нельзя.

Евгений Кислов
28.04.2022, 06:23
Класс, работает. Получилось скачать файлы с SD через Web- клиента.
Пора видео переделывать :-). Там Вы говорили, что пока нельзя.

Плейсхолдеры накопителей были добавлены как раз вскоре после записи того видео.)

ВладОвен
11.10.2022, 16:36
Привет.
Подскажите, будут ли траблы или нюансы если использовать код на основе приложенного здесь примера, но:

1. Запись в файл архивации происходит автоматически при завершении цикла работы оборудования. Записывается структура с данными. Реализовано как тут в примере, но только операции write_to_file.

2. Пока идет цикл работы оборудования, оператор может через другое меню на ПЛК зайти в пункт меню "Архивы" и листать данные. Т.е. нажимая, на клавиши "вперед" или "назад" происходит разовое чтение структуры с данными. Реализовано как тут в примере, но только операции read_to_file.

Т.е. запись в файл и чтение из файла не будут конфликтовать? Ведь операции записи и чтения будут асинхронными (независимыми). Могут случится одновременные действия.
Спасибо.

Евгений Кислов
11.10.2022, 16:54
Привет.
Подскажите, будут ли траблы или нюансы если использовать код на основе приложенного здесь примера, но:

1. Запись в файл архивации происходит автоматически при завершении цикла работы оборудования. Записывается структура с данными. Реализовано как тут в примере, но только операции write_to_file.

2. Пока идет цикл работы оборудования, оператор может через другое меню на ПЛК зайти в пункт меню "Архивы" и листать данные. Т.е. нажимая, на клавиши "вперед" или "назад" происходит разовое чтение структуры с данными. Реализовано как тут в примере, но только операции read_to_file.

Т.е. запись в файл и чтение из файла не будут конфликтовать? Ведь операции записи и чтения будут асинхронными (независимыми). Могут случится одновременные действия.
Спасибо.


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

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

ultra76
06.02.2023, 13:09
Здравствуйте.
Подскажите пожалуйста следующий вопрос.
Можно ли в конфигурации OwenArchiver поставить режим архивирования "по команде", а в качестве команды поставить выход блока BLINK (1 Гц) ?
Будет ли при этом архивация с периодом 1 сек.?
И если да, то можно ли поставить аналогичным способом BLINK (0,5 Гц) ?
Спасибо.

Евгений Кислов
06.02.2023, 13:19
Здравствуйте.
Подскажите пожалуйста следующий вопрос.
Можно ли в конфигурации OwenArchiver поставить режим архивирования "по команде", а в качестве команды поставить выход блока BLINK (1 Гц) ?
Будет ли при этом архивация с периодом 1 сек.?
И если да, то можно ли поставить аналогичным способом BLINK (0,5 Гц) ?
Спасибо.

Добрый день.
С периодом 1 сек - можно.
Меньше - нельзя.

e200
23.06.2023, 10:30
Где это меню?

Евгений Кислов
23.06.2023, 11:58
Где это меню?

О каком именно меню речь? Детализируйте ваш вопрос, пожалуйста.

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



Добрый день.

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

Добрый день! Возник такой же вопрос. Есть SD-карта или флэшка на которую записываются архивируемые данные. Появилась ли возможность скачать файлы с карты/флешки по FTP? Пробую сейчас на ПЛК210, что то не получается

Евгений Кислов
12.10.2023, 14:19
Добрый день! Возник такой же вопрос. Есть SD-карта или флэшка на которую записываются архивируемые данные. Появилась ли возможность скачать файлы с карты/флешки по FTP? Пробую сейчас на ПЛК210, что то не получается

Добрый день.
https://owen.ru/forum/showthread.php?t=37302&p=418790&viewfull=1#post418790

Путь к SD: /mnt/ufs/media/mmcblk0p1

Задумкин Сергей
12.10.2023, 16:29
Добрый день.
https://owen.ru/forum/showthread.php?t=37302&p=418790&viewfull=1#post418790

Путь к SD: /mnt/ufs/media/mmcblk0p1

Спасибо! С этим разобрался.
Возник еще вопрос. Есть проект в нем настроен Alarm Configuration - там ведутся журналы аварий, предупреждений и сообщений и все это отображается на визуализации. Журналы ведутся очень подробно - там регистрируются все события, в т.ч. и действия оператора на ВП110.
Как известно, все это хранится в AlarmStorage в файле "Application.alarmstorage.1.sqlite".
Простое скачивание (или копирование на флешку) этого файла и открытие его в SqliteBrowser ничего пока не дали - там непонятно как отображается время и нет самих текстовых сообщений:

70892

Зато если из под Codesys конвертировать его в CSV, то все прекрасно открывается в Excel и все текстовые сообщения на месте.
Собственно вопрос: можно ли из кода программы выполнить эту конвертацию в CSV (ну и дальше средствами CAA File уже скопировать на флешку)? Очень уж не хочется писать отдельный архив на флешку когда по сути вся необходимая информация у меня уже есть:

70893

capzap
12.10.2023, 16:37
Как известно, все это хранится в AlarmStorage в файле "Application.alarmstorage.1.sqlite".
Простое скачивание (или копирование на флешку) этого файла и открытие его в SqliteBrowser ничего пока не дали - там непонятно как отображается время и нет самих текстовых сообщений:


SELECT name FROM sqlite_master WHERE name NOT LIKE 'sqlite_%'такая команда даст Вам представление какие таблицы хранятся в базе. Необходимо только скачать к винде такой файлик sqlite3.exe, запустить его и вставлять команды SQL

Задумкин Сергей
12.10.2023, 16:53
такая команда даст Вам представление какие таблицы хранятся в базе. Необходимо только скачать к винде такой файлик sqlite3.exe, запустить его и вставлять команды SQL

Все это должны делать люди, далекие от всего этого. При возникновении гарантийных претензий служба эксплуатации заказчика (или наша) должна вставить флешку в ПЛК210, нажать на условную кнопку на ВП110 чтобы сохранить туда архив и отправить его в нашу службу качества.
Соответственно мне либо писать этот архив сразу на SD/USB, либо как то реализовать вариант выгрузки уже имеющегося архива из AlarmStorage (только это должно быть в удобно читаемом виде, т.е. CSV)

Евгений Кислов
12.10.2023, 17:23
Все это должны делать люди, далекие от всего этого. При возникновении гарантийных претензий служба эксплуатации заказчика (или наша) должна вставить флешку в ПЛК210, нажать на условную кнопку на ВП110 чтобы сохранить туда архив и отправить его в нашу службу качества.
Соответственно мне либо писать этот архив сразу на SD/USB, либо как то реализовать вариант выгрузки уже имеющегося архива из AlarmStorage (только это должно быть в удобно читаемом виде, т.е. CSV)

Выгрузить Application.alarmstorage.1.sqlite на накопитель, по FTP или через web-визуализацию - не проблема.
А потом вам требуется научить (это самое сложное) вашу службу качества запускать у них на ПК ваш проект на виртуальном контроллере CODESYS Control Win V3 и подкладывать ему присланный .sqlite. А потом уже можно через команду CODESYS конвертировать в .csv или смотреть прямо в визуализации.
Такой вариант подходит?

capzap
13.10.2023, 07:28
Все это должны делать люди, далекие от всего этого. При возникновении гарантийных претензий служба эксплуатации заказчика (или наша) должна вставить флешку в ПЛК210, нажать на условную кнопку на ВП110 чтобы сохранить туда архив и отправить его в нашу службу качества.
Соответственно мне либо писать этот архив сразу на SD/USB, либо как то реализовать вариант выгрузки уже имеющегося архива из AlarmStorage (только это должно быть в удобно читаемом виде, т.е. CSV)

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

krollcbas
15.10.2023, 17:16
Возникла задача организации записи логов действий и нарушений с СПК107 и ПЛК210 на флеш-накопитель.

Формат вывода нужен приблизительно такой (накапливается на флешке по файлу в день. Чтоб легко открывался и читался):
70954


Перечитал файл "CDSv3.5_Archives_v3.0.pdf", скачал и опробовал вложенные примеры.
С примером OwenArchiver разобраться не сложно, все отлично работает, только это не совсем то что нужно в данном случае.
с остальными примерами либо не разобрался, либо они неработоспособны. Нажимал кнопки, вводил числа, но ничего не записалось

Вот такой код был для записи на флеш-накопитель для ПЛК110 (Codesys 2.3) на библиотеке "OwenLibFileAsync.lib":



PROGRAM USB_PRG
VAR
Name_old:STRING(12);
rTMP1,rTMP2,rTMP3,rTMP4:REAL;
LAG1,LAG2:LAG;
(*Переменные для обслуживания библиотеки SysLibTime*)
GetTime: CurTimeEx;
TimeAndDate: SystemTimeDate;
Sys_Time: SysTime64;

set_time: BOOL := 0; (*установить дату*)
set_date: BOOL := 0; (*установить время*)

(*Переменные для обслуживания библиотеки OwenLibFileAsync*)
pref:STRING:='usb:'; (*префикс названия файла, варианты префиксов:
usb: - съемный flash-носитель;
ffs: (или отсутствие!) - внутренняя память;
ram: тестовый RAM диск*)
handle:DWORD:=0; (*дескриптор файла*)
res: ASYNC_RET_VALUE; (*переменная для организации работы библиотеки OwenLibFileAsync*)
result:DWORD; (*размер буфера*)

StartArchivation: BOOL; (*Переменная запуска архивации. Для начала архивации задайте переменной значение TRUE, для остановки архивации - FALSE.*)
timer_archiv: TON; (*таймер архивации*)
header: STRING(255); (*заголовок таблицы*)
need_new_header: BOOL := 0; (*необходимость сформировать новый заголовок*)
start_archiv: BOOL := 0;
divider:DWORD;

index_old:WORD;
R_TRIG:R_TRIG;
count:INT;
END_VAR

VAR RETAIN
name_of_file: STRING; (*название файла с префиксом*)
today: UINT; (*сегодняшнее число*)
END_VAR

IF Messages.ALARM[0] <> '' THEN
TRIP:=TRUE;

IF Name='' THEN Name:='LOGFILES'; END_IF;

(*Далее сохраняем на USB*)
(*-------------Работа с временем и датой ПЛК------------*)
(* Получаем текущее время и дату*)
HH := Hour ; (* Значение времени в часах *)
MM := Minute ; (* Значение времени в минутах *)
SS := Second ; (* Значение времени в секундах *)
DD := Day ; (* Значение даты в днях *)
MT := Month ; (* Значение даты в месяцах *)
YYYY:= Year ; (* Значение даты в годах *)


(*Если set_time - истина, то можно менять время*)
IF set_time THEN
set_time:=0;
TimeAndDate.Minute:=MM;
TimeAndDate.Second:=SS;
TimeAndDate.Hour:=HH;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
END_IF

(*Если set_date - истина, то можно менять дату*)
IF set_date THEN
set_date:=0;
TimeAndDate.Day:=DD;
TimeAndDate.Month:=MT;
TimeAndDate.Year:=YYYY;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
END_IF;

index:=index;
Messages.FLAG[index]:=Messages.FLAG[index];

IF NOT Messages.FLAG[index] THEN (*если необходимо архивировать, то*)
IF Name<>Name_old THEN (*если наступил новый день, то формируем новый файл с новым именем даты*)
name_of_file:=CONCAT(pref,Name);
name_of_file:=CONCAT(name_of_file,UINT_TO_STRING(D D));
name_of_file:=CONCAT(name_of_file,'.');
name_of_file:=CONCAT(name_of_file,UINT_TO_STRING(M T));
name_of_file:=CONCAT(name_of_file,'.');
name_of_file:=CONCAT(name_of_file,UINT_TO_STRING(Y YYY));
name_of_file:=CONCAT(name_of_file,'.csv');
today:=DD;(*запомнить дату *)
need_new_header:=1;(*далее в новом файле необходимо будет создать "шапку" архива*)
Name_old:=Name;
END_IF

(*-------------Работа с библиотекой OwenLibFileAsync------------*)
CASE state OF
0: (*Открытие файла - этап 1*)
res:=OwenFileOpenAsync(name_of_file,'a',ADR(handle ));;(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
IF res=ASYNC_WORKING THEN
state:=1;(*нет ошибок, переход на открытие файла этап 2*)
ELSE state:=0;
END_IF

1: (*Открытие файла - этап 2*)
res:=OwenFileOpenAsync(name_of_file,'a',ADR(handle ));
IF res=ASYNC_DONE THEN (*если "готов", и нет ошибок, то переход в состояние 2*)
IF handle<>0 THEN
state:=2;(*нет ошибок, переход на запись этап 1*)
ELSE
state:=0;(*иначе можно перейти на 1 этап открытия файла, либо предусмотреть собственное действие самостоятельно *)
END_IF
ELSIF res<0 THEN
state:=0;
END_IF

2: (*Запись в файл - этап 1*)
IF need_new_header THEN (*если новый день суток, формируем новую" шапку"*)
(*формируем колонку Дата*)
header:=CONCAT('Индекс',';');(*|число.месяц.год.|* )
(*формируем колонку с именем первой переменной var1*)
header:=CONCAT(header,'Сообщение');(*|var1*)
header:=CONCAT(header,';');(*|var1|*)
header:=CONCAT(header, '$0A');(*OA =Line Feed - перевод строки, см. таблицу ASCII -символов*)
(*заполняем следующую строку непосредственно данными*)
header:=CONCAT(header,UINT_TO_STRING(index));(*|чи сло*)
header:=CONCAT(header,';');(*|число.*)
(*формируем значение первой переменной var1*)
header:=CONCAT(header, Messages.ALARM[index]);(**)
header:=CONCAT(header,';');(**)
header:=CONCAT(header, '$0A');(*OA =Line Feed - перевод строки, см. ASCII таблицу*)
need_new_header:=0;(*сбрасываем необходимость формировать "шапку" в следующий раз*)

ELSE (*иначе, если файл открывается на дозапись,то формируем только строку архива в формате |число.месяц.год|часы.минуты.секунды|значение var1|значение var2|*)

(*заполняем следующую строку непосредственно данными*)
header:=CONCAT(header,UINT_TO_STRING(index));(*|чи сло*)
header:=CONCAT(header,';');(*|число.*)
(*формируем значение первой переменной var1*)
header:=CONCAT(header, Messages.ALARM[index]);(**)
header:=CONCAT(header,';');(**)
header:=CONCAT(header, '$0A');(*OA =Line Feed - перевод строки, см. ASCII таблицу*)
END_IF

(*Пишем строку в файл*)
res:=OwenFileWriteAsync(handle,ADR(header), LEN(header), ADR(result));(*пишем данные *)
IF res=ASYNC_WORKING THEN
state:=3;(*нет ошибок, переход на запись файла этап 2, либо по усмотрению пользователя*)
ELSE
state:=4;(*иначе можно перейти на этап закрытия файла, либо предусмотреть собственное действие самостоятельно *)
END_IF

3: (*Запись в файл - этап 2*)
res:=OwenFileWriteAsync(handle,ADR(header), LEN(header), ADR(result));
IF res=ASYNC_DONE THEN
IF result=LEN(header) THEN (*если результат равен длине строки, то перейти к закрытию файла, либо по усмотрению пользователя*)
state:=4;
ELSE
state:=4;(*иначе всё равно перейти на закрытие *)
END_IF
ELSIF res<0 THEN
state:=0;
END_IF

4: (*Закрываем файл - этап 1*)
res:=OwenFileCloseAsync(handle, ADR(result));
IF res=ASYNC_WORKING THEN
state:=5;(*нет ошибок, переход на закрытие файла этап 2*, либо по усмотрению пользователя*)
ELSE
state:=0;(*иначе можно перейти на этап открытия файла, либо предусмотреть собственное действие самостоятельно *)
END_IF

5: (*Закрываем файл - этап 2*)
res:=OwenFileCloseAsync(handle, ADR(result));
Messages.FLAG[index]:=1;
IF index<=98 THEN index:=index+1; END_IF;
IF res=ASYNC_DONE THEN header:='';
handle:=0;
IF result=0 THEN
state:=0;(*если файл закрыт успешно, то выходим из условного оператора CASE *)
ELSE
state:=0;(*иначе всё равно выходим, либо предусмореть собственное действие*)
END_IF
ELSIF res<0 THEN (*выход, либо собственное действие*)
state:=0;
END_IF

ELSE state:=0;
END_CASE
END_IF;
(*
Messages_ALARM1_old:=Messages.ALARM[99];
index_old:=index;
*)

IF index>=99 THEN
FOR i:=0 TO 98 BY 1 DO
Messages.FLAG[i]:=0;
Messages.ALARM[i]:='';
END_FOR;
index:=0;
TRIP:=FALSE;
END_IF;
END_IF;
Messages.FLAG[i]:=Messages.FLAG[i];
Count:=Count+1;


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

Евгений Кислов
15.10.2023, 17:35
с остальными примерами либо не разобрался, либо они неработоспособны.


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

Для этого нужно разобраться с остальными примерами. Они, безусловно, работоспособны.

krollcbas
16.10.2023, 00:37
Разобрался)) правда как-то "по-шамански".
1. Посмотрел Ваш (3 года тому назад) снятый видеоролик на ютубе https://www.youtube.com/watch?v=kZpPiwQ5wEI
2. Скачал архивный документ v.2.0
3. Скачал оттуда пример работы с библиотекой CAA File CODESYS V3.5 SP11 Patch 5
4. Сконвертировал, все обновил на что ругалось, поменял таргет на ПЛК210, загрузил и все заработало

Задумкин Сергей
16.10.2023, 16:37
Итак, по поводу архивации в 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.

Возник у меня такой же вопрос по архивации в WSTRING/Unicode.
Методом проб и ошибок у меня вышло закодировать все это в UTF-16 (Little Endian), т.е. маркер не 16#FEFF, а 16#FFFE. Маркер я правда не ставил, а создал в Блокноте документ и при "сохранении как" выбрал кодировку UTF-16 (LE) - все заработало
Вдруг кому поможет

ProgrOwist
15.02.2024, 10:58
Добрый день!

Есть необходимость в архивировании данных по трём датчикам одновременно. При этом по каждому датчику хочу вести отдельный файл. Вопрос вот какой - сколько файлов одновременно можно записывать в память на ПЛК210-02? У самого архиватора OwenArchiver ограничение - два файла, например. Но если не им, а с помощью библиотеки CAA, то можно больше?

Евгений Кислов
15.02.2024, 11:03
Добрый день.


У самого архиватора OwenArchiver ограничение - два файла, например.

В целом, это не ограничение, а рекомендация. Если у вас всего пара параметров по каждому датчику - то и три архиватора будут работать без существенной нагрузки на контроллер.
Если речь о десятках-сотнях параметров - то, действительно, лучше перейти на CAA File.

ProgrOwist
22.02.2024, 14:04
Здравствуйте. Можно ли архивировать переменные типа WSTRING при помощи OWEnArchiver?

Nerion
10.03.2024, 23:54
Добрый вечер!
Хотел уточнить, правильно ли понимаю. По достижению всеми архивами размера из параметра "максимальный размер архива" самые старые будут удаляться? И размер SD карты не влияет, так и будет 2047 мб максимум, хотя флешка гораздо большего объема? Или 2047 это размер одного архива, к примеру за сутки.

Евгений Кислов
11.03.2024, 06:10
Добрый вечер!
Хотел уточнить, правильно ли понимаю. По достижению всеми архивами размера из параметра "максимальный размер архива" самые старые будут удаляться? И размер SD карты не влияет, так и будет 2047 мб максимум, хотя флешка гораздо большего объема? Или 2047 это размер одного архива, к примеру за сутки.

Добрый день.
Если речь о суточных архивах (cо структурой Год/Месяц/День или Год/Месяц_День) - вы все поняли верно.

Евгений Кислов
11.03.2024, 06:12
Здравствуйте. Можно ли архивировать переменные типа WSTRING при помощи OWEnArchiver?

Добрый день.
Потребуется преобразовать их в STRING c помощью функции UNICODE_TO_CP1251 из библиотеки OwenStringUtils.

Иван Светлов
11.03.2024, 10:31
Добрый день, столкнулся со следующей проблемой, при добавлении устройства OwenArchiver и запуске проекта, вылетает 56 ошибок.
------ Компиляция : Приложение: Device.Application -------
типизировать код...
генерировать код...
[WARNING] 125_New: Trend_Flip_Trend1 [Device: Plc Logic: Application: Trend Recording Manager]: C0195: Неявная конверсия типа со знаком 'DINT' в тип без знака 'UDINT': возможно изменение знака
[WARNING] 125_New: Trend_Flip_Trend2 [Device: Plc Logic: Application: Trend Recording Manager]: C0195: Неявная конверсия типа со знаком 'DINT' в тип без знака 'UDINT': возможно изменение знака
[WARNING] 125_New: Менеджер библиотек [Device: Plc Logic: Application]: C0100: Библиотека CmpTargetVisu не добавлена в Менеджер библиотек, либо не найдено корректной лицензии
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseDown'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseUp'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseClick'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseMove'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseDown'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseUp'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseClick'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseMove'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
Компиляция завершена -- 56 ошибок, 3 предупреждений : загрузка невозможна
В чем может быть проблема? До этого делал архивацию на другом похожем проекте, проблем не было.

Евгений Кислов
11.03.2024, 10:36
Добрый день, столкнулся со следующей проблемой, при добавлении устройства OwenArchiver и запуске проекта, вылетает 56 ошибок.
------ Компиляция : Приложение: Device.Application -------
типизировать код...
генерировать код...
[WARNING] 125_New: Trend_Flip_Trend1 [Device: Plc Logic: Application: Trend Recording Manager]: C0195: Неявная конверсия типа со знаком 'DINT' в тип без знака 'UDINT': возможно изменение знака
[WARNING] 125_New: Trend_Flip_Trend2 [Device: Plc Logic: Application: Trend Recording Manager]: C0195: Неявная конверсия типа со знаком 'DINT' в тип без знака 'UDINT': возможно изменение знака
[WARNING] 125_New: Менеджер библиотек [Device: Plc Logic: Application]: C0100: Библиотека CmpTargetVisu не добавлена в Менеджер библиотек, либо не найдено корректной лицензии
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseDown'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseUp'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseClick'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseMove'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseDown'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseUp'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseClick'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
[ERROR] 125_New: C0231: Здесь требуется выражение типа 'BOOL'
[ERROR] 125_New: C0077: Неизвестный тип: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType.MouseMove'
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase.Vis uEnumInputOnElementType' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems.VisuElemBase' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug.VisuElems' не является структурированной переменной
[ERROR] 125_New: C0062: 'OwenArchiver.OwenDebug' не является структурированной переменной
[ERROR] 125_New: C0004: 'OwenDebug' не является компонентом 'CAADiagDeviceDefault'
[INFORMATION] caa device diagnosis, 3.5.17.0 (caa technical workgroup): CAADiagDeviceDefault: C0181: Относительная позиция
Компиляция завершена -- 56 ошибок, 3 предупреждений : загрузка невозможна
В чем может быть проблема? До этого делал архивацию на другом похожем проекте, проблем не было.

Свяжитесь со мной по телеграм (в подписи) и обеспечьте доступ по AnyDesk.

Haba
28.03.2024, 19:02
Добрый день. При архивации, с подключённым виртуальным контроллером, переменной типа BOOL, которую конвертировал в тип BYTE не создаётся папка Archives в PlcLogic. В запущенной программе менял несколько раз переменную BOOL с TRUE на FALSE. Архивацию включал.

Евгений Кислов
28.03.2024, 19:05
Добрый день. При архивации, с подключённым виртуальным контроллером, переменной типа BOOL, которую конвертировал в тип BYTE не создаётся папка Archives в PlcLogic. В запущенной программе менял несколько раз переменную BOOL с TRUE на FALSE. Архивацию включал.

Добрый день.
Свяжите, пожалуйста, завтра утром со мной через telegram (в подписи).
Потребуется предоставить доступ по AnyDesk.
Разберемся со всеми вашими вопросами.