2013-10-24 5 views
0

저는 다양한 유형의 전원 소스로부터 에너지를 생산하는 아이들을위한 labview 프로그램을 만들고 있습니다. 나는 그들이 경고를 과소하게 만드는 경우에 발사 할 것이고, 그들이 임계치에 의해 과잉 생산된다면 또 다른 경고가 발동 될 것입니다. 활동 전반에 걸쳐 얼마나 오래 지속될 것인지에 대해 각 유형의 경고가 발령되어 결국 각 그룹에 점수가 부여됩니다. 이는 최종 프로그램이 어떻게 작동 할 것인지를 시뮬레이트하기위한 것입니다. 현재 경고가 참인 시간을 단축 할 수있는 타이머가 있지만 경고가 반복 될 때마다 자체를 덮어 씁니다.Labview에서 값이 참인 동안의 타이밍

그래서 기본적으로 그 값이 참 이었음을 나타내는 총 시간을 계산해야합니다.이 값이 true와 false 사이에있을 때도 마찬가지입니다. 총 시간을 집계의

enter image description here

답변

1

한 가지 방법은 인덱스 터널을 사용하는 동안 루프에서 경고 표시를 수출 할 것 "참"을 보냈다. 루프에서 표시기가 트리거 될 때의 밀리 초 카운터 값을 내보내는 경우 해당 값이 전환 된 해당 시간과 함께 True/False 값의 배열이 될 처리를 게시 할 수 있습니다.

사후 처리는 실행중인 총 시간을 참으로 유지하는 for-loop 일 수 있습니다.

p.s. 코드를 VI 스 니펫으로 내보내는 경우 다른 사용자는 코드를 처음부터 다시 만들 필요없이 코드를 직접 검토하고 수정할 수 있습니다. 주제에 대한 NI 웹 페이지를 참조하십시오. http://www.ni.com/white-paper/9330/en/

1

다른 방법을 제안합니다. 개인적으로, 혼란스럽게 사용한 코드를 발견했습니다. 시프트 레지스터의 값에서 틱 수를 뺍니다. 작동 할 수도 있지만 논리적인 의미는 없습니다.

대신에, 나는 다음을 수행하는 subVI를에이 선회 제안 :

  1. 현재 부울 값, 시프트 레지스터에 누적 합계와 마지막 재설정 시간을 유지합니다.
  2. 첫 번째 호출 프리미티브 및 사례 구조를 사용하여 첫 번째 호출에서이 SR을 초기화합니다.
  3. 값이 F에서 T로 변경되면 (입력을 SR과 비교) 시작 시간을 업데이트하십시오.
  4. T에서 F로 바뀌면 현재 시간에서 시작 시간을 뺀 후 합계에 추가하십시오.

나는 실제로이 코드를 작성하지 않았으므로 거기에는 구멍이있을 수 있지만 운동으로 남겨두고 있습니다. 또한 VI를 재진입 가능하게 만드는 것이 좋습니다. 그렇게하면 두 번째 타이머에 대해 동일한 기능을 사용하기 위해 두 번째로 호출 할 수 있습니다.

관련 문제