스테이트 머신(LabVIEW 프로그래밍)
State machine (LabVIEW programming)스테이트 머신은 다른 프로그래밍 언어의 대부분에서 사용되는 프로그래밍 기술의 한 종류입니다.상태 기계는 특히 중요하고 유연한 도구이며, LabVIEW 프로그래밍에서 사용됩니다. 왜냐하면 코딩은 유지, 문서화 [1]및 재사용이 매우 쉽기 때문입니다.
스테이트 머신 소개
스테이트 머신은 상태, 이벤트 및 액션의 3가지 개념을 중심으로 회전합니다.상태는 프로그램이 문제를 해결할 때의 위치 또는 상태입니다.예를 들어, 상태는 사용자가 작업을 수행하기를 기다리거나 계산을 실행할 수 있습니다.주정부는 전체적인 상황을 타개하고 모든 것이 보다 원활하게 운영되도록 돕기 위해 노력하고 있습니다.이것들을 현명하게 개발하는 것은 국가 기계를 보다 효율적으로 운영하는 데 도움이 될 것이다.이벤트는 프로그램 자체에 특정 의미를 갖는 사건입니다.우리가 구축할 예는 사용자가 정확한 금액을 입력한 후 상품을 발송하는 자판기입니다.이 프로그램의 이벤트는 돈을 삽입하거나 시작 버튼을 누른 사람이 될 수 있습니다.액션은 발생한 [1]특정 이벤트에 대해 프로그램이 반응하는 방법입니다.
LabVIEW 상태 머신
LabVIEW에서는 스테이트 머신이 더욱 강력합니다.스테이트 머신은 프로그램이 사용자가 입력할 [1]수 있는 다양한 유형의 데이터에 지능적으로 대응할 수 있도록 지원합니다.이 기능을 설명하기 위해 간단한 자판기 프로그램을 사용하여 기술을 설명하겠습니다.
스테이트 머신의 공통 디바이스
LabVIEW 상태에서는 루프 내에 케이스 구조가 있는 while 루프를 작성하는 것만으로 머신을 기동할 수 있습니다.while 루프에는 열거형 상수라고 불리는 특별한 상수가 배선되어 있을 수 있습니다.열거된 상수는 0 ~n - 1의 정수로 변경되는 상수 단어 또는 구입니다.여기서 n은 사용자가 원하는 경우의 수입니다.이렇게 하면 사용자가 프로그래밍을 훨씬 쉽게 이해할 수 있습니다.왜냐하면 숫자 코드를 보는 대신 무슨 일이 일어나고 있는지 설명하는 몇 개의 단어를 보기 때문입니다.스테이트 머신은 시프트 레지스터에도 크게 의존하고 있습니다.시프트 레지스터는 정보를 while loop으로 전달하기 위해 사용됩니다.예를 들어 시프트 레지스터는 루프에서 작업할 정보로 시작합니다.작업 종료 후 시프트 레지스터에 새로운 값을 저장하여 다음 [2]루프 시작 시에 사용할 수 있다.다음으로 프로그래머는 각각의 케이스에 개별적으로 태스크를 추가하기만 하면 됩니다.처음에 열거된 상수가 생성된 후 이를 유형 정의(일반적으로 유형 def라고 함)로 만드는 것이 좋습니다.열거된 상수를 def 형식으로 만듭니다.사용자는 def. 유형을 제외하고 일반 컨트롤과 같이 원본 복사 및 프로그램 내 재사용을 계속할 수 있습니다.인스턴스 하나를 변경하면 모든 항목이 변경됩니다.def 라고 입력합니다.프로그램을 훨씬 더 견고하게 만들 수 있으며 새로운 것을 추가해야 할 때 훨씬 쉽게 변경할 수 있습니다.
단순 자판기 예시
자판기 예에서는 시프트 레지스터를 사용하여 기계의 총 금액과 우리가 처한 상황을 제어하는 열거된 상수를 전달합니다.시작 사례 그림을 보면 왼쪽과 오른쪽에 시프트 레지스터가 있고 가운데에 열거된 상수가 있습니다.또, 사진의 하단에서, 각 섹션의 표시에 사용되는 탭이 인디케이터로서 기입되고 있는 것을 확인할 수 있습니다.이것에 의해, 유저가 루프로부터 해방해, 유저가 들어가 있는 케이스에 잠길 가능성을 배제합니다.프로그램의 시작 단계에 있을 때 사용자가 프로그램을 바로 사용할 수 있도록 해야 합니다.
이 경우 사용자가 시작 버튼을 누를 때까지 아래 블록 다이어그램의 시작 메뉴에서 사용자를 유지합니다.시작 버튼을 누르면 프로그램이 다음 케이스("Insert money" 케이스라고 함)로 전송됩니다.
일단 "Insert money(돈 삽입)"의 경우 사용자는 시프트 레지스터와 버튼을 사용하여 지금까지의 총 금액에 돈을 더하는 작업을 계속하기 위해 다시 한 번 여기에 머무르게 됩니다.이것은 대부분의 작업이 이루어지고 있는 메인 케이스이며, 자판기가 가능한 한 리얼한 장소에서 실제 동전을 추가하지 않고 다른 케이스는 대부분의 작업을 백그라운드에서 실행합니다.사용자가 돈을 더하고 나면 "돈 넣기 완료" 버튼을 누르면 "지급" 케이스로 넘어갑니다.
또한 "Insert money case"는 표시되는 탭을 블록 다이어그램의 "Insert change" 탭으로 변경합니다.여기서 사용자는 돈을 넣고 "Total Change Inserted" 디스플레이를 통해 돈이 얼마나 들어 있었는지 확인할 수 있습니다.
"Dispense" 케이스는 먼저 사용자가 아이템을 구매하기에 충분한 돈을 넣었는지 확인하는 것으로 시작합니다.이 경우 충분한 비용과 충분한 비용 중 하나의 두 가지 옵션을 처리할 수 있는 두 번째 케이스 구조가 있습니다.시스템에 돈이 충분하면 아이템을 구입해 주셔서 감사합니다라는 메시지 박스가 뜨고 시스템 내 총 금액에서 아이템 구입에 필요한 금액을 차감합니다.시스템에 돈이 부족하면 프로그램이 돈이 부족하다는 새로운 메시지를 출력하고 "끝" 케이스로 넘어가기 전에 이전에 삽입한 돈을 모두 보낸다.
"분산" 케이스와 "종료" 케이스의 블록 다이어그램은 동일한 그림입니다.프로그램이 출력하는 팝업 메시지 외에 사용자가 실제로 해야 할 일은 없습니다.
"종료" 케이스는 사용자가 거스름돈을 받고 아이템을 수령했는지 확인할 수 있는 충분한 시간을 주기 위해 프로그램을 지연시키는 매우 간단한 케이스입니다.5000밀리초(5초)가 경과하면 대기 타이머가 사용되고 프로그램은 시작 페이지로 돌아가 다른 사용자가 다시 프로세스를 시작할 때까지 기다립니다.
혜택들
상태 기계는 빠르게 시작하고 프로그램의 일부를 추가하거나 제거할 수 있기 때문에 종종 사용됩니다.스테이트 머신은,[3] 개발자가 작업하는 동안에도 조직적인 작업을 실시할 수 있도록 하기 위해서도움이 됩니다.







