Haltech PS1000 - PS2000: Difference between revisions
(Created page with "=Haltech PS2000= Research is underway.") |
No edit summary |
||
Line 1: | Line 1: | ||
=Haltech PS2000= | =Haltech PS2000= | ||
Under development. | |||
The following script will map the common Haltech CAN bus channels: | |||
<pre> | |||
--Haltech PS1000 CAN Logging | |||
tickRate = 10 --polling rate | |||
CAN_baud = 1000000 --the CAN baud rate | |||
CAN_chan = 0 --CAN channel to listen on. 0=first CAN channel, 1=second | |||
--add your virtual channels here | |||
--addChannel("Name",samplerate{1,10,25,50,100,200},precision(2),min(0),max(1000),units) | |||
rpm_Id = addChannel("RPM", 50, 0, 0, 10000, "RPM") | |||
map_Id = addChannel("MAP", 10, 0, 0, 100, 'kPa') | |||
tps_Id = addChannel("TPS", 10, 1, 0, 100, '%') | |||
fps_Id = addChannel("FuelPress", 10, 1, 0, 100, 'kPa') | |||
ops_Id = addChannel("OilPress", 10, 1, 0, 100, 'kPa') | |||
idc1_Id = addChannel("InjDutyCyc", 10, 0, 0, 100, '%') | |||
lambda_Id = addChannel("AFR", 10, 3, 0, 5, 'Lambda') | |||
cts_Id = addChannel("Coolant", 1, 1, 0, 200, 'C') | |||
ats_Id = addChannel("IAT", 1, 1, 0, 200, 'C') | |||
fts_Id = addChannel("FuelTemp", 1, 1, 0, 200, 'C') | |||
ots_Id = addChannel("OilTemp", 1, 1, 0, 200, 'C') | |||
flex_Id = addChannel("FuelComp", 1, 0, 0, 100, '%') | |||
--customize here for CAN channel mapping | |||
--format is: [CAN Id] = function(data) map_chan(<channel id>, data, <CAN offset>, <CAN length>, <multiplier>, <adder>) | |||
CAN_map = { | |||
[360] = function(data) map_chan(rpm_Id, data, 0, 2, 1, 0) end, | |||
[360] = function(data) map_chan(map_Id, data, 2, 2, 10, -1013) end, | |||
[360] = function(data) map_chan(tps_Id, data, 4, 2, 10, 0) end, | |||
--[360] = function(data) map_chan(cps_Id, data, 6, 2, 10, 0) end, | |||
[361] = function(data) map_chan(fps_Id, data, 0, 2, 10, -1013) end, | |||
[361] = function(data) map_chan(ops_Id, data, 2, 2, 10, -1013) end, | |||
--[361] = function(data) map_chan(accel_pos_Id, data, 4, 2, 10, 0) end, | |||
--[361] = function(data) map_chan(waste_gate_pres_Id, data, 6, 2, 10, -1013) end, | |||
[362] = function(data) map_chan(idc1_Id, data, 0, 2, 10, -1013) end, | |||
--[362] = function(data) map_chan(idc2_Id, data, 2, 2, 10, -1013) end, | |||
--[362] = function(data) map_chan(ignL_Id, data, 4, 2, 10, 0) end, | |||
--[362] = function(data) map_chan(ignT_Id, data, 6, 2, 10, 0) end, | |||
[368] = function(data) map_chan(lambda_Id, data, 0, 2, 1000, 0) end, | |||
[3E0] = function(data) map_chan(cts_Id, data, 0, 2, 10, 2731) end, | |||
[3E0] = function(data) map_chan(ats_Id, data, 2, 2, 10, 2731) end, | |||
[3E0] = function(data) map_chan(fts_Id, data, 4, 2, 10, 2731) end, | |||
[3E0] = function(data) map_chan(ots_Id, data, 6, 2, 10, 2731) end, | |||
[3E1] = function(data) map_chan(flex_Id, data, 4, 2, 10, 0) end | |||
} | |||
function onTick() | |||
processCAN(CAN_chan) | |||
end | |||
--===========do not edit below=========== | |||
function processCAN(chan) | |||
repeat | |||
local id, e, data = rxCAN(chan) | |||
if id ~= nil then | |||
local map = CAN_map[id] | |||
if map ~= nil then | |||
map(data) | |||
end | |||
end | |||
until id == nil | |||
end | |||
--Map CAN channel | |||
function map_chan(cid, data, offset, len, mult, add) | |||
offset = offset + 1 | |||
local value = 0 | |||
while len > 0 do | |||
value = (value * 256) + data[offset] | |||
offset = offset + 1 | |||
len = len - 1 | |||
end | |||
setChannel(cid, (value * mult) + add) | |||
end | |||
map_chan = (be_mode == 1) and map_chan_be or map_chan_le | |||
initCAN(CAN_chan, CAN_baud) | |||
setTickRate(tickRate) | |||
</pre> |
Revision as of 17:05, 14 July 2015
Haltech PS2000
Under development.
The following script will map the common Haltech CAN bus channels:
--Haltech PS1000 CAN Logging tickRate = 10 --polling rate CAN_baud = 1000000 --the CAN baud rate CAN_chan = 0 --CAN channel to listen on. 0=first CAN channel, 1=second --add your virtual channels here --addChannel("Name",samplerate{1,10,25,50,100,200},precision(2),min(0),max(1000),units) rpm_Id = addChannel("RPM", 50, 0, 0, 10000, "RPM") map_Id = addChannel("MAP", 10, 0, 0, 100, 'kPa') tps_Id = addChannel("TPS", 10, 1, 0, 100, '%') fps_Id = addChannel("FuelPress", 10, 1, 0, 100, 'kPa') ops_Id = addChannel("OilPress", 10, 1, 0, 100, 'kPa') idc1_Id = addChannel("InjDutyCyc", 10, 0, 0, 100, '%') lambda_Id = addChannel("AFR", 10, 3, 0, 5, 'Lambda') cts_Id = addChannel("Coolant", 1, 1, 0, 200, 'C') ats_Id = addChannel("IAT", 1, 1, 0, 200, 'C') fts_Id = addChannel("FuelTemp", 1, 1, 0, 200, 'C') ots_Id = addChannel("OilTemp", 1, 1, 0, 200, 'C') flex_Id = addChannel("FuelComp", 1, 0, 0, 100, '%') --customize here for CAN channel mapping --format is: [CAN Id] = function(data) map_chan(<channel id>, data, <CAN offset>, <CAN length>, <multiplier>, <adder>) CAN_map = { [360] = function(data) map_chan(rpm_Id, data, 0, 2, 1, 0) end, [360] = function(data) map_chan(map_Id, data, 2, 2, 10, -1013) end, [360] = function(data) map_chan(tps_Id, data, 4, 2, 10, 0) end, --[360] = function(data) map_chan(cps_Id, data, 6, 2, 10, 0) end, [361] = function(data) map_chan(fps_Id, data, 0, 2, 10, -1013) end, [361] = function(data) map_chan(ops_Id, data, 2, 2, 10, -1013) end, --[361] = function(data) map_chan(accel_pos_Id, data, 4, 2, 10, 0) end, --[361] = function(data) map_chan(waste_gate_pres_Id, data, 6, 2, 10, -1013) end, [362] = function(data) map_chan(idc1_Id, data, 0, 2, 10, -1013) end, --[362] = function(data) map_chan(idc2_Id, data, 2, 2, 10, -1013) end, --[362] = function(data) map_chan(ignL_Id, data, 4, 2, 10, 0) end, --[362] = function(data) map_chan(ignT_Id, data, 6, 2, 10, 0) end, [368] = function(data) map_chan(lambda_Id, data, 0, 2, 1000, 0) end, [3E0] = function(data) map_chan(cts_Id, data, 0, 2, 10, 2731) end, [3E0] = function(data) map_chan(ats_Id, data, 2, 2, 10, 2731) end, [3E0] = function(data) map_chan(fts_Id, data, 4, 2, 10, 2731) end, [3E0] = function(data) map_chan(ots_Id, data, 6, 2, 10, 2731) end, [3E1] = function(data) map_chan(flex_Id, data, 4, 2, 10, 0) end } function onTick() processCAN(CAN_chan) end --===========do not edit below=========== function processCAN(chan) repeat local id, e, data = rxCAN(chan) if id ~= nil then local map = CAN_map[id] if map ~= nil then map(data) end end until id == nil end --Map CAN channel function map_chan(cid, data, offset, len, mult, add) offset = offset + 1 local value = 0 while len > 0 do value = (value * 256) + data[offset] offset = offset + 1 len = len - 1 end setChannel(cid, (value * mult) + add) end map_chan = (be_mode == 1) and map_chan_be or map_chan_le initCAN(CAN_chan, CAN_baud) setTickRate(tickRate)