Берёте готовый пример с сайта, чтение через биб-ки (Modbus чтение INT и REAL (ST) и смотрите отличия в коде.
Чтение и запись надо разнести по шагам CASE.
В конце каждого шага чтения, есть проверка на выполнение операции, на ошибки и присвоение, если ошибки =0.
Код:
(*если установлен признак завершения операции, то *)
IF cmpl THEN
IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
END_IF
master1:=1; (*переходим к выполнению следующего ФБ*)
END_IF
С записью аналогично, переход, если установлен признак завершения операции.
Примеры для ПЛК63/73,
10) Обмен через библиотеки Modbus и OwenNet https://owen.ru/product/codesys_v2/example_program