1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Kỹ thuật điều khiển và tự động hóa: Hệ thống giám sát điều khiển và quản lý động cơ trên nền tảng OPC UA

61 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hệ thống giám sát điều khiển và quản lý động cơ trên nền tảng OPC UA
Tác giả Vũ Nhật Quang
Người hướng dẫn TS. Nguyễn Trạng Tài, GS. TS. Huỳnh Thới Hoàng, TS. Nguyễn Trạng Tài, GS. TS. Nguyễn Văn Khoa, PGS. TS. Nguyễn Đức Khoa
Trường học Trường Đại học Bách Khoa
Chuyên ngành Kỹ Thuật Điều Khiển và Tự Động Hóa
Thể loại Luận văn thạc sĩ
Năm xuất bản 2021
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 61
Dung lượng 1,14 MB

Nội dung

1Jѭӡi dùng có thӇ dùng ÿӇ thêm dӳ liӋu cҫn bә sung cho hӋ thông hoһc tҥo thêm GDQKViFKQJѭӡi dùng mӟi, bên cҥQKÿyFzQFyӭng dөng thӵc tӃ WăQJFѭӡng cho các ÿӕLWѭӧng cӫa hӋ thӕQJQKѭÿӝQJFѫYjEL

Trang 1

ĈҤI HӐC QUӔC GIA TP HӖ CHÍ MINH

Trang 2

