05-27-2020 11:01 AM
Hello,
I am trying to run a Faulhaber brushless motor (model: 3274G024BP4) using the motor driver (Faulhaber MC5010 S RS) from NI myRio-1900 controller. The Rx and Tx of the driver are connected to the Tx and Rx of the myRio. The UART communication is done using VISA resources.
I am utilizing the telegram structure protocol to communicate via RS232. This is mentioned in the RS232CommManual.pdf file (attached), page 15. The data in the telegram is to be sent as follows:
All these numbers are in hexadecimal.
Just to begin communication from myRio. I took the simplest problem of querying the device of its serial number. For this purpose, we need to access the 0x1018 index number (unsigned 16 bytes) and 0x04 subindex (unsigned 8 bytes) of the object dictionary. Therefore, in LabVIEW, the following was sent:
53 07 01 01 18 10 04 F4 45 (without the spaces)
The same task was performed in the Motion Manager software of Faulhaber. For this, the second pdf (Software manual) is referred. It is mentioned that the commands in this pdf will work only in the software and not other platforms (page 73). Therefore, to execute the same functionality, the protocol mentioned in page 78 was followed. It runs successfully in that software and we receive the answer (serial number) from the driver (pic attached). The following was sent in the software:
TRANSMIT 001 01 18 10 04 (using the Software Manual, page 78)
But when I run this query in LabVIEW myRio using nothing happens!!. A timeout error comes which indicates that the driver did not understand the protocol and thus no response came within the default timeout. I did three modification of the same LabVIEW codes (attached: comm_test_01.vi):
None of the above three iterations showed any response and timeout error occurred. I also have a question whether we should acknowledge instantly as in iteration 1 and 2 or send the bytes as a whole and then acknowledge (iteration 3).
It is confusing that the same function of querying serial number works (although different protocol) on Faulhaber Motion Manager software but not in LabVIEW.
It would be great if you could point us in the right direction and point out the mistake in the communication protocol.
Thanks in advance!!!
05-31-2021 06:00 AM
I found your post because I was having the same issue. This is a late reply, I hope you solved the problem in the meantime, but I might as well answer hoping to help others.
Did you check the logic levels? I spent a day to find out that Faulhaber RS232 communication is IDLE LOW, instead of idle high like the standard uC UART. Maybe it is a backward compatibility feature for D-Sub?. The only reference in the manual you attached (and other Faulh. manuals) is "High Level Control" in Fig. 2 and 3, but I didn't notice that.
Best regards!
09-15-2025 02:43 PM
Thanks for your comments on the logic levels for the Faulhaber RS232 comms. How do you set the VISA serial to IDLE LOW?
I have tried the scripts above and I don't receive anything. However, in Motion Manager 7 you can see the controller constantly sending status words.
09-15-2025 07:15 PM
In theory you need to go deep into the VISA serial properties using a property node and set either the Line DTR state or Line RTS state to "Unasserted" to do this.
In practice I have not had a reason to try this so I can't verify this will actually work. Try it and let us know! It could also be one of the other obscure settings.
09-15-2025 11:22 PM
Hi all,
I had originally posted the first message back in 2020.
Our LabVIEW code with Faulhaber's Driver - Motion Controller MC5010 S RS using RS232 is working great.
We ran our brushless motors with all sorts of operating modes - Cyclic Synchronous Torque Mode, Velocity Profile Mode, etc.
Within a few weeks of posting the original message, the same code worked.
We bought an RS232 to TTL converter https://evelta.com/7semi-rs232-serial-to-ttl-converter-module-sp3232eb/ . The same code attached in the first post for querying the Driver's Serial Number worked. Using the same structure, we had built different LabVIEW VIs then reading the manual for Faulhaber's RS232 Communication with MC5010.
It was a Eureka moment for us when it worked.
Hope this helps.
09-17-2025 01:06 PM
Hi All,
Thanks for all your suggestions - they are greatly appreciated.
Turns out there was an upstream wiring problem on the MC3603RS. Once I fixed that, yogesh's script worked and I received a response (530B 0101 1810 04DA ABDB 0D) from the controller.
I used a Waveshare USB to RS232/485 serial converter to communicate with the drive and I did not need to change any of the VISA properties.
Now I just need to work on the CRC calculation.
I'm new to RS232 comms. so I have a lot to learn!