Toyota GR86, 86, FR-S and Subaru BRZ Forum & Owners Community - FT86CLUB

Toyota GR86, 86, FR-S and Subaru BRZ Forum & Owners Community - FT86CLUB (https://www.ft86club.com/forums/index.php)
-   Engine Swaps (https://www.ft86club.com/forums/forumdisplay.php?f=92)
-   -   CAN BUS - for DIY swappers, HELP! Engineers / shops welcome (https://www.ft86club.com/forums/showthread.php?t=90692)

Spartarus 06-26-2015 06:21 PM

CAN BUS - for DIY swappers, HELP! Engineers / shops welcome
 
3 Attachment(s)
EDIT: I WILL NOT HAVE THIS THREAD TURN INTO YET ANOTHER ARGUMENT ABOUT SWAP COST OR BUDGET. START THAT ELSEWHERE. BETTER YET, MAKE YOUR OWN PRODUCTIVE, REALISTIC, HELPFUL THREAD ABOUT BUDGET. TOO MANY SWAP THREADS MAYE BEEN HIJACKED :threadjacked: LURK, CONTRIBUTE, OR GET OUT

EDIT: This thread is a rushed mess right now, I typed it on the way out the door. Plans to clean it up and add appropriate content.
Hi everyone,

It is common knowledge that the ft86 has a CAN BUS to control various systems. There is no comprehensive documentation on the forums regarding the CAN BUS. It is the single biggest obstacle to getting any engine swap working correctly. I hope to create a resource here for people who want to do DIY engine swaps, but can't seem to get over the CAN BUS hurdle. I don't think that should be a $6000+ hurdle. I also don't think that a do-it-all-yourself engine swap should be a $25000 affair. They never have been before.

People who have swaps complete with all systems working are encouraged add information on this topic.

Overview:
A controller area network (CAN bus) is a multi-master serial bus designed to allow microcontrollers and devices to communicate with each other in applications without a host computer. It is a message-based protocol; Units [ECUs] on the network are known as nodes. The node may also be a gateway allowing a standard computer to communicate over a USB or Ethernet port to the devices on a CAN network. The DLC3 (D10) node in the Toyobaru is the OBD port, and is an example of such a node. All nodes are connected to each other through a two wire bus. (CANH and CANL)

CAN data transmission uses a lossless bit-wise arbitration method of contention resolution. This arbitration method requires all nodes on the CAN network to be synchronized to sample every bit on the CAN network at the same time. Each transmission on a modern CAN BUS network begins with an 11-bit identifier.

The CAN specifications use the terms "dominant" bits and "recessive" bits where dominant is a logical 0 (actively driven to a voltage by the transmitter) and recessive is a logical 1 (passively returned to a voltage by a resistor). The idle state is represented by the recessive level (Logical 1). If one node transmits a dominant bit and another node transmits a recessive bit then there is a collision and the dominant bit "wins". This means there is no delay to the higher-priority message, and the node transmitting the lower priority message automatically attempts to re-transmit six bit clocks after the end of the dominant message.

Tl-Dr - All the CAN devices talk onto an open network like people on a radio channel, and they only grab the specific signals they want to listen to. The network is not dependent on a central hub, so any system can be pulled off the network without destroying it. The only downside is the devices listening for certain signals will stop receiving those signals and hence stop working.

Confirmed Swaps:
Vorshlag: GM ECM -> Factory ECM -> CAN BUS, LS-Series engine
Manji: Motec M150, 1UZ-FE VVTi
I want a longer list here! I know there's working examples of other Subaru engines and a few Toyota 2jz's at the very least

I'm personally working on a 1uz swap while I fiddle around with this little FA20 4-banger and wait for my turbo to blow it up. There's great documentation out there on getting it running on a standalone ECU. As much as I'd like a $6K ecu solution that'll make my F****** coffee for me, I'd rather not almost double the cost of the swap with the ecu and wiring alone. Motec, then, is off the table for most people.

Many other aftermarket standalone wire-in ECU's have CAN outputs.
LiNK (some models)
MegaSquirt (some models) - has been used to drive OEM CAN gauges with modifications to source code. Porsche 996tt
AEM (some models)
Hydra EMS (confirmed working, on the market with support for FA20 on this platform - looking into capabilities for swaps)

Why can't these be used? I hope this thread will help us figure out what CAN signals the ECM sends and receives, and how to replicate those with an aftermarket standalone ECU.

Attached is an accurate wiring diagram of the FR-S / BRZ CAN BUS. I slapped it together from a few pages of the service manual. The D43 junction connector is just a simple wiring junction near the firewall, and need not be F***ed with. With a suitable CAN capable ECU, only 2 wires (pins 19 and 18) from the factory ECM need to be plugged into the aftermarket ECM to retain full CAN BUS functionality.

Next post will list the CAN BUS signals required from the ECM, by system, and the signals required by the ECM, from each system. I have a partial list, I'll post tomorrow. Updated as people chime in. Following post will also include guidance on DIY CAN-BUS setup.

The ECM, labeled MOTOR (A33 in the manual) is the engine ECU. This is the ECU everybody will change out in a swap

I'd REALLY like to hear from some EcuTeK tuners on this topic, as they have documented use of the CAN controls for map switching, LC, etc. using cruise control switches and rear window heat switches, and using the Tachometer as a selected map display. at least one of which is not connected directly to the ECM, and required CAN sorcery

Spartarus 06-26-2015 06:21 PM

Partial list - I'll throw it up now and fix it later

According the the wiring diagrams,

-Gauge cluster receives the following signals via CAN from the ECM - crankshaft position (tach) and ECT.

-The VSC / ABS ECU receives a crankshaft position sensor signal and a signal from the throttle body sensor.

-The CAN network signals can be monitored via the OBDII port on pins 6 and 14 as shown in the wiring diagram above. This can / will be useful in reverse - engineering the system

Data needed:

OEM CAN baud rate (assumed 500k for now)
OEM CAN ID length (assumed 11-bit standard, but could be 29 [unlikely]) 11 bit confirmed.
ECM Broadcast interval (milliseconds) (assumed 250 for now)
VSC / ABS traction control signals from VSC ECU. (ignition cut? fuel cut? throttle cut?) IMPORTANT! Please cite source and include specific data if able.
CAN ID's for each transmission

Calum 06-27-2015 08:37 AM

It's amazing how versitile CAN BUS is. We actually have a couple pieces of equipment that use it in the Navy.

I wish I had something to contribute to this, but I can say I'm very curious about this topic.

Do you know if, for example, crank shaft position, would be the same word on the FA20 ECU's bus as on the LSx ECU's bus? What about IP's for the various inputs and outputs? Is there an industry standard for these, or are those details left to the OE?

A little off topic, but have you ever used a CAN BUS to USB converter? (An industrial one that doesn't plug into the OBD2 port but just has terminals for wires.) Do you know if one would work to talk with an android OBD2 app, or could an industrial one require a different protocol?

mkivalex 06-27-2015 10:38 AM

Hmmm.... I really should take some time looking at the CANBuS on the FRS. At work I'm in the mobile hydraulics industry and I program trucks to work with electronic hydraulic applications using Parker IQAN software using canbus Signals. I will revisit this thread after I do some further reading. I almost wonder if one of the modules I use could be used between the devices and the ECM to convert all required signals.

Cuchullain 06-27-2015 11:13 AM

If you are really interested, there are a number of sites around that have been working on listing out different OEM CAN bus values.

Also of interest is the Canbus triple. Little device that can log and edit canbus values on the fly. Should be really useful for figuring out what system values control what.

Spartarus 06-27-2015 12:21 PM

1 Attachment(s)
Quote:

Originally Posted by Calum (Post 2301425)
Do you know if, for example, crank shaft position, would be the same word on the FA20 ECU's bus as on the LSx ECU's bus? What about IP's for the various inputs and outputs? Is there an industry standard for these, or are those details left to the OE?

Kind of. There's no address like in TCP / IP. There's no central network controller either. In lay terms, the devices all just start talking when they have something to say, the type of data and the source device are included in the message header. The devices are listening passively at all times, and if another device talks over with a more "important" message they all just shut up and attempt to re-broadcast six bit clocks later. They only pick out and listen to the signals they want to hear. So, the trick is to figure out what the engine ECM is saying to the network, and replicate those signals. More on this.

As far as the signals go, they are proprietary per manufacturer. However, any device with a CAN output can be tricked into throwing out the appropriate type of signal. It doesn't matter if the raw sensor data doesn't match, i.e. if GM cps has more teeth on the crank sensor ring than Toyota. Or if they use hall-type or optical sensors.

There are two ways to do this, modify the firmware of the CAN controller, this has been done successfully with a 996tt on MegaSquirt, for example. The second way is to have a translator box, several examples for e36 BMW's exist using arudino boards.

Quote:

Originally Posted by Calum (Post 2301425)
A little off topic, but have you ever used a CAN BUS to USB converter? (An industrial one that doesn't plug into the OBD2 port but just has terminals for wires.) Do you know if one would work to talk with an android OBD2 app, or could an industrial one require a different protocol?

Haven't used one before, but they exist. You can use any device with serial input to sniff for CAN signals, it just has to have the right application. I don't know if Android has one, but it might. None of the OBDII apps are likely to have CAN sniffing or CAN output features.

This whole operation depends on a few things. If the engine ECM only broadcasts data and never receives, this will be super-easy and probably cheap. If the engine ECM receives data, or receives data requests, it will be less easy. Example - if the ABS / VSC ECU is telling the the engine when to kick on the traction control (ECUTEK tuners please chime in, I'm 99.9% sure you know the answer because you can mess with the TC settings.) Then you add another layer of complexity, unless you just don't care about TC, like me.:confused0068:

Quote:

Originally Posted by Cuchullain (Post 2301494)
If you are really interested, there are a number of sites around that have been working on listing out different OEM CAN bus values.

True. In just a day or two, I have unearthed a massive amount of information other people have already figured out. However, this forum is quieter on that subject than the crickets after a GDI delete. There are a whole bunch of people hanging around on this forum who would love to do a swap if only there was a resource for getting the CAN stuff working. Many of them have done other swaps before.

EDIT: this is where it started

rusty959 06-27-2015 02:33 PM

This topic interests me, but right now I don't have much to add.

However, I have a background in computer engineering and a MS1 laying around for another project. I could possibly be convinced to upgrade it to, say, a MS3 and do some testing.

Streetthrowback 06-27-2015 10:11 PM

Subbed

burdickjp 06-27-2015 10:30 PM

The Tactrix logs CAN BUS data. I believe the values listed here are the addresses:
http://www.ft86club.com/forums/showthread.php?t=62332

CAN BUS is really easy to play with using microcontrollers, such as the arduino. Here's a few projects I've done with it and megasquirt:
http://grassrootsmotorsports.com/for...s/87878/page1/
http://grassrootsmotorsports.com/for...s/88593/page1/

wutsaiu 06-28-2015 01:13 PM

I got my tach running via Arduino with Canbus.

message.id = 0x141;
message.header.rtr = 0;
message.header.length = 8;
message.data[0] = 0x8F;
message.data[1] = 0x26;
message.data[2] = 0xDF;
message.data[3] = 0x28;
message.data[4] = (RPM % 256);
message.data[5] = (RPM / 256) + 0x80;
message.data[6] = 0xA7;
message.data[7] = 0x00;

It's nice but I still have CEL, ABS, TRAC, AIRBAG lights on. I assume ABS and AIRBAG are not functioning which I'd like them to. I don't care about CEL or TRAC although I'd like the lights off.

burdickjp 06-28-2015 01:44 PM

Quote:

Originally Posted by wutsaiu (Post 2302344)
I got my tach running via Arduino with Canbus.

message.id = 0x141;
message.header.rtr = 0;
message.header.length = 8;
message.data[0] = 0x8F;
message.data[1] = 0x26;
message.data[2] = 0xDF;
message.data[3] = 0x28;
message.data[4] = (RPM % 256);
message.data[5] = (RPM / 256) + 0x80;
message.data[6] = 0xA7;
message.data[7] = 0x00;

It's nice but I still have CEL, ABS, TRAC, AIRBAG lights on. I assume ABS and AIRBAG are not functioning which I'd like them to. I don't care about CEL or TRAC although I'd like the lights off.

So you got your OEM tach working by sending data to it with CAN BUS or you got an aftermarket tach working by receiving data via CAN BUS?

wutsaiu 06-28-2015 02:26 PM

Quote:

Originally Posted by bur****jp (Post 2302369)
So you got your OEM tach working by sending data to it with CAN BUS or you got an aftermarket tach working by receiving data via CAN BUS?

Got OEM tach working by sending data.

modernbeat 06-28-2015 03:18 PM

I'm doing the programming to make a third party ECM talk to the OEM ECM to make swaps easier. We'll debut it on Rick's V8 swap.

Manji 06-28-2015 08:18 PM

Couple of things that stand out here already.

Comment I saw about not wanting to spend money on a motec, because it will double the cost of the swap. All I'll say here is that you are biting of more than you can chew if you think the rest of the swap will be done for $6.5k. You can itemise and forum mechanic it all you like, but if you want my advice, double that budget; at least.

Another thing I noticed, "I'm going to blow my fa20 up and then do this". This mentality has never made sense to me. Why not sell it while its worth money? I sold my fa20, gearbox, and turbo kit for $12k. Sure I realise this is because I'm in NZ and was the only person to have these parts for sale, and I had to wait a year for someone to blow their motor and need mine, but point is still valid.

Either way, not knocking what you are trying to do. 10 years ago in my 20's I was looking to DIY all the things with car projects. Now I'm a little older, a little wiser, and a lot busier with work to even entertain this type of thing. The effort in doing so is better spent at work, earning money, so I can pay others to do a better job than I could ever do.

It's one of those things, I paid for the motec (I also paid well less than $6.5k, though we get a much better deal on them here) because it was the only option that worked. I could've waited 5 years for guys like yourself to have sorted a way to do it (as you are trying to now) for next to nothing. But I accepted I paid early adopter tax.

FWIW, I approached Link (they are based here) about whether they wanted to write a gt86 canbus platform and use my car to do so (of course I was still going to pay, but I already have a Link in my racecar and was familiar with them). To my surprise they weren't even slightly interested and didn't believe there was enough of a market there. (Which in NZ is true, Christchurch has 400,000 people and I'm the only one do have done anything major like forced induction or motor swap) but they clearly have not realised the popularity of the car internationally.


All times are GMT -4. The time now is 04:45 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
User Alert System provided by Advanced User Tagging v3.3.0 (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.


Garage vBulletin Plugins by Drive Thru Online, Inc.