&{QJWUuQKÿѭӧc hoàn thành tҥi:

7UѭӡQJĈҥi Hӑc Bách Khoa ± Ĉ+4*- HCM

Cán bӝ Kѭӟng dүn khoa hӑF767UѭѫQJĈuQK&KkX

Cán bӝ chҩm nhұn xét 1:TS NguyӉn Trӑng Tài

Cán bӝ chҩm nhұn xét 2: 3*6767UѭѫQJĈuQK1KѫQ

LuұQYăQWKҥFVƭÿѭӧc bҧo vӋ tҥL7UѭӡQJĈҥi hӑF%iFK.KRDĈ+4*7S+&0 ngày 19 WKiQJQăP (trӵc tuyӃn) Thành phҫn HӝLÿӗQJÿiQKJLiluұQYăQWKҥFVƭJӗm: 1 Chӫ tӏch: PGS.TS HuǤnh Thái Hoàng

2 7KѭNê761JX\ӉQ9ƭQK+ҧo

3 Ӫy viên 1: TS NguyӉn Trӑng Tài

4 Ӫ\YLrQ3*6767UѭѫQJĈuQK1KѫQ

5 Ӫy viên 3: PGS.TS NguyӉQ7KDQK3KѭѫQJ

Xác nhұn cӫa Chӫ tӏch HӝLÿӗng ÿiQKJLi/9Yj7Uѭӣng Khoa quҧn lý chuyên ngành sau khi luұQYăQÿmÿѭӧc sӱa chӳa (nӃu có)

Trang 3

ĈҤI HӐC QUӔC GIA TP.HCM

I 7Ç1Ĉӄ TÀI : HӋ thӕng giám ViWÿLӅu khiӇn và quҧQOêÿӝQJFѫWUrQQӅn tҧng OPC

UA (Motor network control and SCADA system based on OPC UA)

II NHIӊM VӨ VÀ NӜI DUNG :

- Nghiên cӭu và ӭng dөng giao thӭF23&8$ÿӇ cҩu trúc Server-Client

- Nghiên cӭu và ӭng dөQJ1RGH-6ÿӇ tҥo OPC UA Server/Client

- Xây dӵng ӭng dөng thӵc tӃ ҧRWUrQÿLӋn thoҥLÿӇ JLiPViWÿLӅu khiӇQÿӝQJFѫ

III NGÀY GIAO NHIӊM VӨ : 21/09/2020

IV NGÀY HOÀN THÀNH NHIӊM VӨ : 13/06/2021

Trang 4

/Ӡ,&Ҧ0Ѫ1 Sau thӡi gian hӑc tұS GѭӟL PiL WUѭӡng Ĉҥi hӑc Bách Khoa TP Hӗ Chí Minh,

ÿѭӧc sӵ truyӅQÿҥt kiӃn thӭFYjJL~Sÿӥ tұn tình tӯ quý thҫy cô Giҧng viên là hành trang quý báu cho sӵ nhұn thӭc và hiӇu biӃt cӫa em ngày hôm nay Em xin ghi nhұQQѫLQj\lòng biӃWѫn chân thành nhҩt

7Uѭӟc tiên, em xin chân thành cҧPѫQWҩt cҧ quý Thҫy Cô thuӝc KRDĈLӋn ±

ĈLӋn Tӱ WUѭӡQJĈҥi hӑc Bách Khoa TP Hӗ Chí Minh ÿmWUDQJEӏ cho em nhӳng kiӃn

thӭc quý báu trong suӕt quá trình hӑc tұp tҥLWUѭӡng

CҧPѫQFiFEҥn hӑc viên lӟp cao hӑc Tӵ Ĉӝng Hóa khóa 2018 và các anh lӟp cao hӑc Tӵ Ĉӝng Hóa khóa 2017 ÿmÿӝng viên và nhiӋWWuQKJL~Sÿӥ em trong quá trình hӑc tұp

Ĉһc biӋt, em xin chân thành cҧPѫQthҫ\7UѭѫQJĈuQK&KkXÿmWұn tình góp ý và JL~Sÿӥ em trong suӕt quá trình thӵc hiӋQÿӅ WjL(PFNJQJFҧPѫQFiFWiFJLҧ cӫa các tài liӋXPjHPÿmVӱ dөQJÿӇ làm tài liӋu tham khҧo

Cuӕi cùng em gӱi lӡi cҧPѫQÿӃn tҩt cҧ nhӳQJQJѭӡi thân, bҥn bè luôn luôn ӣ bên em và ӫng hӝ em Ĉһc biӋt là quý công ty ESTC hӛ trӧ em trong quá trình thӵc hiӋn

Vì kiӃn thӭc bҧn thân còn hҥn chӃ, trong quá trình thӵc hiӋn luұQYăQQj\HPkhông tránh khӓi nhӳng sai sót, kính mong nhұQÿѭӧc nhӳng ý kiӃQÿyQJJySWӯ quý thҫy cô

73+&0WKiQJQăP Hӑc viên Cao hӑF7Ĉ+

Võ Nhұt Quang

Trang 5

7Ï07Ҳ7/8Ұ19Ă1

MөFÿtFKFӫa luұQYăQOjJLiPViWÿLӅu khiӇQFNJQJQKѭTXҧQOêÿ{QJFѫFӫa nhà máy 1Jѭӡi dùng có thӇ dùng ÿӇ thêm dӳ liӋu cҫn bә sung cho hӋ thông hoһc tҥo thêm GDQKViFKQJѭӡi dùng mӟi, bên cҥQKÿyFzQFyӭng dөng thӵc tӃ WăQJFѭӡng cho các ÿӕLWѭӧng cӫa hӋ thӕQJQKѭÿӝQJFѫYjELӃn tҫn (ӣ ÿӅ tài này chӍ dùng cho biӃn tҫQÿӇ chҥy thӱ TXDÿyJL~SFKRYLӋc giám sát, bҧo trì, bҧRGѭӥQJFNJQJQKѭÿLӅu khiӇn các thiӃt bӏ tҥi vӏ trí làm viӋc trӣ nên dӉ GjQJQKDQKFKyQJKѫQ

Trang 6

$EVWUDFW

The purpose of the thesis is to monitor, control and manage the engine of the plant Users can use it to add additional data to the system or create a new list of users, besides there are augmented reality applications for system objects such as motors and inverters (in this topic is only using inverter model for demo) thereby making the monitoring, maintenance, maintenance as well as control of the equipment at the working site easier and faster

Trang 7

/Ӡ,&$0Ĉ2$1

&Ð1*75Î1+ĈѬӦC HOÀN THÀNH TҤI 75ѬӠ1*ĈҤI HӐC BÁCH KHOA TP HӖ CHÍ MINH

7{L[LQFDPÿRDQÿk\OjF{QJWUuQKQJKLrQFӭu cӫDULrQJW{LYjÿѭӧFKѭӟng dүn khoa hӑc cӫD767UѭѫQJĈuQK&KkXFiFQӝi dung nghiên cӭu, kӃt quҧ WURQJÿӅ tài này trung thӵFYjFKѭDF{QJEӕ bҩt kǤ hình thӭF QjRWUѭӟFÿk\1Kӳng sӕ liӋu trong các bҧng biӇu phөc vө cho viӋc phân tích, nhұQ[pWÿiQKJLiÿѭӧc chính tác giҧ thu thұp tӯ

mô phӓng và thӵc nghiӋm do chính bҧn thân thӵc hiӋn

Ngoài ra, trong luұQYăQQj\WiFJLҧ có tham khҧo mӝt sӕ tài liӋu trong và ngoài Qѭӟc, tҩt cҧ ÿӅu có ghi chú cө thӇ

NӃu phát hiӋn có bҩt kǤ gian lұn nào tôi xin chӏu hoàn toàn trách nhiӋm vӅ nӝi dung luұQ YăQ Fӫa mình 7UѭӡQJ Ĉҥi hӑc Bách khoa thành phӕ Hӗ Chí Minh

NK{QJOLrQTXDQÿӃn nhӳng vi phҥm tác quyӅn, bҧn quyӅn do tôi gây ra và trong quá trình thӵc hiӋn (nӃu có)

TP Hӗ &Kt0LQKQJj\WKiQJQăP

Võ Nhұt Quang

Trang 8

0Ө&/Ө&

&+ѬѪ1* GIӞI THIӊU 1

1.1 Tính cҩp thiӃt cӫDÿӅ tài 1

1.2 Mөc tiêu cӫa luұQYăQ 1

1.3 Cҩu trúc cӫa luұQYăQ 2

&+ѬѪ1* PHҪN MӄM, THIӂT Bӎ SӰ DӨNG 3

2.1 Phҫn mӅm 3

2.1.1 Unity 3D 3

2.1.2 MongoDB Atlas 3

2.1.3 OPC UA 5

2.1.4 Siemens TIA Portal 9

2.1.5 Visual Studio IDE 9

2.2 ThiӃt bӏ sӱ dөng 10

2.2.1 PLC S7-1500 10

&+ѬѪ1* THӴC HIӊ1Ĉӄ TÀI 11

3.1 Xây dӵng OPC UA Server bҵng NodeJS 12

3.2 Xây dӵng OPC UA Client và API bҵng NodeJS 18

3.3 Lұp trình PLC S7-1500 26

3.3.1 Tәng quan 26

3.3.2 ThiӃt lұp S7-1500 làm OPC UA Client 27

3.3.3 &KѭѫQJWUuQKP{SKӓng tín hiӋu biӃn tҫn 30

3.4 Xây dӵng ӭng dөng thӵc tӃ ҧo 30

3.5 Xây dӵng ӭng dөng tҥo mã QR trên máy tính 36

3.6 Xây dӵng Web Browser 39

&+ѬѪ1* KӂT QUҦ VÀ KӂT LUҰN 44

4.1 KӃt quҧ thӵc hiӋQÿӅ tài 44

4.2 ĈӏQKKѭӟng phát triӇn và mӣ rӝQJÿӅ tài 48

TÀI LIӊU THAM KHҦO 49

Trang 9

'$1+6È&++Î1+Ҧ1+

Hunh 2-1 Giao di͏n Unity3D 3

Hunh 2-2 Giao di͏n MongoDB Atlas 4

Hunh 2-3 Thông tin cͯa các Node trong OPC UA 6

Hunh 2-4 C̭u trúc b̫o m̵t cͯa OPC UA 8

Hunh 2-5 Giao di͏n Visual Studio 2017 10

Hunh 3-1 C̭u trúc h͏ th͙ng 11

Hunh 3-2 C̭u trúc Server 12

Hunh 3-3 C̭u trúc Client 18

Hunh 3-4 Các kh͙LWURQJFK˱˯QJWUuQK3/& 27

Hunh 3-5 Active OPC UA Client 27

Hunh 3-6 &jLÿ̿t Runtime License 28

Hunh 3-7 Thông s͙ k͇t n͙i vͣi OPC UA Server 28

Hunh 3-8 Thông s͙ b̫o m̵t c͑a OPC UA Client 28

Hunh 3-9 Thông s͙ m̿Fÿ͓nh cho DB cͯa OPC UA Client 29

Hunh 3-10&K˱˯QJWUuQKP{SK͗ng tín hi͏u bi͇n t̯n 30

Hunh 3-11 )DFHSODWHJLiPViWÿL͉u khi͋n cho bi͇n t̯n 32

Hunh 3-12 Giao di͏n k͇t n͙i OPC UA Server 32

Hunh 3-13 Giao di͏QFjLÿ̿t chu̱n b̫o m̵t cho k͇t n͙i vͣi OPC UA Server 33 Hunh 3-14 Giao di͏n ͱng dung t̩o mã QR trên máy tính 36

Hunh 3-15 Thông tin thi͇t b͓ O˱XWUͷ trên MongoDB Atlas 37

Hunh 3-16 C̭u trúc Web Browser 39

Hunh 3-17 Giao di͏n hi͋n th͓ ṱt c̫ tín hi͏u có trong OPC UA Server 39

Hunh 3-18 Giao di͏n GQJÿ͋ thêm tín hi͏u vào OPC UA Server 41

Hunh 3-19 Giao di͏n ÿăQJNtWK{QJWLQQJ˱ͥi dùng 43

Hunh 4-1 Ki͇n trúc h͏ th͙ng 44

Hunh 4-2 Các tín hi͏Xÿ˱ͫFÿ͕c,ghi giͷa Server-Client 45

Hunh 4-3 K͇t qu̫ ch̩\WUrQ$5DSSÿL͏n tho̩i Android 46

Hunh 4-4 Thông tin các tín hi͏u 46

Hunh 4-5 Thông tin các lo̩i thi͇t b͓ 46

Hunh 4-6'DQKViFKQJ˱ͥLGQJÿmÿăQJNt 47

Trang 10

B̫ng 2-1 Các lo̩i Node trong OPC UA 6

B̫ng 2-2 C̭u trúc cͯa NodeID 7

B̫ng 2-3 Các thu͡c tính quan tr͕ng cͯa Node 7

B̫ng 3-1 Các kh͙LGQJWURQJFK˱˯QJWUuQK 26

B̫ng 3-2 Thông tin hi͋n th͓ YjÿL͉u khi͋n cͯDÿ͡QJF˯FK̩y b̹ng bi͇n t̯n 31

B̫ng 3-37K{QJWLQPm45O˱XWUrQ0RQJR'%$WODV 36

B̫ng 3-4 Thông tin tín cͯa tin hi͏u thêm vào OPC UA Server 41

Trang 11

&È&7Ӯ9,ӂ77Ҳ7

OLE for Process Control Chuӛi các thông sӕ kӻ thuұWÿһc biӋWÿӇ WUDRÿәi dӳ liӋu trong tӵ ÿӝng hóa công nghiӋp

thӭc truyӅn thông công nghiӋp

Mӝt thiӃt bӏ ÿѭӧc sӱ dөng trong ngành công nghiӋp tӵ ÿӝQJKyDĈѭӧc lұp trình

ÿӇ ÿLӅu khiӇn máy tӵ ÿӝng

Acquisition

OPC UA

Trang 12

&+ѬѪ1* *,Ӟ,7+,ӊ8

Phҫn giӟi thiӋu bao gӗm tính cҩp thiӃt, mөc tiêu và cҩu trúc các phҫn trong luұn YăQ&Kӫ ÿӅ cӫa luұQYăQOjWKLӃt kӃ mӝt ӭng dөQJÿLӅu khiӇn, giám sát, thu thұp dӳ liӋu cӫDÿӝQJFѫFhҥy bҵng biӃn tҫn dӵa trên nӅn tҧng OPC UA

1.1 7tQKFҩSWKLӃWFӫDÿӅWjL

HiӋn nay, vӟi sӵ phát triӇn cӫa khoa hӑc, kӻ thuұt và công nghӋ, viӋc áp dөng hӋ thӕng tӵ ÿӝng hóa vào quá trình sҧn xuҩt là cҫn thiӃt và cӵc kǤ quan trӑQJQyÿHPOҥi hiӋu quҧ trong viӋc sҧn xuҩWÿҧm bҧo chҩWOѭӧng sҧn phҭm, tiӃt kiӋm thӡi gian, nâng cao tӕLÿDKLӋu suҩt sҧn xuҩt

Bên cҥnh nhӳng lӧLtFKÿyӣ thӡLÿҥLQKѭKLӋn này, viӋFJLiPViWÿLӅu khiӇn

hӋ thӕng tӵ ÿӝng hóa tӯ [DFNJQJOjÿLӅXÿҥLÿDSKҫQQJѭӡLGQJTXDQWkPÿӃn Vӟi sӵ phát triӇn hiӋn tҥi, viӋc các ӭng dөng có thӇ chҥ\WUrQÿDQӅn tҧng, hay nói chính xác KѫQOjYLӋc lҩy dӳ liӋu tӯ nhiӅu nguӗn và hӛ trӧ dӉ dàng cho viӋc cung cҩp dӳ liӋu cho bên thӭ EDFNJQJOjPӕLTXDQWkPKjQJÿҫu cӫa giҧi pháp tӵ ÿӝng hóa Và OPC UA làm ÿѭӧFÿLӅXÿy23&8$WX\ÿmÿѭӧc biӃt và sӱ dөng rӝQJUmLQKѭQJӭng vӟi tӯng hãng lҥi có cách cҩu hình và thiӃt lұSNKiFQKDXJk\NKyNKăQFKRYLӋc mӣ rӝQJFNJQJQKѭW\biӃQ/~FQj\EjLWRiQÿһt ra cho viӋc tҥo dӵng mӝt OPC UA Server riêng biӋt, thuұn tiӋn cho viӋc mӣ rӝng và tùy biӃn cӫDQJѭӡLGQJÿѭӧFÿһt ra Mӝt vҩQÿӅ nӳa, viӋc giám sát, vұn hành tӯ [DOLQKÿӝng và không cҫn tiӃp xúc trӵc tiӃp vӟi thiӃt bӏ ÿmYjÿDQJÿѭӧc phát triӇn tӯ HMI, SCADA Ngày nay, vӟi sӵ phát triӇn cӫa công nghӋ, mӝt nӅn tҧng, ӭng dөng mӟL ÿm ÿѭӧc phát triӇn là ӭng dөng thӵc tӃ ҧR WăQJ Fѭӡng (Augmented reality ± $5 ÿmÿDQJYjVӁ trӣ WKjQKKѭӟng phát triӇn tiӃp theo

ĈӅ tài luұQYăQÿѭӧFÿһt ra vӟi mong muӕn giám sát trҥng tháiÿLӅu khiӇn thiӃt

bӏ cӫa nhà máy (ӣ ÿây lҩ\ÿӝQJFѫFKҥy bҵng biӃn tҫn làm ví dө), bên cҥQKÿy JL~SQJѭӡi dùng dӉ dàng thêm thiӃt bӏ cҫn giám sát vào hӋ thӕng

1.2 0өFWLrXFӫDOXұQYăQ

Tҥo ӭng dөng thӵc tӃ WăQJ Fѭӡng cho các thiӃt bӏ biӃn tҫn giúp cho viӋF ÿLӅu khiӇn và giám sát tình trҥng làm viӋc, bҧo trì, bҧRGѭӥng cӫa các thiӃt bӏ tҥi vӏ trí làm viӋc dӉ GjQJYjQKDQKFKyQJKѫQ%rQFҥQKÿyÿӇ thuұn tiӋn cho viӋc sӱ dөng hӋ thӕng,

Trang 13

MөFWLrXNKiFOjÿӇ hiӇXVkXKѫQ vӅ viӋc cҩu hình truyӅn thông giӳa các thiӃt bӏ, các giao thӭc trong công nghiӋS QKѭ 23& 8$ Yj FiF FKѭѫQJ WUuQK QKѭ 7,$ 3RUWDO8QLW\'ÿѭӧc sӱ dөQJWURQJÿӅ WjLQj\YjTXDÿyKӑc cách sӱ dөng chúng tӕWKѫQ

Phҫn thӵc hiӋQÿӅ tài bao gӗm kӃ hoҥch thӵc hiӋn, kӃt quҧ ÿҥWÿѭӧc và các vҩn ÿӅQWURQJÿӅ tài

Trang 14

cө dӵng hình (kӃt xuҩWÿӗ hӑa) cho các hình ҧnh 2D hoһc 3D, công cө vұt lý (tính toán

và phát triӇn va chҥm), âm thanh, mã nguӗn, hình ҧQKÿӝng, trí tuӋ nhân tҥo, phân luӗng, tҥo dòng dӳ liӋu xӱ lý, quҧn lý bӝ nhӟ, dӵng ҧQKÿӗ thӏ và kӃt nӕi mҥng

Mӝt trong các thӃ mҥnh cӫa Unity3D chính là khҧ QăQJKӛ trӧ gҫQQKѭWRjQEӝ các nӅn tҧng hiӋn có bao gӗm: Windows, Linux, Android, iOS, Blackberry 10, OS X trình duyӋt Web và cҧ Flash

2.1.2 MongoDB Atlas

MongoDB Atlas là dӏch vө FѫVӣ dӳ liӋXÿiPPk\WRjQFҫu cho các ӭng dөng hiӋQ ÿҥi TriӇn khai MongoDB ÿѭӧc quҧn lý hoàn toàn trên AWS, Google Cloud và Azure vӟLWtQKQăQJWӵ ÿӝng hóa tӕt nhҩWYjFiFSKѭѫQJSKiSÿmÿѭӧc chӭng minh nhҵm ÿҧm bҧo tính khҧ dөng, khҧ QăQJPӣ rӝng và tuân thӫ các tiêu chuҭn vӅ quyӅQULrQJWѭ

và bҧo mұt dӳ liӋu khҳt khe nhҩt

Hunh 2-1 Giao di͏n Unity3D

Trang 15

x MongoDB là mӝt hӋ quҧn trӏ Fѫ Vӣ dӳ liӋu mã nguӗn mӣ, là CSDL thuӝc 1R6TOYjÿѭӧc hàng triӋXQJѭӡi sӱ dөng

x MongoDB là mӝWGDWDEDVHKѭӟng tài liӋu (document), các dӳ liӋXÿѭӧFOѭXtrӳ trong document kiӇu JSON thay vì dҥng bҧQJQKѭ&6'/TXDQKӋ nên truy vҩn sӁ rҩt nhanh

x Vӟi CSDL quan hӋ chúng ta có khái niӋm bҧQJFiFFѫVӣ dӳ liӋu quan hӋ QKѭ 0\64/ KD\ 64/ 6HUYHU  Vӱ dөng các bҧQJ ÿӇ OѭX Gӳ liӋu thì vӟi MongoDB chúng ta sӁ dùng khái niӋm là collection thay vì bҧng

x So vӟi RDBMS thì trong MongoDB collection ӭng vӟi table, còn document

sӁ ӭng vӟi row , MongoDB sӁ dùng các document thay cho row trong RDBMS

x &iFFROOHFWLRQWURQJ0RQJR'%ÿѭӧc cҩu trúc rҩt linh hoҥt, cho phép các dӳ liӋXOѭXWUӳ không cҫn tuân theo mӝt cҩu trúc nhҩWÿӏnh

x 7K{QJWLQOLrQTXDQÿѭӧc OѭXWUӳ FQJQKDXÿӇ truy cұp truy vҩn nhanh thông qua ngôn ngӳ truy vҩn MongoDB

Hunh 2-2 Giao di͏n MongoDB Atlas

Trang 16

2.1.3 OPC UA

2.1.3.1 7әQJTXDQ

23&8$ÿѭӧc hiӇu là mӝt chuҭn truyӅn thông bұFFDRÿӝc lұSÿѭӧc phát triӇn bӣi hiӋp hӝL23&)RXQGDWLRQQKѭQJ23&8$KRjQWRjQNKiFWUѭӟc so vӟLÿһc tҧ ÿjQanh cӫa mình OPC DA Chính vì vұ\23&8$ÿѭӧc hiӇu bҵng cөm tӯ Open Platform Communication (OPC) Unified Architecture (UA) nhҵPWUiQKÿLFөm tӯ ÿmNK{QJKӧp thӡi OLE for Process Control cӫa OPC DA và nhӳQJÿһc tҧ khác

1KuQFKXQJ23&8$FyFiFѭXÿLӇm sau:

x OPC UA là chuҭn quӕc tӃ IEC 62541

x OPC UA Server và Client có thӇ ÿѭӧc lұp trình và chҥy trên nhiӅu hӋ ÿLӅu hành khác nhau

x OPC UA Server và Client có thӇ ÿѭӧc chҥy trên các thiӃt bӏ WUѭӡQJQKѭFҧm biӃn và chҩSKjQK1Kѭ Yұy dӳ liӋu tӯ cҧm biӃn, thiӃt bӏ chҩp hành có thӇ ÿѭӧFÿѭDWKҷng lên Cloud

x Có tính bҧo mұt cao, sӱ dөng nhiӅu lӟp bҧo mұt: Hӛ trӧ tính Fault tolerance

và Redundancy

ƒ X509 Certificate: Client phҧi có Certificate do Server cung cҩp thì mӟi truy cұSÿѭӧc dӳ liӋu;

ƒ Chӳ ký: mӛLWK{QJÿLӋp truyӅQÿLÿӅXÿѭӧc kèm theo chӳ ký, Server

sӁ ÿӕi chiӃu vӟi chӳ Nê ÿăQJ Nê WUѭӟc mà tӯ ÿy FKҩp nhұn/tӯ chӕi WK{QJÿLӋp

ƒ Mã hóa: mӛLWK{QJÿLӋp truyӅQÿLÿӅXÿѭӧc mã hóa

ƒ 8VHU3DVVZRUGÿăQJQKұp truyӅn thӕQJÿӇ vào Server

ƒ QuyӅn truy cұSÿӃn tӯng point (tag): mӛi biӃQWUrQ6HUYHUÿӅu có lӵa chӑn cho phép chӍ ÿӑFÿӑc/ghi hay hoàn toàn không truy cұSÿѭӧc

x Hӛ trӧ kӻ thuұt Heartbeat hai chiӅu giӳD &OLHQW Yj 6HUYHU ÿӇ kiӇm tra tình trҥng hoҥWÿӝng vӟi nhau

x Hӛ trӧ chӭFQăQJDXWRPDWLFEDFNILOOLQJGӳ liӋu Khi kӃt nӕi giӳa Client và Server bӏ JLiQÿRҥn thì dӳ liӋu trong thӡLJLDQQj\ÿѭӧc buffer trên Server

Trang 17

Ngay sau khi kӃt nӕLÿѭӧc khôi phөc thì dӳ liӋXEXIIHUQj\ÿѭӧc gӱi ngay cho Client

x Dӳ liӋX WUDR ÿәi giӳa Client và Server bao gӗm: BiӃQ Fѫ Eҧn (Elementary variable); Hàm (Method); Sӵ kiӋQ (YHQW  0mQJ $UUD\  Yj ĈӕL Wѭӧng (Datablock)

x Bao gӗP OX{Q +LVWRU\ $ODUPV  (YHQW 7UѭӟF ÿk\ FiF ÿһc tҧ này tӗn tҥi riêng biӋt: OPC HDA, OPC A&E

x Hӛ trӧ OѭXÿӗ trҥng thái (State-machine)

x Tham chiӃu (Reference): ÿѭӧc sӱ dөQJÿӇ liên kӃt các node vӟi nhau Chúng có

thӇ ÿѭӧc truy cұp bҵng trình duyӋt và dӏch vө truy vҩn

2.1.3.3 &iFORҥL1RGHWURQJ23&8$

B̫ng 2-1 Các lo̩i Node trong OPC UA

1 ĈӕLWѭӧng (Objects) MӝWÿӕLWѭӧQJÿѭӧc sӱ dөng làm vùng chӭa hoһFWKѭ

mөFÿmÿӏnh dҥng cho các thҿSKѭѫQJWKӭc và sӵ kiӋn Thҿ (Tag) Thҿ ÿҥi diӋn cho dӳ liӋu cӫDFiFÿӕLWѭӧng hoһc thuӝc

tính cӫa mӝt node Gѭӟi dҥng các thuӝc tính

Hunh 2-3 Thông tin cͯa các Node trong OPC UA

Trang 18

2 3KѭѫQJWKӭc

(Method)

3KѭѫQJWKӭc là thành phҫn cӫDÿӕLWѭӧng và có thӇ có danh sách các tham sӕ ÿҫu vào hoһFÿҫu ra Các tham

sӕ ÿѭӧc mô tҧ thông qua các thuӝFWtQK[iFÿӏnh

3 HiӇn thӏ (View) Các chӃ ÿӝ [HPÿҥi diӋn cho mӝt phҫn cӫa không gian

ÿӏa chӍ Node ÿѭӧc sӱ dөQJOjPÿLӇm truy cұp và bӝ lӑc khi duyӋt

4 LoҥLÿӕLWѭӧng

(Object Types)

Các kiӇXÿӕLWѭӧng cung cҩp thông tin vӅ cҩu trúc hoһc các thành phҫn cӫDÿӕLWѭӧng

5 Loҥi thҿ (Tag Type) Các loҥi thҿ WKѭӡng mô tҧ các thuӝc tính hoһc kiӇu dӳ

liӋu nào có thӇ ÿѭӧc tìm thҩy trong mӝt phiên bҧn cӫa thҿ

6 KiӇu tham chiӃu

x Mӛi node trong namespace cӫD23&8$ÿѭӧF[iFÿӏnh duy nhҩt bӣi mӝt ID

x ,'GQJÿӇ phân biӋt vӟi nút cӫa các hӋ thӕng con khác nhau

Cҩu trúc cӫa NodeID ÿѭӧFÿӏQKQJKƭDWURQJEҧng 2:

B̫ng 2-2 C̭u trúc cͯa NodeID

Loҥi ID cӫa Node ( s:chuӛi (string); i:sӕ (Numeric);

g:GUID; b:OPAQUE

ID cӫa Node

2.1.3.5 &iFWKXӝFWtQKFӫD1RGH

Các thuӝc tính quan trӑng cӫD1RGHÿѭӧc mô tҧ QKѭEҧng 3

B̫ng 2-3 Các thu͡c tính quan tr͕ng cͯa Node

Namespace index Chዊ sዎ ƒ‡•’ƒ…‡¯ዛዘc gán cho node

Identifier Type Lo኶i NodeID

Identifier 0ዋa chዊ node duy nhኸt bên trong namespace

Node Class Lo኶‹ï–ȋ¯ዎ‹–ዛዘng, thዃ, lo኶i dዟ liዉu)

Type Definition Tham chiዅu cho ki዇u dዟ liዉu mô t኷ thዃ

Trang 19

Write Mask Quy዆n chዊnh sዞa thuዒc tính nút (0= không, 1= có),

không cኹn sዠ xem xét cዚƒŠ×‰ዛዕi dùng

User Write Mask Quy዆n chዊnh sዞa thuዒc tính nút (0= không, 1= có),

không cኹn sዠ xem xét cዚƒ‰ዛዕi dùng hiዉn t኶i

Value Rank Lo኶i giá trዋ cዚa thዃ (không có gì, vô Šዛዔng, vector,

m኷ng) Array Dimensions Sዎ À…Š–Šዛዔc cዚa m኷ng

Access Level Quy዆n truy cኼ’ȋ¯ዌ…ǡ‰Š‹ǡ¯ዌc/ghi) tዔi node

Minimum Sampling

Interval Kho኷ng thዕi gian lኸy mኻu nhው nhኸt cዚa thዃ ዖ phía server Historizing Thዕi gian cዚa thዃ có sዀn trên máy chዚ (có, không)

2.1.3.6 &ҩXWU~FEҧRPұW

Cҩu trúc bҧo mұt cӫD23&8$ÿѭӧc mô tҧ QKѭKuQK

x Quá trình xác thӵFQJѭӡLGQJÿѭӧc thӵc hiӋn tҥi Session (phiên làm viӋc)

x Sercue Channel (Kênh bҧo mұt) diӉn ra quá trình xác thӵc và bҧo mұt thông tin dӳ liӋu

x Transport Layer (Lӟp vұn chuyӇn) sӁ OjQѫLTXҧn lí viӋc truyӅn tài, thu nhұn

Hunh 2-4 C̭u trúc b̫o m̵t cͯa OPC UA

Trang 20

ƒ Chӭng chӍ (Certification): OPC UA sӱ dөng chӭng chӍ ;ĈӇ truy cұp vào Server, Client cҫn cung cҩp chӭng chӍ (dҥng pem, der) cho 6HUYHU Yj QJѭӧc lҥi Chӭng chӍ này phҧL ÿѭӧF ³WUXVWHG´ FӫD ÿӕi SKѭѫQJ

x ChӃ ÿӝ bҧo mұt (Security Mode)

ƒ None: Không bҧo mұt

ƒ Sign: Dùng chӳ kí

ƒ Sign&Encrypt: Dùng chӳ kí và mã hóa

x Chính sách bҧo mұt (Security Policy)

ƒ None: Không bҧo mұt

ƒ Basic128Rsa15: Sӱ dөng thuұt toán mã hóa

ƒ Basic256: Sӱ dөng thuұt toán mã hóa mӣ rӝng

2.1.4 Siemens TIA Portal

Siemens TIA Portal là mӝt phҫn mӅm mӟi nhҩWÿӃn tӯ Siemens TIA là tên viӃt tҳt cӫa Totally Integration Automatic TIA Portal tích hӧp lұp trình bӝ ÿLӅu khiӇn PLC, thiӃt bӏ giám sát HMI, hӋ thӕng giám sát tәng thӇ 6&$'$ ÿLӅu khiӇn chuyӇQ ÿӝng Drives, cҩu hình biӃn tҫn và cҧm biӃQÿӃn tӯ Siemens và cung cҩp môi WUѭӡng giҧ lұp thiӃt bӏ hӛ trӧ cho bӝ phұn phát triӇn hӋ thӕng tӵ ÿӝng hóa vào mӝWP{LWUѭӡng kӻ thuұt duy nhҩt

Giao diӋn cӫD7,$3RUWDOÿѭӧc thiӃt kӃ thân thiӋn vӟLQJѭӡi sӱ dөng, tích hӧp ÿҫ\ÿӫ các chӭFQăQJFҫn thiӃt cho mӝWQJѭӡi phát triӇn hӋ thӕng Phҫn mӅm TIA Portal

hӛ trӧ ÿҫ\ÿӫ các ngôn ngӳ lұSWUuQKFKR3/&FiFWKѭYLӋn truyӅn thông, các module ,2GULYH«WtFKKӧp chung vӟi PLC S7

2.1.5 Visual Studio IDE

Visual Studio là (IDE ± Integrated Development Environment) mӝt bӝ công cө phát triӇn phҫn mӅm do Microsoft phát triӇn

x Hӛ trӧ lұp trình trên nhiӅu ngôn ngӳ QKѭ&&&9LVXDO%DVLF+70/CSS, JavaScript Phiên bҧn Visual Studio 2019 có hә trӧ ngôn ngӳ Python

x Giao diӋn Visual Studio rҩt dӉ sӱ dөQJÿӕi vӟLQJѭӡi mӟi bҳWÿҫu

x Visual Studio hӛ trӧ phát triӇn ӭng dөQJWUrQPi\WtQKQKѭ0)&:LQGRZVForm, Universal App, ӭng dөQJÿLӋn thoҥi Windows Phone 8/8.1, Windows

10, Android(Xamarin), iOS và phát triӇn website Web Form, ASP.NET MVC và phát triӇn Microsoft Office

Trang 21

x Visual Studio cho phép chúng ta tích hӧp nhӳng mӣ rӝng tӯ ErQQJRjLQKѭResharper (hә trӧ quҧn lý và viӃt mã nhanh cho các ngôn ngӳ thuӝc Net), hay viӋFFjLÿһWWKѭYLӋn nhanh chóng thông qua Nuget

2.2 7KLӃWEӏVӱGөQJ

2.2.1 PLC S7-1500

PLC (Programmable Logic Controller) là thiӃt bӏ ÿLӅu khiӇn có thӇ lұSWUuQKÿѭӧc thiӃt kӃ chuyên dùng trong công nghiӋSÿӇ ÿLӅu khiӇn các quá trình xӱ lý tӯ ÿѫQJLҧn ÿӃn phӭc tҥp

HiӋn nay trên thӏ WUѭӡng có rҩt dòng 3/&QKѭ6LHPHQV5RFNZHOO0LWVXELVKL6FKQHLGHU«Yӟi nhӳng lӧi thӃ riêng biӋt tӯ mӛLKmQJFNJQJQKѭVӵ nâng cҩp trên các GzQJ3/&ĈLӅXÿyPDQJOҥi tính linh hoҥWFNJQJQKѭQkQJFDRNKҧ QăQJ[ӱ OêÿLӅu khiӇn hӋ thӕng tӵ ÿӝng hóa

PLC S7-1500 là thӃ hӋ sau cӫa dòng PLC S7-ÿѭӧc cҧi tiӃn và nâng cҩp vӅ

bӝ nhӟ FNJQJQKѭWӕFÿӝ xӱ lý, tích hӧSÿLӅu khiӇn motion, các giao thӭc thông dөng trong nӅn công nghiӋp tiên tiӃQQKѭ3URILQHW23&8$«

Mô hình thӵc nghiӋm sӱ dөng PLC S7-1500 6ES7 513-1AL01-0AB0, hӛ trӧ giao

thӭc OPC UA Client

Hunh 2-5 Giao di͏n Visual Studio 2017

Trang 22

ƒ Server sӁ ÿѭӧc xây dӵQJWURQJÿӅ tài chҥy bҵng VPS

ƒ Giao tiӃp vӟL0RQJR'%$WODVÿӇ Ok\WK{QJWLQ1RGHWK{QJWLQQJѭӡi GQJYjOѭXWUӳ dӳ liӋu

x OPC UA Client

ƒ KӃt nӕi vӟi Server bҵng giao thӭc OPC UA

ƒ TҥRFiFÿѭӡng dүn API cho ӭng dөng thӵc tӃ ҧRWăQJFѭӡng thu thұp

và ghi dӳ liӋu vào Server

x Giao diӋn web

ƒ *LiPViWFiFQRGHÿDQJFyWURQJ6HUYHU

ƒ Thêm node vào Server thông qua MongoDB Atlas

ƒ 7KrPGDQKViFKQJѭӡi dùng OPC UA

x S7-1500

ƒ Tҥo OPC UA Client

ƒ Giҧ lұp tín hiӋu cӫDÿӝQJFѫFKҥy bҵng biӃn tҫn

x Ӭng dөng thӵc tӃ ҧo

ƒ KӃt nӕi vӟi Server bҵQJFiFÿѭӡng dүn API

ƒ Thu thұp và ghi dӳ liӋXOrQ6HUYHUWK{QJTXDFiFÿѭӡng dүn API

x Phҫn mӅm tҥo mã QR

Hunh 3-1 C̭u trúc h͏ th͙ng

Trang 23

%ѭӟc 1: Tҥo Server vӟLFiFWK{QJWLQFѫEҧQWURQJÿyVHUYHUVӁ chҩp nhұn mӟi

chӭng chӍ mà không cҫQTXDEѭӟc xác thӵc cӫa QJѭӡi dùng

const server = new OPCUAServer({

port: 26543 , // the port of the listening socket of the server

Trang 24

%ѭӟc 2: KiӇPWUDWK{QJWLQQJѭӡi dùng (username và password) khi client kӃt

nӕi vӟi server không phҧi là anonymous

if (!anonymous) {

server.userManager.isValidUser = function (user, pass) {

for ( let i = 0 ; i < serverConfig[ 0 ].userList.length; i++) {

if (serverConfig[ 0 ].userList[i] !== null ) {

let uName = serverConfig[ 0 ].userList[i].user;

let uPass = serverConfig[ 0 ].userList[i].pass;

if (user === uName && pass === uPass) {

// we can now start the server

%ѭӟc 3.1Ĉӑc thông tin Node có trong MongoDb Atlas

'QJKjP³calldata´NӃt nӕLYjÿӑc các thông tin cӫa Node tӯ MongoDB Atlas

function constructAddressSpace(server) {

( async () => {

tagsList = await calldata( 'my-db' , 'Tags' );

+jP³calldata´

async function calldata(dbase, collection) {

const uri = "mongodb+srv://nhatquang:Mrdevil1402@cluster0.xxehe.mongodb net/" + dbase + "?retryWrites=true&w=majority" ;

const MongoClient = require( 'mongodb' ).MongoClient;

const client = await MongoClient.connect(uri, { useUnifiedTopology: true });

let tags = [];

try {

const db = client.db(dbase);

let coll = db.collection(collection);

let query = await coll.find({}).toArray();

query.forEach( function getTags(item, index) {

Trang 25

const addressSpace = server.engine.addressSpace;

const namespace = addressSpace.getOwnNamespace();

// we create a new folder under RootFolder

const myDevice = namespace.addFolder( "ObjectsFolder" , {

browseName: "QV" , //"MyDevice"

});

%ѭӟc 3.3: Tҥo mҧng Node

for ( let i = 0 ; i < tagsList.length; i++) {

var tag = tagsList[i];

var vari = tag.value;

accessLevel: "CurrentRead | CurrentWrite" ,

userAccessLevel: "CurrentRead | CurrentWrite" ,

+jP³CastGetteU´GQJÿӇ kiӇm tra và cұp nhұt giá trӏ cӫa Node

function CastGetter(tag, vari) {

Trang 26

}

}

+jP³&DVW6HWWHU´ GQJÿӇ ghi giá trӏ node vào OPC UA Server Ngoài ra còn GQJKjP³setdata´ÿӇ cұp nhұt giá trӏ hiӋn hӳu cӫDQRGHYjOѭXWUӯ lên MongoDB Atlas

async function setdata(nametag, id, value) {

const uri = "mongodb+srv://nhatquang:Mrdevil1402@cluster0.xxehe.mongodb net/my-db?retryWrites=true&w=majority" ;

const client = await MongoClient.connect(uri, { useUnifiedTopology: true });

let tags = [];

try {

const db = client.db( 'my-db' );

let coll = db.collection( 'SaveData' );

let coll1 = db.collection( 'Tags' );

let filter = { tagbrowserName: nametag };

let filter1 = { _id: id }

let update = await coll.insertOne({ "nameTag" : nametag, "value" : val

ue, "timestamp" : getTimestamp() });

let update1 = await coll1.findOneAndUpdate(filter1, { $set: { "value

" : value } }, { upsert: true });

ĈӇ có thӇ dӉ dàng truy xuҩt dӳ liӋu theo thӡLJLDQFKѭѫQJWUuQKVӁ lҩy thӡi gian

thӵc và ghi vào thuӝc tính ³WLPHVWDPS´cӫa tín hiӋu

Trang 27

const collection = client.db( "my-db" ).collection(collec);

const changeStream = collection.watch(pipeline); //, {

console.log( "The file was saved!" );

}); console.log( "server is restarting" )

async function monitorUser(client, timeInMs = 60000 , pipeline = []) {

const collection = client.db( "serverConfig" ).collection( "Configuration" )

Trang 28

x Hàm kӃt nӕi vӟi MongoDB Atlas và thӵc hiӋn viӋc giám sát

async function main() {

const uri1 = "mongodb+srv://nhatquang:Mrdevil1402@cluster0.xxehe.mongodb net/my-db?retryWrites=true&w=majority" ;

const client1 = new MongoClient(uri1, { useUnifiedTopology: true }); try {

// Connect to the MongoDB cluster

Trang 29

3.2 ;k\GӵQJ23&8$&OLHQWYj$3,EҵQJNodeJS

Cҩu trúc cӫD&OLHQWQKѭKuQK

9uFKѭѫQJWUuQKQj\GQJÿӇ khӣi tҥRFiFÿѭӡng dүQ$3,QrQGRÿyFiFKjPGѭӟLÿk\Wҥo ra nhҵm sӱ dөng nhiӅu lҫn

x Hàm tҥo Client sӁ ÿѭӧc dùng WURQJFiFTXiWUuQKÿӑc và ghi dӳ liӋu

function createClient(securityMode, securityPolicy) {

const client = opcua.OPCUAClient.create({

res.setHeader( 'Content-Type' , 'application/json' );

const client = createClient(sermode, serpolicy);

Hunh 3-3 C̭u trúc Client

Trang 30

var anonymous

if (anony == "0" ) anonymous = true ;

else anonymous = false ;

if (!anonymous) {

for ( let i = 0 ; i < serverConfig[ 0 ].userList.length; i++) {

if (serverConfig[ 0 ].userList[i] !== null ) {

let uName = serverConfig[ 0 ].userList[i].user;

let uPass = serverConfig[ 0 ].userList[i].pass;

if (username === uName && password === uPass) {

client.connect(endpointurl, function (err) {

Ngày đăng: 03/08/2024, 13:00

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w