-
Пользователь
Я пользовал на ПЛК63, работает. err=255 не всегда. Интересно, что когда читаешь из регистров ввода, то данные в буфере верные только когда err=0.
И с чего Вы взяли, что данные не там, где должны быть это не мусор? Похоже у Вас всегда таймаут, то есть слейв не понимает запрос, подумайте над этим (скорость, четность и т. п.).
Вот кусок кода чтения входов с МДВВ:
1:
(*Чтение маски значений входов МДВВ *)
RD_REGS(
Enable:= ENABL, (* разрешение работы блока *)
Mode:= MB_RTU, (*режим приема*)
DevAddr:= SLAVE_ADDR, (*адрес*)
FirstAddr:= 51, (*номер первого регистра*)
Quantity:= 1, (*количество читаемых регистров*)
ComHandle:=Settings.Port , (*номер сом-порта*)
TimeOut:=TimeOut, (*таймаут*)
Buffer:=RD_Buffer , (* буфер данных *)
Complete=>cmpl , (* скопировать признак завершения операции *)
Exception=>err , (* скопировать регистр ошибок *)
ByteCnt=> DataSize); (*кол-во считанных байтов *)
IF CMPL AND ERR=0 THEN
INP_WORD:=BYTE_TO_WORD(RD_BUFFER[1]) OR SHL(BYTE_TO_WORD(RD_BUFFER[0]),8);
WORK_IDENT:=0;
END_IF
Успехов!
Последний раз редактировалось Алексей Дмитриев; 25.05.2011 в 13:50.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума