The RMC has a fixed amount of memory for user programs, and a fixed amount of time allocated for processing user programs. When verifying or downloading the programming, RMCTools calculates the required memory size and time usage and displays them in the Verify Results Window.
Exceeding Program Memory Size or Time Usage
Program Memory Size
If the memory size limit is exceeded, an error is logged in the Verify Results window, and RMCTools will not allow the programs to be downloaded to the controller. See Reducing the Program Size below for tips on how to fit your programming into the memory.
Program Time Limit
If the time limit is exceeded, an error is logged in the Verify Results window, and RMCTools will not allow the programs to be downloaded to the controller. See Reducing the Programming Time Usage below for tips on how to reduce the required programming time. You can also choose to override the time limits by enabling High Control Loop Utilization in the Control Loop Page.
Reducing the Program Size
The RMCs have the following amount of memory allocated for the entire Programming node which includes the user programs, Program Triggers, and plot templates. Notice that for RMC75/150 controllers, the Tuning Wizard borrows about 8KB when it needs to run. Therefore, if a controller has less than 8KB of free program memory, the Tuning Wizard may not be able to download its program. On RMC200 controllers, the Tuning Wizard does not affect the program memory.
CPU |
Firmware |
Program |
Approximate |
RMC75E |
3.40.0+ |
496KB |
1000-2000 |
3.32.0-3.39.4 |
240KB |
500-1000 |
|
2.03-3.31.3 |
112KB |
300-500 |
|
1.00-2.02 |
64KB |
150-250 |
|
RMC75E |
3.32.0+ |
240KB |
500-1000 |
2.03-3.31.3 |
112KB |
300-500 |
|
1.00-2.02 |
64KB |
150-250 |
|
RMC75S |
All |
64KB |
150-250 |
RMC75P |
All |
64KB |
150-250 |
RMC150E |
3.40.0+ |
496KB |
1000-2000 |
Pre-3.40.0 |
240KB |
500-1000 |
|
RMC200 |
All |
1024 KB |
2000-4000 |
If the user programs exceed the amount of memory available, it means that you simply have too much programming. You may be able to slightly reduce the size by disabling expression logging as described below, but you may need to reduce the amount of programming.
Tips for Reducing the Programming Size
If you have disabled expression logging and your program image is still too large, you must reduce the amount of programming. Here are some tips:
Offload to the PLC
If your machine has a master controller, such as a PLC, offload some of the programming to it.
Use arrays
If you are performing many consecutive similar steps, consider using arrays and loops instead.
Disable expression assignment Logging
By default, the RMC logs the results of assignment expressions and COPY statements in the Expression (113) command. If your programs use this command, you may be able to decrease the program size by disabling expression logging. You can still log the results of certain calculations by using the LOG_EVENT function.
To disable the expression logging, in the Programming Properties dialog, on the Verify page, uncheck Log Expression Statements.
Reducing the Programming Time Usage
RMCTools calculates the worst-case scenario of how much time of any control loop may be taken up by program calculations, which includes the user programs and the Program Triggers. Each task can process one step per loop, and conceivably, a step can be run on more than one task simultaneously. RMCTools finds the steps that take the longest to process, and multiplies that time by the number of tasks the step could possibly run on. The time allocated for the user programs varies with RMC as described in the Time Allocation section below.
When verifying programs, you can view the execution times that RMCTools calculates for the user programs. This can help you determine what steps are causing problems:
On the Tools menu, choose Options.
On the Programming page, in the Verify Results section, uncheck Automatically close Verify Results...
Click OK.
On the Programming menu, choose Verify Programs. If no errors exist, the Output pane will list the maximum estimated loop time that the user programs and Program Triggers will take, and break it down into each user program step.
There are several ways of reducing the programming time usage:
Decrease the number of tasks allocated
This may significantly reduce the worst-case calculations of the time usage.
Assign user programs to tasks
By assigning user programs to only run on certain tasks, or only one task at a time, you can significantly reduce the worst-case time usage. To assign user programs to tasks, use the Tasks page on the User Program Properties dialog.
Disable expression assignment logging
This is described in the Reducing the Program Size section above. If your programs use the Expression (113) command heavily, this may yield a large improvement. Notice that this will reduce both memory size and time usage.
Disable Immediate Command logging
This may significantly reduce the time if your programs use many immediate commands. To disable immediate command logging, in the Programming Properties dialog, on the Verify page, uncheck Log Immediate Commands. If this option is disabled, immediate commands issued from user programs will not be reported in the Event Log.
Break down complicated steps into multiple smaller steps
When verifying the user programs, the Verify Results window can provide timing details on the longest steps. Break these steps into smaller steps.
Increase the loop time
Increasing the Loop Time on the Control Loop Page will allocate more time for the user programs.
Simplify the programming
In general, the simpler the programming, the less time it takes. Simplifying the programming may include such things as revisiting your overall programming approach, or offloading some of the programming to the machine's master controller, such as a PLC.
The time allocated for the user programs varies with RMC and the selected loop time. The time allocated is displayed in the Verify Results window after verifying the programming.
|
|
Loop Time |
|||||
CPU |
Firmware |
4000 µs |
2000 µs |
1000 µs |
500 µs |
250 µs |
125 µs |
RMC75E |
All |
3000 µs |
1200 µs |
600 µs |
210 µs |
75 µs |
— |
RMC75S
|
Pre-3.31.0 |
3000 µs |
1000 µs |
500 µs |
210 µs |
— |
—
|
RMC75S
|
3.31.0+ |
3000 µs |
1000 µs |
500 µs or 250 µs (note 1) |
210 µs or 25 µs (note 2) |
— |
—
|
RMC75P
|
Pre-3.31.0 |
3000 µs
|
1000 µs |
500 µs |
210 µs |
— |
—
|
RMC75P
|
3.31.0+ |
3000 µs |
1000 µs |
500 µs or 250 µs (note 1) |
210 µs or 25 µs (note 2) |
— |
—
|
RMC75P
|
3.31.0+ |
3000 µs or 2500 µs (note 3) |
1000 µs or 600 µs (note 4) |
250 µs or 25 µs (note 5) |
25 µs |
— |
—
|
RMC150E |
All |
3200 µs |
1200 µs |
500 µs or 400 µs (note 6) |
200 µs |
75 µs |
—
|
RMC200 CPU40 |
All |
3200 µs |
1200 µs |
500 µs or 400 µs or 300 µs (note 7) |
200 µs or 150 µs (note 8) |
75 µs |
50 µs |
RMC200 CPU20L |
All |
3200 µs |
1200 µs |
500 µs |
200 µs or 150 µs (note 9) |
75 µs |
50 µs |
Note 1: If the RMC75S/RMC75P has 1 control axis with up to 3 reference axes, or 2 control axes with no reference axes, 500 µs is allocated. Otherwise, 250 µs is allocated.
Note 2: If the RMC75S/RMC75P has 1 control axis and up to 1 reference axis, 210 µs is allocated. Otherwise, 25 µs is allocated.
Note 3: If the RMC75P has 1 control axis with up to 1 reference axis, 3000 µs is allocated. Otherwise, 2500 µs is allocated.
Note 4: If the RMC75P has 1 control axis with up to 1 reference axis, 1000 µs is allocated. Otherwise, 600 µs is allocated.
Note 5: If the RMC75P has 1 control axis and up to 1 reference axis, 250 µs is allocated. Otherwise, 25 µs is allocated.
Note 6: If the RMC150 has 3 or fewer axes with any number of reference axes, or 4 control axes with up to 2 reference axes, 500 µs is allocated. Otherwise 400 µs is allocated.
Note 7: The allocated
user program is dependent on total estimated axis processing time assuming
full load:
Total Axis Processing Time |
Allocated User Program Time |
0 - 294 µs (approx. 0-28 control axes) |
500 µs |
295 - 394 µs (approx. 29-38 control axes) |
400 µs |
> 394 µs (approx. 39 or more control axes) |
300 µs |
See the Loop Time topic for details on how the total axis processing time is determined.
Note 8: The allocated
user program is dependent on total estimated axis processing time assuming
full load:
Total Axis Processing Time |
Allocated User Program Time |
0 - 94 µs (approx. 0-9 control axes) |
200 µs |
> 94 µs (approx. 10 or more control axes) |
150 µs |
See the Loop Time topic for details on how the total axis processing time is determined.
Note 9: The allocated
user program is dependent on total estimated axis processing time assuming
full load:
Total Axis Processing Time |
Allocated User Program Time |
0 - 86 µs (approx. 0-7 control axes) |
200 µs |
> 86 µs (approx. 8 or more control axes) |
150 µs |
See the Loop Time topic for details on how the total axis processing time is determined.
See Also
Verifying | Programming Overview | Plot Capacities | Curve Storage Capacity
Copyright © 2024 Delta Computer Systems, Inc. dba Delta Motion