seishuku
Full Member
Karma: +13/-0
Offline
Posts: 131
|
|
« on: October 23, 2015, 07:06:52 PM »
|
|
|
I'm trying to make my aux gauge display a little more flexible, which means going a little deeper with diagnostic modes to get more detailed data. I can poll OBD2 data no problem, ISOTP works just fine... But when I open a channel and try to poll KWP2k data, I can get the first data set fine, but the ECU is tossing extra CAN frames and then disconnect me: 200h 7 01h C0h 00h 10h 00h 03h 01h // Request channel setup (module 01h, RX CAN ID 300h) 201h 7 00h D0h 00h 03h 40h 07h 01h // Response channel setup (module 01h, RX CAN ID 300h, TX CAN ID 740h)
740h 6 A0h 0Fh 8Ah FFh 32h FFh // Request timing parameters 300h 6 A1h 0Fh 8Ah FFh 4Ah FFh // Response timing parameters
740h 5 10h 00h 02h 10h 89h // startDiagnosticSession (param 89h) 300h 1 B1h // ECU Acknowledge 300h 5 10h 00h 02h 50h 89h // startDiagnosticSession positive response 740h 1 B1h // Tester Acknowledge
740h 5 11h 00h 02h 21h 01h // readDataByLocalIdentifier (parameter 01h) 300h 1 B2h // ECU Acknowledge 300h 8 21h 00h 1Ah 61h 01h 01h 73h 00h // More packets to follow, no ack, KWP2k data (positive response to readDataByLocalId) 300h 8 22h 27h 46h 00h 64h 50h 00h 05h // More packets to follow, no ack. 300h 8 23h 09h 80h 25h 02h 7Ah 25h 00h // More packets to follow, no ack. 300h 8 14h 00h 25h 00h 00h 25h 00h 00h // Last packet, expecting ack. 740h 1 B2h // Tester Acknowledge
300h 8 22h 27h 46h 00h 64h 50h 00h 05h // Repeat second packet 300h 8 14h 00h 25h 00h 00h 25h 00h 00h // Repeat third packet 300h 8 14h 00h 25h 00h 00h 25h 00h 00h // Repeat third packet 300h 8 14h 00h 25h 00h 00h 25h 00h 00h // Repeat third packet 300h 1 A8h // ECU disconnects
I'm sending data exactly how the docs say, it's also identical to how VCDS is doing it. I just don't get why I get a proper data block, then some junk and then disconnected. I get this on both my Teensy 3.1 and STM32F429 discovery boards, so I'm pretty sure it's nothing hardware or a CAN driver issue. Any ideas?
|
|
« Last Edit: October 23, 2015, 07:09:29 PM by seishuku »
|
Logged
|
|
|
|
Basano
Full Member
Karma: +90/-3
Offline
Posts: 192
|
|
« Reply #1 on: October 24, 2015, 12:33:56 AM »
|
|
|
Hi, Your last ack should be B5h, not B2h Example below. I assume you have the attached spec already, but it may help others as well. 19 200 7 1 C0 0 10 0 3 1 21 201 7 0 D0 0 3 40 7 1 24 740 6 A0 F 8A FF 32 FF 31 300 6 A1 F 8A FF 4A FF 34 740 5 10 0 2 10 89 37 300 1 B1 44 300 5 10 0 2 50 89 46 740 1 B1 246 740 5 11 0 2 1A 9B 248 300 1 B2 254 300 8 21 0 30 5A 9B 31 4B 30 261 300 8 22 39 30 37 31 31 35 4C 267 300 8 23 20 20 30 30 33 30 10 272 300 8 24 0 0 0 0 6 46 22 278 300 8 25 4 F5 32 2E 30 6C 20 284 300 8 26 52 34 2F 34 56 20 54 290 300 8 27 46 53 49 20 20 20 20 296 300 2 18 20 1K0907115L 0030 1269 785 200 2.0l R4/4V TFSI 301 740 1 B9 501 740 7 12 0 4 31 B8 0 0 503 300 1 B3 513 300 8 29 0 12 71 B8 1 1 1 519 300 8 2A 3 1 2 1 6 1 7 525 300 7 1B 1 8 1 D 1 18 527 740 1 BC 729 740 5 13 0 2 21 2 731 300 1 B4 738 300 8 2C 0 1A 61 2 1 C8 0 744 300 8 2D 21 85 85 16 FF 0 19 749 300 8 2E 0 0 25 0 0 25 4 756 300 8 1F 1D 25 2 7A 25 0 0 758 740 1 B0 958 740 5 14 0 2 21 71 960 300 1 B5 966 300 8 20 0 1A 61 71 1 C8 0 972 300 8 21 21 85 85 21 FF 13 12 978 300 8 22 7D CA 25 0 0 25 0 985 300 8 13 0 25 0 0 25 0 0 987 740 1 B4 1033 740 1 A3 1034 300 6 A1 F 8A FF 4A FF 1187 740 5 15 0 2 21 73 1189 300 1 B6 1195 300 8 24 0 1A 61 73 1 C8 0 1201 300 8 25 21 85 85 12 FA 1C 60 1207 300 8 26 64 65 36 14 A9 36 D 1213 300 8 17 9B 36 10 E9 36 E C3 1216 740 1 B8
|
|
|
Logged
|
|
|
|
seishuku
Full Member
Karma: +13/-0
Offline
Posts: 131
|
|
« Reply #2 on: October 24, 2015, 06:37:34 AM »
|
|
|
So I'm supposed to count both my sequence AND the incoming? I guess that would explain a lot... I'll have to try that.
Thanks!
|
|
|
Logged
|
|
|
|
seishuku
Full Member
Karma: +13/-0
Offline
Posts: 131
|
|
« Reply #3 on: October 25, 2015, 04:48:22 PM »
|
|
|
Well, not quite counting incoming and outgoing sequences, more like the tester ack after the last data packet must follow the last sequence (eg. 0x13 last packet, 0xb4 ack). The opposite is also true, tester outgoing data with 0x18 would get an ack of 0xb9. It kinda makes sense to me now, but more importantly, I can stream in data now, continuously and without error. https://www.youtube.com/watch?v=ltJswTSfDXMhttps://www.youtube.com/watch?v=5rVMd0zYlgU
|
|
|
Logged
|
|
|
|
|
dream3R
|
|
« Reply #5 on: December 06, 2015, 08:57:08 PM »
|
|
|
Hi, Your last ack should be B5h, not B2h Example below. I assume you have the attached spec already, but it may help others as well. 19 200 7 1 C0 0 10 0 3 1 21 201 7 0 D0 0 3 40 7 1 24 740 6 A0 F 8A FF 32 FF 31 300 6 A1 F 8A FF 4A FF 34 740 5 10 0 2 10 89 37 300 1 B1 44 300 5 10 0 2 50 89 46 740 1 B1 246 740 5 11 0 2 1A 9B 248 300 1 B2 254 300 8 21 0 30 5A 9B 31 4B 30 261 300 8 22 39 30 37 31 31 35 4C 267 300 8 23 20 20 30 30 33 30 10 272 300 8 24 0 0 0 0 6 46 22 278 300 8 25 4 F5 32 2E 30 6C 20 284 300 8 26 52 34 2F 34 56 20 54 290 300 8 27 46 53 49 20 20 20 20 296 300 2 18 20 1K0907115L 0030 1269 785 200 2.0l R4/4V TFSI 301 740 1 B9 501 740 7 12 0 4 31 B8 0 0 503 300 1 B3 513 300 8 29 0 12 71 B8 1 1 1 519 300 8 2A 3 1 2 1 6 1 7 525 300 7 1B 1 8 1 D 1 18 527 740 1 BC 729 740 5 13 0 2 21 2 731 300 1 B4 738 300 8 2C 0 1A 61 2 1 C8 0 744 300 8 2D 21 85 85 16 FF 0 19 749 300 8 2E 0 0 25 0 0 25 4 756 300 8 1F 1D 25 2 7A 25 0 0 758 740 1 B0 958 740 5 14 0 2 21 71 960 300 1 B5 966 300 8 20 0 1A 61 71 1 C8 0 972 300 8 21 21 85 85 21 FF 13 12 978 300 8 22 7D CA 25 0 0 25 0 985 300 8 13 0 25 0 0 25 0 0 987 740 1 B4 1033 740 1 A3 1034 300 6 A1 F 8A FF 4A FF 1187 740 5 15 0 2 21 73 1189 300 1 B6 1195 300 8 24 0 1A 61 73 1 C8 0 1201 300 8 25 21 85 85 12 FA 1C 60 1207 300 8 26 64 65 36 14 A9 36 D 1213 300 8 17 9B 36 10 E9 36 E C3 1216 740 1 B8
Thank you squire
|
|
|
Logged
|
|
|
|
dream3R
|
|
« Reply #6 on: December 06, 2015, 08:59:07 PM »
|
|
|
Which ECU/SW? I might be able to help there.
|
|
|
Logged
|
|
|
|
seishuku
Full Member
Karma: +13/-0
Offline
Posts: 131
|
|
« Reply #7 on: December 08, 2015, 11:14:49 AM »
|
|
|
Which ECU/SW? I might be able to help there.
Address 01: Engine (CJA) Labels: 03L-906-022-CBE.clb Part No SW: 03L 906 019 HE HW: 03L 907 309 AA Component: R4 2,0L EDC G000SG 4606 Revision: 12H14--- Serial number: Coding: 0050072 Shop #: WSC 00066 000 00000 VCID: 75EAF8541C686D894D9-8020 I think I have most of it figured out, just haven't had the time to play with it yet. Any help would be appreciated though.
|
|
|
Logged
|
|
|
|
dream3R
|
|
« Reply #8 on: December 08, 2015, 02:50:12 PM »
|
|
|
Address 01: Engine (CJA) Labels: 03L-906-022-CBE.clb Part No SW: 03L 906 019 HE HW: 03L 907 309 AA Component: R4 2,0L EDC G000SG 4606 Revision: 12H14--- Serial number: Coding: 0050072 Shop #: WSC 00066 000 00000 VCID: 75EAF8541C686D894D9-8020
I think I have most of it figured out, just haven't had the time to play with it yet. Any help would be appreciated though.
You have the identifiers? If not what are you after and I'll get them edit Crap it's a VW I only got Audi stuff lol
|
|
« Last Edit: December 08, 2015, 02:56:33 PM by dream3R »
|
Logged
|
|
|
|
seishuku
Full Member
Karma: +13/-0
Offline
Posts: 131
|
|
« Reply #9 on: December 08, 2015, 05:09:28 PM »
|
|
|
Oh, yeah, I have most localIDs for what I need for my specific engine, at least for what info I find useful. Most data is pretty easy to figure out (especially when I can log CAN data from VCDS).
|
|
|
Logged
|
|
|
|
dream3R
|
|
« Reply #10 on: December 09, 2015, 03:48:00 AM »
|
|
|
Oh, yeah, I have most localIDs for what I need for my specific engine, at least for what info I find useful. Most data is pretty easy to figure out (especially when I can log CAN data from VCDS). LOL that's one way. There's generally a lot of stuff in the DB than VCDS uses fwiw.
|
|
|
Logged
|
|
|
|
Cadensdad14
Full Member
Karma: +8/-1
Offline
Posts: 134
|
|
« Reply #11 on: November 27, 2020, 05:01:55 PM »
|
|
|
So I know im resurrecting a dead thread but im hoping someone can shed some light on this. Code calls the function:
Status+=CAN_VWKWP_GetValue(0x0B, 2, &Boost);
Which goes to:
int CAN_VWKWP_GetValue(uint8_t LocalID, uint8_t Index, float *Value)
I understand this is the readDataByLocalIdentifier with the 0x21 SID and described as:
The metric value of the data record defined by the local identifier $F0 is set by the DynamicalDefineLocalIdentifier service. The ReadDatabyLocalIdentifier service can also read other data records set in the ECU's internal table. Each local identifier has its own specific table that contains a description of the data to be transferred.
So what I dont understand is where were getting the Local ID and Index values. Are these similar to the PID tables? Also, would it be possible to use SID 0x23 for readMemoryByAddress along with the 0x38xxxx address to get really specific information? Eventually I would also like to be able to add the SID 0x3D to be able to write RAM values. But first, please help me know where the LocalID and Index values come from
|
|
|
Logged
|
|
|
|
|