-
Нельзя, это не соответствует концепции мастер-славе.
Polling Time нехакерскими методами поменять нельзя.
P.S. Как и описано в документации, при пропадании связи с устройством его опрос постепенно замедляется до 20 раз.
При восстановлении связи темп опроса восстанавливается.
-
Пользователь
не порадовали, владислав, но за конкретный ответ - спасибо.
-
Для одного устройства будет примерно так:
pollTime: TIME:=t#10ms;
del: TON;
DevAddress: WORD;
(* Объявляем в конфигурации *)
DevStart:BYTE;
LastAddress: DWORD;
LastError: WORD;
del( in:=DevStart=0 , pt:=pollTime);(* Новая посылка после обнуления командного канала *)
IF del.q THEN
del(in:=FALSE);
DevStart:=255;
END_IF
IF LastAddress=DevAddress THEN
IF LastError=0 THEN pollTime:=t#10ms;
ELSE pollTime:=t#1s; END_IF
END_IF
Последний раз редактировалось Логвиненко Андрей; 13.10.2010 в 09:54.
-
Пользователь
спасибо, андрей, за пример. придут плк, соберу всю схему - буду пробывать.
-
Пользователь
Вот, сподобился на следующий шедевр. Вроде пока работает...Может кому пригодится, а, может, кто и поизящней нарисует - так скиньте, я на "спасибо" не поскуплюсь 8).
Суть: несколько слэйвов (для примера - два). Мастером опрашивается только тот(те), который(е) "в работе", т.е. подключены и связь с ними установлена.
С остальными раз в секунду проверяется "контакт".
(*Конфигурация*)
LastAddress: DWORD;
LastError: WORD;
Command1:BYTE; (*1-ый девайс, Address1, Work mode:By command*)
Command2:BYTE; (*2-ой девайс, Address2, Work mode:By command*)
(*POU*)
VAR
LastError1, LastError2: WORD;
Timer1, Timer2:TON;
Pause:TIME:=t#1s;
END_VAR
CASE LastAddress OF
1: LastError1:=LastError;
2: LastError2:=LastError;
END_CASE
IF LastError1=0 THEN Command1:=255;
ELSIF LasrError1<>0 THEN Timer1(IN:=Command1=0,PT:=Pause);
IF Timer1.Q THEN Timer1(IN:=FALSE); Command1:=255; END_IF
IF LastAddress=1 THEN
IF LastError=0 THEN LastError1:=0; END_IF
END_IF
ELSE Command1:=254;
END_IF
IF LastError2=0 THEN Command2:=255;
ELSIF LasrError2<>0 THEN Timer2(IN:=Command2=0,PT:=Pause);
IF Timer2.Q THEN Timer2(IN:=FALSE); Command2:=255; END_IF
IF LastAddress=2 THEN
IF LastError=0 THEN LastError2:=0; END_IF
END_IF
ELSE Command2:=254;
END_IF
P.S. Даже в 2 ночи не проходит ощущение, что тут лишнего понагорожено...Но - работает же.
Последний раз редактировалось AWA1971; 15.10.2010 в 01:01.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума