2016-09-13 15 views
0

IEC 61131-3 구조화 된 텍스트로 작성된 PLC 프로그램을 상속했습니다. 나는 방금 변수가 STRING이고 변수가 STRING(15) 인 것으로 나타났습니다. 그것은 IEC61131-3이 미리 정의 된 길이로 문자열을 선언한다는 것을 암시합니다 (기본값입니까?). 기본 길이가있을 수 있습니다 (거기에 있습니까?). 제가 관찰 한 이상한 문자열 동작 중 일부가 문자열에서 오는 것인지 궁금합니다. 버퍼 오버 플로우 및 초과되는 것을 무시하십시오 (가능합니까?)IEC61131-3 STRING의 기본 크기는 무엇입니까

STRING에 대한 자세한 내용을 검색 할 수 있도록 쉽게 액세스 할 수있는 IEC61131-3 참조 번호에 대한 링크가 포함 된 답변을 지원하십시오. 다른 IEC 61131-3 데이터 유형.

+0

두 번째 단락의 질문은 [도움말/주제]의 4 번 항목에 따른 주제와 관련이 없습니다. 가까운 투표 및/또는 아래 투표를 피하기 위해 그것을 제거하고 싶을 수도 있습니다. –

+0

중점을 바꾸기 위해 편집 됨 -이 질문에 대한 명확한 대답이 있어야하며 충분한 것으로 입증 된 하나의 출처가 있어야합니다. 나는 내가 견딜 수있는 것보다 더 많은 수색을 한 후에 확실히 찾을 수 없다. – omatai

답변

2

IEC61131-3에 STRING 변수를 선언하는 경우 항상 STRING의 길이를 지정해야합니다.

sExample : STRING(n); 

n은 문자열의 문자/바이트 수를 결정합니다. \ 0 문자가 항상 추가되므로 STRING (n)은 n + 1 바이트 큽니다.

Codesys 및 트윈 캣에서

IEC61131-3에 정의되지 않은 일부 벤더 고유의 전문 (AFAIK)이 있습니다 : 당신은 T_MaxString 이상의 문자열이 더 큰 사용해서는 안

sExample : STRING; //This is the same as STRING(80) 
sExample : T_MaxString; //This is the same as STRING(255) 

때문에 더 큰 문자열을 처리 할 수 ​​없습니다 사용할 수있는 문자열 함수 .

이 정보는 CodeSys Documentation에 쉽게 액세스 할 수 없으며 공식 IEC61131-3 표준을 무료로 사용할 수 없으므로 Beckhoff Infosys TC3을 기반으로합니다. 그래서 저는 벤더 특정 정보만을 제공 할 수 있습니다.

plc 시스템의 설명서를 다시 확인하십시오.

+0

동의 : IEC61131-3은 무료로 사용할 수 없습니다. 모든 문자열에 고정 된 최대 크기가 지정되어 있으므로 두 문자열을 연결하면 더 이상 메모리가 할당되지 않으며 필요에 따라 결과가 잘립니다.이 점을 확인할 수 있습니까? – omatai