PDA

Просмотр полной версии : RS232 циклично отправлять строку



BodDen
03.06.2025, 11:12
Здравствуйте

Я новичок, только начинаю разбираться с OWEN и CodeSys. ПЛК160[02] с интервалом 500 мс должен отправлять строку типа "8.68 ppg, 0.04 ppg, 266 gpm, 0.0 bpm, ", не одного примера не нашел.

Помогите пожалуйста правильно сконфигурировать ПЛК.

Пробовал так



PROGRAM RS232_Sender
VAR
timer1: TON;
send_string: STRING := '8.68 ppg, 0.04 ppg, 266 gpm, 0.0 bpm,';
send_enable: BOOL;
END_VAR

// Инициализация таймера на 500 мс
timer1(IN := NOT timer1.Q, PT := T#500ms);

// Разрешение отправки по истечении таймера
send_enable := timer1.Q;

// Отправка строки при разрешении
IF send_enable THEN
COM_SEND(0, ADR(send_string), LEN(send_string));
timer1(IN := FALSE); // Сброс таймера для нового цикла
END_IF



не работает.
Спасибо.

Sulfur
03.06.2025, 11:55
Для запуска процедуры передачи сообщения надо использовать R_TRIG, иначе передача будет в каждом цикле ПЛК, пока timer1.Q=1.
То есть будет флуд.
Сброс таймера должен быть после окончания передачи сообщения, поскольку передача сообщения занимает время больше, чем цикл ПЛК.
Можно использовать BLINK из библиотеки Util.lib, его выход через R_TRIG подать на запуск процедуры передачи.

EFrol
03.06.2025, 11:59
Терзают смутный сомнения... PROGRAM..
При каждом вызове переменные создаются заново?
Может FB надо (функциональный блок)?

Sergey361
04.06.2025, 07:10
Здесь на сайте в разделе Codesys 2.3 полно примеров обмена через порты. И обязательно нужно изучить библиотеку SysLibCom, описание тоже там же.

Sergey361
04.06.2025, 07:12
Ошибка потому что COM_SEND не задан

capzap
04.06.2025, 07:42
по выложенному коду не определить что COM_SEND это функциональный блок, возможно какая нибудь функция, может глобальный ФБ

RS232_Sender ни чем не отличается от главного PLC_PRG? не припоминаю чтоб там что то несохранялось до следующего цикла

строка send_enable := timer1.Q; выполняет условие только в одном цикле, исходя из того как выполняется сам таймер, R_TRIG тут ни к чему, а вот работа по СОМ порту требует длительного времени, поэтому вероятно обмен ни чем не заканчивается