DSP 칩 TMS320F2812 기반 전력 품질 모니터링 단말 설계

업데이트: 12년 2023월 XNUMX일
DSP(디지털 신호 프로세서)는 오늘날의 엔지니어링 애플리케이션에서 점점 더 자주 사용됩니다. 여기에는 세 가지 주요 이유가 있습니다. 첫째, FFT 및 디지털 필터링과 같은 다양한 디지털 신호 처리 알고리즘이 가능한 강력한 컴퓨팅 기능이 있습니다. 둘째, 주요 DSP 제조사는 자사 제품에 대한 관련 IDE(통합 개발)를 설계했습니다. 환경), 이는 DSP 애플리케이션의 개발을 더욱 강력하게 만듭니다. 셋째, 높은 비용 성능을 가지고 있으며 강력한 성능과 저렴한 가격으로 절대적으로 경쟁력이 있습니다.

TI는 자사 DSP를 위한 통합 비주얼 개발 환경 CCS(CodeComposerStudio)를 설계했으며, DSP/BIOS는 CCS의 중요한 부분이다. 본질적으로 TMS320 시리즈 DSP 플랫폼을 기반으로 하는 실시간 운영 체제 커널이며 TI 실시간 소프트웨어의 핵심 부분이기도 합니다. technology-eXpressDSP 기술. DSP/BIOS에는 주로 멀티 스레드 커널, 실시간 분석 도구, 주변 장치 구성 라이브러리의 세 가지 측면이 포함됩니다.

1 시스템 기능 요구 사항

전력 품질 모니터링 터미널의 주요 기능은 전력망의 전력 품질을 모니터링하고 분석하는 것입니다(세 단계 전압 및 현재) 실시간. 주요 모니터링 변수는 전압 및 전류 유효값, 유효 및 무효 전력, 전압 주파수, XNUMX상 불평형, 각 고조파 전압 및 전류 함유율, 역률, 위상 편이 역률, 전압 변동, 장시간, Flicker for 짧은 시간.

시스템은 TI의 고성능 DSP 칩 TMS320F2812를 처리 코어로 선택하고 150MIPS 처리 속도는 시스템의 실시간 요구 사항을 충족하기에 충분합니다. 시스템 요구 사항에 따라 시스템은 다음과 같은 기능 모듈로 구분됩니다. 안내식 자가 점검 모듈, 수집 작업 실행 모듈, 전력 품질 데이터 전처리 모듈, 전력 품질 분석 운영 모듈, 데이터 저장 모듈, 통신 모듈, 인간-컴퓨터 상호 작용 모듈.

전통적인 프로그래밍 방법에 따르면 이러한 기능 모듈은 순차적 구조로 함께 구성되며 각 모듈의 코드에 의해 모듈 간의 호출 및 전환이 완료되므로 응용 프로그램의 모듈이 결합된 상태가 됩니다. 새 기능 모듈을 추가하거나 기존 기능 모듈을 수정하려면 관련 모듈의 호출 코드를 수정해야 할 뿐만 아니라 새 모듈도 원래 시스템의 시간 응답 특성에 분명히 영향을 미치므로 업그레이드 및 유지 관리가 매우 번거롭습니다.

DSP/BIOS의 출현은 응용 프로그램의 기능 모듈을 구성하는 또 다른 메커니즘을 제공합니다. 각 기능 모듈을 작업 스레드로 처리합니다. 구성 가능한 커널 서비스를 통해 각 작업 스레드는 시스템 스케줄러의 우선 순위에 따라 CPU 리소스를 다중화합니다. 각 작업 스레드는 동기화, 통신 및 데이터 교환 등을 조정합니다. 이 메커니즘은 애플리케이션의 유지 관리성을 향상시키고 보다 편리하고 고급 재테스트 수단을 제공합니다. 위의 특징에 따라 본 시스템은 DSP/BIOS를 실시간 커널로 채택하고 이를 기반으로 전체 시스템을 설계한다.

그림 1은 DSP/BIOS에서 시스템 기능 모듈의 분류를 보여줍니다.

2 DSP/BIOS 기반 소프트웨어 설계

2.1 실행 스레드 계획

