Jump to content

Industrial counter on incremental encoder position drift


Recommended Posts

Geschrieben

Hello everybody,

 

I'm working on an industrial special machine and i want to control some part of it with bricklet. My machine can do round trip on a rail with a motor and its coder. the PLC keep the control of all the power, I just send him order with a RS232 bricklet.

For a first test i want to go to 30 000 counts, wait 2 seconds and then go back to my initial position ( 0 ) and repeat forever. Here is the issue : my machine drift in a single direction about some centimeters each time. When I control it directly by the PLC i haven't that and I don't understand why it does it with the counter bricklet.

the coder is a sew eurodriver EH1C, I connect CH0- and CH2- to GND and CH0+ and CH2+ to A & B

Here is my code :

 

from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_rs232_v2 import BrickletRS232V2
from tinkerforge.brick_master import BrickMaster
from tinkerforge.bricklet_industrial_counter import BrickletIndustrialCounter
import time
 
HOST = "localhost"
PORT = 4223
UID = "6eSrKP" # Change XXYYZZ to the UID of your Master Brick
UID_RS = "W9P"
UID_COUNTER = "QV8"
 
ipcon = IPConnection() # Create IP connection
rs232 = BrickletRS232V2(UID_RS, ipcon) # Create device object
counter = BrickletIndustrialCounter(UID_COUNTER, ipcon) # Create device object
ipcon.connect(HOST,PORT)
 
counter.set_counter_configuration(counter.CHANNEL_0,
                                      counter.COUNT_EDGE_RISING,
                                      counter.COUNT_DIRECTION_EXTERNAL_DOWN,
                                      counter.DUTY_CYCLE_PRESCALER_1,
                                      counter.FREQUENCY_INTEGRATION_TIME_1024_MS)
counter.set_all_counter_active([True, False, False, False])
counter.set_counter(0, 0)
 
i = 0
speed = 40
 
while True :
   
    message = [chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(speed),chr(2)] # the first 7 control IR power the 8th the speed and the 9th the direction
    rs232.write(message)
    time.sleep(2)
 
    message = [chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(speed),chr(1)]
    rs232.write(message)
    while counter.get_counter(0)<75000:
        print(counter.get_counter(0))
 
    message = [chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(speed),chr(2)]
    rs232.write(message)
    time.sleep(2)
 
    message = [chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(i),chr(speed),chr(0)]
    rs232.write(message)
    while counter.get_counter(0)>0:
        print(counter.get_counter(0))

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...