Показано с 1 по 4 из 4

Тема: ПЛК200-3. Как обеспечить бесперебойную работу ПЛК?

  1. #1

    Exclamation ПЛК200-3. Как обеспечить бесперебойную работу ПЛК?

    Здравствуйте!
    Недавно ввели в эксплуатацию конвейерный комплекс, которым управляет 14 ПЛК200-3. Время от времени в разных ПЛК начинаются проблемы с загрузочным приложением. Бывает, что загрузочное приложение просто исчезает. Бывает так, возникает исключение Access Vioation. В этом случае, для того, чтобы вернуть ПЛК в строй, нужно удалять проект через Web-interface (Раздел ПЛК -> Настройки -> Разное) и заново загружать проект через CodeSys
    Чаще всего это происходит, если обесточить ПЛК и заново включить его. Но происходит и при обычной работе (ИБП имеется)

    plc200exeption.png

    Есть ли какие-нибудь рекомендации чтобы решить эти проблемы?

  2. #2

    По умолчанию

    Надо искать ошибки в программе и отлаживать её. Если там Access Violation - то это указывает на кривую работу в программе с:
    * Массивами
    * Разными буферами приёма или отправки данных
    * Штатными библиотеками, которые требуют указателей (например, CodeSys StringUtils)
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  3. #3

    По умолчанию

    Cs-Cs, я имею небольшой опыт работы с CodeSyS, пожалуйста, поправьте меня, если я буду не прав

    Насчёт массивов. Да, массивы у нас широко используются. Но выход за пределы массива контролируется. В добавок, используем функцию CheckBounds и я поставил в ней точки останова, если выход за пределы произойдёт.
    checkBounds.png
    Указатели не используются. А в том ПЛК, где используются, проблем нет.

    Можете уточнить, что такое буферы приёма и отправки данных?

  4. #4

    По умолчанию

    anvar_kh У Евгения Кислова была крутая статья про отладку проектов, вот: https://ftp.owen.ru/CoDeSys3/98_Books/CodesysDebug.pdf. Советую её прочитать, так как там ещё и сказано про то, как дамп памяти посмотреть.
    В CheckBounds было бы здорово сделать ещё и запись в лог ПЛК (про это у Евгения Кислова тоже есть пример в той же статье).
    Буферы - это те же массивы. Их используют, когда надо принять какие-то данные в нестандартном виде (типа "Посылка длиной в 5 байт, третий из которой - значит то-то и то-то"), и обычно обрабатывают через указатели.
    Ещё есть редкие случаи сбоя программы тогда, когда какие-то ресурсы (дескрипторы, Handle - например, файлов) не освобождаются. Если программа крутится долго - то в какой-то момент дескрипторов не хватает, и программа выдаёт ошибку.
    Но судя по Access Violation - я бы искал работу с памятью.
    Ах, да! Ещё Access Violation даёт вызов FB с переменными типа IN_OUT, если они не ему не назначены.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 25.11.2022, 09:09
  2. Ищу работу.
    от CSharp в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 28.04.2015, 01:58
  3. ПР 114 проверить работу в ОНЛАЙНЕ как?
    от дрю в разделе Программируемые реле
    Ответов: 10
    Последнее сообщение: 08.04.2015, 20:29
  4. Ответов: 3
    Последнее сообщение: 04.08.2009, 16:09
  5. Как оченить свою работу
    от Димитрий в разделе Трёп (Курилка)
    Ответов: 10
    Последнее сообщение: 05.12.2008, 21:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •