디지털 제어를 할 때의 소프트웨어 구조를 모델링해 보았다

이거 뭐야?

Qita: 디지털 제어용 소프트웨어 아키텍처
앞서 쓴 기사의 내용이 너무 시가적이어서 실증편을 준비했다.
이번 입력과 출력의 전압은 전압원에 의해 고정된다
주파수 변환기의 전류를 제어해 보세요.
어떤 모델을 하셨어요?
이런 느낌으로 움직인다.나는 ADC의 시기가 상술한 괴문서와 같다는 것을 알고 싶다.
MIL 단계에서는 끊긴 계산 시간을 따라잡았는지는 표현되지 않았지만.
분리된 매개변수를 사용하여 제어 루프의 Plant 전환
예상한 응답이 표시되었는지 확인할 수 있을 것 같습니다. 
아마도 죽을 때의 오차 때문일 것이다. 나는 목표치에 완전히 도달하지 못했다.
참고로 이 모형은 이미 Giithub로 업그레이드되었다.창고는 여기 있습니다.
https://github.com/mathworks/adc-synchronized-with-pwm
Simulink에서 만든 변환기의 동작을 다시 한 번 확인하세요.좋은 느낌 아니야?ADC에서 지정한 시간(반송파의 골짜기)에서 샘플링 값을 업데이트합니다. 이것은 전류 평균값과 일치합니다pic.twitter.com/4GQOViuTQh — griffin921 (@griffin921) November 20, 2021

규격은 이런 느낌


fsw = 10e3; %Hz
PWM_Resolution = 0.001;
CarrierSampleTime = 1 / fsw * PWM_Resolution;
DeadTime = 1/fsw/1000;

L = 1e-3;%[H]
RdsON_FET = 10e-3;%[Ω]
VinDC = 100;%[V]
VoutDC = 50;%[V}

회로는 이런 느낌


컨트롤 디자인은 이런 느낌br/>
Plant는 FET의 DC 저항(Rd ON)과 센서의 L이 1회 지연을 초래할 수 있음을 나타낸다p>

%Control Design
s = tf('s');

%制御対象回路の伝達関数をモデリング
Plant = 1/(L*s + RdsON_FET);

%制御の帯域幅を設定
TargetCntF = 2*pi*500;
Tcnt = 1 / TargetCntF;

%内部モデル原理に基づきコントローラーを設計
Controller = 1 / Plant * 1 / (Tcnt * s);

%等価な伝達関数を持つPIパラメータを算出
Ti = 1/TargetCntF/RdsON_FET;
Kp = L/RdsON_FET / Ti;
PICnt = (Kp*Ti*s+1) / Ti/s;

이 애니메이션에서 맨 아래의 운영자 계수기 계곡에 ADC 정시 펄스(중간 도표)가 생성되어 동기화 샘플링(상단 도표)을 볼 수 있다.br/>




pwm 해상도 0.1% 설정br/>
디스크 제어 중, 카운터에서 타이머를 제작할 수 있습니다

아날로그 타이머는 끊임없는 연속 파형을 만들어 이상적으로 어떤 폭의 펄스도 만들 수 있습니다


이번 규격에서 PWM 펄스 폭의 최대치는

100usec죠?극단적으로 말하면 시뮬레이션이면duty가 0.000001%면 그 폭의 펄스가 나타난다sup id="fnref1"> 1

그러나 숫자는 매 시계마다 하나의 계수이기 때문에 표시할 수 있는 최소 시간 단위는 반송파 시계에 달려 있다p>

이기 때문에 이것보다 더 상세한 펄스는 디지털 제어에서 기본적으로 나올 수 없습니다! 2

이 보도의 그림은 매우 이해하기 쉽다br/>
https://blog.boochow.com/article/raspberry-pi-hw-pwm-driver-2.html




있을 것 같아서요.시뮬레이션의 구체적인 표현이 어느 정도인지도 관계가 있습니다.

이 일대에서 시뮬레이션할 때 시뮬레이션 속도도 관계가 있습니다.


예를 들어 이 모델에서 타이머와 참조의 크기를 비교하면

PWM의 펄스를 High, Low로 설정할 시기가 결정됨br/>
이때 계산할 최소 단계 수는 PWM 해상도에 따라 달라집니다.


모델이 언제 일어설 수 있는지, 그 모델을 시동을 걸지 않으면 몰라요. 그래서 해볼 수밖에 없어요.br/>
이때 시뮬레이션 시간을 쉽게 숨기면 상승 시기였던 시간을 놓치고 회로의 동작에 영향을 줄 수 있다p>

PWM 해상도를 임의로 지정하지 않으면 시뮬레이터의 가변 보행구해기는 도대체 얼마나 많은 보행시간이 걸리는지 알 수 있습니다. 따라서 오차를 줄이려면 상당히 작은 보행길이로 시뮬레이션을 실행해야 합니다.br/>
이런 조작은 시뮬레이션 속도를 낮출 수 있다



Simuluink는 논리에 따라 시뮬레이션의 최소 절차로 고정된 계산 영역을 판단할 수 있습니다.



이렇게 하면 최소 걸음 연산의 논리에 대해 매번 연산을 진행하고, 이외에 연산의 시뮬레이션 값이 허용 오차 안에 있으면 걸음 수를 증가하여 연산을 진행한다.br/>
(이 근처는 아직 공부 중이야... 틀리면 못 맞춘다)




이렇게 Simuluink는 각 영역의 계산 주기를 색깔로 표시합니다br/>
예를 들어 가장 작은 걸음으로 고정된 것은 회색이다br/>
이곳의 논리가 너무 복잡하면 매번 무거운 연산을 진행합니다

위에서 말한 바와 같이 전체적인 시뮬레이션 속도가 떨어질 수 있다br/>
나는 당신이 가장 작은 단계로 고정된 구역을 최소화하고 다른 계산 주기로 연산을 실행할 수 있다고 생각한다p>




위에서 말한 바와 같이 Simuluink에 직접 제어를 쓰면 Rate Transition 블록이 지정한 속성에 따라 반영 시간이 달라집니다br/>
이것은 실행 시간이 다른 논리를 연결할 때 변환하는 모듈입니다
이번의 스위치 주파수는 10kHz의 역수이고 100us는 스위치 주기이다
100us 주기마다 녹색 제어 논리 영역을 계산합니다.


Rate Transition 블록에서 연속적으로 실행되는 Planto와 연결,

이때 "데이터 전송 확인(최대 지연)"은 최대 지연으로 전파됩니다.br/>
지연을 제어하는 최악값으로 시뮬레이션을 하려면 편리할 거예요.br/>
1주기 내에 연산이 순조롭게 끝나고Duty의 반응도 다음 주기를 따라잡을 수 있다면 최악이라도 이 응답보다 더 좋은 응답이어야 한다br/>
(단지 시간을 지체하는 영향일 뿐)




진지한 보도가 됐어!







  1. 여기 아니야!이렇게 토로하는 사람은 상당히 높은 수준이다.대박이다.확실히 엄밀히 말하면 거짓말이지만, 전압의 전파는 지연되지 않는 것을 전제로 하니, 내가 여기서 말하도록 허락해 주십시오. 



  2. 네, 그것도 꼭 그렇지는 않아요.지연기 사용의 고해상도 PWM에 관해서는 모터 제어용 마이크로컴퓨터의 데이터 테이블을 보십시오.하이엔드 모델에는 이런 기능이 있다. 




좋은 웹페이지 즐겨찾기