Pessoal, sou novo por aqui...
Estou com um projeto no qual devo receber um sinal analógico, converter para digital, enviar para o Elipse via porta serial e mostrar esse sinal em um gráfico. Bom, consegui a conversão, porém não consigo a comunicação com o software, alguém pode me ajudar com a configuração do driver Modbus slave para Arduino?
Abraço!
Tags:
Oi Mauricio,
praticamente vc tem que colocar a lib Modbus AscII, RTU ou IP, para cada um desses tem uma lib adquada, nos aqui no LDG usamos muito a modbus RTU, depois de gravado no arduino é somente fazer a relação com o supervisorio que no seu caso é o ELipse, lá deve ter um datasource(se é esse o nome) apropriado para modbus RTU. abaixo deixo um link de uma lib modbus RTU para aduino IDE 1.0
https://github.com/andresarmento/modbus-arduino
aqui um video explicativo basico sobre integração
Obrigado pela ajuda, Adriano!
O meu código está assim:
#ifndef MODBUS_SLAVE_H
#define MODBUS_SLAVE_H
#include <modbusSlave.h>
#include <modbusSlave.dll>
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
class ModbusSlave {
private:
unsigned char slave;
char txenpin;
int *regs;
unsigned int regs_size;
int *inputregs;
unsigned int inputregs_size;
bool *coils;
unsigned int coils_size;
bool *inputs;
unsigned int inputs_size;
unsigned int crc(unsigned char *buf, unsigned char start, unsigned char cnt);
void build_read_packet(unsigned char function, unsigned char bytes, unsigned char *packet);
void build_write_packet(unsigned char function, unsigned int start_addr, unsigned char count, unsigned char *packet);
void build_write_single_packet(unsigned char function, unsigned int write_addr, unsigned int reg_val, unsigned char* packet);
void build_error_packet(unsigned char function,unsigned char exception, unsigned char *packet);
void modbus_reply(unsigned char *packet, unsigned char string_length);
int send_reply(unsigned char *query, unsigned char string_length);
int receive_request(unsigned char *received_string);
int modbus_request(unsigned char *data);
int validate_request(unsigned char *data, unsigned char length);
int write_regs(unsigned int start_addr, unsigned char *query, int *regs);
int preset_multiple_registers(unsigned int start_addr,unsigned char count,unsigned char *query,int *regs);
int read_registers(unsigned int start_addr, unsigned char reg_count, int *regs, unsigned char function);
int write_single_register(unsigned int write_addr, unsigned char *query, int *regs);
void configure(long baud, char parity, char txenpin);
int write_single_coil(unsigned int write_addr, unsigned char *query, bool *coils);
int read_booleans(unsigned int write_addr, unsigned char count, bool *vector, unsigned char function);
public:
void configure(unsigned char slave, long baud, char parity, char txenpin);
void setup_regs(int* vector, unsigned int size);
void setup_inputregs(int* vector, unsigned int size);
void setup_coils(bool* vector, unsigned int size);
int update();
ModbusSlave()
{
regs_size = 0;
inputregs_size = 0;
coils_size = 0;
inputs_size = 0;
}
};
#endif
enum {
MB_SLAVE = 1,
};
enum {
MB_40000, // A0
MB_REGS
};
const int analogInPin = A0; // Entrada analógica do potenciômetro
int sensorValue = 0;
int outputValue = 0;
int *regs;
int x = 0;
int timer = x++;
void setup() {
Serial.begin(9600); // Inicializa a comunicação serial
const unsigned char SLAVE = 1;
const long BAUD = 9600;
const char PARITY = 'n';
regs[MB_40000] = analogRead (A0);
}
void loop() {
sensorValue = analogRead(analogInPin); // Leitura analógica
outputValue = map(sensorValue, 0, 1023, 0, 255); // Range
Serial.print(" " );
//Serial.print(sensorValue);
Serial.print("\t");
Serial.print(timer++);
Serial.print("\t");
Serial.println(outputValue);
Serial.print("\t");
delay(1000);
}
Devo baixar a lib e colocar ela no diretório do compilador?
Mauricio,
Baixa a lib da referencia do link que te mandei e coloca na lib da IDE 1.0 depois siga conforme é descrito no video tutorial sobre modbus RTU
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por