Two Speed Synchro/Resolver Examples
Edit this on GitLab
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
For 16-bit, single speed operation, the LSB weight is (1/2^16)-1*360 = 0.00550 degrees For 17-bit, ratio of 2 multi-speed, the LSB weight is (1/2^17)-1*360 = 0.00274 degrees For 18-bit, ratio of 4 multi-speed, the LSB weight is (1/2^18)-1*360 = 0.00137 degrees For 19-bit, ratio of 8 multi-speed, the LSB weight is (1/2^19)-1*360 = 0.00068 degrees For 20-bit, ratio of 16 multi-speed, the LSB weight is (1/2^20)-1*360 = 0.00034 degrees For 21-bit, ratio of 32 multi-speed, the LSB weight is (1/2^21)-1*360 = 0.00017 degrees For 22-bit, ratio of 64 multi-speed, the LSB weight is (1/2^22)-1*360 = 0.00008 degrees For 23-bit, ratio of 128 multi-speed, the LSB weight is (1/2^23)-1*360 = 0.00004 degrees For 24-bit, ratio of 256 multi-speed, the LSB weight is (1/2^24)-1*360 = 0.00002 degrees 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.