시스템의 실시간 작동에서 일부 기능 기능은 외부 제어 신호에 의해 구동되거나 미리 결정된 기간 동안 실행됩니다. 따라서 실시간 시스템에서는 운전 모드와 기능 실행 주기가 매우 중요하다. DSP/BIOS는 멀티스레드 애플리케이션을 지원하며 스레드는 서로 다른 우선순위로 정의될 수 있습니다.

우선순위가 높은 스레드는 우선순위가 낮은 스레드를 인터럽트할 수 있으며, 서로 다른 스레드 간의 차단, 통신, 동기화 등의 상호작용은 하드웨어 인터럽트(HWI), 소프트웨어 인터럽트(우선순위가 높은 것부터 낮음)의 4가지 유형으로 나뉩니다. SWI), 태스크(TSK), 백그라운드 스레드(IDL). 전력 품질 모니터링 단말 시스템의 기능 요구 사항에 따라 시스템의 하위 기능 모듈은 위의 4가지 유형의 스레드로 구분됩니다.

먼저 HWI(하드웨어 인터럽트 스레드)를 예약합니다. 정상적인 상황에서 시스템의 주요 프로그램 코드는 소프트웨어 인터럽트 또는 작업에 배치됩니다. 그러나 외부 장치와 밀접하게 관련되어 있고 높은 실시간 성능이 필요한 기능 모듈의 프로그램 코드는 하드웨어 인터럽트에 배치되어야 합니다.

위의 요구 사항에 따라 시스템은 A/D 수집 작업 모듈 및 통신 모듈(수신)과 같은 하위 기능 모듈을 하드웨어 인터럽트 스레드로 설정합니다. A/D 획득은 이 시스템의 중요한 기반이며 시스템의 기본 하드웨어와 밀접하게 연결되어 있으므로 HWI(하드웨어 인터럽트 스레드)로 설정됩니다.

주요 프로세스는 A/D 칩이 특정 주파수에서 전력망의 실시간 데이터를 수집한 다음 DSP의 McPSP 포트와 통신하는 것입니다. DSP는 A/D 칩에서 수집한 데이터를 수신하여 온칩 RAM의 특정 영역에 저장하여 다른 스레드의 작동을 준비합니다. 통신 모듈은 RS485를 사용하여 시스템의 기본 하드웨어와 밀접하게 관련된 호스트 컴퓨터와 통신하며 DSP 자체의 SCI 인터페이스에는 최대 16워드의 FIFO만 있습니다. 수신된 데이터가 제때에 처리되지 않으면 데이터가 손실됩니다.

다음은 DSP/BIOS의 HWI 모듈 매개변수 설정에 대해 설명합니다. McBSP 직렬 포트의 수신 인터럽트는 HWI 모듈의 HWI_INT6 위치에 배치되고 수신 인터럽트의 ISR 함수 ad_rx_isr()는 HWI_INT6 인터럽트의 함수 호출 항목에 채워집니다. 동시에 McBSP에 응답할 때 DSP/RI-OS의 HWI 스케줄링 기능을 사용하도록 선택하십시오. 직렬 포트가 인터럽트를 수신하면 시스템이 자동으로 ad_rx_isr() 함수를 호출합니다. McBSP 직렬 포트 수신 인터럽트 설정은 그림 2에 나와 있습니다.

McBSP 직렬 포트 수신 인터럽트 설정과 유사하게 SCIA 수신 인터럽트가 통신 수신 인터럽트로 설정되고 해당 ISR 함수 scia_rx_isr()가 HWI_INT9 인터럽트의 함수 호출 항목에 채워집니다. 수신 인터럽트에 응답할 때 시스템은 처리를 위해 scia_rx_isr() 함수를 호출합니다. CLK 스레드는 HWI 하드웨어 인터럽트 스레드 중 하나이기도 합니다. 전체 시스템 작동에 대한 시간 참조를 제공하고, 사용자가 주기적으로 함수를 호출할 수 있는 방법을 제공하며, 일부 코드 평가 도구에 대한 시간 참조를 제공합니다. CLK 모듈은 DSP의 타이머 인터럽트에 전적으로 의존합니다. TMS320C2812는 DSP/BIOS용 타이머 2개를 제공합니다.

