Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Обработка исключений

  1. #1

    По умолчанию Обработка исключений

    Здраствуйте.
    Хорошим тоном для программиста является то, что в своей программе он должен предусмотреть все ситуации работы алгоритма, плохие данные и т.д. Когда в работу вступают еще и реальные приборы, то тут нужен особый подход. Программа для ПЛК должна быть простой и как можно более без ошибочной. Если ПЛК является мозгом системы, такой как котельная, то тут вообще нужен глаз да глаз.
    Вот разработал я проект для котельной все все одобрили и начали писать, выбрали для управления шкафов ПЛК 63 - как достаточный и недорогой, но наткнулся на проблему. Как таковой обработки исключений я не нашел в CodeSys, попробовал использовать овновскую библиотеку. Зарегистрировал прерывание, описал callback функцию, но шото нифига не выходит. Подскажите пожалуйста как мне организовать обработку исключений на ПЛК 63, и возможно ли это вообще?

  2. #2

    По умолчанию

    Цитата Сообщение от const3 Посмотреть сообщение
    Здраствуйте.
    Хорошим тоном для программиста является то, что в своей программе он должен предусмотреть все ситуации работы алгоритма, плохие данные и т.д. Когда в работу вступают еще и реальные приборы, то тут нужен особый подход. Программа для ПЛК должна быть простой и как можно более без ошибочной. Если ПЛК является мозгом системы, такой как котельная, то тут вообще нужен глаз да глаз.
    Вот разработал я проект для котельной все все одобрили и начали писать, выбрали для управления шкафов ПЛК 63 - как достаточный и недорогой, но наткнулся на проблему. Как таковой обработки исключений я не нашел в CodeSys, попробовал использовать овновскую библиотеку. Зарегистрировал прерывание, описал callback функцию, но шото нифига не выходит. Подскажите пожалуйста как мне организовать обработку исключений на ПЛК 63, и возможно ли это вообще?
    А какие конкретно исключительные ситуации Вы собираетесь обрабатывать ?

  3. #3

    По умолчанию

    Здравствуйте const3,
    Есть олимпиады/соревнования по программированию и в задании где необходимо было обработать ошибочные данные и тд. У победителя соревнований не было ни одного «try-catch-finally» и тд. все проверялось на предварительном этапе:
    1. Если корень квадратный из числа – с начало сравнивалось «число < нуля».
    2. Если надо было что-то перемножить сложить - проверялось «действительно ли число».
    и тд.

    Мораль сей басни такова: перепроверяйте все данные + исправность оборудования!!!
    Например:
    1. включили пускатель и через какое-то время должен замкнутся дополнительный контакт заведенный на ПЛК1хх, если не успел замкнутся неисправность! Выключение аналогично и тд.
    2. при преобразовании из DWORD (0-4294967295, 32 Bit) в WORD (0-65535, 16 Bit)
    Проверьте что бы Вам остались не только младшие биты, если DWORD>65535. Аналогично для REAL->WORD и тд.
    3. При включении программы или подачи питания на ПЛКххх подождите некоторое время прежде чем принимать решения, что давление/температура низкое и тд. Может просто данные не успели оцифровать или считать по RS485.
    4. Проверяйте данные на целостность если коэффициент пропорциональности для ПИД-регулятора = 0 значит что-то здесь не так. В этом случае заменить его своим значением подобранным после пусконаладки и дт.
    5. Если температура проветривания теплицы ниже задания значит надо либо задание температуры теплицы сделать ниже либо порог проветривания выше.
    6. Если неисправен датчик температуры наружного воздуха значит в автоматическом режиме прекратить управляющее воздействие на исполнительный механизм контура регулирования температуры подачи отопления. и тд.

    P. S. Функций обработки исключений в CoDeSys я тоже не встречал, но программы с таким подходом работают и ведут себя адекватно даже при неисправности датчиков и не верных уставок и тд :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от const3 Посмотреть сообщение
    Здраствуйте.
    Хорошим тоном для программиста является то, что в своей программе он должен предусмотреть все ситуации работы алгоритма, плохие данные и т.д. ... ...Как таковой обработки исключений я не нашел в CodeSys
    Цитата Сообщение от Gans Посмотреть сообщение
    P. S. Функций обработки исключений в CoDeSys я тоже не встречал, но программы с таким подходом работают и ведут себя адекватно даже при неисправности датчиков и не верных уставок и тд :-)
    Если брать языки высокого уровня для ПК, то в основном исключения касаются работы с файлами, с обменом по сети и т.п.. Подобные вещи в ПЛК работают посредством библиотек, К примеру берем документацию на бибку SysLibFile_RU и читаем что касается открытия файла
    SysFileOpen
    Функция типа DWORD, используется для открытия существующего или создания нового файла.Возвращает дескриптор файла, либо '0' в случае ошибки.
    Получая ноль это как раз и есть работа бибки обработавшей исключение
    SysLibMem_RU
    SysMemAlloc
    Функция типа DWORD, служит для динамического выделения памяти.
    Возвращаемое функцией значение есть указатель на выделенную память либо 0, если нет возможности выделить запрошенный объем памяти
    ну и так далее, кроме того к исключениям можно отнести и "злую собаку"

  5. #5

    По умолчанию

    Я тут не хочу ни с кем спорить, ваши ответы очень мне помогают и думаю другим людям также. Но олимпиада по программированию и реальные ситуации это как вы понимаете разные вещи, даже если у вас есть хорошие данные, но в какое-то время плохо запаяная ножка оптрона отошла и сигнал пропал, а этот оптрон управлял исполнительным механизмом, которые должен был работать всегда, но кто ж знал, что где-то на заводе брак и т.д. Как говорят доверяй, но проверяй. А если например программу пишет много разработчиков, и каждый пишет только свой блок, который просто является черным ящиком, имеющий входы и выходы. И ты написал блок и уверен, что при определенных входных данных он стабильно работает, но тут по сети данные исказились и к тебе вместо 3х байт пришли 2.5.

    Это был отступ. Но ближе к делу. Исключительные ситуации датчиков и т.д. - это не-то, я имел ввиду исключительные ситуации программы. capzap попал в точку. Обработка исключительных ситуаций при передаче по сети. У меня нет ПЛК 110, там я так понял протоколы все реализованы уже, в 63 еще нужно писать самому, используя библиотеку Modbus, тут то и возникают иногда баги, например при передаче нескольких байтов.
    Еще меня беспокоит WatchDog timer. Одно дело когда программа зависла , но в то же время не поменяла своего состояния, а другое - это когда ПЛК сам перегружается когда ему вздумается. Невозможно предугадать какой код сколько времени выполняется, особенно, когда это проверяется дебаггером.
    Я понимаю что с помощью retain переменных и хитрых алгоритмов можно вернуть систему в работоспособное состояние, но извините меня и скажите , что я не прав...
    Да виноват разработчик, но все же, если что плохое может случится оно обязательно случится, все что может сломатся и не может все равно сломается (з-н Мерфи). Так что нужно подстраховываться.

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от const3 Посмотреть сообщение
    это когда ПЛК сам перегружается когда ему вздумается. Невозможно предугадать какой код сколько времени выполняется, особенно, когда это проверяется дебаггером.
    У Вас не верное представление о работе ПЛК, это не компьютер. ПЛК перегружается когда цикл по времени превысил задаваемый параметр максимальное время цикла, а не как Вы выразились когда вздумается. Так же ни кто особо несчитает сколько код будет выполняться во время цикла, одни и те же вычисления каждый цикл будут иметь одно и тоже время, поэтому подобрав оптимальное минимальное и максимальное время цикла, можно забыть о беспокойствах перегрузки контроллера.
    Что же касается обмена данных, перед началом отправки запускаете таймер, по его истечении прекращаете ожидание ответа и переходите к повтору посылки запроса, это и будет обработка исключения

    ЗЫ по возможности избавтесь от таких операций как WHILE, FOR и т. п. это сосвсем не то что в компьютерном программировании из-за них в основном и происходят перегрузки

  7. #7

    По умолчанию

    "одни и те же вычисления каждый цикл будут иметь одно и тоже время"
    Это кто вам такое сказал? Откуда такие сведения. Даже если будут одни и те же начальные условия на универсальном процессоре не могут операции выполнятся динаково. Конвееры разные, разная последовательность выборки данных, разный стек сопроцессора и процессора, стек памяти + прерывания + watchdog, даже разная температура крисалла все таки - представьте что кристалл перегрелся. Даже на ПЛИС и то не будет одинаковое время выполнения кода, хоть там все выполняется параллельно. Но не будем спорить . Я вас понял. Спасибо за советы. А когда вздумается: я имел ввиду то, что не возможно предугадать когда сработает watchdog, и какой код это вызовет. Я не говорю о предсказуемом коде, а говорю о том который трудно проверить в лабораторных условиях.

  8. #8
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    выкладывайте код и я возможно скажу где у Вас "собака" затаилась

  9. #9

    По умолчанию

    Так в том то и дело, что код только начал писать. Я просто хочу добавить обработку исключений от "собаки". Я признаю что у вас больше опыта в программировании ПЛК. Подскажите пожалуйста тогда так. Может лучше взять ПЛК 110 вместо 63 и не парится. Заказ на 200 тыс. гривен и больше. Не хочется чтобы в каком-то месте что-то пошло не так.

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    http://www.owen.ru/forum/showthread.php?t=11237 начните с этого, а потом когда создадите свою прогу и покажете пилотный экземпляр, то найдутся форумчане которые помогут избавиться от лишнего и дабавят надежности в Ваш проект, уже по конкретным направлениям

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 19.05.2012, 11:21
  2. плк110+мв110 обработка данных
    от woffka в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 19.02.2010, 16:45

Ваши права

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