12강 / 20강
받침 먼저, 액체 나중 — 설정값을 코드가 움직인다
캐스케이드 제어
/mech 9강에서 논문의 요령을 봤습니다 — 받침을 목표 너머로 몰았다가
되돌린다. 이것을 제어공학의 이름으로 부르면 캐스케이드 제어(cascade control) 입니다.
핵심은 바깥 고리의 출력이 안쪽 고리의 설정값이라는 것입니다. 11강의 PID 하나로는 안 되는 이유가 이것입니다.
구조만 바꿔도 한 사이클에 수 초가 줄고, 서른 사이클이면 분 단위가 됩니다.
Python
브라우저에서 실행
코드로 옮길 때 지킬 것 둘
① dt 는 재서 쓴다
“0.1초마다 돈다” 고 가정하면 안 됩니다. 파이썬은 그것을 보장하지
않습니다(2강).
time.monotonic() 으로 실제 지난 시간을 재어
적분·미분항에 넣으십시오.② 바깥 고리는 느리게
바깥이 안쪽보다 빠르면 두 고리가 서로 싸웁니다.
안쪽이 자리를 잡을 틈을 줘야 합니다 — 보통 다섯 배 이상 느리게 돕니다.
두 고리 모두 파이썬으로 넉넉합니다. 안쪽이 1~10 Hz, 바깥이 0.2~1 Hz 면 되고, 이것은 2강에서 본 “주기가 허용 지터의 열 배 이상이면 안전” 규칙을 한참 만족합니다.
🤔 확인 문제
캐스케이드 제어에서 바깥 고리의 출력은 무엇이 되는가?
해설 바깥 고리는 액체를 직접 밀 수 없습니다. 대신 받침의 목표를 고쳐 씁니다. 이것이 “받침 먼저, 액체 나중” 의 제어공학 이름입니다.
🤔 확인 문제
PID 에서
dt 를 상수로 가정하면 안 되는 까닭은?해설 2강에서 본 지터가 여기서 값을 청구합니다.
time.monotonic() 으로 실제 지난 시간을 재어 쓰면 루프가 조금 늦어도 제어가 흔들리지 않습니다.