둘째, 소프트웨어 인터럽트 스레드(SWI)를 정렬합니다. 모든 소프트웨어 인터럽트는 DSP/BIOS 커널의 API 호출을 통해 시작됩니다. 제어를 용이하게 하기 위해 시스템은 각 SWI 개체에 대해 16비트 메일박스(메일박스)를 설정합니다. 이는 해당 메일박스를 조건부로 시작하는 데 사용할 수 있습니다. 소프트웨어 중단. 일반적인 작업보다 중요하고 자주 발생하는 하위 기능 모듈은 소프트웨어 인터럽트 스레드(SWI)에 정리할 수 있습니다. 하위 기능 모듈에는 전력 품질 데이터 전처리 모듈, 통신 모듈(전송)이 포함됩니다.

전력 품질 데이터 전처리 모듈은 주로 A/D 변환 결과의 후속 처리를 완료합니다. A/D 변환 결과를 전처리하는 작업이 필요합니다. A/D 칩은 획득을 위해 고정 주파수를 선택하지만 전력망의 주파수 fo는 변동하기 때문에 획득된 데이터에 대해 FFT 연산을 직접 수행하면 스펙트럼 누출이 발생합니다. 따라서 획득한 데이터를 전처리해야 합니다. 예를 들어, 1024사이클마다 1024포인트, 총 256개의 데이터에 대해 4포인트 FFT 연산을 수행한다. 4주기의 평균 주파수를 f, 주파수 분해능은 f/4, FFT 연산 결과는 f/4, 2f/4, 3f/4, f, 5f/4… 주파수의 강도라고 가정합니다. 따라서 전력망 주파수 fo가 변경되면 FFT 계산을 위한 전력망 데이터 주파수 f도 이에 따라 변경되므로 FFT 계산 전의 전력망 데이터 주파수 f는 항상 현재 전력망 주파수 fo와 일치합니다.

전력품질 데이터 전처리 모듈의 구체적인 동작은 A/D 변환 후 데이터를 보간하는 것이며, 보간 알고리즘은 선형 보간법을 사용한다. 검증 결과, 정격 전압 하에서 선형 보간 알고리즘으로 인한 FFT 연산 오차는 0 이내, 1‰ 이내입니다. 또한 모듈의 또 다른 기능은 사이클 내 전압의 유효 값을 계산하는 것입니다. 전압변동 및 장단기 플리커 계산에 필요한 데이터입니다. 통신 모듈(송신)은 상위 컴퓨터로 데이터를 보내는 역할을 담당합니다. 실시간 요구 사항은 높지 않지만 하드웨어의 최하위 계층과 밀접하게 관련되어 있으므로 소프트웨어 인터럽트 스레드로 설정됩니다.

인터럽트를 수신하는 직렬 포트가 발생하면 scia_rx_isr() 함수를 호출하여 수신된 데이터 명령을 처리하고 관련 명령에 따라 해당 전력 품질 데이터를 보냅니다. DSP/BIOS는 소프트웨어 인터럽트 개체에 대해 0~14의 우선순위를 제공합니다. 위 스레드의 중요도에 따라 수집 데이터 처리 스레드의 우선순위는 14로, 호스트 통신 스레드의 우선순위는 8로 설정되며, 기타 우선순위는 향후 소프트웨어 업그레이드를 위해 예약됩니다.

인터럽트 스레드(하드웨어 인터럽트 및 소프트웨어 인터럽트 포함)는 모두 동일한 스택에서 실행된다는 점에 유의해야 합니다. 우선순위가 높은 인터럽트가 발생하여 시스템이 작업을 전환하게 되면 우선순위가 높은 인터럽트 스레드가 우선순위가 낮은 인터럽트 스레드를 인터럽트합니다. 우선순위가 높은 인터럽트 스레드를 실행하기 전에 우선순위가 낮은 인터럽트 스레드의 관련 레지스터 내용이 저장되고, 우선순위가 높은 인터럽트 스레드가 실행된 후 레지스터는 원래 내용으로 복원되고 계속해서 원본 내용을 완료합니다. 우선순위가 낮은 스레드.

