极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26074|回复: 11

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

[复制链接]
发表于 2014-7-16 16:14:06 | 显示全部楼层 |阅读模式

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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2014-7-16 16:15:30 | 显示全部楼层
现在所有的硬件都连好了。。。。就差程序了。。
回复 支持 反对

使用道具 举报

发表于 2014-7-16 21:22:34 | 显示全部楼层
不知道你卡在哪里了 下面是arduino 调用 modbus的资料

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

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

回复 支持 反对

使用道具 举报

发表于 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[i]=(byte)comStr[i];
  if(comStr.length()>0)
  {
    for(int i=0;i<comStr.length();i++)
    //Serial.write(comStr[i]);
    Serial.write(iData[i]);
  }
  comStr="";
  
}
回复 支持 反对

使用道具 举报

发表于 2014-7-17 00:18:06 | 显示全部楼层
我想说,MAX485的/RE和DE脚你好像没有设置吧。应该把两个脚并在一起接一个arduino引脚。在写数据之前设置/RE和DE脚高电平,读数据前设置低电平。
回复 支持 反对

使用道具 举报

发表于 2014-7-17 00:21:46 | 显示全部楼层
http://www.geek-workshop.com/thread-132-1-1.html
参考这个吧,留意里面的

digitalWrite(EN, HIGH);//使能发送
digitalWrite(EN, LOW);//使能接收
回复 支持 反对

使用道具 举报

发表于 2014-7-17 10:27:16 | 显示全部楼层
Ansifa  您好  论坛上跟您学了很多东西,谢谢。
RE与DE我是连在一起接的arduino的4脚,因为全是手搭的电路,插针什么的也不牢靠,所以延时可能会长一些。
延时时间短时数据会出错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-17 11:02:29 | 显示全部楼层
zoologist 发表于 2014-7-16 21:22
不知道你卡在哪里了 下面是arduino 调用 modbus的资料

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

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

使用道具 举报

 楼主| 发表于 2014-7-17 11:03:29 | 显示全部楼层
xiaoliumonitor 发表于 2014-7-16 23:15
你好   我的建议是你先用pc机配一个232-485或是usb-485,再用串口调试工具把变频调通了,然后再根据
串口发 ...

嗯。我去试试吧。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-17 11:07:40 | 显示全部楼层
Ansifa 发表于 2014-7-17 00:21
http://www.geek-workshop.com/thread-132-1-1.html
参考这个吧,留意里面的

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

使用道具 举报

 楼主| 发表于 2014-7-17 11:09:28 | 显示全部楼层
Ansifa 发表于 2014-7-17 00:21
http://www.geek-workshop.com/thread-132-1-1.html
参考这个吧,留意里面的

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

使用道具 举报

发表于 2016-1-27 10:41:36 | 显示全部楼层
zoologist 发表于 2014-7-16 21:22
不知道你卡在哪里了 下面是arduino 调用 modbus的资料

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

这个资料 没有办法下载啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-1 19:17 , Processed in 0.053220 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表