arduino 485 modbus-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11536|回复: 6

[未解决] arduino 485 modbus

[复制链接]
发表于 2018-7-31 21:11 | 显示全部楼层 |阅读模式
怎么让arduino uno 作为modbus rs485 master ,步进电机驱动器为slave,这款驱动器带485接口,采用modbus-rtu通讯子集,用arduino读取步进电机转速,调节转速,我用USB转485芯片,再用串口助手是可以读取加调转速的,用arduino怎么编程才能实现呢,哪位大佬做过类似的,能像我分享一下代码么?
发表于 2021-6-29 23:57 | 显示全部楼层
发表于 2018-8-1 13:14 | 显示全部楼层
能把你原代码发一下吗?
 楼主| 发表于 2018-8-1 13:48 | 显示全部楼层
mzyczly 发表于 2018-8-1 13:14
能把你原代码发一下吗?

#include <ModbusMaster.h>//modbusmaster库,03读取功能

uint16_t m_startAddress = 2;//要读取的从站起始地址
uint8_t m_length = 2;//从从站起始地址开始你需要读取的数据的长度
uint8_t result;//串口通信结果,不用明白是什么,只要知道这不是你最终需要的数据就行

ModbusMaster node(1);//对1号从站进行通信
int LED = 8;
void setup() {
  node.begin(9600);//定义arduino与从站之间的串口波特率
  pinMode(LED,OUTPUT);
//Serial.begin(9600); //端口的波特率设置
Serial.begin(9600, SERIAL_8N2);        //数据位8,无校验位,停止位2
  
}

void loop() {  
  result = node.readHoldingRegisters(m_startAddress, m_length);//调用相关函数
  if (result == node.ku8MBSuccess) {//如果通信成功
    digitalWrite(LED,HIGH);
    delay(500);
    digitalWrite(LED,LOW);
    delay(500);

  }
  else {
    digitalWrite(LED,HIGH);
  }
}
//看别人的,加我自己编的,反正无法实现读取
发表于 2018-10-20 21:41 | 显示全部楼层
建议你用串口看看到底获取到什么?
result = node.readHoldingRegisters(m_startAddress, m_length);//调用相关函数
Serial.println(result);    //这里用串口调试打印看看你获取到什么?说不定根本没达到你的if语句的条件。

  if (result == node.ku8MBSuccess) {//如果通信成功
    digitalWrite(LED,HIGH);
    delay(500);
    digitalWrite(LED,LOW);
    delay(500);
发表于 2021-6-29 22:22 | 显示全部楼层
请问问题解决了吗?我也卡在这种地方了,太难了
发表于 2021-6-30 08:17 | 显示全部楼层
加个转换模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 04:36 , Processed in 0.103978 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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