ParkSoCal

Bases: KPFTranslatorFunction

Parks SoCal. This includes setting AUTONOMOUS to "Manual", closing the enclosure, and parking the solar tracker.

ARGS:

None

Source code in kpf/socal/ParkSoCal.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class ParkSoCal(KPFTranslatorFunction):
    '''Parks SoCal. This includes setting AUTONOMOUS to "Manual", closing the
    enclosure, and parking the solar tracker.

    ARGS:
    =====
    None
    '''
    @classmethod
    def pre_condition(cls, args, logger, cfg):
        pass

    @classmethod
    def perform(cls, args, logger, cfg):
        SoCalStopAutonomous.execute({})
        log.info('Parking SoCal')
        kpfsocal = ktl.cache('kpfsocal')
        kpfsocal['ENCCMD'].write('close')
        kpfsocal['EKOSLEW'].write(0)
        kpfsocal['EKOTARGALT'].write(0)
        kpfsocal['EKOTARGAZ'].write(0)
        kpfsocal['EKOMODE'].write(0)
        kpfsocal['EKOSLEW'].write(1)
        kpfsocal['EKOSLEW'].write(0)

    @classmethod
    def post_condition(cls, args, logger, cfg):
        kpfsocal = ktl.cache('kpfsocal')
        timeout = cfg.getfloat('SoCal', 'park_time', fallback=300)
        expr = '($kpfsocal.ENCSTA == 1) '
        expr += 'and ($kpfsocal.EKOHOME == 1)'
        success = ktl.waitFor(expr, timeout=timeout)
        if success is False:
            raise FailedToReachDestination('SoCal failed to park completely')