Go Down

Topic: Encoder counts on Wincc (Read 63 times) previous topic - next topic

Tiger4545

Good day.

I use the following code that responsible for encoder counting and send the reading to WINcc using ARDUINO mega and Ethernet shield .

The encoder counts correctly on serial monitor but no response on Wincc
Could you help in that issue?


Code: [Select]




#include <SPI.h>
#include <Ethernet.h>

#include "Mudbus.h"

Mudbus Mb;


float asd;

volatile unsigned int temp, counter = 0; //This variable will increase or decrease depending on the rotation of encoder
   
void setup() {
 
  uint8_t mac[]     = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
  uint8_t ip[]      = { 192, 168, 1, 8 };
  uint8_t gateway[] = { 192, 168, 1, 1 };
  uint8_t subnet[]  = { 255, 255, 255, 0 };
  Ethernet.begin(mac, ip, gateway, subnet);

 
 
 
  Serial.begin (9600);

  pinMode(2, INPUT_PULLUP); // internal pullup input pin 2
 
  pinMode(3, INPUT_PULLUP); // internalเป็น pullup input pin 3
//Setting up interrupt
  //A rising pulse from encodenren activated ai0(). AttachInterrupt 0 is DigitalPin nr 2 on moust Arduino.
  attachInterrupt(0, ai0, RISING);
   
  //B rising pulse from encodenren activated ai1(). AttachInterrupt 1 is DigitalPin nr 3 on moust Arduino.
  attachInterrupt(1, ai1, RISING);
  }
   
  void loop() {
  // Send the value of counter
  if( counter != temp ){
  Serial.println (counter);
  temp = counter;
  asd=temp;
  }
 
     Mb.Run();
     Mb.R[1] = analogRead(asd);

   
  }

   
  void ai0() {
  // ai0 is activated if DigitalPin nr 2 is going from LOW to HIGH
  // Check pin 3 to determine the direction
  if(digitalRead(3)==LOW) {
  counter++;
  }else{
  counter--;
  }
  }
   
  void ai1() {
  // ai0 is activated if DigitalPin nr 3 is going from LOW to HIGH
  // Check with pin 2 to determine the direction
  if(digitalRead(2)==LOW) {
  counter--;
  }else{
  counter++;
  }
  }



sterretje

Don't expect people to know what WINcc is.

The way you included mudbus indicates that it might be something that you wrote yourself. If so, show the relevant files as well, else provide a link.
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

Tiger4545

http://forum.arduino.cc/index.php?topic=327333.0

this is the reference.
Wincc is SCADA Siemens.
The encoder code is working good and the communication between Arduino and Wincc is detected via TCPIP.
I think the problem is in mapping of the registers between arduino and wincc

Go Up