serial port - PC to Arduino RS-485 connection via converters -
i'm trying make modbus rs-485 connection between pc (windows) , arduino.
on pc side use usb-to-rs485 converter 1 http://ru.aliexpress.com/item/usb-to-485-rs485-converter-adapter-support-windows-7-8-for-arduino/1577970568.html
on arduino side use ttl-to-rs-485 1 http://ru.aliexpress.com/item/5pcs-lot-max485-module-rs-485-ttl-to-rs485-module-for-arduino/32262338107.html
problem1: when send byte pc arduino. nothing happens. arduino not receive anything. in case upload arduino code:
#include <softwareserial.h> #include "rs485_protocol.h" softwareserial rs485 (10, 11); // receive pin, transmit pin const byte enable_pin = 3; void setup() { serial.begin(9600); rs485.begin (28800); pinmode (enable_pin, output); // driver output enable } void loop() { byte buf [1]; byte received = recvmsg (favailable, fread, buf, sizeof (buf)); if (received) { serial.println(buf[0]); } else { serial.println("--"); } } // end of loop int favailable () { return rs485.available (); } int fread () { return rs485.read (); } and open serial monitor in arduino ide show received data. open new instance of arduino ide, chose proper usb-to-rs485 com port , opens serial monitor send data.
so in arduino side serial monitor see "--" lines. when i'm trying send in pc side serial monitor.
the other problem is:
vice versa. when sending byte arduino pc receive odd symbols instead sent byte.
the arduino code in case is:
#include <softwareserial.h> #include "rs485_protocol.h" softwareserial rs485 (10, 11); // receive pin, transmit pin const byte enable_pin = 3; void setup() { rs485.begin (28800); pinmode (enable_pin, output); // driver output enable } void loop() { byte msg[1] = {3}; sendmsg(msg); } // end of loop void sendmsg(byte msg[]) { delay (1); // give master moment prepare receive digitalwrite (enable_pin, high); // enable sending sendmsg (fwrite, msg, 1); digitalwrite (enable_pin, low); // disable sending } void fwrite (const byte what) { rs485.write (what); } int favailable () { return rs485.available (); } on pc side (in arduino ides serial monitor) receive odd symbols instead "3" symbol.
=======
rs485 converters wired twisted pare a , b b. rs485 ttl converter connected arduino properly. (communication between 2 arduinos works fine).
please help.
example of rs485 :
using sn75176 ic.
re (pin 2) connect ground (for reading )
arduino control de pin writing data
but pc side problems:
- where bridged
depins ? (cts,dtr,rtdif supported) - what flow control ? (related #1)
- did connect resistor
a,bpin ?<+5v>----[560r]-----(a)----[120r]-----(b)------[560r]------<-5v>meanline end - did filter
de pin 2signal (for noise)
a tricks : use sn75176 on arduino side because this ic rs232(uart) (rs485) converter.
edit : modbus got 2 type on serial (rtu, ascii). dont care rs232/485 differences because different signal, same protocol.
example packet type:
ascii : :010300200004+crc+fe(crc =packet check code, fe=end delimeter) rtu : \x01\x03\x00\x20\x00\x04\x +crc on rtu : every byte need 1.5 char space , without start , end delimeter.
and modbus node type meaning master , slave.
i hope helpfull.

Comments
Post a Comment