OPC DA

COM/DCOM을 거치는 기존 OPC Data Access 서버의 클라이언트입니다. 32비트 보조 프로세스에서 동작하며, 항목 ID로 주소를 지정하고 컴퓨터의 서버를 스캔합니다.

Markdown으로 보기

OPC DA 드라이버는 기존 OPC Data Access 서버(버전 1.0, 2.05a, 3.0)의 클라이언트입니다. 오래된 PLC 게이트웨이, SCADA 시스템, 시뮬레이터는 지금도 이 COM 서버를 통해 데이터를 공개합니다. 서버는 그 서버가 동작하는 컴퓨터와 ProgID(예: Matrikon.OPC.Simulation.1)로 지정하고, 태그는 서버의 항목 ID로 지정합니다. 드라이버와 그 장치는 Connector 페이지에서 추가합니다.

장치

칸 뜻 기본값
호스트 OPC DA 서버가 동작하는 컴퓨터의 이름이나 주소입니다. 비워 두면 이 컴퓨터이며, 기존 서버는 대부분 여기에서 동작합니다. 비어 있음: 이 컴퓨터
서버 / 키 서버의 ProgID이며, 제조사가 Windows에 등록한 그대로 씁니다. 예: Matrikon.OPC.Simulation.1. OPC.Server.1
읽기 주기 (ms) 스테이션이 장치의 태그를 읽는 간격입니다. 태그가 자기 간격을 정하면 그것을 따릅니다. 1000

