Related Products: SD Module Family (SD1, SD2, SD3, SD4, SD5), DS Module Family (DS1, DS2, DS3, DS4, DS5, DS6, DS7, DS8, DS9, DSN)
Two Speed Synchro/Resolver Examples
I read the manual but I still don’t understand how 2-Speed Measurement data for Synchro/Resolver is calculated and presented. Can you expand on the 2-speed operation with some examples?
Below is a detailed explanation of how 2-speed Measurement data for Synchro/Resolver is calculated and presented: When a ‘ratio’ is programmed (the ratio is set as the same ratio as the physical Synchro or resolver under test), then the ‘combined’ angle reading for both the coarse and fine channel will be calculated and presented in the fine channel output register. If the coarse channel register is read, it will provide the coarse angle measurement. If the fine channel register is read, it will have the ‘combined’ coarse/fine angle measurement (which is a more accurate representation of the coarse channel).
For Single Speed (Ratio=1) applications, read Data High register of that channel.
For Multi-Speed (2-speed), better than 16-bit resolution is available by utilizing Data High and Data Low registers combined to determine the measured angle with up to 24-bit resolution.
First, read Data Low word, then Data High word of the two speed paired registers. The Data Low word must be read first, which ‘latches’ the Data High word – this ensures both the Data High word and Data Low word are ‘Synchronized’ regardless of the time span between word register reads
| Resolution | Ratio | LSB weight (degrees) |
|---|---|---|
| 16-bit | 1 (single speed) | (1/(2^16 − 1)) × 360 = 0.00550 |
| 17-bit | 2 | (1/(2^17 − 1)) × 360 = 0.00274 |
| 18-bit | 4 | (1/(2^18 − 1)) × 360 = 0.00137 |
| 19-bit | 8 | (1/(2^19 − 1)) × 360 = 0.00068 |
| 20-bit | 16 | (1/(2^20 − 1)) × 360 = 0.00034 |
| 21-bit | 32 | (1/(2^21 − 1)) × 360 = 0.00017 |
| 22-bit | 64 | (1/(2^22 − 1)) × 360 = 0.00008 |
| 23-bit | 128 | (1/(2^23 − 1)) × 360 = 0.00004 |
| 24-bit | 256 | (1/(2^24 − 1)) × 360 = 0.00002 |
Note: calculations rounded to nearest ten-thousandth of a degree
Example:
Two-speed ratio = 16:1(channel pair defined as CH3, CH4) Two-speed channel pair CH4 Hi/CH4 Lo CH3 HI = 0x0800 (not required for two speed) CH4 HI = 0x0800 CH4 Lo = 0xE3E0 (only the upper byte(E3) is used, ignore the lower byte(E0) in the calculation. The procedure to read two speed angle:
Read CH4 Lo register which is 0xE3E0 in the example case.
Read CH4 Hi register which is 0x0800 in the example case.
Calculate the two-speed combined angle by concatenating the data from CH4 HI and CH4 Lo registers. So, we have 0x800E3 and its decimal number is 524515. Two speed angle = (524515/((2^24)-1)) × 360 = 11.25487 degrees. This angle is the combined two-speed angle and is providing up to 20 bit of resolution (ratio 16:1). In NAI (typical) DLL, PC73SD4_GetTwoSpeedAngle, (example) the two speed angle is calculated as // Read Angle High Resolution Lower 16 Bit Word binAngle = PC73SD4_READREG_ISA( Card, AngHresReg[(Channel/2)-1][PAGE], AngHresReg[(Channel/2)-1][OFFSET] ); tempAngle = (double)(0xffff & binAngle) * LSB/65536.0; binAngle = PC73SD4_READREG_ISA( Card, AngleReg[Channel-1][PAGE], AngleReg[Channel-1][OFFSET] ); // Convert Angle to double *Angle = tempAngle + (double)(0xffff & binAngle) * LSB;
Where LSB is defined as 0.0054931640625.
The math in the DLL yielded the following:
Read the two speed pair low data = 0xE3E0 = 58336 × 0.005493164 / 65536 = 0.004889.
Read the two speed pair low data = 0xE3E0 = 58336 × 0.005493164 / 65536 = 0.004889.
Add the combined angle = coarse + fine = 11.249999872+0.004889 = 11.254888872
Note: The DLL uses 16-bit calculation for the fine angle and since the lower byte in the fine register is ignore (don’t care), the math works out correctly.
GEN5 synchro/resolver measurement modules
GEN5 synchro/resolver measurement modules add a new “Combined” 32-bit register where the valid data is in the upper 24 bits. See the Operations Manual for details.
