Openport Stand-Alone Logging Beta

Re: Openport Stand-Alone Logging Beta

Postby fostytou » Wed Jun 09, 2010 7:55 am

Does anyone know if you can / how to set multiple conditions? I'd like this to say log only with cruise switch and engine on, but stop if cruise off or RPM less than 2500 (2008 evo x):
Code: Select all
Code:
conditionrpn = CruiseLight,1,==,&&,RPM,2500,>
action = start

conditionrpn = CruiseLight,0,==,||,RPM,2500,<
action = stop

; only log when the engine is running
;conditionrpn = RPM,0,>   
;action = start
;
;conditionrpn = RPM,0,==
;action = stop

; start logging to a new file when the throttle goes from previously below 80 to above 80
; #throttle refers to the previous throttle sample
conditionrpn = TPS,80,>,#TPS,80,<=,&&
action = newfile

I'm not sure if it should be this based on the way the other operators are set up:

Code: Select all
Code:
conditionrpn = CruiseLight,1,==,RPM,2500,>,&&
action = start

conditionrpn = CruiseLight,0,==,RPM,2500,<,||
action = stop
fostytou
 
Posts: 15
Joined: Wed Jun 09, 2010 7:51 am

Re: Openport Stand-Alone Logging Beta

Postby fostytou » Wed Jun 09, 2010 8:07 am

xPRimNT wrote:
cboles wrote:If you can capture both lamba and AFR that would be great. I would also like to know how roughly how many readings per second that it provides. Do any of the other AEM products also produce serial data like this?

Colby



I can definitely capture AFR soon, but need to pull my dash apart for Lambda. I'll get AFR for now, I'll try to timestamp the signals if I can figure it out.


The UEGOs with serial (both the digital gauge and the inline [non gauge]) have this. I'm not sure about the other products they make.


I would definitely like this also! I have no problem buying a mini plug and wiring it up to test the conversion from UEGO serial to mini (it is only 2 wires, so I would just need to know which is tx and which is gnd on the mini plug).

I can confirm that when you view the stream in hyperterminal it is just a stream of the output to the gauge display (depending on what you have the switch set to it can be anything from the AEM document: gas AFR, lambda, autronic, small volt range, and nernst)
fostytou
 
Posts: 15
Joined: Wed Jun 09, 2010 7:51 am

Re: Openport Stand-Alone Logging Beta

Postby cboles » Wed Jun 09, 2010 9:55 am

this one. welcome to RPN!

fostytou wrote:
Code: Select all
Code:
conditionrpn = CruiseLight,1,==,RPM,2500,>,&&
action = start

conditionrpn = CruiseLight,0,==,RPM,2500,<,||
action = stop
cboles
Site Admin
 
Posts: 1233
Joined: Wed Dec 29, 2004 5:45 pm
Location: Seattle, WA

Re: Openport Stand-Alone Logging Beta

Postby Nikkolai » Wed Jun 16, 2010 7:14 pm

To log with just the cruise control button on the "ON" position, how do I trigger that? This is for a 2010 STi. With my current trigger, it starts to log only when I have the set (I think it was set but it was one of the buttons for cruise control) and stops when I let go of the button. I would rather trigger when the actual cruise control button "ON" position and then stop logging when the cruise control is "OFF." I wanted an alternative to the defogger since the cruise control button is right on the steering wheel. I'm not sure if I am explaining it well enough but only when the button is pressed and the "cruise" light turns on in the dash; not actually setting cruise control on.

Code: Select all
;switch------------------------------------------------
paramname = switch
paramid = 0x121

databits = 1
offsetbits = 5
isvisible = 0

conditionrpn = switch,1,==
action = start

conditionrpn = switch,0,==
action = stop
Nikkolai
 
Posts: 1
Joined: Thu May 20, 2010 3:33 pm
Location: Fort Worth

Re: Openport Stand-Alone Logging Beta

Postby volik8 » Thu Jun 17, 2010 2:09 am

Greetings Cboles

Question you could include mazda in EcuFlash It actually!!
The matter is that MasdaEdit very badly works, ROM Read of this
The program kriptovany, XML a curve not complete, Maps in XML not
Signed, Maps of calibrations of atomizers in half XML are not present!!
On a question to Make Chip-tuning Mazda 6 2003г 2.0 l Epifan has responded
I guarantee is not present that all will pass successfully!!
There is this program 750$!!!!
volik8
 
Posts: 40
Joined: Thu Mar 15, 2007 8:43 am
Location: Kiev ukraina

Re: Openport Stand-Alone Logging Beta

Postby chaeoz » Mon Jun 21, 2010 1:28 am

