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

Тема: Зависание ПЛК63 при выполнении программы

  1. #1

    По умолчанию Зависание ПЛК63 при выполнении программы

    Здравствуйте, помогите решить проблему.
    ПЛК63м соединен по RS485 по Modbus RTU с амперметром. Программа начинает выполняться, при считывании данных из амперметра ПЛК63м виснет и перезагружается. Происходит это в разный момент выполнения программы, никакой системности нет, может происходить через 3сек., может через 10сек.

  2. #2

    По умолчанию

    Цитата Сообщение от Oleg77 Посмотреть сообщение
    Здравствуйте, помогите решить проблему.
    ПЛК63м соединен по RS485 по Modbus RTU с амперметром. Программа начинает выполняться, при считывании данных из амперметра ПЛК63м виснет и перезагружается. Происходит это в разный момент выполнения программы, никакой системности нет, может происходить через 3сек., может через 10сек.
    Угадай болезнь по описанию.

    Проект где?
    Тролль-наседка, добрый, нежный и ласковый

  3. #3

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Угадай болезнь по описанию.

    Проект где?
    Проект здесь.

    Код:
    PROGRAM InitComPort
    VAR
    	COM_SERVICE1: COM_SERVICE;
    END_VAR
    
    
    IF ComPortState = 0 THEN
    	Settings.Port:= 0; (*RS-485*)
    	Settings.dwBaudRate:=9600; (*speed*)
    	Settings.byParity:=0;
    	Settings.dwTimeout:=0;
    	Settings.byStopBits:=2;
    	Settings.dwBufferSize:=0;
    	Settings.dwScan:=0;
    END_IF
    
    COM_SERVICE1(Enable:=(ComPortState=0) , Settings:=Settings , Task:=OPEN_TSK );
    
    IF COM_SERVICE1.ready THEN
    ComPortState:= 2;
    END_IF
    
    
    ----------------------------------------------------------------------------------------
    
    
    PROGRAM GetMDVV
    VAR
    	GetModbus: MB_RD_HOLD_REGS;
    	TimeOut: TIME:= T#50ms;
    	Buffer: ARRAY[0..255] OF BYTE;
    	EndGetStored: BOOL;
    	ErrorStored: BYTE;
    	DataSize: WORD;
    	GetReq: BOOL:= TRUE;
    	HavePause:TON;
    END_VAR
    
    
    F ComPortState = 2 THEN
    
    	GetModbus(
    		Enable:= GetReq,
    		Mode:= MB_RTU,
    		DevAddr:= 8, (*Адрес*)
    		FirstAddr:= 15,(*Регистр*)
    		Quantity:= 1,(*Количество регистров*)
    		ComHandle:= Settings.Port,
    		TimeOut:= Timeout,
    		Buffer:= Buffer);
    	GetReq:= FALSE;
    	IF  GetModbus.Complete THEN
    		EndGetStored:= TRUE;
     (*		EndSendStored:= TRUE; *)
    		ErrorStored:= GetModbus.Exception;
    	END_IF(*END_IF*)
    	HavePause(IN:= EndGetStored,PT:=T#50ms);
    (*	HavePause(IN:= EndSendStored,PT:=T#50ms);*)
    	IF HavePause.Q THEN 
    (*	IF HavePause.Q THEN *)
    		GetReq:= TRUE;
    		EndGetStored:= FALSE;
    (*		EndSendStored:= FALSE;*)
    	END_IF
    END_IF
    Проект состоит из двух блоков. Один для открытия и настройки порта RS-485. Другой для запроса данных из регистра 15 амперметра с адресом 8. Пример рабочий, но у нас никак не хочет работать. Пробовали разные варианты. Даже объединяли в один блок. Результат один : зависание и перезагрузка. Запросы и ответы все идут как бы нормально. Мониторинг пакетов проводили программой MODSIM32 в режиме Show traffic.

    [008][003][000][015][000][001][180][144] - это запрос

    [008] - адрес амперметра
    [003] - код функции чтения регистра
    [000][015] - первый регистр для чтения (0FH)
    [000][001] - количество регистров
    [180][144] - контрольная сумма

    [008][003][002][000][000][100][069] - это ответ

    [008] - адрес амперметра
    [003] - код функции чтения регистра
    [002] - количество байт
    [000][000] - данные
    [100][069] - контрольная сумма

    Опять писк и перезагрузка. Последний пакет [008][003][002][000][000][100][069].

    Пишет код ошибки в ПЛК - 3,
    Произошла перезагрузка сторожевым таймером, обусловленная зависанием.
    Проверить программу CoDeSys на наличие ошибок.

    В чём тут проблема ?
    Последний раз редактировалось Oleg77; 09.10.2018 в 13:58.

  4. #4
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от Oleg77 Посмотреть сообщение
    Проект здесь.

    Код:
    PROGRAM InitComPort
    VAR
    	COM_SERVICE1: COM_SERVICE;
    END_VAR
    
    
    IF ComPortState = 0 THEN
    	Settings.Port:= 0; (*RS-485*)
    	Settings.dwBaudRate:=9600; (*speed*)
    	Settings.byParity:=0;
    	Settings.dwTimeout:=0;
    	Settings.byStopBits:=2;
    	Settings.dwBufferSize:=0;
    	Settings.dwScan:=0;
    END_IF
    
    COM_SERVICE1(Enable:=(ComPortState=0) , Settings:=Settings , Task:=OPEN_TSK );
    
    IF COM_SERVICE1.ready THEN
    ComPortState:= 2;
    END_IF
    
    
    ----------------------------------------------------------------------------------------
    
    
    PROGRAM GetMDVV
    VAR
    	GetModbus: MB_RD_HOLD_REGS;
    	TimeOut: TIME:= T#50ms;
    	Buffer: ARRAY[0..255] OF BYTE;
    	EndGetStored: BOOL;
    	ErrorStored: BYTE;
    	DataSize: WORD;
    	GetReq: BOOL:= TRUE;
    	HavePause:TON;
    END_VAR
    
    
    F ComPortState = 2 THEN
    
    	GetModbus(
    		Enable:= GetReq,
    		Mode:= MB_RTU,
    		DevAddr:= 8, (*Адрес*)
    		FirstAddr:= 15,(*Регистр*)
    		Quantity:= 1,(*Количество регистров*)
    		ComHandle:= Settings.Port,
    		TimeOut:= Timeout,
    		Buffer:= Buffer);
    	GetReq:= FALSE;
    	IF  GetModbus.Complete THEN
    		EndGetStored:= TRUE;
     (*		EndSendStored:= TRUE; *)
    		ErrorStored:= GetModbus.Exception;
    	END_IF(*END_IF*)
    	HavePause(IN:= EndGetStored,PT:=T#50ms);
    (*	HavePause(IN:= EndSendStored,PT:=T#50ms);*)
    	IF HavePause.Q THEN 
    (*	IF HavePause.Q THEN *)
    		GetReq:= TRUE;
    		EndGetStored:= FALSE;
    (*		EndSendStored:= FALSE;*)
    	END_IF
    END_IF
    Проект состоит из двух блоков. Один для открытия и настройки порта RS-485. Другой для запроса данных из регистра 15 амперметра с адресом 8. Пример рабочий, но у нас никак не хочет работать. Пробовали разные варианты. Даже объединяли в один блок. Результат один : зависание и перезагрузка. Запросы и ответы все идут как бы нормально. Мониторинг пакетов проводили программой MODSIM32 в режиме Show traffic.

    [008][003][000][015][000][001][180][144] - это запрос

    [008] - адрес амперметра
    [003] - код функции чтения регистра
    [000][015] - первый регистр для чтения (0FH)
    [000][001] - количество регистров
    [180][144] - контрольная сумма

    [008][003][002][000][000][100][069] - это ответ

    [008] - адрес амперметра
    [003] - код функции чтения регистра
    [002] - количество байт
    [000][000] - данные
    [100][069] - контрольная сумма

    Опять писк и перезагрузка. Последний пакет [008][003][002][000][000][100][069].

    Пишет код ошибки в ПЛК - 3,
    Произошла перезагрузка сторожевым таймером, обусловленная зависанием.
    Проверить программу CoDeSys на наличие ошибок.

    В чём тут проблема ?
    Какая прошивка?
    Если залить максимально простой проект, почти пустой.
    Будет ли зависать ПЛК?

    Желательно целиком выложить файл проекта .pro

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  5. #5

    По умолчанию

    Цитата Сообщение от A.Simonov Посмотреть сообщение
    Какая прошивка?
    Если залить максимально простой проект, почти пустой.
    Будет ли зависать ПЛК?

    Желательно целиком выложить файл проекта .pro
    Какая прошивка была в ПЛК при покупке прибора не смотрели, а в процессе выявления причин зависания и перезагрузки, поменяли прошивку на Ver 2.12. Особых изменений в работе контролёра не увидели.

    ПЛК перестаёт виснуть когда отключаешь амперметр от питания 220 V. Запросы через порт RS-485 по протоколу ModBus RTU летят без задержек. Зависания начинаются когда вступает в работу амперметр, т. е. когда приходят ответы от амперметра. Судя по ответам, пакеты приходят корректные. Мониторинг пакетов проводили программой MODSIM32 в режиме Show traffic.

    Мы уже обращались на этот форум с этой же проблемой, но с примером взятым с пластинки, пришедшей с ПЛК. В процессе общения прошла информация, что в данном примере пользователями была выявлена ошибка, которая приводила к сбою работы ПЛК. Было принято решение в дальнейшей работе данный пример не использовать.
    Собственно весь проект выложен в листинге выше. Больше там ничего нет. Это рабочий пример, которым любезно поделился один из пользователей этого форума, пытаясь помочь нам в решении поставленной задачи. В нём только поменяли на свои значения настройки порта и функцию запроса с номером регистра.

    Но если нужен сам файлик, куда кинуть ?

    Может лучше описать всю историю наших действий, начиная с поставленной задачи ? Тогда наверное будет более понятно из чего исходить и как решить эту проблему с зависанием.
    Последний раз редактировалось Oleg77; 13.10.2018 в 21:27.

  6. #6
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от Oleg77 Посмотреть сообщение
    Какая прошивка была в ПЛК при покупке прибора не смотрели, а в процессе выявления причин зависания и перезагрузки, поменяли прошивку на Ver 2.12. Особых изменений в работе контролёра не увидели.

    ПЛК перестаёт виснуть когда отключаешь амперметр от питания 220 V. Запросы через порт RS-485 по протоколу ModBus RTU летят без задержек. Зависания начинаются когда вступает в работу амперметр, т. е. когда приходят ответы от амперметра. Судя по ответам, пакеты приходят корректные. Мониторинг пакетов проводили программой MODSIM32 в режиме Show traffic.

    Мы уже обращались на этот форум с этой же проблемой, но с примером взятым с пластинки, пришедшей с ПЛК. В процессе общения прошла информация, что в данном примере пользователями была выявлена ошибка, которая приводила к сбою работы ПЛК. Было принято решение в дальнейшей работе данный пример не использовать.
    Собственно весь проект выложен в листинге выше. Больше там ничего нет. Это рабочий пример, которым любезно поделился один из пользователей этого форума, пытаясь помочь нам в решении поставленной задачи. В нём только поменяли на свои значения настройки порта и функцию запроса с номером регистра.

    Но если нужен сам файлик, куда кинуть ?

    Может лучше описать всю историю наших действий, начиная с поставленной задачи ? Тогда наверное будет более понятно из чего исходить и как решить эту проблему с зависанием.
    Отправьте целиком проект (.pro) на support@owen.ru
    С указанием ссылки на эту тему.

    P.S.
    Я, визуально, не вижу ошибок. Хочу залить исходник проекта на наш ПЛК и протестировать.
    Есть только одна опечатка, вместо "IF" у Вас "F", но думаю она возникла при копировании кода.
    Последний раз редактировалось A.Simonov; 15.10.2018 в 16:32.

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  7. #7

    По умолчанию

    Цитата Сообщение от A.Simonov Посмотреть сообщение
    Отправьте целиком проект (.pro) на support@owen.ru
    С указанием ссылки на эту тему.

    P.S.
    Я, визуально, не вижу ошибок. Хочу залить исходник проекта на наш ПЛК и протестировать.
    Есть только одна опечатка, вместо "IF" у Вас "F", но думаю она возникла при копировании кода.
    Хорошо отправим.

    P.S.
    Да. Вы правы. Эта опечатка. Вместо "IF" в листинге "F". Она возникла при копировании кода.

  8. #8
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от Oleg77 Посмотреть сообщение
    Хорошо отправим.

    P.S.
    Да. Вы правы. Эта опечатка. Вместо "IF" в листинге "F". Она возникла при копировании кода.
    Получил от вас очень много писем подозрительного содержания.
    Прошу собрать все в один архив, выложить на любой облачный сервис:
    https://disk.yandex.ru/
    https://files.mail.ru/

    И отправить ссылку на архив.
    А так же прошу сформировать файл README.txt, в котором будет пояснено назначение файлов.

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  9. #9

    По умолчанию

    Цитата Сообщение от A.Simonov Посмотреть сообщение
    Получил от вас очень много писем подозрительного содержания.
    Прошу собрать все в один архив, выложить на любой облачный сервис:
    https://disk.yandex.ru/
    https://files.mail.ru/

    И отправить ссылку на архив.
    А так же прошу сформировать файл README.txt, в котором будет пояснено назначение файлов.
    Хорошо. Сделаем.

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 23.01.2024, 15:20
  2. Ответов: 1
    Последнее сообщение: 20.07.2016, 12:30
  3. непонятная ошибка после загрузки программы в плк63
    от Алексей Дмитриев в разделе ПЛК63/73
    Ответов: 16
    Последнее сообщение: 12.11.2010, 16:51
  4. помощь в выполнении проекта
    от Александр Игоревич в разделе Master SCADA 3
    Ответов: 20
    Последнее сообщение: 31.03.2010, 16:15

Ваши права

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