Показано с 1 по 10 из 12

Тема: Останов работы ПЛК

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    10.01.2007
    Адрес
    Красноярск
    Сообщений
    138

    По умолчанию Останов работы ПЛК

    Помогите разобраться в особенностях ПЛК.

    С периодичностью в 2-3 часа происходит самопроизвольный останов работы ПЛК. Контроллер не перегружается, а просто останавливает выполнение программы. В log.txt сообщение "2 PLC STOPED". Попытка запуска кнопочкой СТАРТ/СТОП на мордочке ПЛК происходит удачно и контроллер продолжает работать до следующего самопроизвольного останова.

    Проект и лог-файл вложены.

    Судя по значениям переменных, в остановленном состоянии ПЛК, останов происходит при значении переменной takt=1 инструкции CASE. Т.е. во время ожидания приема данных по интерфейсу RS232.

    В чем может быть причина или как диагностировать причину останова ПЛК?

    Контроллер ПЛК100 K.L
    Прошивка 2.01.8
    Таргет 2.04
    Вложения Вложения
    • Тип файла: txt log.txt (7.1 Кб, Просмотров: 23)
    • Тип файла: zip pech.zip (20.5 Кб, Просмотров: 30)

  2. #2

    По умолчанию

    1. Вы используете библиотеку SysLibMem, вы уверены, что вы работаете только с областью I/O и массивом данных в программе? Если вы где-либо ошиблись и записали не в ту область, то результаты непредсказуемы! Прямое обращение к памяти очень опасно. Поищите в этом направлении.

  3. #3

    Post

    У меня такое тоже было :-)
    Правда проблема заключалась в том что версия прошивки и версия торгет файла не совпадали. После экспорта программы и импорта в новый проект (созданный с новыми торгет-файлами) проблема больше не повторялась.
    P. S. Забыл добавить первоначально проект был создан с старыми торгет-файлами :-) Удачи
    Последний раз редактировалось Gans; 12.11.2007 в 16:26. Причина: Торможу :-)

  4. #4
    Пользователь
    Регистрация
    10.01.2007
    Адрес
    Красноярск
    Сообщений
    138

    По умолчанию

    Использование библиотеки SysLibMem безусловно требует аккуратности. И все рассчеты адресов для прямого доступа к памяти I/O выполняются с предварительной проверкой на допустимый диапазон.
    Даже если и есть ошибка, которую допустили в программе, хотелось бы, чтобы контроллер отдавал информацию больше чем сообщение "PLC STOPED".

    Что касается соответствия таргета и прошивки. PLC Configuraton был экспортирован, создан новый проект под таргетом 2.04, далее импортирован PLC Configuration в новый проект. Но проблема не ушла.
    Последний раз редактировалось SergeyNG; 13.11.2007 в 12:12.

  5. #5

    По умолчанию

    Цитата Сообщение от SergeyNG Посмотреть сообщение
    Что касается соответствия таргета и прошивки. PLC Configuraton был экспортирован, создан новый проект под таргетом 2.04, далее импортирован PLC Configuration в новый проект. Но проблема не ушла.
    а весь проект полностью со всеми POU и тд. и тп. не пробывали!?

  6. #6
    Пользователь
    Регистрация
    10.01.2007
    Адрес
    Красноярск
    Сообщений
    138

    По умолчанию

    а весь проект полностью со всеми POU и тд. и тп. не пробывали!?
    А смысл? Текст программы и описание переменных были перенесены в новый проект через буфер обмена.

    Закоментили в тексте программы функции прямого обращения к памяти из бибилотеки SysLibMem. Таким образом исключили возможность записи значений по каким-нибудь адресам вне диапазона ввода/вывода и внутрених переменных программы. Но останов ПЛК не ушел. Не здесь зверь зарыт.

  7. #7
    Пользователь
    Регистрация
    10.01.2007
    Адрес
    Красноярск
    Сообщений
    138

    По умолчанию

    Продолжу тему по поводу самопроизвольного останова ПЛК.
    Появилось следующее предположение.
    Для проекта используем контроллер ПЛК100 K.L (объемом памяти ввода/вывода 360 байт).

    В PLC Configuration объявлен модуль Owen (Master) и к нему подцеплены 45 подэлемента Float variable Comm (Listen) и 21 подэлемент Float variable Comm (Write). Оба используемых типа включают в себя значение типа REAL и комманду на чтение/запись типа BYTE, т.е. всего 5 байт. Если вести подсчет напрямую получаем 45*5+21*5 = 330 байт области вывода этого контроллера. 330 байт < 360 байт, которыми ограничена область ввода/вывода, поэтому для проекта был выбран контроллер с ограниченной лицензией.

    При детальном изучении размеров областей памяти во вкладке Target Settings замечено, что область входов занимает 16#7A (122) байта, а область выходов 16#EA (234) байта. Т.е. 330 байт, которые ложатся в области вывода, перекрывают допустимую область вывода для контроллера.

    Вопросы:
    1. Во время компиляции и загрузки проекта не ругается ни CoDeSys, ни контроллер на превышение допустимых размеров области вывода. Как контролировать попали мы в ограничение или нет? Только подсчитывать на листке бумаги?
    2. Было замечено, что подэлементы Float variable Comm (Listen) и Float variable Comm (Write), которые внутри себя имеют типы REAL и BYTE, занимают в памяти контроллера не 5 байт, а 8 байт. А для области ввода/вывода эти подэлементы занимают 5 байт или 8 байт? Если 8, то тут даже прямой расчет на бумаге не поможет.
    3. Самый главный вопрос. В своей программе мы перекрыли область памяти за ограниченные контроллером байты вывода и программа работает. Каких результатов ожидать? Может ли это быть причиной самопроизвольных остановов выполнения программы контроллера?

  8. #8

    По умолчанию

    т.к. вы прямо не используете эту переменную, а получаете доступ к ней по указателю, то компилятор не может проследить за её использованием. и это правильно, т.к. действует принцип "спасение указателеиспользующих - дело самих указателеиспользующих"!
    да, указатель - элегантно и даже круто, но в ответственных приложениях я бы вообще не советовал их использовать, как и выделение памяти и прочие "небезопасные вещи!"

  9. #9

    По умолчанию

    попробуйте присвоить кнопке какую нибудь переменную, а запускать или останавливать программу можно через кодесис. мне это помогло.

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

    По умолчанию

    на дворе 12 год, я думаю те кто общалсяв седьмом уже и не помнят этого разговора

Ваши права

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