This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Modbus function code 23 (#17)
#6
I partially solved it using the send() function sending a string to the device.
In debug I can see the response which is complete and correct but the mb:receive() function returns a timeout error.

Code:
require('luamodbus')
function hexToString(hex)
    -- Remove any spaces or invalid characters
    hex = hex:gsub("([^0-9a-fA-F])", "")
   
    -- Convert each pair of hex digits into a character
    local str = ""
    for i = 1, #hex, 2 do
        local byte = hex:sub(i, i + 1)
        str = str .. string.char(tonumber(byte, 16))
    end
    return str
end
buffer = {}
function logger(c)
    table.insert(buffer, c)
end
local mb2 = luamodbus.rtu()
mb2:open('/dev/RS485-2', 19200, 'E', 8, 1, 'H')
mb2:connect()
mb2:setslave(1)
mb2:setreceivetimeout(1.0)
mb2:setresponsetimeout(1.0)
mb2:setdebug(logger)
local variable_number = '11'  -- in hexadecimal
hex_decoded = hexToString("011700000006000000060c0a01ae0f000000" .. variable_number .. "00000000")

-- Sending
variabile,err_s=mb2:send(hex_decoded)
-- Response
local response,err = mb2:receive()

-- Log the sending operation
if variabile then
    log("Is send successful?: ")
    log(variabile)
else
    log("Sending error: "..err_s)
end

-- Log the response
if response then
    log("Response from device: " .. table.concat(response, ", "))
else
    log("Response error: ".. err_r)
end

log(table.concat(buffer))
mb2:close()

Logs report:

Response error: Operation timed out

Debug:
* string: [01][17][00][00][00][06][00][00][00][06][0C][0A][01][AE][0F][00][00][00][11][00][00][00][00][91][AF]
Waiting for a indication...
<01><17><0C><0A><01><AE><0F><00><00><00><11><00><00><00><42><C1><35>ERROR Operation timed out: select

The response captured by debug is complete and correct.
I tried to change setreceivetimeout() and setresponsetimeout() with no effects.
Reply


Messages In This Thread
Modbus function code 23 (#17) - by alb-smith - 27.03.2025, 09:13
RE: Modbus function code 23 (#17) - by admin - 27.03.2025, 09:18
RE: Modbus function code 23 (#17) - by admin - 28.03.2025, 11:14
RE: Modbus function code 23 (#17) - by alb-smith - 29.03.2025, 09:36
RE: Modbus function code 23 (#17) - by admin - 31.03.2025, 07:36

Forum Jump: