Вот пример из справки:
--записать 2 значения int16 с адреса 1 c перестановкой байт, не используя команду 6
local w={}
local err
w[1]=5; w[2]=7;
err = modbus.WriteHoldingRegistersAsInt16(1,2,true,"1032 5476",false,w);
--err: true – ошибка, false – ошибки нет
То есть данные нужно сначала положить в таблицу, перед посылкой.
То есть в вашем случае написать:
w[1]=0;
И w передавать в функцию вместо значения.