장치의 주소는 이 둘로 만들어집니다(예: opc.da://localhost/Matrikon.OPC.Simulation.1). 포트는 없습니다. COM이 Windows 자체의 등록 정보로 서버를 찾습니다.

태그 주소 지정

태그는 항목 ID로 주소를 지정합니다. 자유 입력으로 적으며, 적은 그대로 서버에 보냅니다(예: Random.Real8, Channel1.Device1.Tag1). 항목 ID는 서버 자신의 것이며, 서버의 문서나 스캔으로 목록을 볼 수 있습니다. 스테이션은 태그가 처음 읽을 때 각 항목을 장치의 한 그룹에 넣고, 서버의 캐시가 아니라 현장 장비에서 읽습니다.

데이터 형식

데이터 형식 선택 목록에는 OPC DA 항목이 지니는 형식이 나옵니다. Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String, DateTime입니다. 읽기는 매번 태그의 형식으로 바뀌므로, 서버가 그 항목에 선언한 형식, 곧 스캔이 제시하는 형식을 고르십시오. 64비트 실수 항목은 Float로 읽으면 정밀도를 잃고, Double로 읽으면 유지합니다. 숫자가 아닌 텍스트나 배열처럼 태그의 형식에 담을 수 없는 값을 읽은 태그는 값이 없는 채로 남습니다. OPC DA의 날짜에는 시간대가 없으며, 스테이션은 UTC로 읽고 씁니다.

서버가 답하는 값마다 품질이 딸려 옵니다. 품질이 정상(Good)인 값은 태그에 닿습니다. 불확실(Uncertain)하거나 나쁨(Bad)인 값이면 태그는 값이 없는 채로 남고, 실패한 읽기의 진단 로그 줄이 OPC DA 사양의 말로 품질을 밝힙니다. 예를 들어 Bad: not connected (0x0008)이나 Uncertain: last usable value (0x0044)입니다. 읽기에 실패한 항목의 태그는 값이 없는 채로 남고, 장치의 다른 태그는 계속 읽습니다.

장치 검색

장치 검색은 한 컴퓨터에 등록된 OPC DA 서버의 목록을 보여 줍니다. 스캔 대상에 그 컴퓨터의 이름이나 주소를 입력하거나, 이 컴퓨터라면 비워 두십시오. 서버마다 장치로 제시되고, 그 주소 공간을 훑어봅니다. 서버가 가진 항목은 모두 서버가 선언한 형식을 지닌 읽기 전용 태그로 제시됩니다. 64비트 실수는 Double, 부호 없는 16비트 정수는 UInt16처럼 위의 형식마다 그대로 쓰이고, 통화 값은 Double이 됩니다. 형식을 선언하지 않은 항목은 어떤 값이든 읽는 String으로 제시됩니다. 배열처럼 어떤 태그도 읽지 못하는 형식의 항목은 제시되지 않으며, 스캔이 빠뜨린 것으로 셉니다. 후보를 고르고 추가하는 방법은 장치 검색을 보십시오.

스캔은 이 컴퓨터에 등록된 OPC DA 프록시/스텁 라이브러리를 통해 OPC 서버 열거자(OpcEnum)에 서버를 묻습니다. 그중 하나라도 없는 동안에는 스캔이 아무것도 나열하지 않고 무엇이 없는지 알려 줍니다. 단계는 OPC Core Components 설치에 있습니다.

쓰기

접근이 읽기와 쓰기이거나 쓰기 전용인 태그는 읽기가 쓰는 것과 같은 항목에 쓸 수 있습니다. 값은 서버가 그 항목을 지니는 형식으로 보냅니다(서버가 형식을 밝히지 않으면 태그 자신의 형식입니다). 태그의 값에서 텍스트를 거치지 않고 바꾸므로, 어느 언어의 스테이션이든 같은 숫자를 보냅니다. 항목 형식의 범위를 벗어난 정수는 아무것도 보내기 전에 거부되며, 그 형식에 담기는 가장 가까운 값으로 잘리지 않습니다. 서버가 거부한 쓰기는 거부로 돌아옵니다. 스테이션이 말할 수 있는 이유(쓰기를 받지 않는 항목, 항목이 받지 않는 값, 서버가 모르는 항목, 접근 거부)면 그 이유가, 그 밖에는 서버의 오류 코드(예: OPC DA 0x80004005)가 붙습니다. 어느 경우든 서버의 코드는 진단 로그에 남습니다. OPC DA에는 명령이 없으므로, 이 드라이버의 장치에는 명령이 없습니다.

32비트 보조 프로세스

OPC DA 서버에는 32비트 COM 클라이언트로 연결하는데, 64비트 스테이션은 그것을 불러올 수 없습니다. 그래서 이 드라이버는 전용 보조 프로세스 Lab.Desktop.DriverBridge.exe에서 동작합니다. 스테이션은 OPC DA 장치나 스캔이 처음 필요로 할 때, 또는 스테이션이 OPC Core Components를 확인할 때 이것을 시작하고, Connector가 멈출 때 닫습니다. 드라이버를 쓰는 방법은 달라지지 않습니다. 장치와 태그는 다른 드라이버와 똑같이 읽히고, 쓰이고, 스캔되고, 진단 로그에 남습니다.

보조 프로세스가 멈추면, 그 장치에는 "OPC DA 드라이버의 32비트 보조 프로세스가 멈췄습니다. 스테이션이 보조 프로세스를 다시 시작하며, 장치는 그것을 통해 다시 연결됩니다."라는 오류가 나타나고(종료 코드는 이벤트 페이지에 있습니다) 태그는 값을 잃습니다. 스테이션은 보조 프로세스를 다시 시작하며(계속 멈추는 동안에는 간격이 점점 늘어납니다), 장치는 그것을 통해 저절로 다시 연결됩니다. 보조 프로세스가 멈출 때 전달 중이던 쓰기는 실패로 돌아오며, 값이 현장 장비에 닿았는지는 알 수 없다고 알려 줍니다. 다른 드라이버나 스테이션의 다른 부분이 함께 멈추는 일은 없습니다.

시작하기 전에

  • 스테이션은 OPC 구성 요소를 하나도 설치하지 않습니다. OPC 서버 열거자(OpcEnum)와 OPC DA 프록시/스텁 라이브러리는 OPC DA 서버나 OPC Core Components에 들어 있습니다. 스테이션은 이것들이 등록되어 있는지 스스로 확인하고, 하나라도 없는 동안에는 설치 방법을 알려 줍니다. OPC Core Components 설치를 참고하십시오.
  • 다른 컴퓨터의 서버에는 DCOM으로 연결하므로, 스테이션이 실행되는 Windows 계정에 대해 두 컴퓨터가 모두 허용해야 합니다(DCOM 권한, 방화벽 규칙, 같은 계정이나 신뢰하는 도메인). 이 설정은 스테이션이 아니라 Windows에서 합니다. 원격 서버 준비를 참고하십시오.
  • 이 드라이버는 Windows에서만 동작합니다.

OPC Core Components 설치

스테이션은 32비트 보조 프로세스에서, 이 컴퓨터에 OPC 서버 열거자(OpcEnum)와 OPC DA 프록시/스텁 라이브러리가 32비트 프로그램용으로 등록되어 있는지 스스로 확인합니다. 드라이버 페이지, 그 장치의 페이지 또는 에이전트가 처음 물을 때 확인하고, 하나라도 없는 동안에는 30초마다 다시 확인합니다. Connector가 시작되기 전에는 있는지 알 수 없으므로 아무것도 표시하지 않습니다. 없는 동안에는 다음과 같습니다.

위치 표시 내용
드라이버 페이지 주의 알림 "이 컴퓨터에 OPC Core Components가 없습니다"와 아래 단계. 링크는 OPC Foundation 페이지를 컴퓨터의 브라우저에서 엽니다.
각 장치의 페이지 같은 알림. 단, 온라인인 장치에는 표시하지 않습니다.
스캔 아무것도 나열하지 않고 무엇이 없는지 알려 줍니다. 스캔의 마지막 줄은 알림을 안내하고, 에이전트의 device_discover는 단계를 영어로 알려 줍니다.
연결에 실패한 장치의 마지막 오류 무엇이 없는지와 같은 단계를, 드라이버 자체 원인과 마찬가지로 영어로 표시합니다.
에이전트 driver_capabilities가 prerequisite 아래에 installed를 false로 하여 단계를 알려 줍니다.

설치 방법:

  1. OPC DA 서버의 설치 프로그램을 다시 실행하십시오. 보통 이것들도 함께 설치됩니다.
  2. 그래도 안 되면 OPC Foundation 페이지 Core Components를 열고 OPC Core Components Redistributables를 내려받으십시오. 등록된 사용자만 내려받을 수 있습니다. 파일을 내려받을 권한이 없다고 나오면 같은 페이지의 'Login'으로 로그인하거나 'Create Account'로 계정을 만드십시오.
  3. 64비트 Windows에서는 opc-core-components-redistributable-<version>-x86-x64.msi 파일을 고르십시오(32비트 구성 요소도 들어 있습니다). -x86.msi로 끝나는 파일은 32비트 Windows에서만 씁니다.
  4. 관리자 권한으로 실행하고, 설치 프로그램이 요청하면 컴퓨터를 다시 시작하십시오.

설치하고 30초 안에 알림이 사라지고, 스캔에 OPC DA 서버가 나타나며, Ganter Lab을 다시 시작하지 않아도 이 드라이버의 장치가 지금 설정 그대로 연결됩니다.

원격 서버 준비

이 컴퓨터의 서버에는 더 필요한 것이 없습니다. 다른 컴퓨터의 서버에는 DCOM으로 닿는데, DCOM은 두 컴퓨터가 모두 준비될 때까지 다른 컴퓨터에서 아무것도 들여보내지 않습니다. 준비는 스테이션이 아니라 두 컴퓨터의 Windows에서, 각 컴퓨터의 관리자가 합니다.

  1. 두 컴퓨터에서 같은 비밀번호의 같은 Windows 계정(스테이션이 실행되는 계정)을 쓰거나, 두 컴퓨터가 모두 아는 도메인 계정을 쓰십시오.
  2. 서버의 컴퓨터에서 dcomcnfg를 실행하고 Component Services > Computers > My Computer > Properties > COM Security를 여십시오. Access Permissions와 Launch and Activation Permissions의 Edit Limits와 Edit Default 모두에서 그 계정에 원격 권한을 모두 허용하십시오. Access Permissions의 Edit Limits에서는 OPC 서버 열거자(OpcEnum)에 필요한 ANONYMOUS LOGON에도 Remote Access를 허용하십시오.
  3. 같은 곳의 My Computer > DCOM Config에서 OPC 서버와 OpcEnum의 Properties를 열고, Security 탭에서 세 가지 권한을 같은 계정으로 사용자 지정하십시오.
  4. 스테이션의 컴퓨터에서도 dcomcnfg를 실행하고 Access Permissions의 Edit Limits에서 OPC 서버가 실행되는 계정에 Remote Access를 허용하십시오. 서버가 스테이션으로 콜백합니다.
  5. 서버의 컴퓨터에서 Windows Defender 방화벽에 인바운드 TCP 포트 135와 OPC 서버 및 OpcEnum(OpcEnum.exe) 프로그램을 허용하고, 서비스에서 OpcEnum이 실행 중이며 자동으로 시작되는지 확인하십시오.

Edit Limits가 권한을 거부하는 동안에는 Edit Default를 바꿔도 아무것도 달라지지 않습니다. 둘 다 설정하십시오. DCOM은 포트 135에서 응답한 뒤 Windows가 고르는 포트로 호출을 나르므로, 두 컴퓨터 사이의 방화벽이 135만 열면 서버는 여전히 막힙니다.

Windows의 응답 장치 페이지에 나오는 내용
액세스 거부(0x80070005) '호스트이(가) DCOM으로 이 스테이션을 거부합니다'와 함께, 스테이션이 실행되는 계정과 1단계부터 4단계까지
RPC 서버를 사용할 수 없음(0x800706BA) '호스트이(가) DCOM에 응답하지 않습니다'와 함께, 컴퓨터가 꺼져 있거나 닿지 않거나, 방화벽이 DCOM을 막고 있거나, OpcEnum이 그곳에서 실행되고 있지 않다는 것과 5단계

각 알림은 장치의 오류 자리에 나오며, 서버가 연결되면 저절로 사라집니다. 진단 로그와 에이전트도 같은 단계를 영어로 읽습니다. 이 컴퓨터의 서버는 이렇게 표시되지 않습니다.

공장에서 DCOM을 허용하지 않는다면, 서버의 컴퓨터에서 OPC DA 서버를 OPC UA로 제공하는 래퍼나 터널로 DCOM을 완전히 피할 수 있습니다. 그러면 스테이션은 그 서버를 OPC UA 드라이버로 읽습니다.