1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

АГАВА ПЛК-40. Codesys. Проблемы с FB.

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Создал проргамму на ST.
Моточасы.

В итоге, все создаваемые функциональные блоки не обсчитываются.
На их входные переменные приходят значения.
А вот уже локальные переменные внутри блока не работают. В них ничего не записывается.

В чём проблема, как думаете?
[+] Пример:
01 пробл.png
02 пробл.png
P.S. Есть ли вообще спецы по Агаве?
Я видел упоминания на форуме.
Или же это по сути тот же Овен?
Стоит ли создать отдельный раздел по КБ Агава и их продукции?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17551
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 818 раз
Поблагодарили: 1647 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение Jackson »

mr_nik писал(а): 19 мар 2020, 12:03 Стоит ли создать отдельный раздел по КБ Агава и их продукции?
Будет масса вопросов - создадим. Можно хоть сейчас.
Если поможете с моделированием - будет всем хорошо (а Вам - большое спасибо).
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Jackson писал(а): 19 мар 2020, 13:31 Будет масса вопросов - создадим. Можно хоть сейчас.
Если поможете с моделированием - будет всем хорошо (а Вам - большое спасибо).
Я только начал работать с Агавой и с Codesys.
Так что помогу, чем смогу, каонечно. Но только когда наработки будут хотя бы)

Ну а по поводу непосредственно моего вопроса у Вас есть совет?
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17551
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 818 раз
Поблагодарили: 1647 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение Jackson »

mr_nik писал(а): 19 мар 2020, 14:35 Ну а по поводу непосредственно моего вопроса у Вас есть совет?
Лично у меня нет. Подождите - здесь же много людей.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение megavolt86 »

mr_nik писал(а): 19 мар 2020, 12:03 В итоге, все создаваемые функциональные блоки не обсчитываются.
На их входные переменные приходят значения.
А вот уже локальные переменные внутри блока не работают. В них ничего не записывается.
Значит блоки не работают раз не считается, в экземпляре включите вход "en". Должно помочь
Upd.
А еще стесняюсь спросить в plc_prg блоки то вызываются? Мало ли....
:ext_secret:

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

megavolt86 писал(а): 20 мар 2020, 04:51 А еще стесняюсь спросить в plc_prg блоки то вызываются? Мало ли....
Удивительно, но проблема была именно в этом.

Спасибо, за совет.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Ещё есть вопрос про архивирование.

У ОВЕНа есть отдельный компонент по этому аспекту.
OwenArchiver.
Я пытался его использовать на Агаве, не мудрствуя лукаво, но не вышло.
Там многое упирается в их же компонент Drives, который идёт в составе ОВЕНовских библиотек (и каждая библиотека заточена под соответствующий ПЛК).
А там как раз есть полезная функция для флешки.

Для Агавы соответственно таких компонентов нет.
И по сути все эти инструкции придётся писать вручную.

В связи с выше сказанным вопрос:
Где можно найти информацию о том, как это всё сформулировать на языке ST?

P.S.: тех.поддержка Агавы посоветовала почитать учебники по Паскаль и Делфи =)
Я, конечно, всё понимаю.
Но хотелось бы более насыщенного и сконцентрированного источника информации.

P.P.S.: читаю Петрова, но там мало нюансов и подробностей.

pike
завсегдатай
завсегдатай
Сообщения: 580
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 56 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение pike »

Из переносимых между контроллерами библиотек для CodeSys знаю только OSCAT: https://store.codesys.com/oscat-basic.h ... re=default
Все остальное требует требует знания аппаратной платформы и пишется разработчиками контроллеров. Если Агава не написала библиотеку для записи на флэшку, то у вас это вряд ли получится.
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.

se_sib
освоился
освоился
Сообщения: 277
Зарегистрирован: 14 дек 2015, 12:15
Имя: Евгений
Страна: Россия
город/регион: Краснодар
Благодарил (а): 5 раз
Поблагодарили: 73 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение se_sib »

mr_nik писал(а): 23 мар 2020, 16:54 Ещё есть вопрос про архивирование.
Библиотеки есть в магазине codesys
https://store.codesys.com/application.html

Например работа с CSV есть в сборнике IIoT Libraries SL
https://store.codesys.com/application/i ... es-sl.html
(совместимость с Агава надо проверять.)

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Нашёл решение: использование библиотеки SysFile.
С помощью неё можно сохранять в .csv файл.

Но теперь есть проблема. Как реализовать выдачу команды на запись в этот файл каждый раз в определённый отрезок времени.
Думал сделать через счётчик. Но как?
Ведь у него вход по типу bool.

Может кто-нибудь подсказать?

Sergy6661
read only
read only
Сообщения: 577
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 17 раз
Поблагодарили: 77 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение Sergy6661 »

