PDA

Просмотр полной версии : ПЛК63 перезагружается по вачдогу



Raikkonen
04.04.2021, 12:46
Добрый день!
Имеется ПЛК63 с мизерной программой.
Когда я начинаю пользоваться сконфигурированной менюшкой, он перезагружается.....
В отладочном меню указана ошибка 3.
Если его не трогать - все ок работает.
Возможно это важно - он постоянно под модбас обстрелом в качестве слейва. Может ему модбасик тяжело дается....
Подскажите пожалуйста, в чем может быть дело?
Программа: https://disk.yandex.ru/d/4NRn5goKS_Xn-w

Филоненко Владислав
05.04.2021, 09:01
И версию ПО тоже выложите.
Да, прямо сюда.

Raikkonen
05.04.2021, 09:25
Прошивку ПЛК не обновлял, какая шла с завода такая и есть, какая она там я не выяснял.
ПЛК куплен недавно, может месяца 2-3 назад.
Таргет использую - приложил какой.

Филоненко Владислав
05.04.2021, 12:39
В документации на ПЛК написано: "обращение к экрану не чаще раза в 200мс". А у Вас пулемёт...
И лучше все манипуляции со знакоместами проводить с локальным буфером экрана, а потом его скопом одной командой записывать в экран раз в 200мс.

Raikkonen
05.04.2021, 12:47
В документации на ПЛК написано: "обращение к экрану не чаще раза в 200мс". А у Вас пулемёт...
И лучше все манипуляции со знакоместами проводить с локальным буфером экрана, а потом его скопом одной командой записывать в экран раз в 200мс.
А это про какое место в программе речь?
Про 23-25 строки чтоли?
Переменные temp1, temp2 temp3 отключены как отображаемые, они только для модбаса

Филоненко Владислав
05.04.2021, 14:22
Везде где используются ShowString(), ShowReal(), ClearScreen() и т.д.

Далее вот этот код тоже не айс -

d_mode_1 := READ_BY_HASH(16#8FE2,0); (*÷òåíèå äåñêðèïòîðà*)
d_mode_2 := READ_BY_HASH(16#E2FB,0);
d_mode_3 := READ_BY_HASH(16#C60C,0);
d_mode_4 := READ_BY_HASH(16#38C9,0);
d_mode_5 := READ_BY_HASH(16#1C3E,0);
d_mode_vip := READ_BY_HASH(16#23B6,0);

t_off := 0;
t_off_adr:=ADR(t_off);
t_off_arr_adr:=t_off_adr;
t_off_arr:=t_off_arr_adr^;

d_mode_1^.value:=t_off_arr; SAVE_PARAMETER(d_mode_1);
d_mode_2^.value:=t_off_arr; SAVE_PARAMETER(d_mode_2);
d_mode_3^.value:=t_off_arr; SAVE_PARAMETER(d_mode_3);
d_mode_4^.value:=t_off_arr; SAVE_PARAMETER(d_mode_4);
d_mode_5^.value:=t_off_arr; SAVE_PARAMETER(d_mode_5);
d_mode_vip^.value:=t_off_arr; SAVE_PARAMETER(d_mode_vip);

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

Raikkonen
05.04.2021, 14:51
Везде где используются ShowString(), ShowReal(), ClearScreen() и т.д.
Эти команды у меня используются раз в 500мс.
В одном цикле примерно 5 вызовов.
Но проблема то в том, что ПЛК зависает когда я нахожусь в меню, а на это время у меня отключено обновление экрана......



Далее вот этот код тоже не айс -
Доступ к параметрам из программы дело совсем не быстрое, надо разнести по времени, чтобы дать возможность системе ПЛК отрабатывать требуемые действия. И не более 1 параметра за раз, на пачками.
Это у меня происходит один раз при сигнале "пожар". Разделять это на несколько действий... ну можно в принципе, но это печально

Филоненко Владислав
05.04.2021, 17:30
Эти команды у меня используются раз в 500мс.
В одном цикле примерно 5 вызовов.
Но проблема то в том, что ПЛК зависает когда я нахожусь в меню, а на это время у меня отключено обновление экрана......


Это у меня происходит один раз при сигнале "пожар". Разделять это на несколько действий... ну можно в принципе, но это печально
1.
Что то я сомневаюсь что цикл 2,5 секунды, если 5 вызовов через 500 мс...
Скорее раз в 500мс сразу 5 вызовов подряд. А надо 200мс МЕЖДУ вызовами.
2.
Что же такого происходит при пожаре, что надо менять значения параметров, а не выходов?

Raikkonen
05.04.2021, 19:05
1.
Что то я сомневаюсь что цикл 2,5 секунды, если 5 вызовов через 500 мс...
Скорее раз в 500мс сразу 5 вызовов подряд. А надо 200мс МЕЖДУ вызовами.
Да, 5 единовременно, но раз в 500.

2.
Что же такого происходит при пожаре, что надо менять значения параметров, а не выходов?
Параметр переключает режим работы с ВКЛ на ВЫКЛ. А уже выход меняется по изменению режима.

Raikkonen
05.04.2021, 19:08
Короче сейчас что имеем:
1. Поменял опрос этого несчастного контроллера, сделал задержку между опросами 100мс, вместо 10 как было.
2. Сделал вот как раз 23-25 строки кода попеременно с обновлением экрана. Теперь раз в 200мс либо обновление экрана, либо обновление температуры.

Что в итоге помогло я не знаю, но теперь не зависает.
Теперь есть новая задача - из риал в строку с заданием точности есть готовая библиотка? =)
Чтобы я раз в 200мс просто одной ShowString обновлял весь экран.....

Spawn
03.05.2021, 03:55
Короче сейчас что имеем:
1. Поменял опрос этого несчастного контроллера, сделал задержку между опросами 100мс, вместо 10 как было.
2. Сделал вот как раз 23-25 строки кода попеременно с обновлением экрана. Теперь раз в 200мс либо обновление экрана, либо обновление температуры.

Что в итоге помогло я не знаю, но теперь не зависает.
Теперь есть новая задача - из риал в строку с заданием точности есть готовая библиотка? =)
Чтобы я раз в 200мс просто одной ShowString обновлял весь экран.....

Здесь (https://owen.ru/forum/showthread.php?t=12550&page=4&highlight=ClearScreen) и здесь (https://owen.ru/forum/showthread.php?t=33636&p=338898&highlight=ClearScreen#post338898) есть примеры.