Home› Robotiq Products
Back to discussions page
FT-300 data stream over Modbus
/ Most recent by louis_bergeron
sgaforbes Posts: 4 Apprentice
Hi, I recently purchased an FT300 which I'm attempting to interface with an Arduino via Modbus RTU over RS485. I am able to read registers, however this is as the documentation suggests relatively slow. This could be down to the Arduino Modbus library I'm currently using. I would prefer to initiate the data stream and just monitor that. Is this possible over Modbus RTU? This is probably a super simple question, I'm pretty new to serial comms
louis_bergeron Posts: 94 Handy@sgaforbes
I don't think it's possible over modbus because the steam data don't include any modbus header or crc calculation. You will have to directly read the serial port data in string variable for example. Then decode the stream data which has this format (fx,fy,fx,mx,my,mz).
For example, what do you send to the sensor (& to which registors) in order to get it to send you data?
The gripper uses a standard industrial protocol Modbus RTU. You must implement this protocol to read and write registers. The gripper registers are detailed in the manual here:
You can also see Modbus communication examples in the manual here:
You can find free libraries on the web to do that. You can also get information about that protocol on the web like this site:
Do you mean that the Modbus communication on the gripper is the same with the FT300 ?
Because I want to use the FT sensor.
Oops... you're right, but indeed the FT sensor also uses the same Modbus RTU protocol. Registers are described here:
Thanks for the response!
I've read the registers. I'm now able to start and stop the stream. However, I'm still not sure from which register I should read the data stream.
In the document, it just says:
(((((((( When the stream is started, 16 bytes messages are sent by the sensor at 100Hz using this format:
<0x20><0x4e><LSB_data1><MSB_data1> ... <LSB_data6><MSB_data6><LSB_crc><MSB_crc> ))))))))))
It does not declare the method to read it. For example, from which register!!!
Has explained in this post, with Modbus protocol you can't access the data stream. With this protocol, you can send the request to read each register. For example, the force in X can be read in register 180.
If you want to read the data stream, you must implement it yourself by decoding the data received on the serial port. The format is (fx,fy,fz,mx,my,mz).
Could you please explain how to "With this protocol, you can send the request to read each register."
What should I send to the force sensor in order to read the register value. For example, if I want to read the X force, what request I should send to which register, so the sensors understand that I want to receive data from it. In other words, how should I activate the force sensor?
Once the sensor is powered on and has comms it will be updating the values in the registers so you will then be able to poll those registers for the value stored in them
The FT sensor supports the Modbus function "Read holding registers (FC03)".
You can see an example in the gripper manual here:http://support.robotiq.com/pages/viewpage.action?pageId=8520166
As mentioned, because we use a standard protocol, you'll have all the information about Modbus RTU protocol on the web. It will be useless to copy all of these here.