티스토리 뷰

서버나 PC에서 지멘스의 S300, S400시리즈 PLC에 접속하려면 지멘스에서 판매하는 소프트웨어를 구입해서 연관 API를 통해서 접속하는 방법과 함께 오픈 소스 드라이버를 통해서 접속하는 방법이 있습니다. 오픈소스 드라이버를 통해서 접속하면 혹시 있을 수 있는 드라이버 오류에 대한 염려가 있을수 있겠지만 모니터링이나 HMI, 스카다 용으로는 무리가 없고 무엇보다 기업에서도 무료로 사용할 수 있다는 장점이 있습니다. 소스가 공개되어 있으므로 원인을 찾아 해결하는 것도 가능합니다.
Libnodave를 다운로드 받기 위한 주소는 다음과 같습니다.

http://sourceforge.net/projects/libnodave/files/libnodave/

라이선스는 GPL2로 기업에서 사용하는데 아무런 제약을 가지고 있지 않습니다. 위의 다운로드 링크에서 최신 버전을 다운로드 받아 압축을 해제하면 아래의 그림과 같습니다.




위의 그림에서 확인할 수 있듯이 Libnodave 라이브러리는 C언어로 만들어진 패키지로 윈도우에서는 libnodave.dll를 생성하고 C#.Net이나 VB.Net등에서는 libnodave.dll을 닷넷 응용에서 간편하게접근할 수 있도록 제공하는 Dot.NET 폴더의 libnodave.net.cs 코드를 빌드해서 사용하면 됩니다. libnodave.net.cs를 빌드한 libnodave.net.dll을 프로젝트에서 참조로 추가하면 다양한 libnodave의 기능을 사용할 수 있습니다.


동운 HMI는 클라이언트와 서버 모두를 C#.Net 기반으로 작성한 시스템 이므로 동운 HMI에서 지멘스 PLC에 접속하기 위한 드라이버에서도 libnodave.net.cs 코드를 통하여 libnodave.dll을 사용하는 방식을 적용하고 있습니다. 아래의 코드는 XML 기반으로 만들어진 동운 HMI 환경 설정 파일에 따라 지멘스 PLC에 접속하는 부분입니다.

    try
    {
        fds.rfd = libnodave.openSocket(SvrGbl.plcdrvs[drvidx].port, SvrGbl.plcdrvs[drvidx].addr);
        if (fds.rfd > 0)
        {
            fds.wfd = fds.rfd;
            di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
            di.setTimeout(1000000);

            dc = new libnodave.daveConnection(di,0 , SvrGbl.plcdrvs[drvidx].rack, SvrGbl.plcdrvs[drvidx].slot);
            if (dc.connectPLC() != 0) {
                dc.disconnectPLC();
                libnodave.closeSocket(fds.rfd);
                fds.rfd = 0;
            }
        }
    }
    catch (Exception e)
    {
        SvrGbl.plcdrvs[drvidx].errorMsg = e.Message;
    }
    if (fds.rfd <= 0)
    {
        SvrGbl.plcdrvs[drvidx].status = (int)PLCDrivers.PLCStat.CONNTRY;
        Thread.Sleep(500);
        continue;
    }
    SvrGbl.plcdrvs[drvidx].status = (int)PLCDrivers.PLCStat.NORMACT;




PLC와의 연결이 정상적인 상태에서 dc.writeBits()나 dc.writeBytes() 함수로 byte 배열의 데이터를 PLC로 전송할 수 있고 dc.readBytes() 함수로 PLC 자료를 읽어올 수 있습니다. 물론 Data blocks(DBXXX), Flags/Markers, Input memory, Output memory, Timers, Counters, Direct I/O 영역에 대한 구분과 함께 비트, 워드, 실수, 스트링에 대한 PLC 타입과 HMI 타입 간의 변환등도 드라이버 레벨에서 이루어 집니다.

필자의 경우 동운 HMI의 지멘스 PLC 드라이버 테스트는 "지멘스 PLC 개발 환경 구축 - 동운 HMI"에서 언급한 시뮬레이터를 가상머신에 설치하여 시뮬레이터와 ISO TCP연결 방식으로 테스트를 진행했습니다. 동운 HMI가 Modbus TCP 드라이버와 함께 지멘스 S300, S400 시리즈의 PLC를 붙일수 있는 드라이버를 기본 내장하여 보다 다양한 환경에서 동운 HMI를 적용할 수 있는 기틀을 마련한데 의미가 있다 하겠습니다.

라이선스 비용의 대폭 감축과 닷넷 프레임워크, 3D, 스틱 PC등 최신 컴퓨팅 환경의 장점을 최대한 활용할 수 있는 동운 HMI를 만나보세요!




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함