Pages: 1 [2] 3   Go Down
Author Topic: New Modbusmq project: Testers needed!  (Read 6294 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

How do you turn on the debug flag?

Also, how do I setup registers to read and write, can someone post a simple example?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Does this only work with the "official" ethernet shield.  Seems there are some variants out there now and I would like to buy something to test this with as I have lots of industrial Modbus gear at the office.

Thanks!
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Can someone show me how to setup say 8 modbus words to be read from a "client" and make those control 8 rc servos?

or just any basic modbus tcp program.  I see the library, but i want to get a look at a real example.

thanks..
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

I just have updated from Arduino 0018 to 0021, but the modbusmq is not working anymore. Seems to be a problem with the new ethernet library. Any ideas? Is there needed an update of the modbusmq?

BR,
chris
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 22
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I am having the same issue.
Works with 018, but can't even ping the IP when using 021.

Sure would be nice to find a fix for this.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I think there is a problem with calling
Code:
Client client = server.available();
as a global


so change that line to
Code:
Client client = 0;

please tell me if this helps
for me it seams to fix the problem
« Last Edit: October 20, 2010, 09:36:23 am by Arnonh » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It works with:

Client client = 0;

But now I have the same problem with the DEBUG flag. It has to be disabled because if it is enables the Arduino hangs.  

hgs75 do you get it working with debug flag?
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No i also couldn't get it to work with the DEBUG flag set.
but i thought it was because i used it with conjunction with i2c
so i just disabled  DEBUG  and moved on
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 22
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks, changing to "Client client = 0; " worked.

On another note: Is anyone using a simple web interface with Modbusmq, to configure IP, Gateway etc...?

Or have a suggestion as to how to get both Server, Client and different ports working together?
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

this is a beginning of IP changer over Ethernet but i didn't manage to implement it fully in to the Modbus code
(i have managed to get it to work only by a switch at the beginning of the program before the loop)

Code:
#include <EEPROM.h>

#include <SPI.h>


#include <Ethernet.h>
#include <Wire.h>

#define maxLength 100

int stringtoint(String &s);

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
String inString = "";
int val;
Server server(80);

void setup()
{
  
    int DO_RESET_ETH_SHIELD = 8;
    pinMode(DO_RESET_ETH_SHIELD, OUTPUT);      // sets the digital pin as output
  digitalWrite(DO_RESET_ETH_SHIELD, LOW);
  delay(1000);  //for ethernet chip to reset
  digitalWrite(DO_RESET_ETH_SHIELD, HIGH);
  delay(1000);  //for ethernet chip to reset
  
  
  if ((EEPROM.read(1) != 0) && (EEPROM.read(1) != 0xFF)){
    
  ip[0] = EEPROM.read(1);
  ip[1] = EEPROM.read(2);
  ip[2] = EEPROM.read(3);
  ip[3] = EEPROM.read(4);
  
  }
  
  delay(100);
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
  //BlinkM_beginWithPower();  
  //BlinkM_stopScript( blinkm_addr );  
}
void loop()
{
  
  
  
  
  int IP1=ip[0];
  int IP2=ip[1];
  int IP3=ip[2];
  int IP4=ip[3];
  
  
  
  Client client = server.available();
  if (client) {
    boolean current_line_is_blank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (inString.length() < maxLength) {
          inString += c;
         }        
        
        
        if (c == '\n' && current_line_is_blank) {

          if (inString.indexOf("?")>0){
          
           int IP1p = inString.indexOf("IP1");
           int IP2p = inString.indexOf("IP2");
           int IP3p = inString.indexOf("IP3");
           int IP4p = inString.indexOf("IP4");
           int End = inString.indexOf("H");
          
           String IP1S = inString.substring((IP1p+4), (IP2p-1));
           String IP2S = inString.substring((IP2p+4), (IP3p-1));
           String IP3S = inString.substring((IP3p+4), (IP4p-1));
           String IP4S = inString.substring((IP4p+4), (End-1));
          
            IP1 = stringtoint(IP1S);
            IP2 = stringtoint(IP2S);
            IP3 = stringtoint(IP3S);
            IP4 = stringtoint(IP4S);
          
           EEPROM.write(1, IP1);
           EEPROM.write(2, IP2);
           EEPROM.write(3, IP3);
           EEPROM.write(4, IP4);
          
           /*
           Serial.print(IP1);
           Serial.print(".");
           Serial.print(IP2);
           Serial.print(".");
           Serial.print(IP3);
           Serial.print(".");
           Serial.print(IP4);
           */
           /*
           int IP1 = atoi(IP1S.toCharArray());
           int IP2 = atoi(IP2S.toCharArray());
           int IP3 = atoi(IP3S.toCharArray());
           int IP4 = atoi(IP4S.toCharArray());
          
          
          
          
          
           Serial.println(IP1+"."+IP2+"."+IP3+"."+IP4);
            
            */
            
          }
          
          
          
          /*
          if (inString.contains("?")) {
           int Pos_r = inString.indexOf("r");
           int Pos_g = inString.indexOf("g");
           int Pos_b = inString.indexOf("b");
           int End = inString.indexOf("H");
           r = atoi(inString.substring((Pos_r+2), (Pos_g-1)));
           g = atoi(inString.substring((Pos_g+2), (Pos_b-1)));
           b = atoi(inString.substring((Pos_b+2), (End-1)));  
           BlinkM_fadeToRGB( blinkm_addr, r, g, b );
         }
          */
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html><head></head><body>");
          client.println("<h1>Network Settings</h1>");
          client.println("<h3>Saved IP is:  ");
          client.print(IP1);
          client.print(".");
          client.print(IP2);
          client.print(".");
          client.print(IP3);
          client.print(".");
          client.print(IP4);
          client.println("</h3>");
          client.println("<form method=get>IP:.......<input type=text size=2 name=IP1 MAXLENGTH=3><input type=text size=2 name=IP2 MAXLENGTH=3><input type=text size=2 name=IP3 MAXLENGTH=3><input type=text size=2 name=IP4 MAXLENGTH=3>&nbsp;<BR>");      
          //client.println("<form method=get>Subnet:<input type=text size=2 name=S1 MAXLENGTH=3><input type=text size=2 name=S2 MAXLENGTH=3><input type=text size=2 name=S3 MAXLENGTH=3><input type=text size=2 name=S4 MAXLENGTH=3>&nbsp;<BR>");  
          client.println("<input type=submit value=submit></body></html>");
          break;
        }
        if (c == '\n') {
          current_line_is_blank = true;
        } else if (c != '\r') {
          current_line_is_blank = false;
        }
      }
    }
    delay(1);
    inString = "";
    client.stop();
  }
}
 
 
 
 int stringtoint(String &s){
            int n;
           char carray[4];
           s.toCharArray(carray, sizeof(carray));
           n = atoi(carray);
           return(n);
 }
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Posted by: chris.moe Posted on: 20.10.2010 at 19:06:02
It works with:

Client client = 0;

But now I have the same problem with the DEBUG flag. It has to be disabled because if it is enables the Arduino hangs.  

hgs75 do you get it working with debug flag?  
Yes, it works with the debug flag, but now I am using an arduino FIO and a WIZ812, use this diagram to make the conections:
http://www.pjrc.com/teensy/td_libs_Ethernet.html
The code works fine, I am testing with modscan32, and I still working with the 0018 IDE.  smiley-grin
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I am trying to use this with IDE 21 and Arduino uno. I have integrated it with the remarks earlier posted, but I can not get it to work. Ping does not work.

When I use another ethernet example it seems to work.

What could be wrong. Could someone post his file that works with IDE21.

Thanks
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Can you post your code please
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Is there a way to add an attachment without using the code insert. The code is rather big as you know Using the code insert would make it unreadable.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I dont think so
Logged

Pages: 1 [2] 3   Go Up
Jump to: