No problem. This should work for any of the apps that support the ability to enter custom pids. I don't use any of them but the Torque format is the easiest to deal with so I will use it as the example. The others will work but you are on your own to figure out bit position and scaling formats.
For the purpose of this how-to lets assume you want to add MAP and RPM.
Step 1:
Find a copy of the the J1979 standard. I am not going to post a copy but if you Google "J1979da" I am sure you will find a copy quickly(FT86club). This document has the list of all the parameters standardized across the industry. OEM's don't have to support every parameter so some will work, others will not. I will post the list of id's that work on my truck at the end.
Step 2:
First off scan/search through the document to find MAP. If you are using the document found from the google search I suggested then it is on page 13. No matter what copy you use it will be PID 0B. Note the PID, data byte, min/max value and the scaling.
Step 3:
Now take a look at the format of the Torque custom pid
PID:
Long Name:
Short Name:
Minimum value:
Maximum value:
Scale Factor:
Unit Type:
Equation:
The first field is PID. There are two parts to this field. The first is the mode. For the purpose of this how-to, this number will always be 01. There are others but I won't go into that here. The second part is the PID number. According to the J1979 standard, MAP is PID 0B. Concatenating those two numbers makes the PID field equal to 010B.
The next two fields are names. I assume you can put whatever you want here but there might be length/character restrictions. The standard gives you a decent names in the description and external test equipment columns. That makes the Long Name field equal to Intake Manifold Absolute Pressure and the Short Name Field equal to MAP.
The Minimum and Maximum Value fields can be pulled directly from the .pdf. The standard says the Minimum Value equals 0 and the Maximum Value equals 255.
I am not sure what Scale Factor is for so I would leave it at 1x until somebody who knows what it is for chimes in.
Unit Type can be either Imperial or Metric based on preference. I use metric and so does the standard so we can set it to kPa. If you want it in Imperial units you will need to adjust the equation field.
The equation field is derived from the data byte and scaling/bit fields in the SAE document. The data byte tells Torque the raw value we need to scale is in the "A" location. According to the document the MAP scaling is 1 kPa per bit so we don't need to apply a special formula. That makes the equation simply equal to A. If you are using PSI then you will need to change that so something like (A*145)/1000. That is an approximate value, you should adjust it to suit your desired accuracy.
Step 4:
Based on step 3, if you use the metric system your custom pid should look something like this:
PID: 010B
Long Name: INTAKE MANIFOLD ABSOLUTE PRESSURE
Short Name: MAP
Minimum value: 0
Maximum value: 255
Scale Factor: 1x
Unit Type: kPa
Equation: A
Input that into Torque and enjoy. At sea level with the engine off, you should see something like 99 kPa. It will vary depending on weather and altitude. You could also make this a gauge value by subtracting the barometric pressure.
For RPM things change a little. I have this for RPM:
PID: 010C
Long Name: ENGINE RPM
Short Name: RPM
Minimum value: 0
Maximum value: 16383.75
Scale Factor: 1x
Unit Type: RPM
Equation: ((A*256)+B)/4
The only big difference is in the equation.The first thing we need to do is figure out the raw value. When Torque asks the PCM for a PID the PCM responds with a few numbers that don't matter in this context and X number of data bytes(in the case of RPM, two data bytes). Torque doesn't know that these two data bytes(in Hex) are one whole number so we need to do that in the equation. That is why the ((A*256)+B) is in there. If there were four data bytes then the raw value part of the equation would be ((A*16777216)+(B*65536)+(C*256)+D). The scaling for Engine Speed is 1/4 RPM per bit so we can divide the raw value by 4 which makes the whole equation ((A*256)+B)/4.
My truck supports the following PID numbers: 01,04,05,0B,0C,0D,10,13,1C,1F,21,24,30,31,33,3C,41,42,46,49,4A,4F,51,5C,5D,5E,61,62,63,65,68,69,6A,6B,6D,70,71,73,77,78,7A,7F,81,82,83,85,88,8B,8F
Even though my truck supports all those PIDs, sometimes there are more than one signal within a PID. For example, the EGT PID 78 contains EGT11,12,13,14. My truck only supports EGT11, 12 and 13. Even if you code in EGT14 you won't get a value because the truck doesn't support it.
I know this ran way too long and got a little too technical. Hopefully it makes sense. I would be happy to expand on it if there are any questions.