Ok....I guess I can answer my own question, just as a reference for future users getting the same problem. The RS485 switching with GPIO pin as a RTS flow control is too slow for modbus applications. It was able to send message to registers, but it was unable to capture the response from device. Hence, I have switch to using the FTDI USB to RS485 cable and it worked perfectly through /dev/ttyUSB0.
hope this helps people in the future with similar problem. On Sunday, July 5, 2015 at 4:41:56 PM UTC-4, A W wrote: > > Here is the actual error report back from terminal: > > ValueError: Checksum error in rtu mode: '\x01x' instead of '|\xa3' . The > response is: '\x00\x01\x06\x00\xff\x00\x01x' (plain response: > '\x00\x01\x06\x00\xff\x00\x01x') > > > On Sunday, July 5, 2015 at 4:20:48 PM UTC-4, A W wrote: >> >> Ok...I seems to got it working after configuring the GPIO pin for RTS. >> However, when I tried to communicate with modbus device, it gives me an >> "Checksum error in rtu mode". I am using minimal modbus library, and my >> code works fine when communicating between windows and my device. >> >> I have tested my connection with the scope and it seems to get getting >> the correct output >> >> >> >> <https://lh3.googleusercontent.com/-F3TXY-EePnE/VZmQRb1SiZI/AAAAAAAAAFA/3WE1rRaXQis/s1600/tek00001.bmp> >> >> >> When testing it with the minimal modbus library, the slave ID, function >> code and payload data is correct. It just seems to have problem getting >> pass the error check. >> >> >> >> <https://lh3.googleusercontent.com/-e-xK1jzwGAM/VZmQk-l6ZrI/AAAAAAAAAFI/jGzceziRmiI/s1600/test3.py_write_reg255.bmp> >> >> >> I have configured my baud rate and parity check correctly, but I can't >> seems to figure out why it's giving me this checksum error. Anyone have any >> ideas where the problem is? >> >> >> On Saturday, July 4, 2015 at 6:29:11 PM UTC-4, A W wrote: >>> >>> Hello, >>> >>> I came across this tutorial on configuration for RS-485 serial >>> communication, but I am new to this and I need some clarifications on the >>> procedure. >>> >>> My beaglebone black is currently running on the latest Debian image >>> >>>> >>>> Linux beaglebone 3.8.13-bone70 #1 SMP Fri Jan 23 02:15:42 UTC 2015 >>>> armv7l GNU/Linux >>> >>> >>> >>> >>> On the website >>> http://inspire.logicsupply.com/2014/09/beaglebone-rs-485-communication.html >>> >>> Let's dive into the Kernel a bit to to see how RS-485 works in Linux; >>>> the standard steps to put a UART into RS-485 mode are: >>>> >>>> 1. Open the special tty file >>>> 2. Create a serial_rs485 struct and set the desired configuration >>>> values >>>> 3. Pass the configured struct to Kernel driver by using ioctl >>>> <http://man7.org/linux/man-pages/man2/ioctl.2.html> on the open >>>> serial port file descriptor >>>> >>>> I don't understand do these steps, where do I find the special tty file >>> and as well as creating the serial_rs485 struct. Can someone guide me >>> through this part? >>> >>> Thank you. >>> >>> >>> >> -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
