mirror of
https://github.com/MikaylaFischler/cc-mek-scada.git
synced 2024-08-30 18:22:34 +00:00
RTU object and started modbus
This commit is contained in:
parent
c78db71b14
commit
78cbb9e67d
10
rtu/config.lua
Normal file
10
rtu/config.lua
Normal file
@ -0,0 +1,10 @@
|
||||
RTU__DEVICES = {
|
||||
{
|
||||
name = "boiler_0",
|
||||
reactor_owner = 1
|
||||
},
|
||||
{
|
||||
name = "turbine_0",
|
||||
reactor_owner = 1
|
||||
}
|
||||
}
|
78
rtu/rtu.lua
Normal file
78
rtu/rtu.lua
Normal file
@ -0,0 +1,78 @@
|
||||
function rtu_init()
|
||||
local self = {
|
||||
discrete_inputs = {},
|
||||
coils = {},
|
||||
input_regs = {},
|
||||
holding_regs = {}
|
||||
}
|
||||
|
||||
local count_io = function ()
|
||||
return #self.discrete_inputs, #self.coils, #self.input_regs, #self.holding_regs
|
||||
end
|
||||
|
||||
-- discrete inputs: single bit read-only
|
||||
|
||||
local connect_di = function (f)
|
||||
table.insert(self.discrete_inputs, f)
|
||||
return #self.discrete_inputs
|
||||
end
|
||||
|
||||
local read_di = function (di_addr)
|
||||
return self.discrete_inputs[di_addr]()
|
||||
end
|
||||
|
||||
-- coils: single bit read-write
|
||||
|
||||
local connect_coil = function (f_read, f_write)
|
||||
table.insert(self.coils, { read = f_read, write = f_write })
|
||||
return #self.coils
|
||||
end
|
||||
|
||||
local read_coil = function (coil_addr)
|
||||
return self.coils[coil_addr].read()
|
||||
end
|
||||
|
||||
local write_coil = function (coil_addr, value)
|
||||
self.coils[coil_addr].write(value)
|
||||
end
|
||||
|
||||
-- input registers: multi-bit read-only
|
||||
|
||||
local connect_input_reg = function (f)
|
||||
table.insert(self.input_regs, f)
|
||||
return #self.input_regs
|
||||
end
|
||||
|
||||
local read_input_reg = function (reg_addr)
|
||||
return self.coils[reg_addr]()
|
||||
end
|
||||
|
||||
-- holding registers: multi-bit read-write
|
||||
|
||||
local connect_holding_reg = function (f_read, f_write)
|
||||
table.insert(self.holding_regs, { read = f_read, write = f_write })
|
||||
return #self.holding_regs
|
||||
end
|
||||
|
||||
local read_holding_reg = function (reg_addr)
|
||||
return self.coils[reg_addr].read()
|
||||
end
|
||||
|
||||
local write_holding_reg = function (reg_addr, value)
|
||||
self.coils[reg_addr].write(value)
|
||||
end
|
||||
|
||||
return {
|
||||
count_io = count_io,
|
||||
connect_di = connect_di,
|
||||
read_di = read_di,
|
||||
connect_coil = connect_coil,
|
||||
read_coil = read_coil,
|
||||
write_coil = write_coil,
|
||||
connect_input_reg = connect_input_reg,
|
||||
read_input_reg = read_input_reg,
|
||||
connect_holding_reg = connect_holding_reg,
|
||||
read_holding_reg = read_holding_reg,
|
||||
write_holding_reg = write_holding_reg
|
||||
}
|
||||
end
|
6
rtu/startup.lua
Normal file
6
rtu/startup.lua
Normal file
@ -0,0 +1,6 @@
|
||||
--
|
||||
-- RTU: Remote Terminal Unit
|
||||
--
|
||||
|
||||
os.loadAPI("config.lua")
|
||||
os.loadAPI("rtu.lua")
|
14
scada-common/modbus.lua
Normal file
14
scada-common/modbus.lua
Normal file
@ -0,0 +1,14 @@
|
||||
function modbus_init(rtu_dev)
|
||||
local self = {
|
||||
rtu = rtu_dev
|
||||
}
|
||||
|
||||
function _1_read_coils(c_channel_start, count)
|
||||
end
|
||||
|
||||
function _2_read_discrete_inputs(di_channel_start, count)
|
||||
end
|
||||
|
||||
function _3_read_multiple_holding_registers(hr_channel_start, count)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user