0% acharam este documento útil (0 voto)
3 visualizações4 páginas

Código de Controle Ethernet Modbus

O código inicializa uma conexão Ethernet e a implementação do protocolo Modbus. Ele define arrays de dados para armazenar leituras de sensores e configurações. Com base na entrada do usuário, pode ler/escrever dados de/para um dispositivo escravo remoto usando diferentes códigos de função Modbus para interagir com bobinas, registradores e outros tipos de dados através da conexão Ethernet.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
3 visualizações4 páginas

Código de Controle Ethernet Modbus

O código inicializa uma conexão Ethernet e a implementação do protocolo Modbus. Ele define arrays de dados para armazenar leituras de sensores e configurações. Com base na entrada do usuário, pode ler/escrever dados de/para um dispositivo escravo remoto usando diferentes códigos de função Modbus para interagir com bobinas, registradores e outros tipos de dados através da conexão Ethernet.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

#include <SPI.

h>
#include <Ethernet.h>
#include "MgsModbus.h"

MgsModbus Mb;
int inByte = 0; // byte serial de entrada

// Configurações de Ethernet (dependendo do MAC e da rede local)


byte mac[] = {0x00, 0x1A, 0xB6, 0x02, 0xD1, 0x14 };
IPAddress ip(192, 168, 0, 35);