For some reason, my standalone logging does not work now. :(

I was wondering if anyone has a bit of time to go through my config file for me. I have gone through it so many times that I forgot.

I'm running ecuflash 1.43.3 and OP2.0 has been updated to the latest firmware.

Code: Select all
; uncomment the line below to minimize the information written to logcfg.out
; this will greatly decrease the startup time to begin logging if you already
; have a working logcfg.txt without any problems
;
; debug=noout

; Internal ID = A8DK100Y
; ECU ID = 4D42584006

; sample logging configuration file for openport 2.0
; must be named logcfg.txt and be placed in the root directory of the
; microSD card inserted in the openport in order to work

; this sample logs using the SSM protocol over the K-line, which works
; for both CAN-based and older Subarus

;----------------ssm----------------
; log channel settings

; we are logging SSM via the K-line
type=ssmk            

; each parameter gets a name you chose
paramname = RPM            

; the paramid is used in the SSM request
paramid = 0x0E      

; how many bits in the returned value (defaults to 8, so you usually don't need to specify this)
databits = 16            

; how to scale the results using a RPN (http://en.wikipedia.org/wiki/Reverse_Polish_notation) notation, with data and operators seperated by commas
; the operators are as following:
;       + : add
;       - : subtract
;       * : multiply
;       / : divide
;
;       x : represents the raw (unscaled) parameter
; 123.456 : example of a constant
;
; if no scaling is specified, the raw value will be used
;
; the OP2 has no FPU - it must do floating point calculations in software which can
; create performance issues, so be efficient in your RPN expressions by doing the following:
;
; * minimize the number of operations; e.g. ((x * 2) + 1) * 2 => x * 4 + 2
; * don't divide by a constant when you can multiply instead; e.g. x / 4 => x * 0.25
; * don't make constant expressions that can instead be pre-calculated; e.g. x * 3 / 4 => x * 0.75

scalingrpn = x,0.25,*   

; continue specifying other parameters
; paramname = load
; paramid = 0x07
; scalingrpn = x,0.3921569,*

; commented out here is an example for reading a direct RAM parameter, a 32-bit float in this case
; paramname = load
; paramid = 0xFF6578
; isfloat = 1 ; the raw data is a 32-bit floating point number (no need to set databits = 32)

; paramname = coolant_temp
; paramid = 0x08
; scalingrpn = x,0.40,-
; priority = 2

; paramname = battery_volts
; paramid = 0x1C
; scalingrpn = x,0.08,*
; priority = 2

; paramname = mrp
; paramid = 0x24
; scaliid = 0x1C
; scalingrpn = x,0.08,*
; priority = 2

; paramname = mrp
; paramid = 0x24
; scalingrpn = x,128,-,0.145098,*

; paramname = IAM
; paramid = 0xF9
; scalingrpn = x,0.0625,*

paramname = Speed
paramid = 0x10
databits = 8
scalingrpn = x

paramname = IAM4
paramid = 0xFF2AD4
isfloat = 1
scalingrpn = x

paramname = ThrottleOpeningAngle
paramid = 0x15
databits = 8
scalingrpn = x,0.3921569,*

paramname = CLOLStat
paramid = 0xFF8D69
databits = 8
scalingrpn = x,6,+

paramname = load4grev
paramid = 0xFF6678
isfloat = 1
scalingrpn = x

paramname = est_afr4
paramid = 0xFF6C08
isfloat = 1
scalingrpn = 14.7,1,x,+,/
; scaling = 14.7/(1+x)

paramname = AFR2
paramid = 0xFF699E
databits = 16
scalingrpn = x,0.0001220703,*,14.7,*
; scaling = (x*.0001220703)*14.7

paramname = Pri_OL_Enrich
paramid = 0xFF6982
databits = 16
scalingrpn = 14.7,1,x,0.00003051758,*,+,/
; scaling = 14.7/(1+(x*.00003051758))

paramname = MassAirFlow
paramid = 0x13
databits = 16            
scalingrpn = x,0.01,*

paramname = MAFv
paramid = 0x1D
databits = 8
scalingrpn = x,0.02,*

paramname = IAT
paramid = 0x12
databits = 8
scalingrpn = x,40,-
; priority = 2

paramname = Ign_Tot_Timing
paramid = 0x11
databits = 8
scalingrpn = x,128,-,0.5,*

paramname =kca4
paramid = 0xFF7398
isfloat = 1
scalingrpn = x

paramname = FKC4
paramid = 0xFF739C
isfloat = 1
scalingrpn = x

paramname = FLKC1
paramid = 0xFF69B3
databits = 8
scalingrpn = x,0.3515625,*,45,-
; scaling = (x*.3515625)-45

paramname = WGDC
paramid = 0x30
databits = 8
scalingrpn = x,0.3921569,*

paramname = tgt_boost4
paramid = 0xFF641C
isfloat = 1
scalingrpn = x,760,-,0.001333224,*
; scaling = (x-760)*0.001333224

paramname = MAP
paramid = 0x0D
databits = 8
; scalingrpn = x,0.1450980392156863,*
scalingrpn = x,0.0100041602435564,*
; scaling = x*37/255/14.***

paramname = ATM
paramid = 0x23
databits = 8
scalingrpn = x,0.0100041602435564,*
; scalingrpn = x,0.1450980392156863,*
; scaling = x*37/255/14.***

paramname = IPW ; injector #1 pulse width
paramid = 0x20
databits = 8
scalingrpn = x,0.256,*

paramname = Knock_Sum
paramid = 0xFF7374
databits = 8
scalingrpn = x

paramname = AF_Correc_1
paramid = 0x09
databits = 8
scalingrpn = x,128,-,0.78125,*
; scalingrpn = 0.78125,x,128,-,*
; expression = (x-128)*100/128

paramname = AF_Learn_1
paramid = 0x0A
databits = 8
scalingrpn = x,128,-,0.78125,*
; scalingrpn = 0.78125,x,128,-,*
; expression = (x-128)*100/128

paramname = AF_Sensor_1
paramid = 0x46
databits = 8
scalingrpn = x,0.11484375,*
; expression = x/128*14.7

paramname = Engine_Load_2
paramid = 0xFF6988
databits = 16
scalingrpn = x,0.00006103516,*
; expression = x*.00006103516

; some samples of logging "bitfield" values that are not whole bytes
; if you want to log more that one of these efficently, group them by
; paramid and the OP2 will only issue a single request to get all of
; the bits within each paramid

; paramname = ignition_sw
; paramid = 0x62
; databits = 1
; offsetbits = 3

; to still acquire a parameter (perhaps for triggering or a calculation)
; but not record it in the log, set isvisible equal to zero (it is 1 by default)
; isvisible = 0

; paramname = AC_sw
; paramid = 0x62
; databits = 1
; offsetbits = 1
; isvisible = 0

; paramname = defogger_sw
; paramid = 0x64
; databits = 1
; offsetbits = 5
; isvisible = 0

; paramname = blower_sw
; paramid = 0x64
; databits = 1
; offsetbits = 4
; isvisible = 0

; paramname = clutch_sw
; paramid = 0x121
; databits = 1
; offsetbits = 7

; paramname = brake_sw
; paramid = 0x121
; databits = 1
; offsetbits = 3

;----------------inno----------------
;type=inno
; log from an innovate bus via the 3/32" jack
; currently the LC-1 is the only supported device
; in the "inno" case the parameters are already pre-defined, you just
; need to reference them by name so that they are included in the log
; output. note that these parameters won't become valid until the LC-1
; has been calibrated and the sensor is warmed up.

; paramname = inno.afr
; paramname = inno.lambda


;----------------adc----------------
; type=adc       ; log from built in ADC channels

; paramname=battvolts
; paramid=16      ; paramid is pin number on OBD connector
         ; valid pins are 8 and 16
         ; values are pre-scaled to millivolts
; scalingrpn=x,0.001,*    ; here we scale to volts

; paramname=ignvolts   ; on newer subarus pin 8 is connected to the ignition voltage
; paramid=8      ; paramid is pin number on OBD connector
         ; valid pins are 8 and 16
         ; values are pre-scaled to millivolts
; scalingrpn=x,0.001,*    ; here we scale to volts


;-------------calculated parameter---------------
;
; you can derive calculated parameters from other parameters
; using RPN expressions
;
type = calc            

paramname = IDC
scalingrpn = RPM,IPW,*,0.0008333333,*

paramname = MRP_Corrected
scalingrpn = MAP,ATM,-


;-------------triggers---------------
;
; note that parameters must be previously defined
; before defining triggers using them
;
; triggers allow you to control when logging starts and stops
; this example sets up triggers such that logging only occurs
; when the engine is running (RPM > 0)
;
; triggers consist of a condition (a RPN expression using comparison operators)
; and an action. the RPN comparison operators match those in the C language:
;
; > < >= <= == != && ||
;
; if the condition evaluates to a non-zero value, that action is taken

conditionrpn = RPM,0,>   
action = start

conditionrpn = RPM,0,==
action = stop

; here is a second triggering example using the rear defogger switch
; uncomment it and comment out the sample above to use it

;conditionrpn = defogger_sw,1,==
;action = start

;conditionrpn = defogger_sw,0,==
;action = stop



This is the resultant logcfg.out.

Code: Select all
016: type=ssmk            
   : name[type,8] value[ssmk,0,0.000000]
017: ; each parameter gets a name you chose
018: paramname = RPM            
   : name[paramname,16] value[RPM,0,0.000000]
019: ; the paramid is used in the SSM request
020: paramid = 0x0E      
   : name[paramid,17] value[0x0E,14,0.000000]
021: ; how many bits in the returned value (defaults to 8, so you usually don't need to specify this)
022: databits = 16            
   : name[databits,22] value[16,16,16.000000]
023: ; how to scale the results using a RPN (http://en.wikipedia.org/wiki/Reverse_Polish_notation) notation, with data and operators seperated by commas
024: ; the operators are as following:
025: ;       + : add
026: ;       - : subtract
027: ;       * : multiply
028: ;       / : divide
029: ;
030: ;       x : represents the raw (unscaled) parameter
031: ; 123.456 : example of a constant
032: ;
033: ; if no scaling is specified, the raw value will be used
034: ;
035: ; the OP2 has no FPU - it must do floating point calculations in software which can
036: ; create performance issues, so be efficient in your RPN expressions by doing the following:
037: ;
038: ; * minimize the number of operations; e.g. ((x * 2) + 1) * 2 => x * 4 + 2
039: ; * don't divide by a constant when you can multiply instead; e.g. x / 4 => x * 0.25
040: ; * don't make constant expressions that can instead be pre-calculated; e.g. x * 3 / 4 => x * 0.75
041: scalingrpn = x,0.25,*   
   : name[scalingrpn,18] value[x,0.25,*,0,0.000000]
042: ; continue specifying other parameters
043: ; paramname = load
044: ; paramid = 0x07
045: ; scalingrpn = x,0.3921569,*
046: ; commented out here is an example for reading a direct RAM parameter, a 32-bit float in this case
047: ; paramname = load
048: ; paramid = 0xFF6578
049: ; isfloat = 1 ; the raw data is a 32-bit floating point number (no need to set databits = 32)
050: ; paramname = coolant_temp
051: ; paramid = 0x08
052: ; scalingrpn = x,0.40,-
053: ; priority = 2
054: ; paramname = battery_volts
055: ; paramid = 0x1C
056: ; scalingrpn = x,0.08,*
057: ; priority = 2
058: ; paramname = mrp
059: ; paramid = 0x24
060: ; scaliid = 0x1C
061: ; scalingrpn = x,0.08,*
062: ; priority = 2
063: ; paramname = mrp
064: ; paramid = 0x24
065: ; scalingrpn = x,128,-,0.145098,*
066: ; paramname = IAM
067: ; paramid = 0xF9
068: ; scalingrpn = x,0.0625,*
069: paramname = Speed
   : name[paramname,16] value[Speed,0,0.000000]
070: paramid = 0x10
   : name[paramid,17] value[0x10,16,0.000000]
071: databits = 8
   : name[databits,22] value[8,8,8.000000]
072: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
073: paramname = IAM4
   : name[paramname,16] value[IAM4,0,0.000000]
074: paramid = 0xFF2AD4
   : name[paramid,17] value[0xFF2AD4,16722644,0.000000]
075: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
076: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
077: paramname = ThrottleOpeningAngle
   : name[paramname,16] value[ThrottleOpeningAngle,0,0.000000]
078: paramid = 0x15
   : name[paramid,17] value[0x15,21,0.000000]
079: databits = 8
   : name[databits,22] value[8,8,8.000000]
080: scalingrpn = x,0.3921569,*
   : name[scalingrpn,18] value[x,0.3921569,*,0,0.000000]
081: paramname = CLOLStat
   : name[paramname,16] value[CLOLStat,0,0.000000]
082: paramid = 0xFF8D69
   : name[paramid,17] value[0xFF8D69,16747881,0.000000]
083: databits = 8
   : name[databits,22] value[8,8,8.000000]
084: scalingrpn = x,6,+
   : name[scalingrpn,18] value[x,6,+,0,0.000000]
085: paramname = load4grev
   : name[paramname,16] value[load4grev,0,0.000000]
086: paramid = 0xFF6678
   : name[paramid,17] value[0xFF6678,16737912,0.000000]
087: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
088: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
089: paramname = est_afr4
   : name[paramname,16] value[est_afr4,0,0.000000]
090: paramid = 0xFF6C08
   : name[paramid,17] value[0xFF6C08,16739336,0.000000]
091: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
092: scalingrpn = 14.7,1,x,+,/
   : name[scalingrpn,18] value[14.7,1,x,+,/,14,14.700000]
093: ; scaling = 14.7/(1+x)
094: paramname = AFR2
   : name[paramname,16] value[AFR2,0,0.000000]
095: paramid = 0xFF699E
   : name[paramid,17] value[0xFF699E,16738718,0.000000]
096: databits = 16
   : name[databits,22] value[16,16,16.000000]
097: scalingrpn = x,0.0001220703,*,14.7,*
   : name[scalingrpn,18] value[x,0.0001220703,*,14.7,*,0,0.000000]
098: ; scaling = (x*.0001220703)*14.7
099: paramname = Pri_OL_Enrich
   : name[paramname,16] value[Pri_OL_Enrich,0,0.000000]
100: paramid = 0xFF6982
   : name[paramid,17] value[0xFF6982,16738690,0.000000]
101: databits = 16
   : name[databits,22] value[16,16,16.000000]
102: scalingrpn = 14.7,1,x,0.00003051758,*,+,/
   : name[scalingrpn,18] value[14.7,1,x,0.00003051758,*,+,/,14,14.700000]
103: ; scaling = 14.7/(1+(x*.00003051758))
104: paramname = MassAirFlow
   : name[paramname,16] value[MassAirFlow,0,0.000000]
105: paramid = 0x13
   : name[paramid,17] value[0x13,19,0.000000]
106: databits = 16            
   : name[databits,22] value[16,16,16.000000]
107: scalingrpn = x,0.01,*
   : name[scalingrpn,18] value[x,0.01,*,0,0.000000]
108: paramname = MAFv
   : name[paramname,16] value[MAFv,0,0.000000]
109: paramid = 0x1D
   : name[paramid,17] value[0x1D,29,0.000000]
110: databits = 8
   : name[databits,22] value[8,8,8.000000]
111: scalingrpn = x,0.02,*
   : name[scalingrpn,18] value[x,0.02,*,0,0.000000]
112: paramname = IAT
   : name[paramname,16] value[IAT,0,0.000000]
113: paramid = 0x12
   : name[paramid,17] value[0x12,18,0.000000]
114: databits = 8
   : name[databits,22] value[8,8,8.000000]
115: scalingrpn = x,40,-
   : name[scalingrpn,18] value[x,40,-,0,0.000000]
116: ; priority = 2
117: paramname = Ign_Tot_Timing
   : name[paramname,16] value[Ign_Tot_Timing,0,0.000000]
118: paramid = 0x11
   : name[paramid,17] value[0x11,17,0.000000]
119: databits = 8
   : name[databits,22] value[8,8,8.000000]
120: scalingrpn = x,128,-,0.5,*
   : name[scalingrpn,18] value[x,128,-,0.5,*,0,0.000000]
121: paramname =kca4
   : name[paramname,16] value[kca4,0,0.000000]
122: paramid = 0xFF7398
   : name[paramid,17] value[0xFF7398,16741272,0.000000]
123: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
124: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
125: paramname = FKC4
   : name[paramname,16] value[FKC4,0,0.000000]
126: paramid = 0xFF739C
   : name[paramid,17] value[0xFF739C,16741276,0.000000]
127: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
128: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
129: paramname = FLKC1
   : name[paramname,16] value[FLKC1,0,0.000000]
130: paramid = 0xFF69B3
   : name[paramid,17] value[0xFF69B3,16738739,0.000000]
131: databits = 8
   : name[databits,22] value[8,8,8.000000]
132: scalingrpn = x,0.3515625,*,45,-
   : name[scalingrpn,18] value[x,0.3515625,*,45,-,0,0.000000]
133: ; scaling = (x*.3515625)-45
134: paramname = WGDC
   : name[paramname,16] value[WGDC,0,0.000000]
135: paramid = 0x30
   : name[paramid,17] value[0x30,48,0.000000]
136: databits = 8
   : name[databits,22] value[8,8,8.000000]
137: scalingrpn = x,0.3921569,*
   : name[scalingrpn,18] value[x,0.3921569,*,0,0.000000]
138: paramname = tgt_boost4
   : name[paramname,16] value[tgt_boost4,0,0.000000]
139: paramid = 0xFF641C
   : name[paramid,17] value[0xFF641C,16737308,0.000000]
140: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
141: scalingrpn = x,760,-,0.001333224,*
   : name[scalingrpn,18] value[x,760,-,0.001333224,*,0,0.000000]
142: ; scaling = (x-760)*0.001333224
143: paramname = MAP
   : name[paramname,16] value[MAP,0,0.000000]
144: paramid = 0x0D
   : name[paramid,17] value[0x0D,13,0.000000]
145: databits = 8
   : name[databits,22] value[8,8,8.000000]
146: ; scalingrpn = x,0.1450980392156863,*
147: scalingrpn = x,0.0100041602435564,*
   : name[scalingrpn,18] value[x,0.0100041602435564,*,0,0.000000]
148: ; scaling = x*37/255/14.***
149: paramname = ATM
   : name[paramname,16] value[ATM,0,0.000000]
150: paramid = 0x23
   : name[paramid,17] value[0x23,35,0.000000]
151: databits = 8
   : name[databits,22] value[8,8,8.000000]
152: scalingrpn = x,0.0100041602435564,*
   : name[scalingrpn,18] value[x,0.0100041602435564,*,0,0.000000]
153: ; scalingrpn = x,0.1450980392156863,*
154: ; scaling = x*37/255/14.***
155: paramname = IPW ; injector #1 pulse width
   : name[paramname,16] value[IPW,0,0.000000]
156: paramid = 0x20
   : name[paramid,17] value[0x20,32,0.000000]
157: databits = 8
   : name[databits,22] value[8,8,8.000000]
158: scalingrpn = x,0.256,*
   : name[scalingrpn,18] value[x,0.256,*,0,0.000000]
159: paramname = Knock_Sum
   : name[paramname,16] value[Knock_Sum,0,0.000000]
160: paramid = 0xFF7374
   : name[paramid,17] value[0xFF7374,16741236,0.000000]
161: databits = 8
   : name[databits,22] value[8,8,8.000000]
162: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
163: paramname = AF_Correc_1
   : name[paramname,16] value[AF_Correc_1,0,0.000000]
164: paramid = 0x09
   : name[paramid,17] value[0x09,9,0.000000]
165: databits = 8
   : name[databits,22] value[8,8,8.000000]
166: scalingrpn = x,128,-,0.78125,*
   : name[scalingrpn,18] value[x,128,-,0.78125,*,0,0.000000]
167: ; scalingrpn = 0.78125,x,128,-,*
168: ; expression = (x-128)*100/128
169: paramname = AF_Learn_1
   : name[paramname,16] value[AF_Learn_1,0,0.000000]
170: paramid = 0x0A
   : name[paramid,17] value[0x0A,10,0.000000]
171: databits = 8
   : name[databits,22] value[8,8,8.000000]
172: scalingrpn = x,128,-,0.78125,*
   : name[scalingrpn,18] value[x,128,-,0.78125,*,0,0.000000]
173: ; scalingrpn = 0.78125,x,128,-,*
174: ; expression = (x-128)*100/128
175: paramname = AF_Sensor_1
   : name[paramname,16] value[AF_Sensor_1,0,0.000000]
176: paramid = 0x46
   : name[paramid,17] value[0x46,70,0.000000]
177: databits = 8
   : name[databits,22] value[8,8,8.000000]
178: scalingrpn = x,0.11484375,*
   : name[scalingrpn,18] value[x,0.11484375,*,0,0.000000]
179: ; expression = x/128*14.7
180: paramname = Engine_Load_2
   : name[paramname,16] value[Engine_Load_2,0,0.000000]
181: paramid = 0xFF6988
   : name[paramid,17] value[0xFF6988,16738696,0.000000]
182: databits = 16
   : name[databits,22] value[16,16,16.000000]
183: scalingrpn = x,0.00006103516,*
   : name[scalingrpn,18] value[x,0.00006103516,*,0,0.000000]
184: ; expression = x*.00006103516
185: ; some samples of logging "bitfield" values that are not whole bytes
186: ; if you want to log more that one of these efficently, group them by
187: ; paramid and the OP2 will only issue a single request to get all of
188: ; the bits within each paramid
189: ; paramname = ignition_sw
190: ; paramid = 0x62
191: ; databits = 1
192: ; offsetbits = 3
193: ; to still acquire a parameter (perhaps for triggering or a calculation)
194: ; but not record it in the log, set isvisible equal to zero (it is 1 by default)
195: ; isvisible = 0
196: ; paramname = AC_sw
197: ; paramid = 0x62
198: ; databits = 1
199: ; offsetbits = 1
200: ; isvisible = 0
201: ; paramname = defogger_sw
202: ; paramid = 0x64
203: ; databits = 1
204: ; offsetbits = 5
205: ; isvisible = 0
206: ; paramname = blower_sw
207: ; paramid = 0x64
208: ; databits = 1
209: ; offsetbits = 4
210: ; isvisible = 0
211: ; paramname = clutch_sw
212: ; paramid = 0x121
213: ; databits = 1
214: ; offsetbits = 7
215: ; paramname = brake_sw
216: ; paramid = 0x121
217: ; databits = 1
218: ; offsetbits = 3
219: ;----------------inno----------------
220: ;type=inno
221: ; log from an innovate bus via the 3/32" jack
222: ; currently the LC-1 is the only supported device
223: ; in the "inno" case the parameters are already pre-defined, you just
224: ; need to reference them by name so that they are included in the log
225: ; output. note that these parameters won't become valid until the LC-1
226: ; has been calibrated and the sensor is warmed up.
227: ; paramname = inno.afr
228: ; paramname = inno.lambda
229: ;----------------adc----------------
230: ; type=adc       ; log from built in ADC channels
231: ; paramname=battvolts
232: ; paramid=16      ; paramid is pin number on OBD connector
233:          ; valid pins are 8 and 16
234:          ; values are pre-scaled to millivolts
235: ; scalingrpn=x,0.001,*    ; here we scale to volts
236: ; paramname=ignvolts   ; on newer subarus pin 8 is connected to the ignition voltage
237: ; paramid=8      ; paramid is pin number on OBD connector
238:          ; valid pins are 8 and 16
239:          ; values are pre-scaled to millivolts
240: ; scalingrpn=x,0.001,*    ; here we scale to volts
241: ;-------------calculated parameter---------------
242: ;
243: ; you can derive calculated parameters from other parameters
244: ; using RPN expressions
245: ;
246: type = calc            
   : name[type,8] value[calc,0,0.000000]
247: paramname = IDC
   : name[paramname,16] value[IDC,0,0.000000]
248: scalingrpn = RPM,IPW,*,0.0008333333,*
   : name[scalingrpn,18] value[RPM,IPW,*,0.0008333333,*,0,0.000000]
249: paramname = MRP_Corrected
   : name[paramname,16] value[MRP_Corrected,0,0.000000]
250: scalingrpn = MAP,ATM,-
   : name[scalingrpn,18] value[MAP,ATM,-,0,0.000000]
251: ;-------------triggers---------------
252: ;
253: ; note that parameters must be previously defined
254: ; before defining triggers using them
255: ;
256: ; triggers allow you to control when logging starts and stops
257: ; this example sets up triggers such that logging only occurs
258: ; when the engine is running (RPM > 0)
259: ;
260: ; triggers consist of a condition (a RPN expression using comparison operators)
261: ; and an action. the RPN comparison operators match those in the C language:
262: ;
263: ; > < >= <= == != && ||
264: ;
265: ; if the condition evaluates to a non-zero value, that action is taken
266: conditionrpn = RPM,0,>   
   : name[conditionrpn,48] value[RPM,0,>,0,0.000000]
267: action = start
   : name[action,49] value[start,0,0.000000]
268: conditionrpn = RPM,0,==
   : name[conditionrpn,48] value[RPM,0,==,0,0.000000]
269: action = stop
   : name[action,49] value[stop,0,0.000000]
270: ; here is a second triggering example using the rear defogger switch
271: ; uncomment it and comment out the sample above to use it
272: ;conditionrpn = defogger_sw,1,==
273: ;action = start
274: ;conditionrpn = defogger_sw,0,==
275: ;action = stop

--- log config dump ---

the following general options are set:
  * interpolate missing samples
  * zero sample count at start of each file

channel type: ssmk
protocol id: 3
baud: 4800

param name: RPM
param id: 0x0000000E
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.250000,*

param name: Speed
param id: 0x00000010
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x

param name: IAM4
param id: 0x00FF2AD4
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: ThrottleOpeningAngle
param id: 0x00000015
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.392157,*

param name: CLOLStat
param id: 0x00FF8D69
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,6.000000,+

param name: load4grev
param id: 0x00FF6678
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: est_afr4
param id: 0x00FF6C08
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: 14.700000,1.000000,x,+,/

param name: AFR2
param id: 0x00FF699E
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.000122,*,14.700000,*

param name: Pri_OL_Enrich
param id: 0x00FF6982
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: 14.700000,1.000000,x,0.000031,*,+,/

param name: MassAirFlow
param id: 0x00000013
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.010000,*

param name: MAFv
param id: 0x0000001D
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.020000,*

param name: IAT
param id: 0x00000012
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,40.000000,-

param name: Ign_Tot_Timing
param id: 0x00000011
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,128.000000,-,0.500000,*

param name: kca4
param id: 0x00FF7398
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: FKC4
param id: 0x00FF739C
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: FLKC1
param id: 0x00FF69B3
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.351563,*,45.000000,-

param name: WGDC
param id: 0x00000030
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.392157,*

param name: tgt_boost4
param id: 0x00FF641C
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x,760.000000,-,0.001333,*

param name: MAP
param id: 0x0000000D
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.010004,*

param name: ATM
param id: 0x00000023
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.010004,*

param name: IPW
param id: 0x00000020
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.256000,*

param name: Knock_Sum
param id: 0x00FF7374
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x

param name: AF_Correc_1
param id: 0x00000009
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,128.000000,-,0.781250,*

param name: AF_Learn_1
param id: 0x0000000A
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,128.000000,-,0.781250,*

param name: AF_Sensor_1
param id: 0x00000046
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.114844,*

param name: Engine_Load_2
param id: 0x00FF6988
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.000061,*

channel type: calc

param name: IDC
scaling: RPM,IPW,*,0.000833,*

param name: MRP_Corrected
scaling: MAP,ATM,-

trigger action: start condition: RPM,0.000000,>
trigger action: stop condition: RPM,0.000000,==

--- storage info ---
log channels: 2
log parameters: 28
log stringlist: 344 chars
log floatlist: 23 floats
worst case ssm request is 193 bytes long, response 68 bytes long and will be sent every 750000us (543663us is fastest possible)
logging interval will be 750000us
chaeoz
 
Posts: 14
Joined: Tue Jul 03, 2007 5:17 pm

Lets Make AEM Uego Work :-)

Postby mfb » Mon Jun 21, 2010 6:11 pm

HI Colby,

I just got my rma from Innovate for my lc1. So while I wait for that, got a good deal (50 off) for an aem uego from a friend.

Please let me know what you need from me so you can get this to work with OP2. Also how do I connect this to OP2? There's a 9 pin serial output instruction with 2 wires (1 ground). Im assuming I just have to get it to connect to the 3.5mm male plug for the op2.

It hard to go back to just rr logging when you've been used to OP2 logging. :shock: For the "interpolation", I just use ecuedit to give me a rounded off value similar to RR and Ecuflash.
mfb
 
Posts: 59
Joined: Fri Mar 26, 2010 1:49 am

Re: Openport Stand-Alone Logging Beta

Postby toflaherty » Fri Jul 02, 2010 5:00 pm

fostytou wrote:
xPRimNT wrote:
cboles wrote:If you can capture both lamba and AFR that would be great. I would also like to know how roughly how many readings per second that it provides. Do any of the other AEM products also produce serial data like this?

Colby



I can definitely capture AFR soon, but need to pull my dash apart for Lambda. I'll get AFR for now, I'll try to timestamp the signals if I can figure it out.


The UEGOs with serial (both the digital gauge and the inline [non gauge]) have this. I'm not sure about the other products they make.


I would definitely like this also! I have no problem buying a mini plug and wiring it up to test the conversion from UEGO serial to mini (it is only 2 wires, so I would just need to know which is tx and which is gnd on the mini plug).

I can confirm that when you view the stream in hyperterminal it is just a stream of the output to the gauge display (depending on what you have the switch set to it can be anything from the AEM document: gas AFR, lambda, autronic, small volt range, and nernst)


I'm also VERY interested in this.. I have the digital gauge UEGO and am currently logging via the serial output into RomRaider. I would LOVE to be able to log the UEGO direct to the standalone. I have a 2.5mm TRS plug ready to try this with also. I'm pretty sure the serial tx goes to the tip, and the gnd goes to the ring on the TRS plug. Please let me know if there's anything I can do to help get this working.
toflaherty
 
Posts: 4
Joined: Fri Jul 02, 2010 4:55 pm

Re: Openport Stand-Alone Logging Beta

Postby chaeoz » Wed Jul 07, 2010 8:41 pm

No one can help me?

chaeoz wrote:For some reason, my standalone logging does not work now. :(

I was wondering if anyone has a bit of time to go through my config file for me. I have gone through it so many times that I forgot.

I'm running ecuflash 1.43.3 and OP2.0 has been updated to the latest firmware.

Code: Select all
; uncomment the line below to minimize the information written to logcfg.out
; this will greatly decrease the startup time to begin logging if you already
; have a working logcfg.txt without any problems
;
; debug=noout

; Internal ID = A8DK100Y
; ECU ID = 4D42584006

; sample logging configuration file for openport 2.0
; must be named logcfg.txt and be placed in the root directory of the
; microSD card inserted in the openport in order to work

; this sample logs using the SSM protocol over the K-line, which works
; for both CAN-based and older Subarus

;----------------ssm----------------
; log channel settings

; we are logging SSM via the K-line
type=ssmk            

; each parameter gets a name you chose
paramname = RPM            

; the paramid is used in the SSM request
paramid = 0x0E      

; how many bits in the returned value (defaults to 8, so you usually don't need to specify this)
databits = 16            

; how to scale the results using a RPN (http://en.wikipedia.org/wiki/Reverse_Polish_notation) notation, with data and operators seperated by commas
; the operators are as following:
;       + : add
;       - : subtract
;       * : multiply
;       / : divide
;
;       x : represents the raw (unscaled) parameter
; 123.456 : example of a constant
;
; if no scaling is specified, the raw value will be used
;
; the OP2 has no FPU - it must do floating point calculations in software which can
; create performance issues, so be efficient in your RPN expressions by doing the following:
;
; * minimize the number of operations; e.g. ((x * 2) + 1) * 2 => x * 4 + 2
; * don't divide by a constant when you can multiply instead; e.g. x / 4 => x * 0.25
; * don't make constant expressions that can instead be pre-calculated; e.g. x * 3 / 4 => x * 0.75

scalingrpn = x,0.25,*   

; continue specifying other parameters
; paramname = load
; paramid = 0x07
; scalingrpn = x,0.3921569,*

; commented out here is an example for reading a direct RAM parameter, a 32-bit float in this case
; paramname = load
; paramid = 0xFF6578
; isfloat = 1 ; the raw data is a 32-bit floating point number (no need to set databits = 32)

; paramname = coolant_temp
; paramid = 0x08
; scalingrpn = x,0.40,-
; priority = 2

; paramname = battery_volts
; paramid = 0x1C
; scalingrpn = x,0.08,*
; priority = 2

; paramname = mrp
; paramid = 0x24
; scaliid = 0x1C
; scalingrpn = x,0.08,*
; priority = 2

; paramname = mrp
; paramid = 0x24
; scalingrpn = x,128,-,0.145098,*

; paramname = IAM
; paramid = 0xF9
; scalingrpn = x,0.0625,*

paramname = Speed
paramid = 0x10
databits = 8
scalingrpn = x

paramname = IAM4
paramid = 0xFF2AD4
isfloat = 1
scalingrpn = x

paramname = ThrottleOpeningAngle
paramid = 0x15
databits = 8
scalingrpn = x,0.3921569,*

paramname = CLOLStat
paramid = 0xFF8D69
databits = 8
scalingrpn = x,6,+

paramname = load4grev
paramid = 0xFF6678
isfloat = 1
scalingrpn = x

paramname = est_afr4
paramid = 0xFF6C08
isfloat = 1
scalingrpn = 14.7,1,x,+,/
; scaling = 14.7/(1+x)

paramname = AFR2
paramid = 0xFF699E
databits = 16
scalingrpn = x,0.0001220703,*,14.7,*
; scaling = (x*.0001220703)*14.7

paramname = Pri_OL_Enrich
paramid = 0xFF6982
databits = 16
scalingrpn = 14.7,1,x,0.00003051758,*,+,/
; scaling = 14.7/(1+(x*.00003051758))

paramname = MassAirFlow
paramid = 0x13
databits = 16            
scalingrpn = x,0.01,*

paramname = MAFv
paramid = 0x1D
databits = 8
scalingrpn = x,0.02,*

paramname = IAT
paramid = 0x12
databits = 8
scalingrpn = x,40,-
; priority = 2

paramname = Ign_Tot_Timing
paramid = 0x11
databits = 8
scalingrpn = x,128,-,0.5,*

paramname =kca4
paramid = 0xFF7398
isfloat = 1
scalingrpn = x

paramname = FKC4
paramid = 0xFF739C
isfloat = 1
scalingrpn = x

paramname = FLKC1
paramid = 0xFF69B3
databits = 8
scalingrpn = x,0.3515625,*,45,-
; scaling = (x*.3515625)-45

paramname = WGDC
paramid = 0x30
databits = 8
scalingrpn = x,0.3921569,*

paramname = tgt_boost4
paramid = 0xFF641C
isfloat = 1
scalingrpn = x,760,-,0.001333224,*
; scaling = (x-760)*0.001333224

paramname = MAP
paramid = 0x0D
databits = 8
; scalingrpn = x,0.1450980392156863,*
scalingrpn = x,0.0100041602435564,*
; scaling = x*37/255/14.***

paramname = ATM
paramid = 0x23
databits = 8
scalingrpn = x,0.0100041602435564,*
; scalingrpn = x,0.1450980392156863,*
; scaling = x*37/255/14.***

paramname = IPW ; injector #1 pulse width
paramid = 0x20
databits = 8
scalingrpn = x,0.256,*

paramname = Knock_Sum
paramid = 0xFF7374
databits = 8
scalingrpn = x

paramname = AF_Correc_1
paramid = 0x09
databits = 8
scalingrpn = x,128,-,0.78125,*
; scalingrpn = 0.78125,x,128,-,*
; expression = (x-128)*100/128

paramname = AF_Learn_1
paramid = 0x0A
databits = 8
scalingrpn = x,128,-,0.78125,*
; scalingrpn = 0.78125,x,128,-,*
; expression = (x-128)*100/128

paramname = AF_Sensor_1
paramid = 0x46
databits = 8
scalingrpn = x,0.11484375,*
; expression = x/128*14.7

paramname = Engine_Load_2
paramid = 0xFF6988
databits = 16
scalingrpn = x,0.00006103516,*
; expression = x*.00006103516

; some samples of logging "bitfield" values that are not whole bytes
; if you want to log more that one of these efficently, group them by
; paramid and the OP2 will only issue a single request to get all of
; the bits within each paramid

; paramname = ignition_sw
; paramid = 0x62
; databits = 1
; offsetbits = 3

; to still acquire a parameter (perhaps for triggering or a calculation)
; but not record it in the log, set isvisible equal to zero (it is 1 by default)
; isvisible = 0

; paramname = AC_sw
; paramid = 0x62
; databits = 1
; offsetbits = 1
; isvisible = 0

; paramname = defogger_sw
; paramid = 0x64
; databits = 1
; offsetbits = 5
; isvisible = 0

; paramname = blower_sw
; paramid = 0x64
; databits = 1
; offsetbits = 4
; isvisible = 0

; paramname = clutch_sw
; paramid = 0x121
; databits = 1
; offsetbits = 7

; paramname = brake_sw
; paramid = 0x121
; databits = 1
; offsetbits = 3

;----------------inno----------------
;type=inno
; log from an innovate bus via the 3/32" jack
; currently the LC-1 is the only supported device
; in the "inno" case the parameters are already pre-defined, you just
; need to reference them by name so that they are included in the log
; output. note that these parameters won't become valid until the LC-1
; has been calibrated and the sensor is warmed up.

; paramname = inno.afr
; paramname = inno.lambda


;----------------adc----------------
; type=adc       ; log from built in ADC channels

; paramname=battvolts
; paramid=16      ; paramid is pin number on OBD connector
         ; valid pins are 8 and 16
         ; values are pre-scaled to millivolts
; scalingrpn=x,0.001,*    ; here we scale to volts

; paramname=ignvolts   ; on newer subarus pin 8 is connected to the ignition voltage
; paramid=8      ; paramid is pin number on OBD connector
         ; valid pins are 8 and 16
         ; values are pre-scaled to millivolts
; scalingrpn=x,0.001,*    ; here we scale to volts


;-------------calculated parameter---------------
;
; you can derive calculated parameters from other parameters
; using RPN expressions
;
type = calc            

paramname = IDC
scalingrpn = RPM,IPW,*,0.0008333333,*

paramname = MRP_Corrected
scalingrpn = MAP,ATM,-


;-------------triggers---------------
;
; note that parameters must be previously defined
; before defining triggers using them
;
; triggers allow you to control when logging starts and stops
; this example sets up triggers such that logging only occurs
; when the engine is running (RPM > 0)
;
; triggers consist of a condition (a RPN expression using comparison operators)
; and an action. the RPN comparison operators match those in the C language:
;
; > < >= <= == != && ||
;
; if the condition evaluates to a non-zero value, that action is taken

conditionrpn = RPM,0,>   
action = start

conditionrpn = RPM,0,==
action = stop

; here is a second triggering example using the rear defogger switch
; uncomment it and comment out the sample above to use it

;conditionrpn = defogger_sw,1,==
;action = start

;conditionrpn = defogger_sw,0,==
;action = stop



This is the resultant logcfg.out.

Code: Select all
016: type=ssmk            
   : name[type,8] value[ssmk,0,0.000000]
017: ; each parameter gets a name you chose
018: paramname = RPM            
   : name[paramname,16] value[RPM,0,0.000000]
019: ; the paramid is used in the SSM request
020: paramid = 0x0E      
   : name[paramid,17] value[0x0E,14,0.000000]
021: ; how many bits in the returned value (defaults to 8, so you usually don't need to specify this)
022: databits = 16            
   : name[databits,22] value[16,16,16.000000]
023: ; how to scale the results using a RPN (http://en.wikipedia.org/wiki/Reverse_Polish_notation) notation, with data and operators seperated by commas
024: ; the operators are as following:
025: ;       + : add
026: ;       - : subtract
027: ;       * : multiply
028: ;       / : divide
029: ;
030: ;       x : represents the raw (unscaled) parameter
031: ; 123.456 : example of a constant
032: ;
033: ; if no scaling is specified, the raw value will be used
034: ;
035: ; the OP2 has no FPU - it must do floating point calculations in software which can
036: ; create performance issues, so be efficient in your RPN expressions by doing the following:
037: ;
038: ; * minimize the number of operations; e.g. ((x * 2) + 1) * 2 => x * 4 + 2
039: ; * don't divide by a constant when you can multiply instead; e.g. x / 4 => x * 0.25
040: ; * don't make constant expressions that can instead be pre-calculated; e.g. x * 3 / 4 => x * 0.75
041: scalingrpn = x,0.25,*   
   : name[scalingrpn,18] value[x,0.25,*,0,0.000000]
042: ; continue specifying other parameters
043: ; paramname = load
044: ; paramid = 0x07
045: ; scalingrpn = x,0.3921569,*
046: ; commented out here is an example for reading a direct RAM parameter, a 32-bit float in this case
047: ; paramname = load
048: ; paramid = 0xFF6578
049: ; isfloat = 1 ; the raw data is a 32-bit floating point number (no need to set databits = 32)
050: ; paramname = coolant_temp
051: ; paramid = 0x08
052: ; scalingrpn = x,0.40,-
053: ; priority = 2
054: ; paramname = battery_volts
055: ; paramid = 0x1C
056: ; scalingrpn = x,0.08,*
057: ; priority = 2
058: ; paramname = mrp
059: ; paramid = 0x24
060: ; scaliid = 0x1C
061: ; scalingrpn = x,0.08,*
062: ; priority = 2
063: ; paramname = mrp
064: ; paramid = 0x24
065: ; scalingrpn = x,128,-,0.145098,*
066: ; paramname = IAM
067: ; paramid = 0xF9
068: ; scalingrpn = x,0.0625,*
069: paramname = Speed
   : name[paramname,16] value[Speed,0,0.000000]
070: paramid = 0x10
   : name[paramid,17] value[0x10,16,0.000000]
071: databits = 8
   : name[databits,22] value[8,8,8.000000]
072: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
073: paramname = IAM4
   : name[paramname,16] value[IAM4,0,0.000000]
074: paramid = 0xFF2AD4
   : name[paramid,17] value[0xFF2AD4,16722644,0.000000]
075: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
076: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
077: paramname = ThrottleOpeningAngle
   : name[paramname,16] value[ThrottleOpeningAngle,0,0.000000]
078: paramid = 0x15
   : name[paramid,17] value[0x15,21,0.000000]
079: databits = 8
   : name[databits,22] value[8,8,8.000000]
080: scalingrpn = x,0.3921569,*
   : name[scalingrpn,18] value[x,0.3921569,*,0,0.000000]
081: paramname = CLOLStat
   : name[paramname,16] value[CLOLStat,0,0.000000]
082: paramid = 0xFF8D69
   : name[paramid,17] value[0xFF8D69,16747881,0.000000]
083: databits = 8
   : name[databits,22] value[8,8,8.000000]
084: scalingrpn = x,6,+
   : name[scalingrpn,18] value[x,6,+,0,0.000000]
085: paramname = load4grev
   : name[paramname,16] value[load4grev,0,0.000000]
086: paramid = 0xFF6678
   : name[paramid,17] value[0xFF6678,16737912,0.000000]
087: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
088: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
089: paramname = est_afr4
   : name[paramname,16] value[est_afr4,0,0.000000]
090: paramid = 0xFF6C08
   : name[paramid,17] value[0xFF6C08,16739336,0.000000]
091: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
092: scalingrpn = 14.7,1,x,+,/
   : name[scalingrpn,18] value[14.7,1,x,+,/,14,14.700000]
093: ; scaling = 14.7/(1+x)
094: paramname = AFR2
   : name[paramname,16] value[AFR2,0,0.000000]
095: paramid = 0xFF699E
   : name[paramid,17] value[0xFF699E,16738718,0.000000]
096: databits = 16
   : name[databits,22] value[16,16,16.000000]
097: scalingrpn = x,0.0001220703,*,14.7,*
   : name[scalingrpn,18] value[x,0.0001220703,*,14.7,*,0,0.000000]
098: ; scaling = (x*.0001220703)*14.7
099: paramname = Pri_OL_Enrich
   : name[paramname,16] value[Pri_OL_Enrich,0,0.000000]
100: paramid = 0xFF6982
   : name[paramid,17] value[0xFF6982,16738690,0.000000]
101: databits = 16
   : name[databits,22] value[16,16,16.000000]
102: scalingrpn = 14.7,1,x,0.00003051758,*,+,/
   : name[scalingrpn,18] value[14.7,1,x,0.00003051758,*,+,/,14,14.700000]
103: ; scaling = 14.7/(1+(x*.00003051758))
104: paramname = MassAirFlow
   : name[paramname,16] value[MassAirFlow,0,0.000000]
105: paramid = 0x13
   : name[paramid,17] value[0x13,19,0.000000]
106: databits = 16            
   : name[databits,22] value[16,16,16.000000]
107: scalingrpn = x,0.01,*
   : name[scalingrpn,18] value[x,0.01,*,0,0.000000]
108: paramname = MAFv
   : name[paramname,16] value[MAFv,0,0.000000]
109: paramid = 0x1D
   : name[paramid,17] value[0x1D,29,0.000000]
110: databits = 8
   : name[databits,22] value[8,8,8.000000]
111: scalingrpn = x,0.02,*
   : name[scalingrpn,18] value[x,0.02,*,0,0.000000]
112: paramname = IAT
   : name[paramname,16] value[IAT,0,0.000000]
113: paramid = 0x12
   : name[paramid,17] value[0x12,18,0.000000]
114: databits = 8
   : name[databits,22] value[8,8,8.000000]
115: scalingrpn = x,40,-
   : name[scalingrpn,18] value[x,40,-,0,0.000000]
116: ; priority = 2
117: paramname = Ign_Tot_Timing
   : name[paramname,16] value[Ign_Tot_Timing,0,0.000000]
118: paramid = 0x11
   : name[paramid,17] value[0x11,17,0.000000]
119: databits = 8
   : name[databits,22] value[8,8,8.000000]
120: scalingrpn = x,128,-,0.5,*
   : name[scalingrpn,18] value[x,128,-,0.5,*,0,0.000000]
121: paramname =kca4
   : name[paramname,16] value[kca4,0,0.000000]
122: paramid = 0xFF7398
   : name[paramid,17] value[0xFF7398,16741272,0.000000]
123: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
124: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
125: paramname = FKC4
   : name[paramname,16] value[FKC4,0,0.000000]
126: paramid = 0xFF739C
   : name[paramid,17] value[0xFF739C,16741276,0.000000]
127: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
128: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
129: paramname = FLKC1
   : name[paramname,16] value[FLKC1,0,0.000000]
130: paramid = 0xFF69B3
   : name[paramid,17] value[0xFF69B3,16738739,0.000000]
131: databits = 8
   : name[databits,22] value[8,8,8.000000]
132: scalingrpn = x,0.3515625,*,45,-
   : name[scalingrpn,18] value[x,0.3515625,*,45,-,0,0.000000]
133: ; scaling = (x*.3515625)-45
134: paramname = WGDC
   : name[paramname,16] value[WGDC,0,0.000000]
135: paramid = 0x30
   : name[paramid,17] value[0x30,48,0.000000]
136: databits = 8
   : name[databits,22] value[8,8,8.000000]
137: scalingrpn = x,0.3921569,*
   : name[scalingrpn,18] value[x,0.3921569,*,0,0.000000]
138: paramname = tgt_boost4
   : name[paramname,16] value[tgt_boost4,0,0.000000]
139: paramid = 0xFF641C
   : name[paramid,17] value[0xFF641C,16737308,0.000000]
140: isfloat = 1
   : name[isfloat,24] value[1,1,1.000000]
141: scalingrpn = x,760,-,0.001333224,*
   : name[scalingrpn,18] value[x,760,-,0.001333224,*,0,0.000000]
142: ; scaling = (x-760)*0.001333224
143: paramname = MAP
   : name[paramname,16] value[MAP,0,0.000000]
144: paramid = 0x0D
   : name[paramid,17] value[0x0D,13,0.000000]
145: databits = 8
   : name[databits,22] value[8,8,8.000000]
146: ; scalingrpn = x,0.1450980392156863,*
147: scalingrpn = x,0.0100041602435564,*
   : name[scalingrpn,18] value[x,0.0100041602435564,*,0,0.000000]
148: ; scaling = x*37/255/14.***
149: paramname = ATM
   : name[paramname,16] value[ATM,0,0.000000]
150: paramid = 0x23
   : name[paramid,17] value[0x23,35,0.000000]
151: databits = 8
   : name[databits,22] value[8,8,8.000000]
152: scalingrpn = x,0.0100041602435564,*
   : name[scalingrpn,18] value[x,0.0100041602435564,*,0,0.000000]
153: ; scalingrpn = x,0.1450980392156863,*
154: ; scaling = x*37/255/14.***
155: paramname = IPW ; injector #1 pulse width
   : name[paramname,16] value[IPW,0,0.000000]
156: paramid = 0x20
   : name[paramid,17] value[0x20,32,0.000000]
157: databits = 8
   : name[databits,22] value[8,8,8.000000]
158: scalingrpn = x,0.256,*
   : name[scalingrpn,18] value[x,0.256,*,0,0.000000]
159: paramname = Knock_Sum
   : name[paramname,16] value[Knock_Sum,0,0.000000]
160: paramid = 0xFF7374
   : name[paramid,17] value[0xFF7374,16741236,0.000000]
161: databits = 8
   : name[databits,22] value[8,8,8.000000]
162: scalingrpn = x
   : name[scalingrpn,18] value[x,0,0.000000]
163: paramname = AF_Correc_1
   : name[paramname,16] value[AF_Correc_1,0,0.000000]
164: paramid = 0x09
   : name[paramid,17] value[0x09,9,0.000000]
165: databits = 8
   : name[databits,22] value[8,8,8.000000]
166: scalingrpn = x,128,-,0.78125,*
   : name[scalingrpn,18] value[x,128,-,0.78125,*,0,0.000000]
167: ; scalingrpn = 0.78125,x,128,-,*
168: ; expression = (x-128)*100/128
169: paramname = AF_Learn_1
   : name[paramname,16] value[AF_Learn_1,0,0.000000]
170: paramid = 0x0A
   : name[paramid,17] value[0x0A,10,0.000000]
171: databits = 8
   : name[databits,22] value[8,8,8.000000]
172: scalingrpn = x,128,-,0.78125,*
   : name[scalingrpn,18] value[x,128,-,0.78125,*,0,0.000000]
173: ; scalingrpn = 0.78125,x,128,-,*
174: ; expression = (x-128)*100/128
175: paramname = AF_Sensor_1
   : name[paramname,16] value[AF_Sensor_1,0,0.000000]
176: paramid = 0x46
   : name[paramid,17] value[0x46,70,0.000000]
177: databits = 8
   : name[databits,22] value[8,8,8.000000]
178: scalingrpn = x,0.11484375,*
   : name[scalingrpn,18] value[x,0.11484375,*,0,0.000000]
179: ; expression = x/128*14.7
180: paramname = Engine_Load_2
   : name[paramname,16] value[Engine_Load_2,0,0.000000]
181: paramid = 0xFF6988
   : name[paramid,17] value[0xFF6988,16738696,0.000000]
182: databits = 16
   : name[databits,22] value[16,16,16.000000]
183: scalingrpn = x,0.00006103516,*
   : name[scalingrpn,18] value[x,0.00006103516,*,0,0.000000]
184: ; expression = x*.00006103516
185: ; some samples of logging "bitfield" values that are not whole bytes
186: ; if you want to log more that one of these efficently, group them by
187: ; paramid and the OP2 will only issue a single request to get all of
188: ; the bits within each paramid
189: ; paramname = ignition_sw
190: ; paramid = 0x62
191: ; databits = 1
192: ; offsetbits = 3
193: ; to still acquire a parameter (perhaps for triggering or a calculation)
194: ; but not record it in the log, set isvisible equal to zero (it is 1 by default)
195: ; isvisible = 0
196: ; paramname = AC_sw
197: ; paramid = 0x62
198: ; databits = 1
199: ; offsetbits = 1
200: ; isvisible = 0
201: ; paramname = defogger_sw
202: ; paramid = 0x64
203: ; databits = 1
204: ; offsetbits = 5
205: ; isvisible = 0
206: ; paramname = blower_sw
207: ; paramid = 0x64
208: ; databits = 1
209: ; offsetbits = 4
210: ; isvisible = 0
211: ; paramname = clutch_sw
212: ; paramid = 0x121
213: ; databits = 1
214: ; offsetbits = 7
215: ; paramname = brake_sw
216: ; paramid = 0x121
217: ; databits = 1
218: ; offsetbits = 3
219: ;----------------inno----------------
220: ;type=inno
221: ; log from an innovate bus via the 3/32" jack
222: ; currently the LC-1 is the only supported device
223: ; in the "inno" case the parameters are already pre-defined, you just
224: ; need to reference them by name so that they are included in the log
225: ; output. note that these parameters won't become valid until the LC-1
226: ; has been calibrated and the sensor is warmed up.
227: ; paramname = inno.afr
228: ; paramname = inno.lambda
229: ;----------------adc----------------
230: ; type=adc       ; log from built in ADC channels
231: ; paramname=battvolts
232: ; paramid=16      ; paramid is pin number on OBD connector
233:          ; valid pins are 8 and 16
234:          ; values are pre-scaled to millivolts
235: ; scalingrpn=x,0.001,*    ; here we scale to volts
236: ; paramname=ignvolts   ; on newer subarus pin 8 is connected to the ignition voltage
237: ; paramid=8      ; paramid is pin number on OBD connector
238:          ; valid pins are 8 and 16
239:          ; values are pre-scaled to millivolts
240: ; scalingrpn=x,0.001,*    ; here we scale to volts
241: ;-------------calculated parameter---------------
242: ;
243: ; you can derive calculated parameters from other parameters
244: ; using RPN expressions
245: ;
246: type = calc            
   : name[type,8] value[calc,0,0.000000]
247: paramname = IDC
   : name[paramname,16] value[IDC,0,0.000000]
248: scalingrpn = RPM,IPW,*,0.0008333333,*
   : name[scalingrpn,18] value[RPM,IPW,*,0.0008333333,*,0,0.000000]
249: paramname = MRP_Corrected
   : name[paramname,16] value[MRP_Corrected,0,0.000000]
250: scalingrpn = MAP,ATM,-
   : name[scalingrpn,18] value[MAP,ATM,-,0,0.000000]
251: ;-------------triggers---------------
252: ;
253: ; note that parameters must be previously defined
254: ; before defining triggers using them
255: ;
256: ; triggers allow you to control when logging starts and stops
257: ; this example sets up triggers such that logging only occurs
258: ; when the engine is running (RPM > 0)
259: ;
260: ; triggers consist of a condition (a RPN expression using comparison operators)
261: ; and an action. the RPN comparison operators match those in the C language:
262: ;
263: ; > < >= <= == != && ||
264: ;
265: ; if the condition evaluates to a non-zero value, that action is taken
266: conditionrpn = RPM,0,>   
   : name[conditionrpn,48] value[RPM,0,>,0,0.000000]
267: action = start
   : name[action,49] value[start,0,0.000000]
268: conditionrpn = RPM,0,==
   : name[conditionrpn,48] value[RPM,0,==,0,0.000000]
269: action = stop
   : name[action,49] value[stop,0,0.000000]
270: ; here is a second triggering example using the rear defogger switch
271: ; uncomment it and comment out the sample above to use it
272: ;conditionrpn = defogger_sw,1,==
273: ;action = start
274: ;conditionrpn = defogger_sw,0,==
275: ;action = stop

--- log config dump ---

the following general options are set:
  * interpolate missing samples
  * zero sample count at start of each file

channel type: ssmk
protocol id: 3
baud: 4800

param name: RPM
param id: 0x0000000E
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.250000,*

param name: Speed
param id: 0x00000010
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x

param name: IAM4
param id: 0x00FF2AD4
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: ThrottleOpeningAngle
param id: 0x00000015
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.392157,*

param name: CLOLStat
param id: 0x00FF8D69
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,6.000000,+

param name: load4grev
param id: 0x00FF6678
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: est_afr4
param id: 0x00FF6C08
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: 14.700000,1.000000,x,+,/

param name: AFR2
param id: 0x00FF699E
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.000122,*,14.700000,*

param name: Pri_OL_Enrich
param id: 0x00FF6982
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: 14.700000,1.000000,x,0.000031,*,+,/

param name: MassAirFlow
param id: 0x00000013
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.010000,*

param name: MAFv
param id: 0x0000001D
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.020000,*

param name: IAT
param id: 0x00000012
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,40.000000,-

param name: Ign_Tot_Timing
param id: 0x00000011
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,128.000000,-,0.500000,*

param name: kca4
param id: 0x00FF7398
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: FKC4
param id: 0x00FF739C
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x

param name: FLKC1
param id: 0x00FF69B3
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.351563,*,45.000000,-

param name: WGDC
param id: 0x00000030
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.392157,*

param name: tgt_boost4
param id: 0x00FF641C
read width: 4 bytes
data width: 32 bits
data offset: 0 bits
float: 1
scaling: x,760.000000,-,0.001333,*

param name: MAP
param id: 0x0000000D
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.010004,*

param name: ATM
param id: 0x00000023
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.010004,*

param name: IPW
param id: 0x00000020
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.256000,*

param name: Knock_Sum
param id: 0x00FF7374
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x

param name: AF_Correc_1
param id: 0x00000009
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,128.000000,-,0.781250,*

param name: AF_Learn_1
param id: 0x0000000A
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,128.000000,-,0.781250,*

param name: AF_Sensor_1
param id: 0x00000046
read width: 1 bytes
data width: 8 bits
data offset: 0 bits
float: 0
scaling: x,0.114844,*

param name: Engine_Load_2
param id: 0x00FF6988
read width: 2 bytes
data width: 16 bits
data offset: 0 bits
float: 0
scaling: x,0.000061,*

channel type: calc

param name: IDC
scaling: RPM,IPW,*,0.000833,*

param name: MRP_Corrected
scaling: MAP,ATM,-

trigger action: start condition: RPM,0.000000,>
trigger action: stop condition: RPM,0.000000,==

--- storage info ---
log channels: 2
log parameters: 28
log stringlist: 344 chars
log floatlist: 23 floats
worst case ssm request is 193 bytes long, response 68 bytes long and will be sent every 750000us (543663us is fastest possible)
logging interval will be 750000us
chaeoz
 
Posts: 14
Joined: Tue Jul 03, 2007 5:17 pm

Re: Openport Stand-Alone Logging Beta

Postby bluemolecule » Mon Jul 26, 2010 11:27 am

Hi
I'm new at this. I've been able to log stand-alone with the logcfg files included with the beta version. I have a usdm 08 2.5i, I would like to log the following additional parameters: feedback knock correction (1byte), fine learning knock correction (and flkc 4byte), IAM 1byte. can someone provide with some code? I am having trouble doing this on my own. also does the beta open port driver play nice with romraider?
bluemolecule
 
Posts: 1
Joined: Mon Jul 26, 2010 9:58 am

Re: Openport Stand-Alone Logging Beta

Postby dschultz » Mon Jul 26, 2010 2:34 pm

bluemolecule wrote:also does the beta open port driver play nice with romraider?

Yes it does, make sure you install the latest Beta RC6.
dschultz
 
Posts: 3
Joined: Fri Oct 30, 2009 11:46 am

Re: Openport Stand-Alone Logging Beta

Postby qTi » Tue Jul 27, 2010 1:22 pm

bluemolecule wrote:Hi
I'm new at this. I've been able to log stand-alone with the logcfg files included with the beta version. I have a usdm 08 2.5i, I would like to log the following additional parameters: feedback knock correction (1byte), fine learning knock correction (and flkc 4byte), IAM 1byte. can someone provide with some code? I am having trouble doing this on my own.

Just try online OpenPort config tool at http://www.verticaltier.net/configtool/logger.php to create your own logcfg file. ;)
qTi
 
Posts: 2
Joined: Sun Jul 25, 2010 9:38 am

Re: Openport Stand-Alone Logging Beta

Postby fostytou » Tue Aug 10, 2010 7:47 pm

Another feature request in addition to UEGO support:

Start file modified dates in the log with the time of the most recently saved file on the card. That we if we change our logcfg we have *some* reference point as to when a log was taken. You could also make it so that every time the unit is plugged it an autoexec.bat is run to save a hidden file with the current date/time.
fostytou
 
Posts: 15
Joined: Wed Jun 09, 2010 7:51 am

Re: Openport Stand-Alone Logging Beta

Postby ladams00 » Wed Aug 11, 2010 6:25 pm

fostytou wrote:Another feature request in addition to UEGO support:

Start file modified dates in the log with the time of the most recently saved file on the card. That we if we change our logcfg we have *some* reference point as to when a log was taken. You could also make it so that every time the unit is plugged it an autoexec.bat is run to save a hidden file with the current date/time.


Unfortunately, the OP2 has no Real Time Clock on board. Each time it is powered down, it has no way of maintaining time, and starts over next time it is powered up.
ladams00
 
Posts: 23
Joined: Wed Sep 30, 2009 10:41 am

Re: Openport Stand-Alone Logging Beta

Postby yods » Sun Aug 29, 2010 5:18 am

Another person who would be really appreciative of UEGO logging support.
yods
 
Posts: 1
Joined: Sat Mar 27, 2010 6:42 pm

PreviousNext

Return to Openport Stand-Alone Logging Beta

Who is online

Users browsing this forum: No registered users and 5 guests