Cześć
dziwne, bo SEMA jest ze standard.lib
Z zapisywaniem jest ciut więcej komplikacji. Dodałem zmienne
customQuery : typModbusExtendedQuery;
customQueryFlag: BOOL;
executeCustomQuery: BOOL := FALSE;
Przed częścią uruchamiającą komunikację dodałem:
(*Prepare data for communication with modbus slave*)
IF NOT queryPending.BUSY AND executeCustomQuery THEN
customQuery.SlaveAddress := 1;
query := customQuery;
executeCustomQuery := FALSE;
customQueryFlag := TRUE;
start := TRUE;
END_IF;
IF NOT queryPending.BUSY AND NOT customQueryFlag THEN (*default query = state request*)......
i część parsowania odpowiedzi rozbudowałem:
IF MasterEx.MB_Error = 0 THEN
IF customQueryFlag THEN
customQueryFlag := FALSE;
(*bo nic innego nie robię z odpowiedzią*) ELSE
(*parse the reply!!*)
CASE QueryType OF
.....
W użyciu:
zmieniam przez visu wartości:
customQuery .FunctionCode := XXXXX;
customQuery .Read_StartAddress := xXXXX;
customQuery .Read_Quantity := XXXXX;
i executeCustomQuery zmieniam na TRUE;
Musisz popróbować