# Curtis 1234 and CAN bus



## jlefevre1 (Jun 30, 2018)

I have the controller connected and the parameters set. It is showing no faults. The CAN state is 127. I assume in that state it will not put out any messages. The little info I have shows that it should put out 2 8 byte MISO messages with some default data concerning motor speed and current and temperature and the like. I am getting little if any useful help from Curtis. I really need a good documentation of the CAN and what it is doing. I understand how to get the message decoded, I am not sure the Curtis is even sending them. I do not beiliev I even have the correct manual. 

Any help apprecited. I am hung up in the 127 and assumeing that it will not be transmitting in that state and needs to get to state 5. 

Jim


----------



## Electric Forklift Guy (Dec 13, 2012)

What are you trying to communicate with?


----------



## jlefevre1 (Jun 30, 2018)

A Red Lion Touch Screen. I have 4 devices on this buss producing messages. The Touch Screen just listenes and decodes the ones that have the right address. Two of the devices are Kelly Controls for the 2 mower deck motors. They are working just fine right out of the box. They transmit 2 PDO.s of 8 bytes each and give me information on motor RPM and temperature and errors. They use the CAN protocal for Broadcast Mode and they are not polled or do they care if anyone is listening, they just put there messages on the buss. Various literature that Curtis has that I have been able to obtain also states the the Curtis controllers whould be able to do broadcast mode. Be darned if I know how to get them into that mode. I have a document from curtis that shows that 2 preporgrammed PDO with 8 bytes each are there and send the stuff I am looking for. The thrick is to get them to send it without being asked. I might be able to get the Red Lion to send a message to kick start them but I do not know what that message would be. I have the Curtis controllers programmed and working. They will be the left and right drives on my zero turn mower. Speed, wig-wag throttle, brake, all adjusted and working fine. Just the darn CAN buss.


----------



## Electric Forklift Guy (Dec 13, 2012)

Did you jumper terminal 21 to 34 on the J1 plug to turn on the 120 Ohm termination resistor?


Check the resistance of your CAN bus (power off ) it should be 30 Ohms if all four are hooked up right.


----------



## jlefevre1 (Jun 30, 2018)

CAN buss and terminations are fine. The Kelly controllers work just fine. It is the Curtis controll which may advertis CAN compatible but it is not and they will not divilge any of there "secrets" or give you access to enough software and programming capabilities to do anything useful with the CAN communication.


----------



## Electric Forklift Guy (Dec 13, 2012)

Lets just do this one step at a time
Every time I've been frustrated it was because I overlooked something simple.
So I just start over from the beginning.



Just go until something is found 



( Power off and disconnected )


Pull the J1 plug.



1. Pins 21 and 34 Jumpered ( Shortest wire possible ) and nothing else is hooked up to them. It is very important that they are only connected to each other.

2. Verify CAN is hooked up to pins 23 and 35 in the correct polarity ( 23 is high )

3. Back probe pins 23 (can high) and 35 (can low) you should see 30 Ohms

4. Pins 25, 28, 29, and 7 are for the handset/dongle and should not be used as CAN connections.


Re-insert J1 plug



(Power on)


5. Get into the menu via laptop or handset and get into the "can interface menu" 

( Page 61 on this link ) http://fsip.biz/Documents/Curtis 1232_34_36_38.pdf


6. Make sure "Suppress_CANopen_Init" is set to " 0 "




That is how I would start troubleshooting the problem if I was there.


----------



## Electric Forklift Guy (Dec 13, 2012)

Oops, step 3 should read "40 Ohms" since the J1 is unplugged


----------



## jlefevre1 (Jun 30, 2018)

The problem is the Curtis will not send PDO messages in a brodcast mode. To put it into Broadcast mode you have to write special code using VCL which Curtis will not allow end users to do. 

I programmed the touch screen to be the CAN master. I have it sending the message to all CAN devices every 1 second to go to operational mode state 5. 

When sending a PDO the Curtis expects a response or it will default back to state 127. There is a special place in the memory you can send a SDO message to to change that timeout paramenter to 0 instead of the default. I am sending that SDO message every 4 seconds. 

To get the Curtis to send the MISO PDO messages you have send it a MOSI PDO message. I am sending the MOSI PDO1 message and the MOSI PDO2 message every 500 ms from the master with all 8 of the 8 bit bytes set to 0 ( they are not used by the Curtis for anything anyway ). The Curtis then responds with the pre programmed MISO messages. 

