Skip to main content

1.2. Hi5 로봇 제어기 Modbus 기능

1.2. Hi5 로봇 제어기 Modbus 기능

 

Hi5 로봇 제어기는 Modbus의 슬레이브 기능만을 지원합니다.

 

(1)  MODBUS 전송모드

 

n ASCII 모드

n RTU(binary) 모드

 

(2)  지원하는 function

 

n 01: read coils (bits)

n 02: read discrete inputs (bits)

n 03: read holding registers (multiple)

n 04: read input registers (multiple)

n 05: write single coil (bit)

n 06: write single holding register

n 15: write coils (multiple bits)

n 16: write holding registers (multiple)

 

(3)  슬레이브 주소 설정

 

n 슬레이브 주소: 1~247

n 명령어의 슬레이브 주소가 0인 경우, 설정된 주소와 무관하게 모든 슬레이브가 동작하는 Broadcasting 기능을 지원합니다.

 

(4)  통신매체

 

n CNSIO: RS232/RS422/RS485 선택사용 → 1:1(RS232/RS422), 1:N(RS485)

   RS232C pin배열: 2(TxD), 3(RxD), 5(GND) PC direct cable사용

   RS422/RS485 pin배열: 1(Tx), 6(/Tx), 4(Rx), 9(/Rx)

 

n OPSIO: RS232/RS422/RS485 선택사용 → 1:1(RS232/RS422), 1:N(RS485)

RS232C pin배열: 3(TxD), 2(RxD), 5(GND) PC cross cable사용

RS422/RS485 pin배열: 1(Tx), 6(/Tx), 4(Rx), 9(/Rx)

 

(5) 사용조건

 

n MODBUS기능으로 내장 PLC Relay들을 사용하기 위해서는 내장 PLC Run 상태이어야 합니다. (참고, Hi5 PLC 유효는 TP에서 설정합니다)

 

n PLC의 동작모드 설정은 다음 그림과 같이 TP에서 『[F7]: 조건설정』 → 『[F1]: 응용조건』에서 설정합니다.

 

 

n 만일 내장 PLC가 무효이면, 내장 PLC Relay write하는 것을 지원하지 않습니다. 그러나 이 경우에도 모든 레지스터나 코일을 읽을 수는 있습니다.

 

(6)  MODBUS 가상 운용 예

 

n 조작반 기능:

Serial MODBUS를 지원하는 저렴한 GP(Graphic Panel)로 한대 혹은 여러 대의 로봇을RS232/RS422/RS485로 연결하여 사용할 수 있습니다.

n PLC 통신:

MODBUD Master 기능을 갖는 PLC들과의 통신을 저렴한 solution으로 제공합니다.

n PC 로봇운영 시스템:

PCserial port를 이용하여 로봇의 입출력신호를 모니터링 하거나 제어하는 로봇운영시스템을 구축할 수 있습니다.

 

 

(7)  Hi5 릴레이 매핑

 

Modbus

Data Model

 

Relay mapping: Refer to Hi5 relay configuration & IO data flow

Function

 

1bit

Relay name

Register

Logical Add.

Input Discrete

Add: 0x0000~0xffff

Quantity: 1~2039(bit)

 

Input Registers

Add: 0x0000~0xffff

Quantity: 1~127

External Input

X1~8192

0x0001~0x2000

Read Function

02: read discrete Inputs (bits)

04: read input registers (multiple)

PLC Input

DO1~4096

0x2001~0x3000

Fieldbus In #1

FB1.X1~960

0x3001~0x33C0

~~Fieldbus In #2~~

~~FB2.X1~960~~

~~0x3401~0x37C0~~

Fieldbus In #3

FB3.X1~960

0x3801~0x3BC0

~~Fieldbus In #4~~

~~FB4.X1~960~~

0x3C01~0x3FC0

CC-Link In

FB5.X1~256

0x4001~0x4100

Fieldbus Node In

FN1~64.X1~128

0x5001~0x8F80

Timer

T1~256

0xF001~0xF100

Counter

C1~256

0xF201~0xF300

Analog In

 

 

1000배율 Data(ex, 62506.250)

Coils

Add: 0x0000~0xffff

Quantity: 1~2039(bit)

 

Holding Registers

Add: 0x0000~0xffff

Quantity: 1~127

External Out

Y1~8192

0x0001~0x2000

Read Function

01: read coils (bits)

03: read holding registers (multiple)

 

Write Function

05: write single coil (bit)

15: write coils (multiple bits)

06: write single holding register

16: write holding registers (multiple)

 

