[Beckhoff 제품소개] TwinCAT 3.1 빌드 4024: 엔지니어링 프로세스의 효율성과 일관성 향상
새로운 TwinCAT 기능으로 엔지니어링 비용을 줄이고
통신 안정성 향상
Josef Papenfort 박사 / Beckhoff Automation의 TwinCAT 선임 제품 관리자
Beckhoff는 2년마다 TwinCAT의 새로운 빌드를 출시한다. 각 빌드에는 TwinCAT 작업을 더욱 효율적으로 만드는 여러 새로운 기능이 포함되어 있으며 최신 빌드 4024도 마찬가지이다. 이는 엔지니어링 프로세스의 효율성과 일관성을 더욱 향상시켜 비용을 줄여준다. 또한 Secure ADS로 통신 안정성을 강화할 뿐만 아니라 최신 버전 Visual Studio®에 통합되어 있다.
새로운 TwinCAT 3.1 빌드 4024는 기존 사용하던 Visual Studio® 2013 Shell 대신 최신 버전의 Visual Studio® 2017 Shell을 사용한다. 그 결과, RSS 피드를 통해 Visual Studio®로 TwinCAT 사용자를 위한 특별 정보를 불러와 Visual Studio®의 시작 페이지에 통합할 수 있다.
PLC에 대한 다중 사용자 액세스
새로운 시스템을 시운전 하는 데 드는 비용은 갈수록 부담이 되고 있다. 또한 중요한 시운전 작업을 위해 자격을 갖춘 인력을 확보하는 것 역시 쉽지 않을 수 있다. 그에 따라 복잡한 시스템이라도 빠르고 쉽게 시운전할 수 있는 능력 향상에 대한 요구가 증가하고 있다. 그러나 이 기술은 여러 프로그래머가 동시에 작업할 수 있는 경우에만 가능하다. 이제 새로운 다중 사용자 기능을 갖춘 TwinCAT으로 그러한 요구에 부합하는 솔루션을 제공할 수 있다. 새로운 기능을 위해 Beckhoff는 팀별 오프라인 개발 프로젝트에 이미 사용되고 있는 원리를 적용했다. 물론, 소프트웨어를 오프라인에서 협업으로 개발하는 유일한 방법은 소스 코드 제어 시스템을 이용하는 것이다. 새로운 TwinCAT 빌드는 이러한 기능을 가능하게 할 뿐만 아니라 별도의 지식 없이 온라인으로 운영할 수 있도록 구현했다.
제어 어플리케이션에 있는 이러한 종류의 온라인 팀워크는 어떠한 모습인가?
프로그래머 1이 컨트롤러에 로그인하여 코드를 변경하고 프로그래머 2와 3도 로그인 한다고 가정해 보자. 프로그래머 2와 3은 프로그래밍 디바이스에 변경된 소스 코드를 가지고 있지 않기 때문에, 개발 시스템은 프로그래머 2와 3이 해당 디바이스에 대한 접근을 허용하는 방식으로 프로그래머 1의 소스 코드를 저장해야 한다. TwinCAT은 소스 코드 제어를 위한 인기 있는 오픈 소스 솔루션인 Git와 컨트롤러에 직접 설치할 수 있는 저장소를 이용해 이 작업을 수행한다. 프로그래머 2가 로그인하는 순간 프로그래머 2의 개발 컴퓨터에서 소스 코드 상태의 변경 사항을 표시하는 창이 열린다. 이후 프로그래머 2는 프로그래머 1의 변경사항을 수락하거나 두 버전을 익숙한 TwinCAT Compare Tool과 결합할 수 있다. 프로그래머 2는 소스 코드 버전 간의 차이점을 보고 어떤 버전을 수용할지 결정해야 한다. 컨트롤러에서 Git을 사용할 때의 또 다른 장점은 사용자가 어떤 변경을 했는지 항상 확인할 수 있다는 점이다. 이를 통해 시운전 프로세스와 기계의 전체 수명 주기 동안 원활한 추적 기능을 보장할 수 있다.
변경 관리로 오류 방지
만약 어떤 기계의 여러 모델을 소프트웨어에 매핑 하려면, 지금까지 각 모델에 대해 다른 소스 코드 버전을 사용해야 하거나 모든 모델을 포함하는 메타 소프트웨어 어플리케이션을 개발해야 했다. 그런 다음 모델의 세부사항은 매개변수화를 통해 생성되었다. 두 방법 모두 번거롭고 오류가 발생하기 쉽다.
– 다른 소프트웨어 어플리케이션은 유지 관리가 어렵다. 또한 모든 소프트웨어 버전에서 버그를 수정해야 한다.
– 그러나 메타 소프트웨어는 필요 이상의 코드가 보인다는 단점을 가지고 있으며, 그 구성에는 최대 확장이 표시되는데, 대부분은 특정 버전에 사용되지 않고 있다. 여기에서도 마찬가지로 소프트웨어를 유지관리 하기가 쉽지 않다.
최적의 솔루션은 간단한 설정을 기반으로 다양한 버전으로 생성되는 소프트웨어를 사용하는 것이다. 기존 고급 언어 프로그래밍에서는 조건부 컴파일이 이 목적을 위해 사용된다. 그러나 TwinCAT 프로젝트는 PLC 프로그래밍뿐만 아니라 다른 I/O 장비를 가진 모델도 포함한다. 따라서 디바이스가 항상 존재하지 않을 수도 있거나 다른 매개변수를 가질 수도 있다. 이는 축 모션 제어 영역에도 동일하게 적용된다. 이러한 이유로, 새로운 TwinCAT 빌드에는 TwinCAT 프로젝트 전체를 위한 모델 그룹뿐만 아니라 소위 프로젝트 모델도 존재한다. 이와 같은 방식으로 I/O나 모션 구성과 같은 영역에서 모델별 설정이 가능해 진다. 또한 모든 기계 모델에 대한 프로그램이 하나뿐이기 때문에 소프트웨어를 훨씬 쉽게 유지 관리 할 수 있다. 특정 모델을 생성하기 위해 사용자가 선택하면, 올바른 프로그램이 자동으로 생성된다. 따라서 소프트웨어를 버전화하고 유지하는 것은 매우 쉬워진다.
PLC 영역의 개선
PLC 코드를 더욱 빠르고 효과적으로 개발 및 테스트하기 위해 PLC 영역도 대폭 개선되었다. 특히 객체 지향 프로그래밍의 경우, 코드 유지보수와 재사용성을 단순화하는 것이 주요 목표다. 이러한 맥락에서 인터페이스의 사용은 필수적이다. 과거에는 인터페이스 포인터가 주소를 나타낼 수 있었지만 어떠한 포인터 역참조도 실행되지 않았다. 이제 빌드 4024를 통해 이것이 가능해지고 엔지니어링 능력이 더욱 향상되었다.
C++와 C# 고급 언어에서는 추상적인 방법과 속성을 가진 추상적인 클래스를 프로그래밍하는 것이 일반화된 상황이다. 추상 클래스는 샘플 함수 블록이나 클래스를 쉽게 생성할 수 있게 해주기 때문에 이 옵션은 이제 PLC 프로그래머도 사용할 수 있다. 이 기능을 통해 PLC 프로그래머는 C++와 C#의 능력을 한 단계 업그레이드할 수 있다. 예외 처리에도 동일하게 적용된다. 예외가 있는 경우 PLC 프로그래머는 이에 응답하기를 원한다. 0으로 나누어진 경우, 기계를 안전한 상태로 전환하고 손상을 방지하기 위해 특정 루틴을 실행하는 것이 유용할 수 있다.
매핑 대화 상자는 일부 노드 레벨이 열려 있지 않은 방식으로 개선되었다. 이는 스크롤 범위를 줄여 각 디바이스를 더욱 신속하게 찾을 수 있게 하기 때문에 PLC와 I/O 구성 요소 간의 링크 생성 등을 용이하게 한다. 옵션을 사용하면 이전보기, 새보기 및 자동 조정 보기를 전환할 수 있다. 'Go To Link' 변수를 이용하면, 사용자는 I/O 디바이스와 프로세스 이미지 사이에서 앞뒤로 건너 뛸 수 있었지만 프로세스 이미지에서 코드로 건너 뛸 방법이 없었다. 이제 디버깅을 훨씬 쉽게 해주는 기능인 "Go To Definition" 명령으로 이 작업을 수행할 수 있다. 또한 이 기능을 통해 현재 자주 사용되는 글로벌 변수 목록을 배포할 수 있기 때문에 프로그램 명확성을 개선할 수 있다.
또 다른 장점으로, 그래픽 언어로 작성된 기능 블록 프로그램 코드를 바이너리 Base65 형식으로 저장할 수 있다는 점이다. 이를 통해 비중이 큰 그래픽 언어로 작성된 프로그램의 로딩 및 저장 속도를 향상시킬 수 있다.
C++- 또는 MATLAB®/Simulink® 코드 온라인 변경
지금까지는 PLC 프로그래머만이 기계 운전을 진행하는 동안 제어 코드를 수정할 수 있었다. 대부분의 기계나 생산 시스템은 드물게 정지되거나 아예 정지되지 않기 때문에, 이 기능은 매우 중요하다. 그러나 기계를 제어하기 위해 C++ 또는 MATLAB®/Simulink®를 사용하는 경우, 아직까지는 기계의 재시작과 관련해 코드를 수정할 수 있는 상황이다.
안타깝게도 일부 어플리케이션에서는 그러한 재시작조차 허용되지 않을 수도 있다. 특히 시험 및 검사 기계 분야의 경우 프로그램 수정이 빈번하게 필요한 상황에서 여러 프로세스가 중단되어서는 안 된다. 이 문제를 해결하기 위해 Beckhoff는 기계나 시스템이 실행되는 동안 C++와 MATLAB®/Simulink® 코드를 교체할 수 있는 기능을 새로운 TwinCAT 빌드에서 구현했다. 이제 코드에 특별한 버전이 부여돼 데이터 손실 없이 한 버전을 새 버전으로 즉석에서 교체할 수 있다.
분산 설치에서 시간 동기화된 데이터 세트
여러 개의 컨트롤러가 있는 대규모 설비에서는 집계된 데이터를 후속 분석하기 위해 특정 데이터를 중앙 서버에 저장해야 하는 경우가 많다. 그러나 다른 디바이스의 타임스탬프를 일관되게 생성할 수 없다. TwinCAT Scope와 같은 중앙 집중화된 어플리케이션에 대해 그러한 데이터를 집계하는 경우, 중앙 시스템에는 정확한 시간 기준이 존재하지 않는다. 개별 컨트롤러의 시스템 클럭을 동기화되도록 조정할 수 있는 경우 전체 어플리케이션을 손상시킬 수도 있다. 따라서 남은 유일한 옵션은 데이터를 집계하기 위해 타임스탬프가 생성될 때 기준 클럭을 사용해 로컬 클럭에서 오프셋을 결정하는 것이다.
하지만 어떤 기준 시계를 사용해야 하는가? 아주 간단하게 정확도를 달성하기 위해서는 (S)NTP 서비스를 이용할 수 있는데, 이 서비스는 무료로 모든 Beckhoff 디바이스에 설치된다. 분산 설비에서 데이터를 비교하기 위한 목적이라면 이 방법만으로도 충분하다. 정확성을 높이기 위해 IEEE 1588에 기반한 프로세스를 사용할 수 있다. PTP(Precision Time Protocol)라고도 하는 이 방법은 전혀 다른 PLC를 매우 정밀하게 조정할 수 있지만 EL6688 EtherCAT 터미널과 같은 특수한 하드웨어가 필요하다. 클럭 정밀도를 높일 수 있는 유일한 방법은 디바이스 사이에 EtherCAT 케이블과 같은 특수 케이블 연결하는 것이다. 이러한 방법 중 하나를 위해 새로운 TwinCAT 빌드에 도입된 인터페이스를 사용하면 서로 다른 데이터에 대해 수정된 타임스탬프를 사용할 수 있으므로 집계된 데이터베이스에서 비교 가능한 타임스탬프를 얻을 수 있다.
Secure ADS를 통한 통신 보안
Beckhoff ADS 프로토콜은 TwinCAT의 첫 번째 버전과 함께 이미 도입되었고 이후에 큰 변화는 없었지만, 새로운 기능들이 종종 추가되었다. TwinCAT 빌드 4024의 새로운 기능 중 하나는 평소와 같이 ADS 텔레그램을 교환하는 두 당사자 간에 암호화된 연결을 설정함으로써 ADS를 통해 안전하게 통신하는 것이다.
두 개의 ADS 디바이스 사이에 새로운 연결이 만들어지면 인증서를 통해 인증을 보장할 수 있다. 모든 텔레그램은 자동으로 암호화된다. Beckhoff는 이를 위해 가장 잘 알려진 인증 및 암호화 프로세스인 TLS를 사용하기로 결정했다. TwinCAT이 백그라운드에서 인증서 관리를 자동으로 처리하기 때문에 프로그래머는 이를 신경 쓸 필요가 없다. 또한 이 기능을 사용하면 ADS를 사용하는 레거시 어플리케이션이 어플리케이션을 다시 컴파일 하거나 재구성해 암호화된 연결이 가능해진다.
새로운 안전 공학 기능
보안 외에도 안전은 TwinCAT 시스템에서도 중요한 역할을 한다. 이러한 이유로 안전 관련 작업을 더욱 쉽게 만들어주는 다양한 기능이 추가되었다. 이러한 기능 중 가장 중요한 것은 변수의 다중 사용이다. 따라서 변수는 더 이상 고유할 필요가 없으며 전체 안전 프로젝트에서 전세계뿐만 아니라 현지에서도 배포 및 사용될 수 있다. 이를 통해 안전 관련 프로젝트를 훨씬 쉽고 효과적으로 만들 수 있다.
또한 기존 기능 블록과 인증된 기능 블록을 기반으로 하는 특수 기능 블록을 정의하고 여러 번 인스턴스화할 수 있다. 즉, 안전 도어와 같은 기능을 한 번만 생성하면 된다. 어플리케이션에 여러 개의 안전 도어가 있는 경우 기능 블록을 여러 인스턴스에서 다른 I/O 할당이나 매개 변수로 간단히 재사용할 수 있다.
[출처] 월간컨트롤 10월호
[원본] https://www.beckhoff.com/media/downloads/press/2020/korean/2020.10_control_twincat_build-4024_k.pdf
댓글
댓글 쓰기