따라서 너무 많은 하드웨어 인터럽트나 소프트웨어 인터럽트 스레드가 설정되면 스택이 오버플로됩니다. 이러한 이유로 대부분의 작업 모듈은 작업 스레드에 배치되어야 합니다. 다음으로 작업 스레드(TSK)를 예약합니다. 대부분의 실시간 시스템과 마찬가지로 작업 스레드는 전체 시스템의 주요 구성 요소입니다. 작업 스레드의 기능은 독립적으로 또는 병렬로 실행될 수 있습니다. DSP/BIOS 작업 관리 모듈은 작업 스레드의 우선 순위에 따라 작업을 정렬하고 전환 기능을 통해 한 작업에서 다른 작업으로의 전환을 완료합니다.

각 작업에는 실행, 준비, 차단, 종료의 4가지 실행 상태가 있습니다. 15월 임무는 생성되며 항상 네 가지 상태 중 하나에 있습니다. DSP/BIOS는 각 작업 개체에 대해 -l부터 XNUMX까지의 우선 순위를 제공합니다. 작업은 엄격한 우선순위에 따라 실행되며, 동일한 우선순위의 작업은 "선착순" 원칙에 따라 실행 순서에 따라 배열됩니다. 주의할 점은 작업 스레드가 생성되면 해당 작업에 속하는 전용 스택도 동시에 생성되어야 한다는 점입니다. 스택은 지역 변수 또는 추가 함수 호출 중첩을 저장하는 데 사용됩니다.

태스크 스레드(TSK)에는 전력 품질 분석 계산 모듈, 데이터 저장 모듈, 인간-컴퓨터 상호 작용 모듈을 설정합니다. 전력 품질 분석 계산 모듈은 고조파 계산 작업 스레드, 전압 변동 계산 작업 스레드, 플리커 계산 작업 스레드의 세 부분으로 나눌 수 있습니다.

고조파 계산 작업 스레드는 주로 전처리된 전력 품질 데이터에 대한 FFT 연산을 수행하는 역할을 담당합니다. FFT 연산은 크게 비트 변환 연산, 윈도우잉 연산, 2를 기반으로 한 버터플라이 연산, 분할 베이스 연산, 제곱합 연산의 다섯 부분으로 구성됩니다. 전압 변동 계산 작업 스레드는 3분 이내에 그리드 전압 변동을 기록하는 역할을 합니다. 기존의 전력품질 데이터 전처리 모듈은 각 사이클에 대한 전압의 실효값을 획득하였습니다.

이렇게 하면 3분 이내에 전압의 실효값의 최대값과 최소값을 기록하면 되는데, 그 차이가 전압변동이다. 플리커 계산 작업 스레드에는 단기 플리커 및 장기 플리커 계산이 포함됩니다. 이제 IEC 플리커 미터 설계 방법이 일반적으로 채택됩니다.

입력 적응형 자체 검사 신호는 256차 복조기, 대역 통과 가중 필터링, 제곱 12.8차 저역 통과 필터링 및 온라인 통계 평가를 거쳐 최종적으로 깜박임 값을 얻습니다. 하지만 이 방법은 충분히 복잡하고 시간이 많이 걸립니다. 알고리즘을 단순화함으로써 간단하고 실현 가능한 계산 방법을 얻습니다. 연속 10주기의 유효 전압 값에 대해 FFT 계산을 수행하고 가중치 등 일련의 계산을 거쳐 XNUMXs의 플리커 값을 얻을 수 있으며, 깜박임 값은 XNUMX분 이내입니다.

해당 값은 상관관계 계산 후 단기 플리커를 얻을 수 있으며, 12회 연속된 단시간 플리커(2시간 이내)는 계산 후 장기 플리커를 얻을 수 있습니다. 검증 결과, 이 알고리즘은 IEC 플리커 미터 알고리즘과 비교하여 1‰ 이내의 오차를 가지고 있습니다.

데이터 저장 모듈도 태스크 스레드에 배치되며 그 프로세스는 전력 품질 분석 결과, 전압 변동 및 플리커 값을 FIash에 저장하는 것입니다. 인간-컴퓨터 상호 작용 모듈은 키보드 감지 작업과 액정 디스플레이 작업의 두 부분으로 구성됩니다. 키보드 감지 태스크 스레드는 주기적 함수 PRD에 의해 완료될 수 있습니다. PRD는 실시간 시계에 따라 기능의 실행 시간을 결정할 수 있습니다. 여기에서 키 입력을 감지하기 위해 100ms에 한 번 실행되도록 키보드 감지 작업을 설정합니다. 키 조건에 따라 액정 디스플레이 작업은 현재 최신 전력 품질 데이터를 표시합니다.