По таймеру типа TON, по временной метке ... вариантов много.
На ПЛК (любой) производитель делает руководящий документ- "Руководство по программированию" (либо другое аналогичное название).
Вот пока вы такой документ не изучите толку не будет.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Sergy6661 писал(а): 25 мар 2020, 08:17 На ПЛК (любой) производитель делает руководящий документ- "Руководство по программированию" (либо другое аналогичное название).
Вот пока вы такой документ не изучите толку не будет.
Я изучил руководства производителя. Да там есть информация, но она общая. А такие нюансы не объясняются.
При обращении в поддержку - лениво советуют почитать Паскаль и Делфи.
По ST на русском я нашёл только Петрова, но и там по сути только общая информация.
Можете посоветовать что-то конкретное по моей проблеме?

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

UPD:

Сделал периодическую выдачу сигнала на запись (через счётчик).

Но теперь другая проблема.

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

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение SMax »

Изображение

Отправлено спустя 2 минуты 15 секунд:
SysLibFile_RU.pdf
Отправлено спустя 27 минут 33 секунды:
CoDeSys 3.5

Изображение

https://product-help.schneider-electric ... tocid=_0_0

Отправлено спустя 2 минуты 34 секунды:
AM_APPEND_PLUS - Open an existing file with Append (read/write) access. If file does not exist, Open creates a new file
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

SMax писал(а): 30 мар 2020, 15:42 AM_APPEND_PLUS - Open an existing file with Append (read/write) access. If file does not exist, Open creates a new file
Да, действительно, это помогло.
Теперь данные сохраняются, как задумывалось.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Теперь есть задача определять флэш-карту, которая будет подключаться для сохранения на неё файла архива.

Как сохранять - понятно.

Но я хочу сделать условие:
- если карта не подключена, то выводить сообщение.

Но я не могу понять какую библиотеку использовать в данном случае и как это сформулировать на языке ST.
По какому признаку следить за тем, что флэш карта смонтирована?
Стоит использовать SysDir Library?

Поделитесь своими советами, пожалуйста.

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение SMax »

Ну наверное по возвращаемому значению функции SysFileOpen, равному RTS_INVALID_HANDLE при невозможности открытия/создания файла.

Отправлено спустя 1 час 53 минуты 13 секунд:
Пример:

Код: Выделить всё

VAR
   FileName : STRING := 'c:/test.txt';
   pResult : POINTER TO SysFile.RTS_IEC_RESULT;
   FileHandle : SysFile.RTS_IEC_HANDLE;
END_VAR

FileHandle := SysFileOpen(szFile := FileName, am := AM_APPEND_PLUS, pResult := pResult);

IF FileHandle = SysFile.RTS_INVALID_HANDLE THEN
   //нет доступа к файлу (вывод сообщения)
ELSE
   //Запись в файл (дальнейшие действия)
END_IF

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

SMax писал(а): 01 апр 2020, 14:57 Ну наверное по возвращаемому значению функции SysFileOpen, равному RTS_INVALID_HANDLE при невозможности открытия/создания файла.
Попробовал также.

Я, правда, сделал в виде функции.
И вызываю её при нажатии на кнопку.
Безымянный_12.png
Но в таком случае тоже не получается
Подключаю флешку через переходник - не работает.
Директория не та? У производителя в руководстве написано /run/media/sda.

Подскажите, пожалуйста.

Могу детализировать пример, если потребуется.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение SMax »

В руководстве ПК-40 написано:
Файловая система состоит из системной ФС и монтируемой ФС, которая доступна как на чтение, так и для записи, имеющая следующие точки монтирования:
/run/media/mmcblk* для SD-карты;
/run/media/sda* для USB-флеш;

В руководстве ПК-30:
/run/media/mmcblk[0,1]p[0-3] для SD-карты;
/run/media/sda[1,4] для USB-flash.

Что означают эти цифры и звездочки?
Вам наверное лучше обратится к производителю, для выяснения как обращаться к сменным носителям через переходники и пр.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

SMax писал(а): 02 апр 2020, 08:01 Что означают эти цифры и звездочки?
Вам наверное лучше обратится к производителю, для выяснения как обращаться к сменным носителям через переходники и пр.
Да, действительно странно.

Я перепробовал возможные варианты sda(1,2,3,4) по аналогии с ПЛК-30 - но не получилось.

Жду ответа от тех.поддержки Агава.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

SMax писал(а): 02 апр 2020, 08:01 В руководстве ПК-40 написано:
Файловая система состоит из системной ФС и монтируемой ФС, которая доступна как на чтение, так и для записи, имеющая следующие точки монтирования:
/run/media/mmcblk* для SD-карты;
/run/media/sda* для USB-флеш;
В руководстве ПК-30:
/run/media/mmcblk[0,1]p[0-3] для SD-карты;
/run/media/sda[1,4] для USB-flash.
Что означают эти цифры и звездочки?
Вам наверное лучше обратится к производителю, для выяснения как обращаться к сменным носителям через переходники и пр.
Тех. поддержка ответила, что для USB-флэш: /run/media/sda1