void setup()
{

// configuração serial
[Link](9600);
Interface serial iniciada

// inicializar o dispositivo ethernet


[Link](mac, ip); // iniciar interface ethernet
Interface Ethernet iniciada

// imprima seu endereço IP local:


Meu endereço IP:
para (byte esteByte = 0; esteByte < 4; esteByte++) {
// imprime o valor de cada byte do endereço IP:
[Link]([Link]()[thisByte], DEC);
.
}
[Link]();

// endereço do escravo
[Link] = (192,168,0,1);

// Preencher MbData
// [Link](0,falso);
[Link][0] = 1;
[Link][1] = 2;
[Link][2] = 3;
[Link][3] = 4;
[Link][4] = 5;
[Link][5] = 6;
[Link][6] = 0;
[Link][7] = 0;
[Link][8] = 0;
[Link][9] = 0;
[Link][10] = 0;
[Link][11] = 0;

// imprimir MbData
para (int i=0;i<12;i++) {
[Link]("endereço: "); [Link](i); [Link]("Dados: ");
[Link]([Link][i]);
}
// imprimir menu
[Link]("0 - imprime as 12 primeiras palavras do espaço MbData");
[Link]("1 - FC 1 - lê as primeiras 5 bobinas do escravo e armazena")
eles no byte inferior de MbData[1]
2 - FC 2 - leia os primeiros 5 inputs discretos do escravo
e armazená-los no higer do MbData[1]
3 - FC 3 - leia os primeiros 5 registros do escravo e
armazená-los em MbData[3..7";
4 - FC 4 - leia os primeiros 5 registros de entrada do escravo
e armazená-los em MbData[8..12]
5 - FC 5 - escreva a bobina 0 do escravo com o valor do bit de
MbData[0.0]
[Link]("6 - FC 6 - escrever o registro 0 do escravo com MbData[2]");
7 - FC 15 - escrever 5 bobinas do escravo começando com a bobina 0
com GetBit(16..20";
8 - Fc 16 - escrever 5 registradores do escravo começando em
registre 0 com MbData[0..4]";

[Link]([Link]);
}

void loop()
{
se ([Link]() > 0) {
// obter byte de entrada:
inByte = [Link]();
if (inByte == '0') { // print
MbDados
for (int i=0;i<12;i++) {
[Link]("endereço: "); [Link](i); [Link]("Dados: ");
[Link]([Link][i]);
}
}
se (inByte == '1') {[Link](MB_FC_READ_COILS, 6,6,6);}
1 // ref, count, pos
se (inByte == '2') {[Link](MB_FC_READ_DISCRETE_INPUT, 6,6,6);} // 2
se (inByte == '3') {[Link](MB_FC_READ_REGISTERS, 6,6,6);} // 3
if (inByte == '4') {[Link](MB_FC_READ_INPUT_REGISTER, 6,6,6);} // 4
se (inByte == '5') {[Link](MB_FC_WRITE_COIL, 0,0,0);}
5 // a contagem pode ser x
if (inByte == '6') {[Link](MB_FC_WRITE_REGISTER, 7,0,0);} //
6 // a contagem pode ser x
se (inByte == '7') {[Link](MB_FC_WRITE_MULTIPLE_COILS, 0,6,0);} // 15
se (inByte == '8') {[Link](MB_FC_WRITE_MULTIPLE_REGISTERS, 0,6,0);} // 16
}

[Link]();
// [Link]();
}
#include <SPI.h>
#include <Ethernet.h>
#include "MgsModbus.h"

MgsModbus Mb;
int inByte = 0; // byte serial de entrada

// Ethernet settings (depending on MAC and Local network)


byte mac[] = {0x00, 0x1A, 0xB6, 0x02, 0xD1, 0x14 };
IPAddress ip(192, 168, 0, 35);

void setup()
{

// configuração de serial
[Link](9600);
Interface serial iniciada

// inicializar o dispositivo ethernet


[Link](mac, ip); // iniciar interface ethernet
Interface Ethernet iniciada

// imprima seu endereço IP local:


Meu endereço IP:
for (byte thisByte = 0; thisByte < 4; thisByte++) {
// imprime o valor de cada byte do endereço IP:
[Link]([Link]()[thisByte], DEC);
.
}
[Link]();

// endereço do escravo
[Link] = (192,168,0,1);

// Preencher MbData
// [Link](0,falso);
[Link][0] = 1;
[Link][1] = 2;
[Link][2] = 3;
[Link][3] = 4;
[Link][4] = 5;
[Link][5] = 6;
[Link][6] = 0;
[Link][7] = 0;
[Link][8] = 0;
[Link][9] = 0;
[Link][10] = 0;
[Link][11] = 0;

// imprimir MbData
para (int i=0; i<12; i++){
[Link]("endereço: "); [Link](i); [Link]("Dados: ");
[Link]([Link][i]);
}
// imprimir menu
[Link]("0 - imprima as primeiras 12 palavras do espaço MbData");
1 - FC 1 - ler as primeiras 5 bobinas do escravo e armazenar
eles no byte inferior de MbData[1]
2 - FC 2 - leia os primeiros 5 entradas discretas do escravo
e armazená-los no higer do MbData[1]
3 - FC 3 - leia os primeiros 5 registros do escravo e
store them in MbData[3..7");
4 - FC 4 - leia os primeiros 5 registros de entrada do escravo
e armazená-los em MbData[8..12]
5 - FC 5 - escrever bobina 0 do escravo com o valor do bit de
MbData[0.0]
[Link]("6 - FC 6 - escrever o registro 0 do escravo com MbData[2]");
7 - FC 15 - escrever 5 bobinas do escravo começando com a bobina 0
com GetBit(16..20";
8 - Fc 16 - escrever 5 registradores do escravo começando em
registre 0 com MbData[0..4]

[Link]([Link]);
}

void loop()
{
se (Serial disponível() > 0) {
// obter byte de entrada:
inByte = [Link]();
se (inByte == '0') { // imprimir
MbData
para (int i=0;i<12;i++) {
[Link]("endereço: "); [Link](i); [Link]("Dados: ");
[Link]([Link][i]);
}
}
se (inByte == '1') {[Link](MB_FC_READ_COILS, 6,6,6);} //
1 // ref, count, pos
se (inByte == '2') {[Link](MB_FC_READ_DISCRETE_INPUT, 6,6,6);} // 2
se (inByte == '3') {[Link](MB_FC_READ_REGISTERS, 6,6,6);} // 3
se (inByte == '4') {[Link](MB_FC_READ_INPUT_REGISTER, 6,6,6);} // 4
se (inByte == '5') {[Link](MB_FC_WRITE_COIL, 0,0,0);} //
5 // a contagem pode ser x
se (inByte == '6') {[Link](MB_FC_WRITE_REGISTER, 7,0,0);} //
6 // a contagem pode ser x
se (inByte == '7') {[Link](MB_FC_WRITE_MULTIPLE_COILS, 0,6,0);} // 15
se (inByte == '8') {[Link](MB_FC_WRITE_MULTIPLE_REGISTERS, 0,6,0);} // 16
}

[Link]();
// [Link]();
}

Você também pode gostar