Фронты START/STOP обрабатываются при принятии командного слова CAN/RS, а окончание импульса обслуживается таймером. STOP имеет приоритет, перекрытие выходов исключено, сохранена защита от самопуска при включении. Загрузка параметров больше не подменяет живые команды нагрузки. Добавлены подробные русские комментарии во все собственные C-модули и основные заголовки, описание поведения и host-тест автомата. Обновлены файлы прошивки. Полная сборка TI 22.6.1.LTS и тесты пройдены; проверка на физической плате не выполнялась.
161 lines
3.7 KiB
C
161 lines
3.7 KiB
C
/* Ìàêðîñû îáðàùàþòñÿ ê îáùåé êàðòå modbus, íå ê ëîêàëüíûì äàííûì.
|
|
* START/STOP ÷èòàþòñÿ ÷åðåç volatile. Âõîäÿùàÿ çàïèñü ñëîâà 127
|
|
* äîëæíà ïðîéòè UMP_commands_write äëÿ ôèêñàöèè ôðîíòà.
|
|
*/
|
|
#ifndef PACKAGE
|
|
#define PACKAGE
|
|
|
|
#define BALSAM 165
|
|
|
|
#if BALSAM == 166
|
|
#define OBOROT REVERSE
|
|
#endif
|
|
#if BALSAM == 165
|
|
#define OBOROT STRAIGHT
|
|
#endif
|
|
#if BALSAM == 164
|
|
#define OBOROT REVERSE
|
|
#endif
|
|
|
|
#define ONBOARDCALIBER
|
|
#define TERMOPAIR 14
|
|
#define CURRENTOS (TERMOPAIR*2)
|
|
|
|
//-----------------------------------------------
|
|
#define adr_TRN1 1
|
|
#define adr_TRN2 2
|
|
#define adr_POW1 3
|
|
#define adr_POW2 4
|
|
#define adr_LOA1 5
|
|
#define adr_LOA2 6
|
|
#define adr_ENG1 7
|
|
#define adr_PLT3 8
|
|
#define adr_SHKF 9
|
|
//-------------------
|
|
#define adr_REC1 0xff
|
|
#define adr_REC2 0xff
|
|
#define adr_INV1 0xff
|
|
#define adr_INV2 0xff
|
|
#define adr_BRK1 0xff
|
|
#define adr_BRK2 0xff
|
|
#define adr_ENG2 0xff
|
|
#define adr_PLT1 0xff
|
|
#define adr_PLT2 0xff
|
|
#define adr_DSTR 0xff
|
|
|
|
//-----------------------------------------------
|
|
#define dsk_COMM 1
|
|
#define dsk_BKSD 2
|
|
#define dsk_BKST 3
|
|
#define dsk_EPLT 4
|
|
#define dsk_SHKF 5
|
|
#define dsk_LOAD 6
|
|
//-----------------------------------------------
|
|
|
|
//-----------------------------------------------
|
|
#define TPL_TRN 10
|
|
#define TPL_POW 8
|
|
#define TPL_ENG 8
|
|
#define TPL_SHK 15
|
|
//-----------------------------------------------
|
|
|
|
#define Modbus ((WORDE *)modbus)
|
|
|
|
#define start_error 0x00
|
|
#define start_data 0x18
|
|
#define start_hi_edge 0x30
|
|
#define start_lo_edge 0x48
|
|
|
|
#define sens_error ((ERROR *)(modbus+start_error))
|
|
#define sens_data (modbus+start_data)
|
|
#define sens_hi_edge (modbus+start_hi_edge)
|
|
#define sens_lo_edge (modbus+start_lo_edge)
|
|
|
|
#define InputRep0 Modbus[0].bit.bitA
|
|
#define InputRep1 Modbus[0].bit.bitB
|
|
#define InputRep2 Modbus[0].bit.bitC
|
|
|
|
#define Inputs Modbus[0x10]
|
|
#define Buttons Modbus[0x16]
|
|
|
|
#define Jumpers modbus[0x17]
|
|
|
|
#define bTestLamp Buttons.bit.bit0
|
|
#define bSecretBt Buttons.bit.bit1
|
|
#define bTermoCal Buttons.bit.bit2
|
|
|
|
#define Cancount (modbus+0x60) // ïàóçà ìåæäó I ïîñûëêàìè CAN
|
|
#define Bright (modbus+0x62) // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
|
|
#define Brightness modbus[0x62] // àðêîñòü ñèãíàëüíûõ ëàìïî÷åê
|
|
|
|
/* Íå âðåìà!
|
|
#define DAC_go modbus[0x64] // íà÷àëî çàðàäà
|
|
#define DAC_stop modbus[0x65] // êîíåö çàðàäà
|
|
*/
|
|
|
|
#define m_FAST 0
|
|
#define m_SLOW 1
|
|
|
|
#define Zero_lev (modbus+0x70)
|
|
|
|
#define DAC_20 modbus[0x6E]
|
|
#define DAC_04 modbus[0x6F]
|
|
|
|
#define DAC_max() modbus[0x78] // 751//0x0000 804
|
|
#define DAC_min() modbus[0x79] // 2162//0x0FFF 2373
|
|
#define DAC_cal() modbus[0x7A]
|
|
|
|
#define Caliber (modbus+0x74)
|
|
|
|
#define K380_1 Caliber[0]
|
|
#define K380_2 Caliber[1]
|
|
|
|
#define KPOW_1 Caliber[0]
|
|
#define KPOW_2 Caliber[1]
|
|
#define KPOW_3 Caliber[2]
|
|
#define KPOW_4 Caliber[3]
|
|
|
|
#define NormaU Caliber[8]
|
|
#define DeltaU Caliber[9]
|
|
|
|
#define TCaliber (modbus+0x78)
|
|
|
|
#define K300_1 TCaliber[0]
|
|
#define K300_2 TCaliber[1]
|
|
#define K400_1 TCaliber[2]
|
|
#define K400_2 TCaliber[3]
|
|
|
|
#define K100_1 TCaliber[0]
|
|
#define K100_2 TCaliber[1]
|
|
#define K150_1 TCaliber[2]
|
|
#define K150_2 TCaliber[3]
|
|
|
|
#define K100_D TCaliber[0]
|
|
#define K150_D TCaliber[1]
|
|
|
|
#define LastMode Modbus[126].all
|
|
|
|
/* Ñëîâî ìåíÿåòñÿ èç CAN/RS; ÷òåíèå êîìàíäû íå äîëæíî êåøèðîâàòüñÿ. */
|
|
#define Commands (((volatile WORDE *)modbus)[127].all)
|
|
#define cTestLamp Modbus[127].bit.bit0
|
|
#define cDefParam Modbus[127].bit.bit1
|
|
#define cSaveParam Modbus[127].bit.bit2
|
|
#define cLoadParam Modbus[127].bit.bit3
|
|
|
|
#define cTermoCal Modbus[127].bit.bit4
|
|
#define cKoefCalc Modbus[127].bit.bit5
|
|
|
|
#define cUMPreset (((volatile WORDE *)modbus)[127].bit.bit6)
|
|
#define cUMPstart (((volatile WORDE *)modbus)[127].bit.bit7)
|
|
#define cInitDac Modbus[127].bit.bit8
|
|
#define cCalibrDac Modbus[127].bit.bit9
|
|
|
|
#define cSecretBt Modbus[127].bit.bitA
|
|
#define cLiteFire Modbus[127].bit.bitB
|
|
#define cRawMeat Modbus[127].bit.bitC
|
|
|
|
#define cReset Modbus[127].bit.bitF
|
|
|
|
#endif //PACKAGE
|
|
|