<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://calebneedscollege.com/wiki/index.php?action=history&amp;feed=atom&amp;title=EPEVER_Solar_Controller_RS485_MODBUS_test</id>
	<title>EPEVER Solar Controller RS485 MODBUS test - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://calebneedscollege.com/wiki/index.php?action=history&amp;feed=atom&amp;title=EPEVER_Solar_Controller_RS485_MODBUS_test"/>
	<link rel="alternate" type="text/html" href="http://calebneedscollege.com/wiki/index.php?title=EPEVER_Solar_Controller_RS485_MODBUS_test&amp;action=history"/>
	<updated>2026-05-15T14:32:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>http://calebneedscollege.com/wiki/index.php?title=EPEVER_Solar_Controller_RS485_MODBUS_test&amp;diff=80&amp;oldid=prev</id>
		<title>Falgsc-al: First Upload</title>
		<link rel="alternate" type="text/html" href="http://calebneedscollege.com/wiki/index.php?title=EPEVER_Solar_Controller_RS485_MODBUS_test&amp;diff=80&amp;oldid=prev"/>
		<updated>2020-12-08T23:55:02Z</updated>

		<summary type="html">&lt;p&gt;First Upload&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Synopsis==&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
This was developed to test communication to the EPEVER AN Solar controller from the Arduino&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C++&amp;quot; line='line'&amp;gt;&lt;br /&gt;
//Power is not currently working for battery or panel&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ModbusMaster.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define MAX485_DE   49&lt;br /&gt;
#define MAX485_RE   48&lt;br /&gt;
&lt;br /&gt;
#define PANEL_VOLTS     0x00&lt;br /&gt;
#define PANEL_AMPS      0x01&lt;br /&gt;
#define PANEL_POWER_L   0x02&lt;br /&gt;
#define PANEL_POWER_H   0x03&lt;br /&gt;
#define BATT_VOLTS      0x04&lt;br /&gt;
#define BATT_AMPS       0x05&lt;br /&gt;
#define BATT_POWER_L    0x06&lt;br /&gt;
#define BATT_POWER_H    0x07&lt;br /&gt;
#define OVERVOLT_DISC   0x00&lt;br /&gt;
#define CHARGING_LIMIT  0x01&lt;br /&gt;
#define OVERVOLT_RECON  0x02&lt;br /&gt;
#define EQUILIBRIUM_CV  0x03&lt;br /&gt;
#define BOOST_CV        0x04&lt;br /&gt;
#define FLOAT_CV        0x05&lt;br /&gt;
#define BOOST_RECON     0x06&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// instantiate ModbusMaster object&lt;br /&gt;
ModbusMaster node;&lt;br /&gt;
&lt;br /&gt;
//#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//SoftwareSerial mySerial(10, 11); // RX, TX&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  while (!Serial) {&lt;br /&gt;
    ;&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;Moooooo!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  pinMode(MAX485_RE, OUTPUT);&lt;br /&gt;
  pinMode(MAX485_DE, OUTPUT);&lt;br /&gt;
  // Init in receive mode&lt;br /&gt;
  digitalWrite(MAX485_RE, 0);&lt;br /&gt;
  digitalWrite(MAX485_DE, 0);&lt;br /&gt;
&lt;br /&gt;
  // Modbus at 115200 baud&lt;br /&gt;
  Serial1.begin(115200);&lt;br /&gt;
&lt;br /&gt;
  // EPEver Device ID 1&lt;br /&gt;
  node.begin(1, Serial1);&lt;br /&gt;
&lt;br /&gt;
  // Callbacks&lt;br /&gt;
  node.preTransmission(preTransmission);&lt;br /&gt;
  node.postTransmission(postTransmission);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  uint8_t result;&lt;br /&gt;
&lt;br /&gt;
  // Read 8 registers starting at 0x3100)&lt;br /&gt;
  node.clearResponseBuffer();&lt;br /&gt;
  result = node.readInputRegisters(0x3100, 8);&lt;br /&gt;
&lt;br /&gt;
  if (result == node.ku8MBSuccess)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.print(&amp;quot;VPanel: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(PANEL_VOLTS)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;IPanel: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(PANEL_AMPS)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;PPanel: &amp;quot;);&lt;br /&gt;
    Serial.println((node.getResponseBuffer(PANEL_POWER_L) +&lt;br /&gt;
                    node.getResponseBuffer(PANEL_POWER_H) &amp;lt;&amp;lt; 16)/100.0f);&lt;br /&gt;
   &lt;br /&gt;
    Serial.print(&amp;quot;VBatt: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(BATT_VOLTS)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Ibatt: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(BATT_AMPS)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;PBatt: &amp;quot;);&lt;br /&gt;
    Serial.println((node.getResponseBuffer(BATT_POWER_L) +&lt;br /&gt;
                    node.getResponseBuffer(BATT_POWER_H) &amp;lt;&amp;lt; 16)/100.0f);                   &lt;br /&gt;
    Serial.println();&lt;br /&gt;
    Serial.println();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;Miss read, ret val:&amp;quot;);&lt;br /&gt;
    Serial.println(result);&lt;br /&gt;
  }&lt;br /&gt;
  //delay(1000);&lt;br /&gt;
&lt;br /&gt;
  // Read 6 registers starting at 0x9003)&lt;br /&gt;
  node.clearResponseBuffer();&lt;br /&gt;
  result = node.readHoldingRegisters(0x9003, 7);&lt;br /&gt;
&lt;br /&gt;
  if (result == node.ku8MBSuccess)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.print(&amp;quot;Overvolt Disconnect Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(OVERVOLT_DISC)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Charging Limit Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(CHARGING_LIMIT)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Overvolt Disconnect Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(OVERVOLT_DISC)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Overvolt Reconnect Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(OVERVOLT_RECON)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Equilibrium Charge Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(EQUILIBRIUM_CV)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Boost Charging Voltage:  &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(BOOST_CV)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Float Charging Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(FLOAT_CV)/100.0f);&lt;br /&gt;
    Serial.print(&amp;quot;Boost Reconnect Voltage: &amp;quot;);&lt;br /&gt;
    Serial.println(node.getResponseBuffer(BOOST_RECON)/100.0f);&lt;br /&gt;
                  &lt;br /&gt;
    Serial.println();&lt;br /&gt;
    Serial.println();&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.print(&amp;quot;Miss read, ret val:&amp;quot;);&lt;br /&gt;
    Serial.println(result);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void preTransmission()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(MAX485_RE, 1);&lt;br /&gt;
  digitalWrite(MAX485_DE, 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void postTransmission()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(MAX485_RE, 0);&lt;br /&gt;
  digitalWrite(MAX485_DE, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Falgsc-al</name></author>
		
	</entry>
</feed>