Komet Posted June 10, 2022 at 09:16 AM Share Posted June 10, 2022 at 09:16 AM 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)) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.