Jump to content
OMRON Forums

Time critical PLCC 0


Tieval
 Share

Recommended Posts

Hi all,

 

I'm using ABB drives so I am unable to use position compare. Instead, I'm using the following PLCC to generate a pulse output every 0.5mm:

 

OPEN PLCC 0 CLEAR

 

#define TRIGOUT L1

L1->Y:$78402,8

#define MOVE L2

L2->X:$130,17

#define YENC F1

F1->D:$10B

#define ENA P81

#define INCREMENT P82

#define STARTENC P83

#define GRID P84

#define RATIO P85

#define TRIGPOS P86

#define TRIGNEG P87

#define TRIGCOUNT P88

#define PULS P89

#define LINESTART P90

#define LINEEND P91

 

While (ENA = 1)

If (MOVE = 0)

STARTENC = (LINESTART*RATIO)*3072

INCREMENT = (GRID*RATIO)*3072

TRIGPOS = STARTENC + INCREMENT

TRIGNEG = STARTENC - INCREMENT

PULS = (LINEEND-LINESTART)/GRID

TRIGCOUNT = 0

Else

If (YENC > TRIGPOS) Or(YENC < TRIGNEG)

TRIGOUT=1

TRIGCOUNT = TRIGCOUNT + 1

TRIGOUT=0

TRIGPOS = TRIGPOS + INCREMENT

TRIGNEG = TRIGNEG - INCREMENT

EndIf

EndIf

EndWhile

CLOSE

 

This works great whilst the system is on. If I leave the system on, it is consistent. However, if the system is reset or the PMAC reset, the timing changes slightly. I have set I5 to 3 and I8 to 0. Am I doing something wrong?

 

Thanks

Link to comment
Share on other sites

  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Hi all,

 

I'm using ABB drives so I am unable to use position compare. Instead, I'm using the following PLCC to generate a pulse output every 0.5mm:

 

OPEN PLCC 0 CLEAR

 

#define TRIGOUT L1

L1->Y:$78402,8

#define MOVE L2

L2->X:$130,17

#define YENC F1

F1->D:$10B

#define ENA P81

#define INCREMENT P82

#define STARTENC P83

#define GRID P84

#define RATIO P85

#define TRIGPOS P86

#define TRIGNEG P87

#define TRIGCOUNT P88

#define PULS P89

#define LINESTART P90

#define LINEEND P91

 

While (ENA = 1)

If (MOVE = 0)

STARTENC = (LINESTART*RATIO)*3072

INCREMENT = (GRID*RATIO)*3072

TRIGPOS = STARTENC + INCREMENT

TRIGNEG = STARTENC - INCREMENT

PULS = (LINEEND-LINESTART)/GRID

TRIGCOUNT = 0

Else

If (YENC > TRIGPOS) Or(YENC < TRIGNEG)

TRIGOUT=1

TRIGCOUNT = TRIGCOUNT + 1

TRIGOUT=0

TRIGPOS = TRIGPOS + INCREMENT

TRIGNEG = TRIGNEG - INCREMENT

EndIf

EndIf

EndWhile

CLOSE

 

This works great whilst the system is on. If I leave the system on, it is consistent. However, if the system is reset or the PMAC reset, the timing changes slightly. I have set I5 to 3 and I8 to 0. Am I doing something wrong?

 

Thanks

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...