Я хочу опубликовать переменную DINT (dintTest) через MODBUS на ПЛК, чтобы прочитать ее с помощью Matlab Instrument Control Toolbox. Оказывается, Matlab может читать переменные Modbus, но только INT16. Поэтому я хочу разделить переменную DINT на две переменные INT в IEC. Я нашел это решение, но это позволяет только значения от + - 0 ... 32767 ^ 2:
dintTest := -2;
b := dintTest MOD 32767;
a := dintTest / 32767;
result := 32767 * a + b;
c := DINT_TO_INT(b); // publish over modbus
d := DINT_TO_INT(a); // publish over modbus
Каким было бы решение для всего ассортимента DINT?
Спасибо!
редактировать:
Я читаю с функциональным блоком Matlab в Simulink (требуется Toolbox Control Toolbox):
function Check = MBWriteHoldingRegs(Values,RegAddr)
coder.extrinsic('modbus');
m = modbus('tcpip', '192.169.237.17');
coder.extrinsic('write');
write(m,'holdingregs',RegAddr,double(Values),'int16');
Check = Values;