2 positioning mode example – Rockwell Automation 57C421B Pulsetach Input Module/DCS 5000/AutoMax User Manual

Page 38

Advertising
background image

4Ć16

Speed Mode Example (Continued)

4105

INT_R@ = TRUE

\! Enable timer interrupt

4110

CCLK_EN@ = TRUE

\! Enable CCLK (1 CCLK driver per rack)

5000

!

5001

!ăPlace additional initialization software here.

5002

6000

6001

!ăThe next statment synchronizes the task to the external

6002

!ăevent via the interrupt. Task execution will be suspended

6003

!ăuntil the interrupt occurs. When the interrupt occurs, if

6004

!ăthis task is the highest priority task waiting to execute,

6005

!ăit will become active. If it is not the highest priority

6006

!ătask, it will remain suspended until all higher priority

6007

!ătasks have finished executing at which point it will then

6008

!ăbecome active.

6010

CALL SCAN_LOOP( TICKS=9, EVENT=COUNTER_EVENT )

7000

7001

!

7002

!

7003

!ăThis example assumes that 32767 or fewer counts will be

7004

!ăreceived in the 50 msec. scan because statement 10000 only

7005

!ăreferences the least significant register (1) on the

7006

!ăregister.

10000

CALL PULSE_MULT( INPUT= COUNT%, MULTIPLIER= 16385, ăăăăăăăăăăă&

OUTPUT= COUNTER_VALUE% )

32767

END

4.4.2

Positioning Mode Example

The following is an example of a BASIC task that handles interrupts

from the module. All variables declared as COMMON are assumed

to have previously been defined during configuration.
In the example below, the module generates an interrupt every time

it accumulates the number of pulses indicated by the compare

register. Additional tasks or additional code in this task must be

written to take specific action.

1

2

!ăPOSITIONING MODE EXAMPLE

3

!ăTASK NAME: PG_COMP

4

!ăPRIORITY: 10

5

!

1000

COMMON COUNT%

\!ăCounter data

1005

COMMON LOW_COMP%

\!ăComparator data

1010

COMMON ISCR%

\!ăInterrupt status and control

1015

COMMON RESET@

\!ăCounter reset

1020

COMMON CNTR_EQ_RST@ \!ăComparator equal interrupt reset

1025

COMMON EQU_INT@

\! Comparator equal int. enable

1030

COMMON CLR_MOD1@

\! Counter clear condition

1035

COMMON CLR_MOD2@

\! Counter clear condition

1040

COMMON CCLK_EN@

\!

1200

LOCAL LIMIT_SWITCH%(3)

\!ăTable of limit switch positions

1205

LOCAL INDEX%

\!ăIndex of limit switch interrupt

1210

LOCAL I%

\!ăIndex of next limit switch interrupt

1215

LOCAL INT_SERVICE0%

\!ăCounter for interrupt service 0

1220

LOCAL INT_SERVICE1%

\!ăCounter for interrupt service 1

1225

LOCAL INT_SERVICE2%

\!ăCounter for interrupt service 2

1230

LOCAL INT_SERVICE3%

\!ăCounter for interrupt service 3

3000

!

3001

!ăThe following statement connects the name COUNTER_EVENT

3002

!ăto the interrupt defined in ISCR%. The event name should

3003

!ăbe as descriptive as possible. The watchdog timeout has

3004

!ăbeen disabled because the event is not periodic.

3005

3006

3007

3010

EVENT NAME=COUNTER_EVENT, INTERRUPT_STATUS=ISCR%,

&

TIMEOUT=DISABLED

4000

!

4001

!ăThe following statements initialize the counter and set

4002

!ăup the interrupt control. Constant clock" is enabled on

4003

!ăthis module. If there is more than one interrupt task in

4004

!ăa chassis, the task that enables constant clock" should

Advertising