Но сохранение всё равно не происходит.

Я монтирую пустую флэшку. Может из-за этого?
Хотя по идее SysFileOpen должен в этом случае создавать новый файл.

Вы видели мой код. Всё корректно?
Или всё-таки что-то надо изменить?

Velt
освоился
освоился
Сообщения: 225
Зарегистрирован: 26 мар 2017, 13:05
Имя: Денис
Страна: Россия
город/регион: Самара
Благодарил (а): 13 раз
Поблагодарили: 37 раз

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение Velt »

mr_nik писал(а): 07 апр 2020, 13:02 Но сохранение всё равно не происходит.
Проверьте требования к формату флешки. Скорее всего, она должна быть отформатирована под FAT32.
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4727
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 392 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение VADR »

Попробуйте для теста написать другую функцию, с операцией чтения. Файлик вручную на компе создайте и попробуйте прочитать. Если не будет читаться - возможно, у вас обращение не к тому устройству. И, кстати, существует ли функция чтения каталогов? Если есть - попробуйте ей прочитать содержимое каталога /run/media/ - туда по идее должны монтироваться флешки и карты, надо убедиться, что они действительно монтируются.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Автор темы
mr_nik
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 19 мар 2020, 11:10
Имя: Никита
Страна: Россия
город/регион: Екатеринбург
Благодарил (а): 2 раза

АГАВА ПЛК-40. Codesys. Проблемы с FB.

Сообщение mr_nik »

Попробовал другой вариант по совету тех.поддержки Агава (см. вложение под спойлером).
Советовали использовать CAA File библиотеку вместо SysFile.
[+] Вот такой пример
fyecfyceyf1111111111111111.png
Действительно помогло, файл копировался на флешку. (Правда при подключении флешки к любому ПК каждый раз винда ругалась, что флешку надо восстановить).

Но файл копировался корректно.

Однако, проблема была в том, что я не мог корректно привязать признаки удачного и неудачного копирования, чтобы сделать сигнализацию на визуализации.

В моём случае я просто взял две текстовых формы и в их признаке невидимости привязал переменные bool (сделав их глобальными).
И просто записывал true или false, меняя видимость этих "табло".

В ответ на эти вопросы, мне сказали вообще использовать CASE.
И я попробовал
[+] Я выполнил в таком виде:

Код: Выделить всё

​​​​
FUNCTION SAVE_TO_FLASH: RTS_IEC_RESULT
VAR CONSTANT
    sFileNewName: STRING := '/run/media/sda1/data.csv';
    sFileOldName: STRING := '/run/media/mmcblk1p1/data.csv';
END_VAR
VAR
    FileStatus: uint := 0;
    Sync: RTS_IEC_RESULT;
    fileopn: FILE.Open;
    filecp: FILE.Copy;
    filecls: FILE.Close;
    filerd: FILE.Read;
    hFile: FILE.CAA.HANDLE;
    sSizeString: STRING := '';
END_VAR

_____________________________________


FileStatus := 0;

CASE FileStatus OF
    0:
        filecp( 
        sFileNameSource := sFileOldName, 
        sFileNameDest := sFileNewName,
        udiTimeOut := 3000000,
        xOverWrite := TRUE);
        FileStatus := 1;
    1:
        filecp.xExecute := TRUE;
        IF filecp.xDone THEN
            FileStatus := 2;
        END_IF
        IF filecp.xError THEN
            GVL.copy_err := TRUE;
            GVL.flash_NC := FALSE;
            GVL.arch_save := FALSE;
        END_IF
    2:    fileopn(
            sFileName := sFileNewName, 
            eFileMode := File.MODE.MREAD);
        fileopn.xExecute := TRUE;
        hFile := fileopn.hFile;
    3:    filerd(
            hFile := hFile,
            udiTimeOut := 3000000,
            pBuffer := ADR(sSizeString),
            szBuffer := 255);
            
        filerd.xExecute := TRUE;
            
        IF filerd.xDone THEN
            GVL.copy_err := FALSE;
            GVL.flash_NC := FALSE;
            GVL.arch_save := TRUE;
            FileStatus := 4;
        ELSE
            GVL.copy_err := FALSE;
            GVL.flash_NC := TRUE;
            GVL.arch_save := FALSE;
            FileStatus := 4;
        END_IF
        IF filerd.xError THEN
            GVL.copy_err := TRUE;
            GVL.flash_NC := FALSE;
            GVL.arch_save := FALSE;
            FileStatus := 4;
        END_IF
    4:
        FileStatus := 0;
        filecls.hFile := hFile;
        filecls.xExecute := TRUE;
END_CASE

SysProcessExecuteCommand( '/bin/sync', ADR( Sync ) );
Но теперь уже ничего не копируется :)

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

Вернуться в «Средний уровень автоматизации (управляющий)»