Ladder, STL, FBD 변환시키는 방법?
- 기술랩장
- 6476
- 2
질문
STEP 7 을 사용하여 프로젝트(개조공사)를 진행중인데
원래 프로그램중에 STL로 짜여진 부분이 일부 있습니다
제가 SIEMENS PLC를 사용한 경험이 적다 보니(두번째) 이다보니
STL로 작성된 부분을 이해하기가 상당히 어렵네요
STL로 작성된 프로그램을 LADDER 형식으로 변환시키는 방법이 있다고 들었는데
어떻게 해야 하나요?
답변
먼저 질문하신 내용 중 표현이 잘못된 부분이 있는것 같습니다.
STL로 작성된 PLC 프로그램을 Ladder 로 변환하는 것이 아니구요 단지 프로그램 작성/편집 모드를
STL 또는 Ladder로 변경하는것 입니다.(프로그램 소스 코드 자체가 STL 또는 Ladder 로 변경 되는
것이 아니구요 단지 프로그램을 STL 형식으로 보여주거나, Ladder로 보여주는 것 입니다.)
1. 프로그램 편집 모드의 변경 방법
1) PLC 프로그램을 Open 한 상태에서 "View" 메뉴를 선택
2) 사용하고자 하는 프로그램 편집 모드를 선택 합니다.(Ladder, STL, FBD)
단축키 Ladder =Ctrl + 1, STL = Ctrl + 2, FBD = Ctrl + 3
위와 같은 순서로 프로그램 편집 모드를 변경하더라도 Ladder로 변경되지 않고 여전히
STL 형태로 변경되지 않는 부분은 Ladder로 표현 할 수 없는 프로그램 이므로
STL 프로그램 그 자체를 분석해서 이해 해야 할 것 같습니다.
2. 각각의 프로그램 언어 간에 변환가능 여부는 다음과 같습니다.
1) Ladder 로 작성 한 프로그램은 FBD(Function Block Diagram) 로 100% 변환(표현) 가능
2) FBD로 작성한 프로그램 역시 Ladder로 100% 변환 가능
3) STL로 작성한 프로그램은 Ladder 또는 FBD로 변환가능 여부는 ??% 입니다.
즉 변환 가능여부는 알수 없습니다.
STL 프로그램을 어떻게 작성 했느냐에 따라서 결정이 됩니다.
하지만 대부분 STL로 작성한 프로그램은 Ladder 나 FBD로 변환 되지 않는
경우가 일반적 입니다.
3. STL 프로그램이 Ladder 나 FBD로 변환 되지 않는 요인은 다음과 같습니다.
1) Ladder 나 FBD 에서 지원하지 않는 명령어로 STL을 작성 할 때
STL에는 Ladder 나 FBD에서 지원하지 않는 명령어가 무수히 많습니다.
가령 어큐물레이터(Accumulator) 관련 명령어, 간접어드레싱관련 명령어
기타 점프명령 등등...
2) STL 로 작성된 프로그램이 Ladder 나 FBD 등으로 변환 되기 위해서는 일정한
규칙이 필요합니다.
가령 Ladder에서는 하나의 네트워크(Network)에 1개의 출력 코일만사용 하도록 되어
있습니다.(출력 코일을 Or로 연결하는 것은 가능 하죠)
하지만 이런 제약 사항이 STL에서는 적용되지 않습니다.
예를 들어 STL로 프로그램을 작성하는데 하나의 네트워크에 여러개의 출력 코일이
존재하도록 프로그램을 작성하였다면, 이 프로그램을 Ladder로 변환 하는것은
불가능 하겠지요.
4. PLC 프로그램을 STL로 작성하는 이유
1) 데이터 형식에 대한 제약이 자유롭다(Ladder에 비해서)
Ladder에서 1Byte의 길이를 갇는 데이터의 대소 또는 사칙 연산을 할 수가 없습니다.
(일단 1Byte 길이의 데이터를 2Byte로 변환하여 비교가 가능하죠)
Ladder에서 숫자의 대소 또는 사칙연산을 하기 위해서는 최소 2Byte(16Bit)길이를 가지고
있어야 가능하죠 하지만 STL에서는 이러한 제약이 없습니다.
2) 간접 어드레싱에 의한 프로그램이 가능하다.
미스비시 PLC에서 사용하는 인덱스 명령 처럼 S7 PLC 에서도 어드레스레지스터가 있습니다
이것을 이용해서 간접어드레싱에 의한 프로그램을 하는것이죠
하지만 Ladder에서는 이 어드레스레지스터를 제어 할 수 있는 명령어가 없습니다.
그래서 간접어드레싱을 이용한 프로그램을 하려면 STL을 이용해야 합니다.
3) 어큐물레이터를 이용하므로 프로그램이 간소해 진다.
가령 (A+B) X 10 의 결과가 100 보다 큰가 ?
위의 연산을 Ladder로 프로그래밍 한다면, 먼저 A 와 B 를 더해서 그 결과를
어떤한 Memory에 임시 저장하고, 이 임시저장된 결과값에 10을 곱하고
또 그 결과 값을 다시한번 임시저장한 후 다시 비교명령에 적용하여 100보다
큰지를 연산해야 하겠죠
위의 예 처럼 Ladder에서는 하나의 연산결과 값을 다음의 연산에 대입하기
위해서는 처음의 연산 결과를 어떠한 Memory에 저장 해야 하지만
STL 에서는 어큐물레이터(Accumulator)에 다른연산 또는 다른 값을 읽기
전 까지는 최종 값이 남아 있기때문에 어떤연산 결과를 다음의 다른 연산에
대입하기 위해서 임시 저장 할 필요가 없고 바로 다음 연산을 이어서 수행하면 됩니다.
5. STL 또는 Ladder에 관한 개인적인 생각
S7 PLC를 이용할 때 제 개인적인 스타일은 STL 과 Ladder를 병행하는 스타일 입니다.
먼저 어떠한 로직과 관계된 프로그램은 Ladder로 작성하고, 복잡한 데이터 처리는
STL로 작성하는 스타일 입니다.
앞에서 언급 했듯이 Ladder만으로는 불가능한 부분이 있어서 입니다,
감사해요