I took almost 3 months of research and testing and e-mail to a couple of Curtis dealers to get enough documentation to acquire all of the necessary data to accomplish this. The only thing I had to figure out on my own and did more or less by accident is that you have to send the MOSI PDO to get the Curtis to respond with the MISO PDO. That is not documented anywhere. 

Curtis needs to add the ability to custom select the items in the PDO's and the ability to overide the response time out and turn broadcast mode on and off to there base software. Other controller manufacturers do the above either as standard or with the base programming tool. Curtis is way to pickey on protecting so called proprietary information and there precious VCL stuff. 

I can see protecting the VCL stuff to a certain extent but the CAN buss PDO messages should not require that tool. A home brew experimenter should be able to get a few simple parameters out of the device for a display without going through what I had to go through. 

Even the Curtis dealers I tried to work with seemed unfamiliar with the concept.

Jim


----------



## 2xhp (Apr 24, 2020)

Hi Jim,

Glad to hear you got it working. What is the CAN ID for the MOSI PDO1 and MOSI PDO2 messages?

Also, what is the structure of the SDO message that you use to change the timeout parameter? Specifically, what ID and data bytes?

Thanks!


----------



## jlefevre1 (Jun 30, 2018)

The SDO message I am sending is 2 bit bytes Byte 1 is OxO1 and byte 2 is 0x00

This gets the buss started and into the state where it will send and recieve. 

The message to set the timer to 0 is an 8 byte messagd in the SDO format. byte1 is 0x00, byte 2 is 0x49, byte 3 is 0x31, and the rest of the bytes are all 0x00. I had 2 curtis devices on my buss so i had to send a message addressed to each one. 

The MOSI message is PDO1 and PDO2. Bothe are 8 bytes and all of the bytes are 0x00. Since i did not need to send any data to the curtis they can all be 0. When you send PDO1 the device will respond with SDO1, etc. to send them as ofted as you want to read the default parameter in the curtis mesage. 

Hope that helps.


----------



## 2xhp (Apr 24, 2020)

jlefevre1 said:


> The SDO message I am sending is 2 bit bytes Byte 1 is OxO1 and byte 2 is 0x00
> 
> This gets the buss started and into the state where it will send and recieve.
> 
> ...


Thank you.

I think I have figured out how to form the Can open ID (function code with device address). But could you just tell me what IDs you were using for the above (PDO1 and PDO2)?

Also, do you know the throttle command with throttle type 5 in PDO1? I have gleaned it's in bytes 3 and 4, but don't have documentation on the structure.

Thanks again!


----------



## jlefevre1 (Jun 30, 2018)

The time out message was sent to 00000605. The last digit will change depending on your device address. 

The PDO1 message was sent to 00000205 and PDO2 was sent to 00000305. Again the last digit will change depending on the device address. 

the throttle is in PDO1 with the low byte at byte 3 and the high byte at byte 4. Since these are 8 bit bytes and the command is a signed 16 bit integer it uses both bytes. Sending a +32767 is equivalent to sending a 100.00 percent forward speed. So the 2 decimal points are implied. 

Hope that helps

Jim


----------



## 2xhp (Apr 24, 2020)

Jim, you rock! Thank you so much.

I'll post back here with a complete summary of how it goes for easy reference to others that might be struggling with this.


----------



## Sherwin (Sep 11, 2020)

Hi there,

I have been trying to sniff off an Curtis 1234 motor controller that uses canbus for control. Not sure if its useful but i can post a picture of the message we have able to decode on our controller. But from what i understand that each controller can be programmed differently. Thus i am not sure if this can help anyone.

Me and my friend managed to decode that ID 245 canbus message is used to trigger on/off a switch inside the controller and ID 345 is for throttle input. However, there are some messages we are unable to figure out what it is. I did not have any prior knowledge of what the canbus command do but we did some trial and error. Hope this may help someone out


----------



## 2xhp (Apr 24, 2020)

Hi Jim,

Where can I find a byte map for PDO1 and PDO2? We are trying to get the motor temperature and controller temperature through CAN as well.

BTW, thanks for all the help with the throttle commands. We got it working thanks to you.

Thanks!


----------

