我正在尝试使用 Arduino Uno 来控制一个主控的两个从属,但我遇到了代码问题。尽管我曾尝试将主站连接到一个从站,但它无法正常工作,而且我不确定我在哪里犯了错误。我将不胜感激解决此问题的任何帮助。
提前感谢您的帮助。
\\#include \\\<SimpleModbusSlave.h\\\>
\\#define ledPin 11 enum { ADC0, ADC1, ADC2, ADC3, ADC4, ADC5, LED_STATE, BUTTON_STATE, TOTAL_ERRORS, TOTAL_REGS_SIZE };
unsigned int holdingRegs\\\[TOTAL_REGS_SIZE\\\]; int pin11;
void setup()
{ // put your setup code here, to run once: modbus_configure(115200, 1, 2, TOTAL_REGS_SIZE, 0); pinMode(ledPin, OUTPUT); Serial.flush();
}
void loop()
{ // put your main code here, to run repeatedly: holdingRegs\\\[TOTAL_ERRORS\\\] = modbus_update(holdingRegs); pin11 = holdingRegs\\\[ADC0\\\]; Serial.print(holdingRegs\\\[0\\\]); delayMicroseconds(50); if(pin11 == 1){ digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
\\#include \\\<SimpleModbusMaster.h\\\>
\\#define baudrate 115200
\\#define timeout 2000 \\#define polling 500
\\#define retry_count 5
\\#define Txenablepins 2
\\#define Led1 12
\\#define totalregs 9
enum{ PACKET1, PACKET2, TOTAL_NO_OF_PACKETS };
Packet packets\\\[TOTAL_NO_OF_PACKETS\\\];
packetPointer packet1 = &packets\\\[PACKET1\\\];
packetPointer packet2 = &packets\\\[PACKET2\\\];
unsigned int regs\\\[9\\\];
unsigned int write_regs\\\[1\\\]= {1};
//unsigned regs\\\[totalregs\\\];
void setup() {
//modbus_construct(&packets\\\[PACKET1\\\], packet1-\\\>id = 1; packet1-\\\>function = READ_HOLDING_REGISTERS; packet1-\\\>address = 0; packet1-\\\>no_of_registers = 1; packet1-\\\>register_array = regs; packet2-\>id = 1; packet2-\>function =PRESET_MULTIPLE_REGISTERS; packet2-\>address = 0; packet2-\>no_of_registers = 1; packet2-\>register_array = write_regs;
// put your setup code here, to run once: //modbus_configure(&Serial,baudrate,SERIAL_8N2,timeout,polling,retry_count, //Txenablepins,packets,TOTAL_NO_OF_PACKETS,regs) modbus_configure(baudrate, timeout, polling, retry_count, Txenablepins, packets, TOTAL_NO_OF_PACKETS); pinMode(Led1, OUTPUT); //pinMode(Led2, OUTPUT); } void loop() { // modbus_update(&packet1); unsigned int connection_status2 = modbus_update(packets); Serial.print("connection_status_value"); Serial.println(connection_status2); //unsigned int connection_status1 = modbus_update(&packets\\\[PACKET1\\\]); //unsigned int connection_status2 = modbus_update(&packets\\\[PACKET2\\\]); //if(connection_status1==1 and connection_status2==1){ if(connection_status2==2){ digitalWrite(Led1, HIGH); } else{ digitalWrite(Led1, LOW);} checkResponse(); }
关于如何实现这一点的建议,以便我能够使用 ardiuno uno 控制两个奴隶和一个主人`