AO: 1000배율 Data(Range: ±12.000)

System Memory reserved

PLC Out

DI1~4096

0x2001~0x3000

Fieldbus Out #1

FB1.Y1~960

0x3001~0x33C0

~~Fieldbus Out #2~~

~~FB2.Y1~960~~

~~0x3401~0x37C0~~

Fieldbus Out #3

FB3.Y1~960

0x3801~0x3BC0

~~Fieldbus Out #4~~

~~FB4.Y1~960~~

~~0x3C01~0x3FC0~~

CC-Link Out

FB5.Y1~256

0x4001~0x4100

Fieldbus Node Out

FN1~64.Y1~128

0x5001~0x8F80

Special

SP1~128

0x9101~0x9180

Auxiliary

R1~1024

0x9201~0x9600

Keep

K1~1024

0x9801~0x9C00

Timer

 

 

Counter

 

 

Analog Out

 

 

System Memory

SW1~512.1~16

0xA001~0xC000

Shared Registers

Data Memory

MW1~1000.1~16

0xC001~0xFE80

HRBASIC

V% variable

 

 

RN Register

 

 

Data range: 0~255

V$ variable

 

 

36 bytes/V$ 40 x 36/2 = 720

 

V! variable

 

 

IEEE single-precision 32bit float point

 

 

Modbus

Data Model

 

Relay mapping: Refer to Hi5 relay configuration & IO data flow

Function

 

Register Prefix Name

 

Relay name

8bit

16bit

32bit

Float(32bit)

Logical Add.

Input Discrete

Add: 0x0000~0xffff

Quantity: 1~2039(bit)

 

Input Registers

Add: 0x0000~0xffff

Quantity: 1~127

External Input

XB1~1024

XW1~512

XL1~256

XF1~256

0x0001~0x0200

Read Function

02: read discrete Inputs (bits)

04: read input registers (multiple)

PLC Input

DOB1~512

DOW1~256

DOL1~128

DOF1~128

0x2001~0x2100

Fieldbus In #1

FB1.XB1~120

FB1.XW1~60

FB1,XL1~30

FB1.XF1~30

0x3001~0x303C

~~Fieldbus In #2~~

~~FB2.XB1~120~~

~~FB2.XW1~60~~

~~FB2,XL1~30~~

~~FB2.XF1~30~~

~~0x3401~0x343C~~

Fieldbus In #3

FB3.XB1~120

FB3.XW1~60

FB3,XL1~30

FB3.XF1~30

0x3801~0x383C

~~Fieldbus In #4~~

~~FB4.XB1~120~~

~~FB4.XW1~60~~

~~FB4,XL1~30~~

~~FB4.XF1~30~~

~~0x3C01~0x3C3C~~

CC-Link In

FB5.XB1~32

FB5.XW1~16

FB5,XL1~8

FB5.XF1~8

0x4001~0x4010

Fieldbus Node In

FN1~64.XB1~16

FN1~64.XW1~8

FN1~64.XL1~4

FN1~64.XF1~4

0x5001~0x8F08

Timer

 

 

 

 

 

Counter

 

 

 

 

 

Analog In

 

AI1~32

 

 

0x9A01~0x9A20

1000배율 Data(ex, 62506.250)

Coils

Add: 0x0000~0xffff

Quantity: 1~2039(bit)

 

Holding Registers

Add: 0x0000~0xffff

Quantity: 1~127

External Out

YB1~1024

YW1~512

YL1~256

YF1~256

0x0001~0x0200

Read Function

01: read coils (bits)

03: read holding registers (multiple)

 

Write Function

05: write single coil (bit)

15: write coils (multiple bits)

06: write single holding register

16: write holding registers (multiple)

 

AO: 1000배율 Data(Range: ±12.000)

System Memory reserved

PLC Out

DIB1~512

DIW1~256

DIL1~128

DIF1~128

0x2001~0x2100

Fieldbus Out #1

FB1.YB1~120

FB1.YW1~60

FB1,YL1~30

FB1.YF1~30

0x3001~0x303C

~~Fieldbus Out #2~~

~~FB2.YB1~120~~

~~FB2.YW1~60~~

~~FB2,YL1~30~~

~~FB2.YF1~30~~

~~0x3401~0x343C~~

Fieldbus Out #3

FB3.YB1~120

FB3.YW1~60

FB3,YL1~30

FB3.YF1~30

0x3801~0x383C

~~Fieldbus Out #4~~

~~FB4.YB1~120~~

~~FB4.YW1~60~~

~~FB4,YL1~30~~

