2016-09-27 15 views
2

이동 평균 알고리즘을 사용하여 센서 값을 분석하고 값이 배열에 저장됩니다. 하지만 Array의 길이는 variabla입니다 (한 모터의 속도에 따라 다름).가변 크기의 CoDeSys에서 배열 만들기

가변 크기의 CoDeSys에서 어떻게 배열을 만들 수 있습니까? 배열을 정의하는 것이 잘못되었습니다.

이름 : ARRAY [1 ... SpeedValue] OF INT;

답변

3

Codesys V2/V3의 배열에 대해 변경 될 수있는 크기가 없다는 점은 유감입니다. 일반적인 설명은 동적 메모리 할당이 너무 신뢰할 수 없다고 판단되기 때문에 PLC에서 사용할 수있는 동적 메모리 할당이 없다는 것입니다.

귀하의 유일한 선택은 SpeedValue

자신을 위해
VAR 
    arrnValues   : ARRAY[1..N_MAX_SPEED_VALUE] OF INT; 
END_VAR 
VAR CONSTANT 
    N_MAX_SPEED_VALUE : INT := 100; (*Max Array Size*) 
END_VAR 

난 정말이 제한에 의해 도청 오전 일정 ARRAY [1..N_MAX_SPEED_VALUE]와 배열을 정의하고 단지 때까지 배열을 사용하는 것입니다. ARRAY [*]와 같은 배열을 정의하고, 시작과 끝을위한 키워드를 갖고, 인스턴스화 할 때 실제 시작과 끝 크기를 정의하기 위해 여러 번 기능을 요청했습니다. 크기가 컴파일 타임에 정의되기 때문에 이것은 동적 메모리 할당을 할 필요가 없습니다.

2

다음 게시물을 추천합니다.

https://stefanhenneken.wordpress.com/2016/09/27/iec-61131-3-arrays-with-variable-length/

스테판은 가변 길이 배열을 할 수 있습니다 무엇을 단계별로 설명합니다. 당신은 변수 스캔 시간을 갖고 싶어하지 :

첫째 :

펠릭스가 있기 때문에 sugested 것을 권하고 싶지 않다.

두 번째 : 어떤 이유로 인해 뭔가 어지럽 혀서 배열의 상한이되기를 원하는 SpeedValue에 도달 할 수 없다면 실제로 뭔가를 알지 못해도 교착 상태 또는 불량 출력이 발생할 수 있습니다. 이 잘못되었습니다

+0

게시물에 포함 된 내용을 요약하여 기억해 두십시오. 비활성/제거로 인해 링크가 도움이된다면 답이 여전히 도움이됩니다. –