28-01-2020, 13:48
Witam, mam problem z biblioteką modbus.
Mam dwa warianty komunikacji po modbusie z komputerem PC
1) uzycie urzedzenia USB to TTL
2) płytki MAX485 z Moxa NPort5232 (wirtulany com port poprzez złącze ethenret)
Poprzez złącze USB to TTL programem MBPoll widzę ruch pakietów odbieranych i wysyłanych lecz są błędy i na LCD (2x16) nic sie nie wyświetla tylko 0
Tutsj pokazuje kod źródłowy
Z tego co przeanalizowałem bibliotekę moje arduino nano jest slave nr 3, i powinno odczytać z komputera wartość rejestru 1 i 2? Może ktoś mi bliżej to wytłumaczyć
Tutaj screene z konfiguracji mbpoll
Mam dwa warianty komunikacji po modbusie z komputerem PC
1) uzycie urzedzenia USB to TTL
2) płytki MAX485 z Moxa NPort5232 (wirtulany com port poprzez złącze ethenret)
Poprzez złącze USB to TTL programem MBPoll widzę ruch pakietów odbieranych i wysyłanych lecz są błędy i na LCD (2x16) nic sie nie wyświetla tylko 0
Tutsj pokazuje kod źródłowy
Kod:
#include "ModbusMaster.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define MAX485_DE 7
#define LED_SUCCESS 9
ModbusMaster node;
void preTransmission()
{
digitalWrite(MAX485_DE, 1);
}
void postTransmission()
{
digitalWrite(MAX485_DE, 0);
}
void setup()
{
uint8_t result;
lcd.begin(16,2);
pinMode(MAX485_DE, OUTPUT);
//pinMode(LED_SUCCESS, OUTPUT);
// Init in receive mode
digitalWrite(MAX485_DE, 0);
Serial.begin(9600);
// Modbus slave ID 1
node.begin(3, Serial);
// Callbacks allow us to configure the RS485 transceiver correctly
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
}
void loop()
{
uint8_t result1;
uint8_t result2;
result1 = node.readHoldingRegisters(1,1);
lcd.setCursor(0,0);
lcd.print("Actual Hz:");lcd.print(node.getResponseBuffer(0));
result2 = node.readHoldingRegisters(2,1);
lcd.setCursor(0,1);
lcd.print("Setpoint Hz:");lcd.print(node.getResponseBuffer(0));
delay(1500);
lcd.clear();
}
Tutaj screene z konfiguracji mbpoll