~~FB4.YF1~30~~

~~0x3C01~0x3C3C~~

CC-Link Out

FB5.YB1~32

FB5.YW1~16

FB5,YL1~8

FB5.YF1~8

0x4001~0x4010

Fieldbus Node Out

FN1~64.YB1~16

FN1~64.YW1~8

FN1~64.YL1~4

FN1~64.YF1~4

0x5001~0x8F08

Special

SPB1~16

SPW1~8

SPL1~4

SPF1~4

0x9001~0x9008

Auxiliary

RB1~128

RW1~64

RL1~32

RF1~32

0x9101~0x9140

Keep

KB1~128

KW1~64

KL1~32

KF1~32

0x9201~0x9240

Timer

TB1~1024

TW1~512

TL1~256

TF1~256

0x9301~0x9500

Counter

CB1~1024

CW1~512

CL1~256

CF1~256

0x9701~0x9900

Analog Out

 

AO1~32

 

 

0x9A01~0x9A20

System Memory

SB1~1024

SW1~512

SL1~256

SF1~256

0xA001~0xA200

Shared Registers

Data Memory

MB1~2000

MW1~1000

ML1~500

MF1~500

0xA401~0xA7E8

HRBASIC

V% variable

 

V%[1~400]

 

 

0xB001~0xB190

RN Register

 

RN1~16

 

 

0xC001~0xC010

Data range: 0~255

V$ variable

V$[1~40]

0xD001~0xD2D0

36 bytes/V$ 40 x 36/2 = 720

 

V! variable

 

 

 

V![1~400]

0xE001~0xE320

IEEE single-precision 32bit float point

 

n 상기 표의 기울임 꼴 큰 숫자는 Modbus에서 사용하는 relay 그룹임.

 

n Data형식: Float형식은 IEEE single-precision 32bit float point을 사용하고, 8bit/16bit/32bit 들은 전부 signed 정수를 사용함(RN Register는 제외), 8bit형식의 경우 GP에 따라 읽기만 가능할 수 있음

 

n Relay EndianLittle Endian을 사용함;

, Float 형식인YF1=6.515625(0x40D08000)인 경우,

YL1=0x40D08000 YW1=0x8000, YW2=0x40D0 YB1=0x00, YB2=0x80, YB3=0xD0, YB4=0x40

참고) Modbus전송은16 bit align Big Endian. , 상기 전송은 0x80, 0x00, 0x40, 0xD0의 순서로 전송됨

 

n Hi4a대비 변경사항

32bit형식인 L(long)형과F(Float)형 추가, AI/AO개수 확장(432), SP/SPB/SPW/SPL/SPF개수확장(SPW: 2→8), SB/SW/SL/SF개수확장(SW: 256→512), MB/MW/ML/MF크기축소(MW: 5000→1000)

Timer(Tn)Counter(Cn) bit수 확장(16bit32bit); Cf) Tn(Cn) TLn(CLn)의 관계: TLn(CLn)의 값이 0이면Tn(Cn)=1(activation)이고, 0이 아니면0.

DI/DO, X/Y relay 확장: DI/DO1~256 1~4096, X/Y1~256 1~8192

Quantity확대: Bit=20002039, Reg=125127

 

n Fieldbus Node In/Out: Address는 상위 byte Node번호(1~64:0x50~0x8F, offset: 0x50)를 지정하고, 하위 byte는 번지를 지정(bit: 1~128, word: 1~8)한다.

Ex,

FN1.X1~128: 0x5001~0x5080, FN2.X1~128: 0x5101~0x5180, FN3.X1~128: 0x5201~0x5280, FN4.X1~128: 0x5301~0x5380,  ……, FN64.X1~128: 0x8F01~0x8F80

Ex,

FN1.XW1~8: 0x5001~0x5008, FN2.XW1~8: 0x5101~0x5108, FN3.XW1~8: 0x5201~0x5208, FN4.XW1~8: 0x5301~0x5308,  ……, FN64.XW1~8: 0x8F01~0x8F08

 

 

(8) Hi5 제어기의 릴레이 구성

 

Hi5 제어기의 입출력 데이터 흐름

 

 

HRBasic에서 DI를 읽거나 DO에 값을 쓰는 것은 application layer이고 출력된DO를 읽는 것은 device layer입니다. 그 외 입출력 모니터링, Modbus, 그리고 PLC에서 읽고 쓰는 것은 전부 DI/DO device driver layer입니다. 따라서 둘 간에는 속성(논리/펄스/지연) 설정에 따라 차이가 있을 수 있습니다.