95. Использование RETAIN в CODESYS V3.5

Поділитися
Вставка
  • Опубліковано 28 лис 2024

КОМЕНТАРІ • 48

  • @ОчиченкоНикита

    Спасибо, очень полезная информация! Подача как всегда на уровне.

  • @МаксимРузов-ъ1у
    @МаксимРузов-ъ1у Рік тому +1

    Хотелось бы разобраться с методами (не нашёл про это почти ничего) и курс работы с библиотеками. Ролик замечательный, спасибо Вам за труды!

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Насчет методов - можете, например, в этом документе посмотреть примеры их создания и использования:
      ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Archives_v3.0.pdf
      А насчет "курса работы с библиотеками" - можно подробнее? Какие библиотеки вас интересуют?

  • @Glukonic
    @Glukonic Рік тому +1

    Во второй вид Ретейн хорошо делать сохранение часов наработки к примеру или ещё какие-то сервисные параметры который не должны терятся на оборудовании из-за сбоя программы или тд

  • @nikitagorkovenko6544
    @nikitagorkovenko6544 Рік тому

    Спасибо, как всегда информативно и структуироаано. Хотелось еще добавить к видео поведение Retain И Persistent Retain переменных при их локализации (AT Declarations). Как одновременно иметь локализованных переменные и в тоже время энергонезависимые. Спасибо!

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Это хороший вопрос. Я в принципе рекомендую избегать прямых адресов (AT Declarations), поэтому не уделил ему внимания. Документация в этом вопроса однозначна - в области RETAIN нельзя использовать AT-адресацию ("An assignment of inputs, outputs, or memory addresses with the AT keyword is not permitted."). content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_var_retain.html
      В вашем случае можно использовать функционал рецептов - на канале есть отдельный плейлист на эту тему.

  • @Glukonic
    @Glukonic Рік тому +1

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

  • @mikhailborzykh1506
    @mikhailborzykh1506 Рік тому +2

    Добрый вечер. Спасибо за интересный ролик. Я хотел бы узнать об Persistance Manager. Использование которого даёт возможность создавать структуру данных где определённые вариабле могут быть перзистент

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Спасибо за идею - добавил себе в список.

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Cделал видео: ua-cam.com/video/of8meE9WeXI/v-deo.html

  • @slayzay
    @slayzay Рік тому +1

    Спасибо, полезно!
    О чем хотелось бы посмотреть:
    разобрать пример записи лога аварий на флешку. Чтоб велась накопительная история событий. Codesys 2.3 делал, по вашим примерам и сдал объекты. Codesys 3.5 пока нет, требует времени

    • @CodesysOneLove
      @CodesysOneLove  Рік тому +1

      Вопросу записи данных в файлы посвящен целый документ: ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Archives_v3.0.pdf
      Примеры там есть. Видео о работе с файлами тоже есть на канале.

    • @slayzay
      @slayzay Рік тому

      @@CodesysOneLove Спасибо!

  • @OleksandrYeromenko
    @OleksandrYeromenko Рік тому +2

    Добрый день. Спасибо за качественный контент. Подскажите, пожалуйста, что будет с retain переменными, если обновить boot application без codesys, а с помощью файлового менеджера?

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Добрый день. Применительно к нашим ПЛК (где эта ситуация обрабатывается стандартным механизмом CODESYS) - новое приложение не загрузится из-за ошибки контрольной суммы RETAIN-памяти (простыми словами - рантайм "поймет", что текущий слепок RETAIN-памяти не соответствует загруженному приложению). Поэтому, например, в наших скриптах при загрузке проекта с USB или SD RETAIN-память полностью зачищается перед копированием нового приложения в память контроллера.

  • @Glukonic
    @Glukonic Рік тому

    По поводу идей для видео - я бы хотел немного узнать об 2-3х устройств в одном проекте (соккетами вроде это называется на одном из вэбинаров вскользь касались этой темы) узнать это на примере связки ПЛК210 и СПК1xx - плюсы и минусы если одно из устройств будет необходимо временно обесточить (мусор в виде отчёта об ошибках и избежания ситуаций с опросом устройства пока оно спит) Спасибо. Пока что-то особо не знаю что предложить, если только рассказать про обьект AxisGroup (я так понимаю что это идеально подходит для Серводрайверов все параметры или частотников в коопе с серводвигателями)

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      По первому вопросу - на том вебинаре не "касались вскользь", а демонстрировался конкретный пример:
      ua-cam.com/video/-MYbECw9Ots/v-deo.html
      Насчет описанной ситуации про обесточивание не понял - лучше задайте этот вопрос на нашем форуме, более подробно описав, что именно вас интересует.
      По второму вопросу - наши контроллеры не поддерживают AxisGroup, так что нем могу ничего про него рассказать.

  • @mad_donda
    @mad_donda Рік тому +1

    Приветствую, особенность retain переменных в ФБ это фишка ОВЕН, или codesys в общем? Спасибо).

  • @MaximAndri
    @MaximAndri Рік тому +1

    Правильно ли я понял, что в программе не надо контролировать частоту изменений persistent переменной, так как запись все равно будет происходить 1 раз в секунду и это не приведет к износу памяти? А если значение переменной не изменится, то и запись не будет происходить раз в секунду?

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Да, но это касается именно ПЛК ОВЕН. В других контроллерах может быть другая реализация RETAIN.

  • @apple_wow6016
    @apple_wow6016 Рік тому

    Вопрос про сохранение и восстановление Persistent переменных. Как выбрать переменные которые нужно сохранить , не все а только те что выбрал ?

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Если я правильно понял вопрос и он касается момента на 14:45 - то в группе рецептов PersistentVariables в рецепте PersVars нужно для тех переменных, которым не нужно восстанавливать значения, сделать пустые ячейки.

    • @apple_wow6016
      @apple_wow6016 Рік тому

      @@CodesysOneLove вопрос касается момента 18:50. Там показывается как сделать слепок Persistent переменных. Можно ли как то выбрать те переменные которые мне нужны для сохранения, а не все Persistent?

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      @@apple_wow6016 нет, в этом случае в файле сохраняется полный слепок энергонезависимой памяти (включая все RETAIN- и PERSISTENT-переменные).

  • @Созидатель-п6х
    @Созидатель-п6х 3 місяці тому

    Добрый день.
    Подскажите, пожалуйста, чем отличаются теплый (WARM) старт и холодный (COLD) старт, кроме как в связи с поведением RETAIN- переменных?
    И перезагрузка ПЛК отключением автомата, это что: теплый сброс, холодный сброс, пообще не сброс в данном смысле?

  • @Glukonic
    @Glukonic Рік тому

    Хотел по поводу тем, возможно интересно будет пояснить чем кардинально отличаются методы, к примеру метод добавили а внизу в ПРГ написали ACT(); к примеру, что интересного можно указывать между скобками, какой метод более лучше для начала если хочется просто не путаться в коде и разбить логику на компоненты оборудования и исключать по булевой переменной ненужный метод (про отключения узлом мастером шикарно и понятно была рассказано, там имя узла выбирать и энейбл вроде очевидно, но очевидно для проффи) Разбил на несколько указал в список SD_copy_USB (); и другие в этом духе, а вот сейчас думаю, а вот выйдет из строя пчв или почистить его, я исключу его из опроса, а хочется что-бы в коде контроллер не трогал переменные - не знаю интересно ли это народу, так что это мысли так сказать в комментариях. Спасибо.

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Между скобками можно указать аргументы метода - точно так же, как это делается для функции.

  • @alexanderfilin4346
    @alexanderfilin4346 8 місяців тому

    Как добавлять переменные из структур в энергонезависимую память?

    • @CodesysOneLove
      @CodesysOneLove  8 місяців тому

      Не получится. Только экземпляр структуры целиком. Или изворачиваться - например, вместо переменной в структуре объявлять указатель на нее, и передавать при инициализации в него адрес RETAIN-переменной.

  • @Glukonic
    @Glukonic Рік тому

    а можно щи в ПерсистенВар врисывать начальные переменные ? - что-бы при заливке проекта на новый контроллер не были нули

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      Да, можно.

    • @Glukonic
      @Glukonic Рік тому

      @@CodesysOneLove спасибо, я тогда уставки из Ритейн в список Персистем перевиду. P/S надеюсь попаду на Вэбинар, на днях зарегистрируюсь.

  • @ОлегПфлюг-к3ц
    @ОлегПфлюг-к3ц Рік тому

    Вопрос по кодесисту 3.5 в свойствах fb или POU есть галочка внешняя реализация. Что за зверь и как ее пользовать?

    • @CodesysOneLove
      @CodesysOneLove  Рік тому +1

      Эта галочка нужна, когда вы создаете библиотеку на языке ANSI C, которую потом планируете использовать в CODESYS. Чтобы узнать, как ее использовать - приходите к нам работать (или к другому производителю, который разрабатывает ПЛК с рантаймом CODESYS).

    • @ОлегПфлюг-к3ц
      @ОлегПфлюг-к3ц Рік тому

      @@CodesysOneLove спасибо за ответ. Может подскажите как посмотреть на что она ссылается?)

    • @CodesysOneLove
      @CodesysOneLove  Рік тому

      @@ОлегПфлюг-к3ц я не понимаю вопроса, извините.

  • @gtfox6631
    @gtfox6631 4 місяці тому

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

    • @CodesysOneLove
      @CodesysOneLove  4 місяці тому

      Я не говорил, что мне "не нравится ретейн в фб" - лишь описал, какие последствия имеет такой подход. Фраза "рассказать как это делается " тоже не очень понятна. Чтобы использовать ретейн в ФБ - достаточно добавить в области объявления блока секцию VAR RETAIN. Больше рассказывать, на мой взгляд, тут нечего. Что касается "конфигурационных переменных" - если речь о VAR_CONFIG, то они не имеют отношения к RETAIN.

    • @gtfox6631
      @gtfox6631 4 місяці тому

      @@CodesysOneLove да, прошу прощения, это я смешал в кучу ретейн и конфигурационные переменные... В овене нет такой функциональности, чтобы объявить назначенные конфигурационные переменные как ретейн (при этом весь FB не попадает в ретейн) А возможно такое было в ваго, где область регистров модбас была ретейном и по этим же адресам можно было прописать конфигурационные переменные из ФБ (причем не используемые переменные прописывались на один адрес и экономили кучу места)

  • @КонстантинФедоров-о3л
    @КонстантинФедоров-о3л 5 місяців тому

    Можно ли персистент переменные сохранять через код программы?

    • @CodesysOneLove
      @CodesysOneLove  5 місяців тому

      Поясните причину вашего вопроса, пожалуйста, чтобы я смог точнее на него ответить.

    • @КонстантинФедоров-о3л
      @КонстантинФедоров-о3л 5 місяців тому

      @@CodesysOneLove Как я понял, персистент переменные можно сохранять лишь вручную в персистент варс, через рецепты, также восстановить. А есть ли возможность автоматически их сохранять через код программы?

    • @CodesysOneLove
      @CodesysOneLove  5 місяців тому

      @@КонстантинФедоров-о3л нет, это не так. Кратко повторю некоторые тезисы из видео: Механизм сохранения PERSISTENT-переменных может быть разным и зависит от конкретного контроллера; в контроллерах ОВЕН они сохраняются автоматически, как и RETAIN - при изменении любой из относящихся к ним переменных, но не чаще раза в секунду. То, что касается рецептов - это просто возможность сохранить "слепок" текущих значений PERSISTENT-переменных на ПК (например, для дальнейшего анализа).

    • @КонстантинФедоров-о3л
      @КонстантинФедоров-о3л 5 місяців тому

      @@CodesysOneLove Мне как раз таки и нужно автоматически сохранять переменные персистент в рецепты. Для этого требуется библиотека Recipe Management или есть, также возможность обратиться через библиотеку CmpApp?

    • @CodesysOneLove
      @CodesysOneLove  5 місяців тому

      @@КонстантинФедоров-о3л В данном случае потребуется именно Recipe Management. CmpApp для вашей задачи не подойдет.