как вариант можно чрез python записывать в базу
Код:
FUNCTION_BLOCK SQLitePython
VAR_INPUT
	xExecute:		BOOL;			// по переднему фронту запускаем скрипт на питоне
	sSqlStatement:	STRING(255);	// в строке должны быть аргументы через пробел для передачи в базу число и строка в кавычках
END_VAR
VAR_OUTPUT
	xDone:						BOOL;
	xBusy:						BOOL;
	xError:						BOOL;
	// Результат выполнения запроса
	asResult:					ARRAY [1..255] OF STRING(255);
	// Число строк в ответе (число элементов массива asResult)
	usiCountOfStrings:			USINT;
	// TRUE - при выдаче ответа произошло переполнение массива, часть информации потеряна
	xOverFlow:					BOOL;
END_VAR
VAR
	fbSe4:		 	CmpSysExec.SysExecute4;
	sCommand:		STRING(255);
	fbRiseEdge:		R_TRIG;
END_VAR
VAR CONSTANT
	c_sCommand:		STRING(255) := 'python3 test_sqlite3.py #SQL#';
END_VAR

fbRiseEdge(CLK := xExecute);
IF fbRiseEdge.Q THEN
	sCommand := OSU.ReplaceSubstring(c_sCommand,	'#SQL#',	sSqlStatement);
END_IF;
fbSe4
(
	xExecute 	:= fbRiseEdge.Q,
	sCommand 	:= sCommand,
	sOutput  	=> asResult,
	cntReadStr  => usiCountOfStrings,
	xOverFlow   => xOverFlow,
	xDone       => xDone,
	xBusy       => xBusy,
	xError      => xError
);

(* скрипт test_sqlite3.py
import sqlite3
import sys

def save_data(arg1, arg2):
        try:
                conn = sqlite3.connect('/home/root/CODESYS/otchet.db')
                cursor = conn.cursor()
                # first step
                #cursor.execute('''CREATE TABLE otchet (id INTEGER PRIMARY KEY, "1" TEXT,"2" TEXT)''')
                # second step
                user_data = [(arg1, arg2)]
                cursor.executemany('INSERT INTO otchet ("1","2") VALUES(?,?);', user_data)
                conn.commit()
        except Exception as ex:
                print(f'Error {str(ex)}')
        finally:
                if 'conn' in locals():
                        conn.close()

if __name__ == "__main__":
        if len(sys.argv) != 3:
                sys.exit(1)
        try:
                arg1 = int(sys.argv[1]) #
                arg2 = sys.argv[2].encode('utf-8', errors='surrogateescape').decode('cp1251')
        except ValueError:
                print('error code')
                sys.exit(1)
        save_data(arg1, arg2)

*)
у меня в консоли читается Screenshot 2026-01-13 143502.png