I want to create all my program Python in Codesys.
This is the creation of the component to joint movements.
For the code Python in Visual Components I have this.
from vcScript import *
comp = getComponent()
sim = getSimulation()
servo = comp.findBehaviour("Servoevac")
servo2 = comp.findBehaviour("Servointro")
cont = comp.findBehaviour("ComponentContainer")
path = comp.findBehaviour("OutPath")
def OnRun():
creator = comp.findBehaviour('Default::Creator')
templateComponent = creator.TemplateComponent
templateComponent.createProperty(VC_STRING, 'ProdID')
comp.getProperty('Default::Creator::Limit').IsVisible = True
comp.getProperty('Default::Creator::Limit').Value = 0
comp.getProperty('Default::Creator::Interval').IsVisible = False
servo.moveImmediate(0)
servo2.moveImmediate(0)
PickSignal = comp.findBehaviour('Pick')
transSignal = comp.findBehaviour('TransitionSignal')
i = 0
PickSignal.signal(False)
for i in range (comp.Limit):
##
TimeWhenNextIsCreated = sim.SimTime + comp.Interval
Piece_beton = creator.create(True)
i+=1
Piece_beton.ProdID = comp.ProdID
delay(0)
Piece_beton.stopMovement()
delay(1)
##
servo.move(90)
servo2.move(90)
Piece_beton.startMovement()
delay(1.10)
Piece_beton.stopMovement()
delay(1) ##10
##
cont.grab(Piece_beton)
##
servo2.move(0)
servo.move(0)
delay(1)
'''
PickSignal.signal(True)
triggerCondition(lambda: getTrigger() == transSignal and not transSignal.Value)
PickSignal.signal(False)
'''
if TimeWhenNextIsCreated > sim.SimTime:
delay(TimeWhenNextIsCreated-sim.SimTime)
delay(3)
Piece_beton.delete()
I started the code under Codesys and I have this for the moment.
PROGRAM PLC_PRG
VAR
Limite: INT;
ProdID: WORD;
i : INT;
J1 : INT;
J2 : INT;
END_VAR
def OnRun():
creator = comp.findBehaviour('Default::Creator')
templateComponent = creator.TemplateComponent
templateComponent.createProperty(VC_STRING, 'ProdID')
comp.getProperty('Default::Creator::Limit').IsVisible = True
comp.getProperty('Default::Creator::Limit').Value = 0
comp.getProperty('Default::Creator::Interval').IsVisible = False
J1 := 0;
J2 := 0;
i := 0;
PickSignal.signal(False)
for i in range (comp.Limit):
TimeWhenNextIsCreated = sim.SimTime + comp.Interval
Piece_beton = creator.create(True)
i := i + 1;
Piece_beton.ProdID = comp.ProdID
T#0S;
Piece_beton.stopMovement()
T#1S;
J1 := 90;
servo2.move(90)
Piece_beton.startMovement()
delay(1.10)
Piece_beton.stopMovement()
T#1S;
cont.grab(Piece_beton)
servo2.move(0)
servo.move(0)
T#1S;
IF TimeWhenNextIsCreated > sim.SimTime THEN
delay(TimeWhenNextIsCreated-sim.SimTime);
T#3S;
Piece_beton.delete();
I’m new to Codesys and I know I’m far from finished but I’m a little lost on coding the servomotors under Codesys and the creation of the component.
I named J1 and J2 under Codesys my two joints to connect them to their values under Visual Components as the attached capture shows.
Can you help me for this problem please.
Thanks
Cordially