小小东熙 发表于 2014-7-16 16:14:06

arduino通过一个max485模块给变频器发命令控制马达运转


我手上有一个max485模块,一块arduino2560板子。有一台台达变频器。我想让arduino板子通过变频器上自带的的rs485口通信去控制马达的正反转、停止,以及调速。连线很简单。但是我不会写代码啊。而且网上也没有任何一个案例。我手上有台达变频器的说明说。上边有通信介绍。但是我没看懂。对于写程序还是一窍不通。。。。。。。。台达变频器说明书在附件里,希望懂这个的朋友帮忙看看。困扰了我两周了。。还没搞懂。

我主要是不懂modbus通信协议。。。所以我看不懂变频器的说明书,也不会写代码。。。。

我的硬件结构是:
arduino<----->max485模块<---->变频器<---->马达。

小小东熙 发表于 2014-7-16 16:15:30

现在所有的硬件都连好了。。。。就差程序了。。

zoologist 发表于 2014-7-16 21:22:34

不知道你卡在哪里了 下面是arduino 调用 modbus的资料

http://playground.arduino.cc/Code/ModbusMaster

http://www.possamai.it/arduino-modbus/

xiaoliumonitor 发表于 2014-7-16 23:15:41

你好   我的建议是你先用pc机配一个232-485或是usb-485,再用串口调试工具把变频调通了,然后再根据
串口发送以及接受的数据内容再编写arduino程序。一步步来。下面的程序是我写的arduino上的程序,写的不好,功能可以实现把数据写给485设备,485设备回传数据后再根据回传数据作处理。仅供参考。
void my485()
{
digitalWrite(4,HIGH);
delay(2);
Serial.write(1);
delay(2);
Serial.write(3);
delay(2);
Serial.write(0);
delay(2);
Serial.write(0x0a);
delay(2);
Serial.write(0);
delay(2);
Serial.write(0x11);
delay(2);
Serial.write(0xa5);
delay(2);
Serial.write(0xc4);
delay(2);
digitalWrite(4,LOW);
delay(140);
while(Serial.available()>0)
{
//if(Serial.available()==39)
    comStr+=(char)Serial.read();
   
    delay(25);
}
for(int i=0;i<47;i++)
iData=(byte)comStr;
if(comStr.length()>0)
{
    for(int i=0;i<comStr.length();i++)
    //Serial.write(comStr);
    Serial.write(iData);
}
comStr="";

}

Ansifa 发表于 2014-7-17 00:18:06

我想说,MAX485的/RE和DE脚你好像没有设置吧。应该把两个脚并在一起接一个arduino引脚。在写数据之前设置/RE和DE脚高电平,读数据前设置低电平。

Ansifa 发表于 2014-7-17 00:21:46

http://www.geek-workshop.com/thread-132-1-1.html
参考这个吧,留意里面的

digitalWrite(EN, HIGH);//使能发送
digitalWrite(EN, LOW);//使能接收

xiaoliumonitor 发表于 2014-7-17 10:27:16

Ansifa您好论坛上跟您学了很多东西,谢谢。
RE与DE我是连在一起接的arduino的4脚,因为全是手搭的电路,插针什么的也不牢靠,所以延时可能会长一些。
延时时间短时数据会出错。

小小东熙 发表于 2014-7-17 11:02:29

zoologist 发表于 2014-7-16 21:22 static/image/common/back.gif
不知道你卡在哪里了 下面是arduino 调用 modbus的资料

http://playground.arduino.cc/Code/ModbusMaster ...

我就是不懂通信协议的编程框架。。。所以没法下手写程序。。。代码该写什么内容部清楚。。

小小东熙 发表于 2014-7-17 11:03:29

xiaoliumonitor 发表于 2014-7-16 23:15 static/image/common/back.gif
你好   我的建议是你先用pc机配一个232-485或是usb-485,再用串口调试工具把变频调通了,然后再根据
串口发 ...

嗯。我去试试吧。。。

小小东熙 发表于 2014-7-17 11:07:40

Ansifa 发表于 2014-7-17 00:21 static/image/common/back.gif
http://www.geek-workshop.com/thread-132-1-1.html
参考这个吧,留意里面的



嗯。。。我最不懂得地方我觉得是在于,不懂modbus通信协议。
所以我没办法下手写代码,因为我不知道写什么内容。。。都该写哪些语句。

小小东熙 发表于 2014-7-17 11:09:28

Ansifa 发表于 2014-7-17 00:21 static/image/common/back.gif
http://www.geek-workshop.com/thread-132-1-1.html
参考这个吧,留意里面的



而且问题还在于:变频器有他自己的通信命令ASCII和地址等等。这些对我写代码有什么要求。我怎样在代码中体现出这些内容。这都是我不知道的地方

爱上即可 发表于 2016-1-27 10:41:36

zoologist 发表于 2014-7-16 21:22 static/image/common/back.gif
不知道你卡在哪里了 下面是arduino 调用 modbus的资料

http://playground.arduino.cc/Code/ModbusMaster ...

这个资料 没有办法下载啊
页: [1]
查看完整版本: arduino通过一个max485模块给变频器发命令控制马达运转