Какие настройки у Watchdog?
Вид для печати
Ставил 2000 мс и 10000 мс
Перестает выполняться одна программа и при этом перестает выполняться задача, в которой эта программа находится. Происходит это на 501 или 502 цикле. Ссылку на программу сейчас скину
Как я понял в итоге после разбора программы - происходит зависание на выполнении функциональных блоков:
этого
либоКод:rtr_a1(CLK:= in1, Q=> ); b1:=rtr_a1.Q;
rtr_a2(CLK:= in2, Q=> ); b2:=rtr_a2.Q;
rtr_a3(CLK:= in3, Q=> ); b3:=rtr_a3.Q;
rtr_a4(CLK:= in4, Q=> ); b4:=rtr_a4.Q;
rtr_a5(CLK:= in5, Q=> ); b5:=rtr_a5.Q;
rtr_a6(CLK:= in6, Q=> ); b6:=rtr_a6.Q;
rtr_a7(CLK:= in7, Q=> ); b7:=rtr_a7.Q;
rtr_a8(CLK:= in8, Q=> ); b8:=rtr_a8.Q;
rtr_a9(CLK:= in9, Q=> ); b9:=rtr_a9.Q;
rtr_a10(CLK:= in10, Q=> ); b10:=rtr_a10.Q;
rtr_a11(CLK:= in11, Q=> ); b11:=rtr_a11.Q;
rtr_a12(CLK:= in12, Q=> ); b12:=rtr_a12.Q;
rtr_a13(CLK:= in13, Q=> ); b13:=rtr_a13.Q;
rtr_a14(CLK:= in14, Q=> ); b14:=rtr_a14.Q;
rtr_a15(CLK:= in15, Q=> ); b15:=rtr_a15.Q;
rtr_a16(CLK:= in16, Q=> ); b16:=rtr_a16.Q;
rtr_out (CLK:=(b1 OR b2 OR b3 OR b4 OR b5 OR b6 OR b7 OR b8 OR b9 OR b10 OR b11 OR b12 OR b13 OR b14 OR b15 OR b16), Q=>out);
Ранее периодически происходило исключение на первых строках этих блоков, в причине так и не разобрался. Вроде зависать не на чем. Закомментировав вызовы программ, где они используются, останов задач прекратился. Только не ясно почему перестало происходит Исключение - останов программы...Код://регистрация вкл/выкл события
rtr_1(CLK:= in1, Q=> ); rtr_2(CLK:= in2, Q=> ); rtr_3(CLK:= in3, Q=> ); rtr_4(CLK:= in4, Q=> ); rtr_5(CLK:= in5, Q=> );
rtr_6(CLK:= in6, Q=> ); rtr_7(CLK:= in7, Q=> ); rtr_8(CLK:= in8, Q=> ); rtr_9(CLK:= in9, Q=> ); rtr_10(CLK:= in10, Q=> );
on_1:=rtr_1.Q; on_2:=rtr_2.Q; on_3:=rtr_3.Q; on_4:=rtr_4.Q; on_5:=rtr_5.Q;
on_6:=rtr_6.Q; on_7:=rtr_7.Q; on_8:=rtr_8.Q; on_9:=rtr_9.Q; on_10:=rtr_10.Q;
ftr_1(CLK:= in1, Q=> ); ftr_2(CLK:= in2, Q=> ); ftr_3(CLK:= in3, Q=> ); ftr_4(CLK:= in4, Q=> ); ftr_5(CLK:= in5, Q=> );
ftr_6(CLK:= in6, Q=> ); ftr_7(CLK:= in7, Q=> ); ftr_8(CLK:= in8, Q=> ); ftr_9(CLK:= in9, Q=> ); ftr_10(CLK:= in10, Q=> );
off_1:=ftr_1.Q; off_2:=ftr_2.Q; off_3:=ftr_3.Q; off_4:=ftr_4.Q; off_5:=ftr_5.Q;
off_6:=ftr_6.Q; off_7:=ftr_7.Q; off_8:=ftr_8.Q; off_9:=ftr_9.Q; off_10:=ftr_10.Q;
//упаковка в биты
actions.0:=on_1;
actions.1:=off_1;
actions.2:=on_2;
actions.3:=off_2;
actions.4:=on_3;
actions.5:=off_3;
actions.6:=on_4;
actions.7:=off_4;
actions.8:=on_5;
actions.9:=off_5;
//выходные переменные
IF rtr_1.Q OR ftr_1.Q OR rtr_2.Q OR ftr_2.Q OR rtr_3.Q OR ftr_3.Q OR rtr_4.Q OR ftr_4.Q OR rtr_5.Q OR ftr_5.Q
OR rtr_6.Q OR ftr_6.Q OR rtr_7.Q OR ftr_7.Q OR rtr_8.Q OR ftr_8.Q OR rtr_9.Q OR ftr_9.Q OR rtr_10.Q OR ftr_10.Q THEN
event:= actions;
save:= TRUE;
ELSE save:= FALSE;
END_IF
Спасибо за ответ.
Да они не получают false, а зачем (там жеш step дальше идет)? мне же нужно чтобы они работали им TRUE даю, если еще write можно после выполнения сделать xExecute:= false, то read точно должен быть true пока не получит ответ, а ответ я не получаю.
Строку изменил с 'AT' на 'ATZ$R' как я это увидел у другом проекте.
Может быть проблема в том, что я использую:
write:COM.Write;
read:COM.Read;
а нужно SysCom.* ???
UPD:
Разобрался, заработало.
И хочу сказать: это пи*ц какой-то этот FAQ на овене, и эта документация на ПЛК323, везде пишут по разному, и везде 1/10 пользы. Приходиться по форуму 50 топиков просмотреть чтобы понять что к чему и найти хоть какой-то рабочий проект. Всем кто отвечал спасибо.
подскажите как в проект засунуть экспортный файл SPK_PCV.export.
Выделяете кликом Application, вверху выбираете меню Проект, в нем выбираете команду Импорт и указываете путь к файлу.
Вложение 23103
Это единственный способ передавать данные через модем?
1) Можно как-то просто получить дескриптор на открытое AT командами соединение с сервером через модем и уже передавать данные используя сокеты?Цитата:
6.6.3 Обмен данными с ТСP/IP сервером по GPRS
...
AT+CIPSEND <данные> <0x0A> – передача данных по установленному соединению.
...
цитата из офф. документации к ПЛК 323
2) ИЛИ можно ли получить указатель/дескриптор на модем, открыть соединение с сервером по средствам сокетов и передавать данные с помощью них? Или единственный вариант это AT команда для передачи данных?
Как сделать так чтобы код (функция) выполнялся только один раз при запуске? Язык ST Нужно проверить значения переменных, задать начальные значения и т.п.