Note: For a discussion on splines themselves and how the RMC can use them, see Spline Overview.
There are three ways to download splines to the RMC:
Use the RMCWin Curve Tool.
This method is useful in two cases. First, while experimenting with splines the curve tool is useful for drawing splines, sending them to the RMC, and executing them. Second, in applications where each axis has at most one spline, which never changes, the spline can be written using the curve tool and then saved to Flash memory. After this point, RMCWin is no longer needed to execute the spline because the spline is stored in the RMC.
Use the Communication Module and the Spline Download Area.
This method is ideal for most spline applications. An area of 4096 words of data can be written to in large blocks to efficiently send the RMC spline interval and point information. However, the Spline Download Area is only supported for the following communication modules: Modbus Plus, PROFIBUS-DP in Message Mode, and all Ethernet protocols. The Digital I/O and PROFIBUS-DP in Compact Mode do not support the Spline Download Area. This method is described in greater detail below.
Use the Communication Module and Repeated New Spline Point and Set Spline Interval/End Segment Commands.
This method is supported by all communication modules but requires issuing a new command (1) for every spline point, (2) for each time the interval between points changes, and (3) to indicate that the spline download is finished. This means that it does take a fair amount of time to download a spline using this method, but applications that only download the splines infrequently work well with this mode. However, if your communication card supports the Spline Download Area (see above), it should be used as it is easier to implement and faster to execute.
Spline Download Speeds
New Spline Point (X) and Set Spline Interval/End Segment (T) commands:
When used to perform final calculations, this command may not finish immediately. This command will process up to four points immediately. If more points are in the segment, then an additional control loop will be required for every seven points in the segment. Therefore, a 50-point segment on a module with a one-millisecond control loop time will require eight (8) milliseconds to process. The Acknowledge bit of the Status word will toggle when this command is completed. For example, six 50-point splines (one spline per axis) would take 8 milliseconds total, assuming all start at the same time.
Spline Download Area (Ethernet or Serial):
When writing to the Spline Download Area on RMC-ENET or RMC-SERIAL modules, the calculations are done by the communication module and therefore happen VERY quickly, significantly faster than the X/T commands. For short splines, it won't be much faster since the processors need to communicate with one another, but for longer splines, it'll be significantly faster.
Spline Download Area (PROFIBUS and Modbus Plus):
The final calculations are done using the same algorithm as the X/T commands, and therefore they'll be done 4 points in the first loop and 7 per each subsequent loop. Notice that for the Spline Download Area, each axis's spline is not done at the same time.
Spline Download Area Details
Note: The Spline Download Area requires RMC100 CPU control firmware dated 19991124 or later (or beta firmware dated 19990910B or later). The Spline Download Area over Ethernet also requires Ethernet firmware dated 19990831 or later.
The Spline Download Area is a block of 4096 registers in the RMC Register Map. RMC Ethernet, RMC Modbus Plus, and RMC PROFIBUS-DP in Message Mode use the register map. Therefore, the Spline Download Area is not available with Digital I/O or the PROFIBUS-DP module in Compact Mode.
The assignment of these registers depends on the following:
The number of axes that can have splines in the RMC. To determine the number of axes that can have splines in the RMC, start RMCWin and count all axis columns except auxiliary pressure and differential force channels. You can determine how an axis/channel is assigned in RMCWin by double-clicking on the axis name.
The value of the first Spline Download Area register.
If the value is 0 or 1, the Spline Download Area's 4096 registers are statically and evenly divided among the interval tables and point tables for each axis. This format is called Static Spline Download Area format.
If the value is 2, the interval and point locations are dynamically sized and then positioned one after the other. The intervals for each spline are equal. This format makes the data in the Spline Download Area more compact and can significantly reduce the time it takes to download the splines to the RMC, at the expense of added complexity. This format is called Dynamic Spline Download Area format.
Note: The Static and Dynamic Spline Download Area formats apply to the entire table. Either the entire table is Static or it is dynamic.
Examples:
RMC100-M1-ENET
This module has two spline-capable axes, because MDT axes are never auxiliary pressure or force channels.
RMC100-Q2-A1-MB+
This module can have between 4 and 8 spline-capable axes. The quadrature axes are never auxiliary pressure or force channels, and therefore spline-capable. If the 12-bit analog module is configured as four auxiliary pressure channels, then none are spline capable, and therefore the RMC has a total of four spline-capable axes. If the 12-bit analog module is configured as four position- or velocity -reference channels, then all are spline capable, and therefore the RMC has a total of eight spline-capable axes.
Once you know the number of spline-capable axes, and whether you want to use the Static or Dynamic spline download area format, refer to the appropriate table below for the map of Spline Download Area register addresses:
Static Format with 2 Spline-Capable Axes
Register Description |
Modbus |
PROFIBUS |
Allen-Bradley |
DL205/405 |
Siemens |
Axis 0 Interval Table Format |
12289 |
12288 |
N48:0 |
V10000 |
DB192.DBW0 |
Axis 0 Interval Table* |
12290-13312 |
12289-13311 |
N48:1-N51:255 |
V10001-11777 |
DB192.DBW2-2046 |
Axis 1 Interval Table Format |
13313 |
13312 |
N52:0 |
V12000 |
DB193.DBW0 |
Axis 1 Interval Table* |
13314-14336 |
13313-14335 |
N52:1-N55:255 |
V12001-13777 |
DB193.DBW2-2046 |
Axis 0 Point Count |
14337 |
14336 |
N56:0 |
V14000 |
DB200.DBW0 |
Axis 0 Point Table** |
14338-15360 |
14337-15359 |
N56:1-N59:255 |
V14001-15777 |
DB200.DBW2-2046 |
Axis 1 Point Count |
15361 |
15360 |
N60:0 |
V16000 |
DB201.DBW0 |
Axis 1 Point Table** |
15362-16384 |
15361-16383 |
N60:1-N63:255 |
V16001-17777 |
DB201.DBW2-2046 |
* The Interval Table contains 1022 intervals max.
** The Point Table contains 1023 points max.
Static Format with 3 or 4 Spline-Capable Axes
Register Description |
Modbus |
PROFIBUS |
Allen-Bradley |
DL205/405 |
Siemens |
Axis 0 Interval Table Format |
12289 |
12288 |
N48:0 |
V10000 |
DB192.DBW0 |
Axis 0 Interval Table* |
12290-12800 |
12289-12799 |
N48:1-N49:255 |
V10001-10777 |
DB192.DBW2-1022 |
Axis 1 Interval Table Format |
12801 |
12800 |
N50:0 |
V11000 |
DB193.DBW0 |
Axis 1 Interval Table* |
12802-13312 |
12801-13311 |
N50:1-N51:255 |
V11001-11777 |
DB193.DBW2-1022 |
Axis 2 Interval Table Format |
13313 |
13312 |
N52:0 |
V12000 |
DB194.DBW0 |
Axis 2 Interval Table* |
13314-13824 |
13313-13823 |
N52:1-N53:255 |
V12001-12777 |
DB194.DBW2-1022 |
Axis 3 Interval Table Format |
13825 |
13824 |
N54:0 |
V13000 |
DB195.DBW0 |
Axis 3 Interval Table* |
13826-14336 |
13825-14335 |
N54:1-N55:255 |
V13001-13777 |
DB195.DBW2-1022 |
Axis 0 Point Count |
14337 |
14336 |
N56:0 |
V14000 |
DB200.DBW0 |
Axis 0 Point Table** |
14338-14848 |
14337-14847 |
N56:1-N57:255 |
V14001-14777 |
DB200.DBW2-1022 |
Axis 1 Point Count |
14849 |
14848 |
N58:0 |
V15000 |
DB201.DBW0 |
Axis 1 Point Table** |
14850-15360 |
14849-15359 |
N58:1-N59:255 |
V15001-15777 |
DB201.DBW2-1022 |
Axis 2 Point Count |
15361 |
15360 |
N60:0 |
V16000 |
DB202.DBW0 |
Axis 2 Point Table** |
15362-15872 |
15361-15871 |
N60:1-N61:255 |
V16001-16777 |
DB202.DBW2-1022 |
Axis 3 Point Count |
15873 |
15872 |
N62:0 |
V17000 |
DB203.DBW0 |
Axis 3 Point Table** |
15874-16384 |
15873-16383 |
N62:1-N63:255 |
V17001-17777 |
DB203.DBW2-1022 |
* The Interval Table contains 510 intervals max.
** The Point Table contains 511 points max.
Static Format with 5 to 8 Spline-Capable Axes
Register Description |
Modbus |
PROFIBUS |
Allen-Bradley |
DL205/405 |
Siemens |
Axis 0 Interval Table Format |
12289 |
12288 |
N48:0 |
V10000 |
DB192.DBW0 |
Axis 0 Interval Table* |
12290-12544 |
12289-12543 |
N48:1-N48:255 |
V10001-10377 |
DB192.DBW2-510 |
Axis 1 Interval Table Format |
12545 |
12544 |
N49:0 |
V10400 |
DB193.DBW0 |
Axis 1 Interval Table* |
12546-12800 |
12545-12799 |
N49:1-N49:255 |
V10401-10777 |
DB193.DBW2-510 |
Axis 2 Interval Table Format |
12801 |
12800 |
N50:0 |
V11000 |
DB194.DBW0 |
Axis 2 Interval Table* |
12802-13056 |
12801-13055 |
N50:1-N50:255 |
V11001-11377 |
DB194.DBW2-510 |
Axis 3 Interval Table Format |
13057 |
13056 |
N51:0 |
V11400 |
DB195.DBW0 |
Axis 3 Interval Table* |
13058-13312 |
13057-13311 |
N51:1-N51:255 |
V11401-11777 |
DB195.DBW2-510 |
Axis 4 Interval Table Format |
13313 |
13312 |
N52:0 |
V12000 |
DB196.DBW0 |
Axis 4 Interval Table* |
13314-13568 |
13313-13567 |
N52:1-N52:255 |
V12001-12377 |
DB196.DBW2-510 |
Axis 5 Interval Table Format |
13569 |
13568 |
N53:0 |
V12400 |
DB197.DBW0 |
Axis 5 Interval Table* |
13570-13824 |
13569-13823 |
N53:1-N53:255 |
V12401-12777 |
DB197.DBW2-510 |
Axis 6 Interval Table Format |
13825 |
13824 |
N54:0 |
V13000 |
DB198.DBW0 |
Axis 6 Interval Table* |
13826-14080 |
13825-14079 |
N54:1-N54:255 |
V13001-13377 |
DB198.DBW2-510 |
Axis 7 Interval Table Format |
14081 |
14080 |
N55:0 |
V13400 |
DB199.DBW0 |
Axis 7 Interval Table* |
14082-14336 |
14081-14335 |
N55:1-N55:255 |
V13401-13777 |
DB199.DBW2-510 |
Axis 0 Point Count |
14337 |
14336 |
N56:0 |
V14000 |
DB200.DBW0 |
Axis 0 Point Table** |
14338-14592 |
14337-14591 |
N56:1-N56:255 |
V14001-14377 |
DB200.DBW2-510 |
Axis 1 Point Count |
14593 |
14592 |
N57:0 |
V14400 |
DB201.DBW0 |
Axis 1 Point Table** |
14594-14848 |
14593-14847 |
N57:1-N57:255 |
V14401-14777 |
DB201.DBW2-510 |
Axis 2 Point Count |
14849 |
14848 |
N58:0 |
V15000 |
DB202.DBW0 |
Axis 2 Point Table** |
14850-15104 |
14849-15103 |
N58:1-N58:255 |
V15001-15377 |
DB202.DBW2-510 |
Axis 3 Point Count |
15105 |
15104 |
N59:0 |
V15400 |
DB203.DBW0 |
Axis 3 Point Table** |
15106-15360 |
15105-15359 |
N59:1-N59:255 |
V15401-15777 |
DB203.DBW2-510 |
Axis 4 Point Count |
15361 |
15360 |
N60:0 |
V16000 |
DB204.DBW0 |
Axis 4 Point Table** |
15362-15616 |
15361-15615 |
N60:1-N60:255 |
V16001-16377 |
DB204.DBW2-510 |
Axis 5 Point Count |
15617 |
15616 |
N61:0 |
V16400 |
DB205.DBW0 |
Axis 5 Point Table** |
15618-15872 |
15617-15871 |
N61:1-N61:255 |
V16401-16777 |
DB205.DBW2-510 |
Axis 6 Point Count |
15873 |
15872 |
N62:0 |
V17000 |
DB206.DBW0 |
Axis 6 Point Table** |
15874-16128 |
15873-16127 |
N62:1-N62:255 |
V17001-17377 |
DB206.DBW2-510 |
Axis 7 Point Count |
16129 |
16128 |
N63:0 |
V17400 |
DB207.DBW0 |
Axis 7 Point Table** |
16130-16384 |
16129-16383 |
N63:1-N63:255 |
V17401-17777 |
DB207.DBW2-510 |
* The Interval Table contains 254 intervals max.
** The Point Table contains 255 points max.
Dynamic Format
The Interval Table contains 254 intervals max. The maximum number of points per axis is as follows:
1 - 2 spline capable axes: 1024
3 - 4 spline capable axes: 512
5 - 8 spline capable axes: 256
The Spline Download Area register map for Modbus, TI505, and PROFIBUS is given in the table below. For Allen Bradley, Soft PLC, DL205/405, and Siemens s7-300-400, add the Register # to the first Spline Download Area register:
|
First Register |
Allen Bradley and Soft PLC |
N48:0 |
DL205/405 |
V10000 |
Siemens s7-300-400 |
DB192.DBW0 |
Register Description |
Register # |
Modbus |
PROFIBUS |
SDA Format - must be 2 |
0 |
12289 |
12288 |
Max Points per Axis* (MaxPts) |
1 |
12290 |
12289 |
Axis 0 Interval |
2 |
12291 |
12290 |
Axis 0 Actual Point Count |
3 |
12292 |
12291 |
Axis 0 Point #0 |
4 |
12293 |
12292 |
Axis 0 Point #(MaxPts - 1) |
2 + MaxPts +1 |
12291 + MaxPts +1 |
12290 + MaxPts +1 |
Axis 1 Interval |
2 + MaxPts + 2 |
12291 + MaxPts + 2 |
12290 + MaxPts + 2 |
Axis 1 Actual Point Count |
2 + MaxPts + 3 |
12291 + MaxPts + 3 |
12290 + MaxPts + 3 |
Axis 1 Point #0 |
2 + MaxPts + 4 |
12291 + MaxPts + 4 |
12290 + MaxPts + 4 |
Axis 1 Point #(MaxPts - 1) |
2 + (MaxPts+2) +(MaxPts-1) |
12291+ (MaxPts+2) +(MaxPts-1) |
12290+ (MaxPts+2) +(MaxPts-1) |
Axis 2 Interval |
2 + (MaxPts+2)*2 |
12291+ (MaxPts+2)*2 |
12290+ (MaxPts+2)*2 |
Axis 3 Interval |
2 + (MaxPts+2)*3 |
12291+ (MaxPts+2)*3 |
12290+ (MaxPts+2)*3 |
Axis 4 Interval |
2 + (MaxPts+2)*4 |
12291+ (MaxPts+2)*4 |
12290+ (MaxPts+2)*4 |
Axis 5 Interval |
2 + (MaxPts+2)*5 |
12291+ (MaxPts+2)*5 |
12290+ (MaxPts+2)*5 |
Axis 6 Interval |
2 + (MaxPts+2)*6 |
12291+ (MaxPts+2)*6 |
12290+ (MaxPts+2)*6 |
Axis 7 Interval |
2 + (MaxPts+2)*7 |
12291+ (MaxPts+2)*7 |
12290+ (MaxPts+2)*7 |
Interval Table Format
This single-register field defines the format of the Interval Table. The two formats defined are as follows:
Format |
Interval Table |
0 |
The interval between each spline point is equal. Only the first Interval Table entry is used. It is used for the intervals between all points. If the first Interval Table format register is 0, it specifies that Static Spline Download Area format is to be used. You must use the Static Spline Download Area Format Tables. |
1 |
One Interval Table entry is used for each interval between points. If the first Interval Table format register is 0, it specifies that Static Spline Download Area format is to be used. You must use the Static Spline Download Area Format Tables. |
2 |
The value 2 is only valid in the first register of the Spline Download Area. It specifies that Dynamic Spline Download Area format is to be used. You must use the Dynamic Spline Download Area Format table. |
Interval Table
These registers are used to determine the distance between each point in the spline segment. The distance is in terms of milliseconds if the spline will be executed based on time, or counts the master moves if the spline will be geared to an axis or digital I/O counter. If the Interval Table Format is 0, then only the first register is used from this table, but it is used for the interval between every pair of points. If the Interval Table Format is 1, then as many intervals as the number of points that are in the spline minus one are used (since there are n-1 intervals between n points).
Note: The contents of this table are not used until the Point Table is filled in. Generally the Point Count and Point Table are downloaded after the Interval Table is downloaded. However, this table must be filled in prior to downloading values to the Point Table.
Point Count
This register indicates the number of points in the spline.
Point Table
This table must be downloaded to last. When a number of points equal to the Point Count has been downloaded to this area, the spline segment is calculated and added to the given axis’s spline table. If this operation is successful, the Acknowledge bit of the Status Word is toggled. If the operation fails, the Parameter Error bit of the Status Word is set and the Last Parameter Error register is set with the error number.
Example 1
In this spline segment, all points are equidistant along the X (time or geared) axis:
Assuming this segment is being downloaded to axis 0 on an RMC with just two spline-capable axes, here is the register assignment:
Address |
Register |
Value |
12288 |
I.T. Format |
0 (equal intervals) |
12289 |
Interval Table – 0 |
T (interval between each point pair) |
14336 |
Point Count |
5 |
14337 |
Point Table – 0 |
P0 |
14338 |
Point Table – 1 |
P1 |
14339 |
Point Table – 2 |
P2 |
14340 |
Point Table – 3 |
P3 |
14341 |
Point Table – 4 |
P4 |
Example 2
In this spline segment, the distance along the X (time or geared) axis between points varies:
Assuming this segment is being downloaded to axis 0 on an RMC with just two spline-capable axes, here is the register assignment:
Address |
Register |
Value |
12288 |
I.T. Format |
1 (separate intervals) |
12289 |
Interval Table – 0 |
T0 (distance between P0 and P1) |
12290 |
Interval Table – 1 |
T1 (distance between P1 and P2) |
12291 |
Interval Table – 2 |
T2 (distance between P2 and P3) |
12292 |
Interval Table – 3 |
T3 (distance between P3 and P4) |
14336 |
Point Count |
5 |
14337 |
Point Table – 0 |
P0 |
14338 |
Point Table – 1 |
P1 |
14339 |
Point Table – 2 |
P2 |
14340 |
Point Table – 3 |
P3 |
14341 |
Point Table – 4 |
P4 |
Spline Download Procedure
Write to the Interval Table Format register to indicate the format of the Interval Table.
Write to the Interval Table. If the Interval Table Format register is zero (0), you will only need to write to the first register in the table. If the Interval Table Format is one (1), you will need to write to as many registers are there are points minus one (that is, for n points, there are n-1 intervals between them).
Write to the Point Count register. This will be the count of the points to be downloaded in the spline segment.
Write to the Point Table. When the last point in the spline (determined by the value of the Point Count register) is written, the spline segment will become part of the axis’s spline table. When this operation is complete, the Acknowledge bit in the Status word for that axis will toggle.
If you wish to download another spline segment, only step 4 needs to be repeated. Any of steps 1, 2, and 3 can be repeated, but only need to be if their values are going to change. For example, you wish to change the number of points in the next segment, or you wish to change the intervals between points.
When writing the above registers, neither timing nor number of writes used are critical. For example, step 1 can precede step 2 by a few milliseconds or a few minutes. Or, every register can be written separately, or more commonly, steps 1 and 2 will be accomplished in a single write, and steps 3 and 4 will be accomplished in a second write. Of course, there may be cases where you are downloading more points than your PLC allows registers to be written at once. In these cases, it is perfectly acceptable to use multiple writes.
Important Notes
The spline is actually added to the RMC axis’s spline table when the last spline point has been downloaded.
If there is an error while downloading the spline, a parameter error will be triggered. This means that the parameter error bit will be set in the Status word for the axis, and the Parameter Error value will be stored for retrieval by RMCWin or by reading the ”r;Last Parameter Error” registers. See the RMC Register Map and Parameter Error Values topics for details on these registers.
When the spline has been added to the RMC axis’s spline table successfully, the Acknowledge bit in the Status word will be toggled.
If there is already a spline segment in the axis’s spline table, then the following rules will apply (these are the same rules that apply when downloading using X and T commands). If there is more than one spline segment in the spline table, the new spline segment will be added to the end. If there are no spline segments in the spline table, the new spline segment will be added and made the next spline. If there is exactly one spline segment already in the spline table, then the new spline will be added after the existing spline segment if the existing spline segment is being currently followed or never has been followed; otherwise, the old spline segment will be deleted and the new spline segment will be added and made the next spline.
You can simultaneously download splines to all spline-capable axes at one time.
It is important that you avoid trying to download a spline from RMCWin’s curve tool while downloading through the Spline Download Area.
Copyright (c) 1997-2015 by Delta Computer Systems, Inc.