PDA

Просмотр полной версии : MODBUS FB MB_WR_REGS , всегда завершается с ошибкой 255



tkont
11.12.2014, 12:43
заработало, пост удалил

если у кого то будет такая же проблема
то лечится так

IF MB_WR_REGS.Enable = FALSE THEN
Buffer[1] := WORD_TO_BYTE(x1);
Buffer[0] := WORD_TO_BYTE( SHR(x1,8));
END_IF
то есть нельзя трогать буфер пока
MB_WR_REGS (Enable:= TRUE);

slonegd
11.06.2015, 09:56
tkont, огромное тебе человеческое спасибо. Сам бы не догадался.

Спорягин Кирилл
08.09.2015, 17:07
заработало, пост удалил

если у кого то будет такая же проблема
то лечится так

IF MB_WR_REGS.Enable = FALSE THEN
Buffer[1] := WORD_TO_BYTE(x1);
Buffer[0] := WORD_TO_BYTE( SHR(x1,8));
END_IF
то есть нельзя трогать буфер пока
MB_WR_REGS (Enable:= TRUE);

Спасибо, тоже наткнулся, подправил по совету - заработало.
Но у меня немного другая схема:
if SetData then Buffer := SendBuffer;
MB_WR_Regs(Enable := SetData, ...);
SetData := False;

Нельзя трогать буфер не пока Enable=true, а пока идет обмен, т.е. в промежуток между фронтом Enable=true и установкой Complete в true.

capzap
08.09.2015, 17:58
Спасибо, тоже наткнулся, подправил по совету - заработало.
Но у меня немного другая схема:
if SetData then Buffer := SendBuffer;
MB_WR_Regs(Enable := SetData, ...);
SetData := False;

Нельзя трогать буфер не пока Enable=true, а пока идет обмен, т.е. в промежуток между фронтом Enable=true и установкой Complete в true.

другими словами, пока не поднимется передний фронт комплита, в буфере нет нужных данных, не так ли