티스토리 뷰

SCADA

동운 HMI의 Modbus 태그 정의

록개발자 2018. 11. 12. 15:41

※출처 : modbus.org



동운 HMI에서는 Modbus 프로토콜 이외에도 지멘스 PLC들을 위한 드라이버와 AB PLC를 위한 드라이버를 준비해 놓고 있습니다. 왠만한 PLC에서는 대부분 지원하고 있는 Modbus 프로토콜은 위의 그림처럼 TCP/IP 방식으로 스카다와 PLC를 연결할 수 있을 뿐만아니라 직렬(Serial) 통신 방식을 사용할 수도 있습니다. 직렬 통신은 단순하게 일대일로 통신하는 RS-232 방식을 사용할 수도 있지만 여러 PLC를 연결할 수 있는 RS-485 방식도 적용할 수 있습니다.



위의 그림은 Modbus PLC에 대한 설정 예제로 동운 HMI에서는 "modbustcp", "modbusrtu", "modbusascii"라는 이름의 세가지 드라이버를 제공하고 있습니다. <driver> 항목에 적절한 드라이버 이름을 입력하고 <name>에 해당 PLC를 지칭하는 아이디를 입력합니다. <name>에 입력한 PLC 아이디는 추후 정의한 태그 정의에서 어떤 PLC에 속한 태그인지를 지칭할 때 사용합니다. 동운 HMI에서는 여러 PLC를 등록할 수 있으므로 부가적인 PLC를 등록하려면 <da_module>내부에 <plc> 그룹을 추가로 기술하면 됩니다.


"modbustcp" 드라이버는 PLC의 IP주소를 <addr> 항목에 입력하고 포트 번호(표준 포트는 502)는 <port>에 입력합니다. "modbusrtu"와 "modbusascii" 드라이버는 직렬(Serial) 통신을 수행하는 드라이버로 각각 컴퓨터의 직렬 포트를 사용할 경우에는 "COM1" 처럼 직렬 포트 이름을 직접 <addr>항목에 입력하고 USB to Serial 변환기를 사용하는 경우에는 0~9사이의 USB 인덱스를 <addr>항목에 입력하면 됩니다. 직렬 통신 드라이버를 적용하는 경우 <port>항목에 통신 속도를 입력합니다. 직렬 통신 드라이버의 경우에는 <devid>항목을 통해서 장치 번호를 지정할 수 있습니다. 동운 HMI에서는 통신 속도 외의 다른 통신 설정은 다음과 같은 내용으로 기본 설정합니다.


  • DataBits : 8
  • Parity : None
  • StopBits : 1





  • 태그 정의는 <tags>...</tags>그룹으로 묶어서 위의 그림과 같이 정의할 수 있습니다. <name>항목에 입력한 태그 아이디는 각종 컨트롤과 태그를 연결하는 매개가 되므로 나름의 원칙을 가지고 태그를 인식하기에 어렵지 않도록 정의합니다. 태그가 어떤 PLC에 속하는지는 <plc>항목을 통해서 지정합니다. <plc>항목에 기술한 "modsim"은 앞서 <da_module><plc>로 정의했던 PLC 항목입니다. <addr>로 PLC주소를 입력하는데 Modbus 태그들은 "H8"과 같이 주소 영역을 나타내는 한자리의 영문자와 숫자 주소를 붙여서 태그의 주소를 기술합니다. 숫자 주소는 0부터 시작합니다. 동운 HMI에서 지원하는 주소 영역은 아래와 같습니다.


  • "A" : Alalog Inputs
  • "C" : Coil Outputs
  • "D" : Digital Inputs
  • "H" : Holding Registers


  • Coil과 Digital Inputs의 경우에는 한 주소 영역이 하나의 비트로 구성됨을 기억해야 합니다. Alalog Inputs와 Holding Registers는 하나의 주소 영역에 2byte word가 할당되므로 float나 int32처럼 4byte 태그를 연속적으로 사용하는 경우에는 2개의 주소 영역을 감안해야 합니다. <type>는 실제 PLC 데이터 주소에 해당하는 영역을 어떤 자료 형태로 다룰 것인지를 지정하는 것으로 동운 HMI에서 다음과 같은 데이터 타입을 지원하고 있습니다.



  • "bool" : Boolean, 디지털 신호를 저장할 때 사용
  • "Int16" : 부호있는 2 byte 정수
  • "Int32" : 부호있는 4 byte 정수
  • "UInt16" : 부호없는 2 byte 정수
  • "UInt32" : 부호는 4 byte 정수
  • "float" : 실수(4 byte)
  • "String" : 문자열


  • 태그값을 데이터베이스에 저장하고 싶다면 저장 주기를 <archive> 항목에 초 단위로 기술하면 됩니다. <archive> 항목을 기술하지 않으면 데이터베이스에 태그 값을 저장하지 않습니다. 태그 값을 읽기 전용으로("r") 사용할지 아니면 쓰기도 가능하게 할 것인지("rw")는 <io> 항목에 기술합니다. 생략하면 읽기 전용으로 간주합니다. 위의 예제에서 "A004"태그는 PLC 장치 값과 HMI 처리 값 간의 자동 스케일이 적용된 상태인데 장치 값과 처리 값 사이의 자동 변환을 처리하려면 <rawmin><rawmax>항목을 통해서 장치값으로 범위를 지정하고 <eumin><eumax>항목으로 HMI 처리 값의 범위를 지정하면 됩니다. 네가지 범위를 기술하지 않거나 정상적인 범위 지정이 아니면 자동 스케일을 적용하지 않습니다. 예제의 "A003"태그에는 자동 경보가 설정되어 있습니다. 아날로그 값이 일정 범위를 넘어서면 알람을 발생시키고 조작자로 하여금경보를 통해서 적절한 조치를 취하거나 인지(Ack)처리 할 수 있도록 하는 것으로 동운 HMI에서는 다음과같은 알람을 제공하고 있습니다.



  • "setAlm" : 디지털 태그값("bool" 타입)이 0이 아닐때 경보 발생
  • "resetAlm" : 디지털 태그값("bool" 타입)이 0일때 경보 발생
  • "euminAlm" : 아날로그 태그값이 "eumin" 설정 보다 작을 때 경보 발생
  • "eumaxAlm" : 아날로그 태그값이 "eumax" 설정 보다 클 때 경보 발생
  • "loAlm" : 아날로그 태그값이 지정한 값 보다 작을 때 경보 발생
  • "loloAlm" : 아날로그 태그값이 지정한 값 보다 작을 때 경보 발생
  • "hiAlm" : 아날로그 태그값이 지정한 값 보다 클 때 경보 발생
  • "hihiAlm" : 아날로그 태그값이 지정한 값 보다 클 때 경보 발생


  • 경보 설정은 예제처럼 <setAlm>처럼 태그로 묶어서 내부에 경보 수준(알람 레벨) 또는 지정값과 경보 수준을 입력하면 됩니다. setAlm, resetAlm, euminAlm, eumaxAlm 경보는 경보 수준만 입력하면 되지만 나머지 경보는 "1000|alert"와 같이 비교 값과 경보 수준을 "|"문자로 구분해서 입력합니다. 동운 HMI에서 지원하는 경보 수준은 "none", "caution", "alert", "critical" 로 구분해서 지정할 수 있습니다.



    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    «   2024/05   »
    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 31
    글 보관함