#64 rtu code cleanup and device bugfixes

This commit is contained in:
Mikayla Fischler
2022-05-31 14:54:55 -04:00
parent 1705d8993e
commit 4ec07ca053
11 changed files with 205 additions and 231 deletions

View File

@@ -9,7 +9,7 @@ local MODBUS_EXCODE = types.MODBUS_EXCODE
-- new modbus comms handler object
---@param rtu_dev rtu_device|rtu_rs_device RTU device
---@param use_parallel_read boolean whether or not to use parallel calls when reading
modbus.new = function (rtu_dev, use_parallel_read)
function modbus.new(rtu_dev, use_parallel_read)
local self = {
rtu = rtu_dev,
use_parallel = use_parallel_read
@@ -23,7 +23,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param c_addr_start integer
---@param count integer
---@return boolean ok, table readings
local _1_read_coils = function (c_addr_start, count)
local function _1_read_coils(c_addr_start, count)
local tasks = {}
local readings = {}
local access_fault = false
@@ -69,7 +69,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param di_addr_start integer
---@param count integer
---@return boolean ok, table readings
local _2_read_discrete_inputs = function (di_addr_start, count)
local function _2_read_discrete_inputs(di_addr_start, count)
local tasks = {}
local readings = {}
local access_fault = false
@@ -115,7 +115,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param hr_addr_start integer
---@param count integer
---@return boolean ok, table readings
local _3_read_multiple_holding_registers = function (hr_addr_start, count)
local function _3_read_multiple_holding_registers(hr_addr_start, count)
local tasks = {}
local readings = {}
local access_fault = false
@@ -161,7 +161,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param ir_addr_start integer
---@param count integer
---@return boolean ok, table readings
local _4_read_input_registers = function (ir_addr_start, count)
local function _4_read_input_registers(ir_addr_start, count)
local tasks = {}
local readings = {}
local access_fault = false
@@ -207,7 +207,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param c_addr integer
---@param value any
---@return boolean ok, MODBUS_EXCODE|nil
local _5_write_single_coil = function (c_addr, value)
local function _5_write_single_coil(c_addr, value)
local response = nil
local _, coils, _, _ = self.rtu.io_count()
local return_ok = c_addr <= coils
@@ -229,7 +229,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param hr_addr integer
---@param value any
---@return boolean ok, MODBUS_EXCODE|nil
local _6_write_single_holding_register = function (hr_addr, value)
local function _6_write_single_holding_register(hr_addr, value)
local response = nil
local _, _, _, hold_regs = self.rtu.io_count()
local return_ok = hr_addr <= hold_regs
@@ -251,7 +251,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param c_addr_start integer
---@param values any
---@return boolean ok, MODBUS_EXCODE|nil
local _15_write_multiple_coils = function (c_addr_start, values)
local function _15_write_multiple_coils(c_addr_start, values)
local response = nil
local _, coils, _, _ = self.rtu.io_count()
local count = #values
@@ -278,7 +278,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
---@param hr_addr_start integer
---@param values any
---@return boolean ok, MODBUS_EXCODE|nil
local _16_write_multiple_holding_registers = function (hr_addr_start, values)
local function _16_write_multiple_holding_registers(hr_addr_start, values)
local response = nil
local _, _, _, hold_regs = self.rtu.io_count()
local count = #values
@@ -305,7 +305,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
-- validate a request without actually executing it
---@param packet modbus_frame
---@return boolean return_code, modbus_packet reply
public.check_request = function (packet)
function public.check_request(packet)
local return_code = true
local response = { MODBUS_EXCODE.ACKNOWLEDGE }
@@ -347,7 +347,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
-- handle a MODBUS TCP packet and generate a reply
---@param packet modbus_frame
---@return boolean return_code, modbus_packet reply
public.handle_packet = function (packet)
function public.handle_packet(packet)
local return_code = true
local response = nil
@@ -402,7 +402,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
-- return a SERVER_DEVICE_BUSY error reply
---@return modbus_packet reply
public.reply__srv_device_busy = function (packet)
function public.reply__srv_device_busy(packet)
-- reply back with error flag and exception code
local reply = comms.modbus_packet()
local fcode = bit.bor(packet.func_code, MODBUS_FCODE.ERROR_FLAG)
@@ -413,7 +413,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
-- return a NEG_ACKNOWLEDGE error reply
---@return modbus_packet reply
public.reply__neg_ack = function (packet)
function public.reply__neg_ack(packet)
-- reply back with error flag and exception code
local reply = comms.modbus_packet()
local fcode = bit.bor(packet.func_code, MODBUS_FCODE.ERROR_FLAG)
@@ -424,7 +424,7 @@ modbus.new = function (rtu_dev, use_parallel_read)
-- return a GATEWAY_PATH_UNAVAILABLE error reply
---@return modbus_packet reply
public.reply__gw_unavailable = function (packet)
function public.reply__gw_unavailable(packet)
-- reply back with error flag and exception code
local reply = comms.modbus_packet()
local fcode = bit.bor(packet.func_code, MODBUS_FCODE.ERROR_FLAG)