마지막으로 백그라운드 스레드(IDL)가 있습니다. 백그라운드 스레드(IDL)가 가장 낮은 우선 순위를 갖습니다. 일반적으로 TRA(실시간 분석 모듈)가 내장되어 실행되며, 이는 응용 프로그램 실행 중에 DSP 응용 프로그램의 실시간 상호 작용 및 진단을 수행할 수 있습니다. CCS는 CPU 부하 다이어그램, 실행 다이어그램, 호스트 채널 제어, 정보 기록, 통계 관찰, 실시간 제어 보드 및 커널/객체 관찰과 같은 실시간 분석 도구를 가지고 있습니다. 이 일련의 기능적 모듈은 IDL 스레드에 배치할 수 있으며 이러한 도구를 통해 전체 DSP 시스템의 작동이 한 눈에 명확해집니다.

2.2 쓰레드 간 통신과 동기화

이 다중 스레드 시스템에서 공유 리소스에 대한 액세스는 해결하기 위해 스레드 간의 상호 조정이 필요합니다.

DSP/BIOS 환경에는 세 가지 통신 방식이 있는데, 파이프 기반(PIPE) 통신, 스트림 기반(SIO) 채널 기반 통신, 호스트(HST) 채널 기반 통신입니다.

표 1은 4개의 쓰레드가 데이터를 공유하고 동기화하는 방식을 보여준다.

3 시스템 실시간 분석 및 디버깅

DSP/BIOS 커널 자체의 오버헤드는 시스템 프로그램의 실시간 성능에 영향을 미칩니다. 이러한 이유로 DSP/BIOS 커널을 최적화해야 합니다. CCS에서 제공하는 DSP/BIOS 분석 도구를 사용하여 전체 애플리케이션 시스템의 DSP/BIOS 오버헤드와 컴퓨팅 용량을 결정할 수 있습니다. 예를 들어 DSP/BIOS에서 제공하는 실시간 분석 도구의 CPU 부하 다이어그램은 일반적으로 사용되는 도구 중 하나입니다.

최종 통합 단계에서는 실시간 상호 작용 및 기타 이유로 인해 일부 오류 또는 시기 적절하지 않은 응답이 있는 경우가 많습니다. 일반적으로 이러한 현상은 비주기적이며 발생 빈도가 낮기 때문에 발견 및 추적이 어렵습니다. 그러나 DSP/BIOS의 RTA 모듈은 코어에 내장되어 개발자가 제공하는 맞춤형 감지 벡터와 결합되어 오류의 근본 원인에 대한 고유한 가시성을 제공합니다. 이 시각화 기능은 일반적인 임베디드 개발 시스템에서 사용할 수 없는 오류를 분리하고 수정하는 데 큰 도움이 됩니다.

전체 시스템에서 응용 프로그램의 실행 성능은 다음 네 가지 측면에서 향상될 수 있습니다. 다른 프로그램 기능에 대한 스레드 유형을 신중하게 선택합니다. 온칩 메모리에 시스템 스택을 배치합니다. 클록 인터럽트 주파수를 줄입니다. 스트림 입력 및 출력 버퍼의 크기를 늘립니다.

4 요약

CCS에서 제공하는 일련의 도구로서 DSP/BIOS 자체는 CPU 리소스를 거의 차지하지 않지만 상당히 높은 성능을 제공하고 개발 진행 속도를 높입니다. DSP/BIOS를 전력 품질 모니터링 터미널의 실시간 운영 체제로 사용하면 DSP 프로그램을 작성할 때 하드웨어 자원을 제어하기 쉽고 다양한 소프트웨어 모듈을 유연하게 조정할 수 있어 소프트웨어 개발 및 디버깅 진행을 크게 가속화합니다. 최종 실험은 전체 시스템이 우수한 실시간 성능과 안정적이고 안정적인 작동을 가지고 있음을 입증했습니다.