Tải bản đầy đủ (.pdf) (145 trang)

Xây dựng công cụ cho phép thiết kế ứng dụng SCADA vừa và nhỏ trên nền iOS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.93 MB, 145 trang )

Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

XÂY DỰNG CÔNG CỤ CHO PHÉP THIẾT KẾ ỨNG DỤNG
SCADA VỪA VÀ NHỎ TRÊN NỀN IOS

GVHD: TS. TRƯƠNG ĐÌNH CHÂU
SVTH:
NGUYỄN VĂN PHÚ

40901978

PHẠM HOÀNG HẢI QUÂN

40902144

LÊ HỒNG HẢI

40900727

TP. HỒ CHÍ MINH, THÁNG NĂM 2014



Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

LỜI CẢM ƠN
Lời đầu tiên, con xin cảm ơn Ba Mẹ đã tạo mọi điều kiện tốt nhất để việc học của con được
thuận lợi và đã luôn động viên con những lúc con gặp khó khăn trong quãng đường đại học.
Chúng em xin chân thành cảm ơn các Thầy, Cô ở bộ môn Tự Động Hoá nói riêng và Thầy,
Cô của khoa Điện – Điện tử trường Đại Học Bách Khoa – Đại Học Quốc Gia Thành Phố Hồ
Chí Minh đã truyền đạt cho chúng em những kiến thức, hành trang vô cùng quý báu trong
suốt bốn năm qua.
Chúng em xin gửi lời cảm ơn sâu sắc nhất đến Thầy Trương Đình Châu. Trong suốt thời gian
hướng dẫn Luận Văn Tốt Nghiệp, Thầy đã không tiếc thời gian quý báu của mình để chỉ bảo,
giảng dạy cho chúng em hiểu được vấn đề và Thầy đã cung cấp nhiều tài liệu rất cần thiết để
chúng em có thể hoàn thành tốt Luận Văn.
Cuối cùng, xin gửi lời cảm ơn đến tất cả các bạn trong lớp DD09KSTN và DD09KSTD đã
luôn chia sẻ kinh nghiệm, góp ý và luôn đưa ra những lời khuyên để giúp chúng tôi hoàn
thành Luận Văn này.
Do đề tài mới mẻ và với những hạn chế chủ quan, Luận Văn này không thể tránh khỏi những
thiếu sót. Rất mong được sự góp ý của Thầy, Cô cùng toàn thể các bạn.
Xin chân thành cảm ơn.
Tp. Hồ Chí Minh, ngày 16, tháng 12, năm 2013

Sinh viên
NGUYỄN VĂN PHÚ
PHẠM HOÀNG HẢI QUÂN
LÊ HỒNG HẢI

.



Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu
MỤC LỤC

MỤC LỤC ....................................................................................................................................... i
DANH SÁCH HÌNH MINH HỌA ...................................................................................................... iv
DANH SÁCH BẢNG SỐ LIỆU ........................................................................................................ viii
CHƯƠNG 1

GIỚI THIỆU ĐỀ TÀI .................................................................................................. 1

1.1

Tính Cấp Thiết Của Đề Tài ............................................................................................... 1

1.2

Mục Tiêu Đề Tài ............................................................................................................. 2

1.3

Nhiệm Vụ Đề Tài ............................................................................................................ 2

CHƯƠNG 2

TỔNG QUAN VỀ MAC OS X, iOS, XCODE ................................................................... 3


2.1

Tổng Quan Mac Os X ...................................................................................................... 3

2.2

Tổng Quan Ios................................................................................................................ 3

2.3

Xcode 4.4....................................................................................................................... 4

2.4

Giới Thiệu Về Objective C ............................................................................................... 8

2.4.1

Cơ bản về Objective C ............................................................................................. 9

2.4.2

Các khái niệm về lớp, hàm và function .................................................................. 11

CHƯƠNG 3

TỔNG QUAN VỀ CÔNG CỤ SCADA TRONG LUẬN VĂN............................................. 18

3.1


Sơ Đồ Kernel................................................................................................................ 18

3.2

Các Thành Phần SCADA Trong Đề Tài ............................................................................ 19

CHƯƠNG 4

NETWORK PROGRAMING ..................................................................................... 21

4.1

IP Programing .............................................................................................................. 21

4.2

Objective - C Network Programming............................................................................. 23

CHƯƠNG 5

XÂY DỰNG GIAO DIỆN NGƯỜI DÙNG .................................................................... 27

5.1

Project Manager Form ................................................................................................. 27

5.2

Device Form................................................................................................................. 29


5.2.1

Thành Phần Của Device Form ................................................................................ 29

5.2.2

Chức Năng Của Device Form ................................................................................. 30

5.2.3

Cách Thức Xây Dựng Device Form ......................................................................... 31

Page i


Luận Văn Tốt Nghiệp
5.3

GVHD: TS. Trương Đình Châu

Task – Tag Form ........................................................................................................... 34

5.3.1

Thành Phần Của Task – Tag Form .......................................................................... 34

5.3.2

Chức Năng Của Task – Tag Form ............................................................................ 35


5.4

Cách Thức Xây Dựng Task - Tag Form............................................................................ 37

5.5

Màn Hình Runtime ....................................................................................................... 43

5.5.1

Giới Thiệu Màn Hình Thiết Kế Runtime ................................................................. 43

5.5.2

GestureRecognizer ............................................................................................... 43

5.5.3

Đối Tượng Label ................................................................................................... 44

5.5.4

Đối Tượng Image .................................................................................................. 52

5.5.5

Đối Tượng Button................................................................................................. 55

5.5.6


Đối Tượng TextField ............................................................................................. 62

5.5.7

Đối Tượng Slider .................................................................................................. 66

5.5.8

Đối Tượng Progress View...................................................................................... 72

5.5.9

Save Load Project Trong Runtime .......................................................................... 74

5.6

Alarm Form ................................................................................................................. 76

5.6.1

Thành Phần Của Alarm Form ................................................................................. 76

5.6.2

Chức Năng Của Alarm Form .................................................................................. 77

5.7

Trend Form .................................................................................................................. 78


5.7.1

Trend Là Gì ........................................................................................................... 78

5.7.2

Thư Viện Hỗ Trợ Thiết Kế...................................................................................... 78

5.7.3

Giao Diện Cơ Bản Của Trend Form......................................................................... 79

5.7.4

Tạo Lớp Quản Lý Trend - TrendSingleView............................................................. 79

5.7.5

Trend Tag ............................................................................................................. 84

5.7.6

Quá Trình Xử Lý Và Liên Kết Các Đối Tượng Của Các Lớp Với Nhau ........................ 85

5.8

Data Logging Form ....................................................................................................... 90

5.8.1


Giới Thiệu Về Sqlite .............................................................................................. 90

5.8.2

Cài Đặt Add-On Sqlite Manager Cho Trình Duyệt Firefox ........................................ 91

Page ii


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

5.8.3

Cách sử dụng SQLite trong Objective C .................................................................. 95

5.8.4

Cách lấy dữ liệu từ Modbus để hiện thị lên màn hình ............................................ 98

5.8.5

Cách sử dụng UITableView để hiện thị dữ liệu ..................................................... 100

5.9

Report Form .............................................................................................................. 103

5.9.1

CHƯƠNG 6

Cách tạo ra một file PDF...................................................................................... 104
XML ................................................................................................................... 116

6.1

Giới Thiệu Về XML ..................................................................................................... 116

6.2

Cấu Trúc XML Trong Chương Trình SCADA. ................................................................. 117

6.3

Save/Load Project Dùng XML - Project Manager Form................................................. 118

CHƯƠNG 7
7.1

ỨNG DỤNG PHẦN MỀM SCADA TRÊN HỆ THỐNG THỰC TẾ .................................. 122

Simulation Project ..................................................................................................... 122

7.1.1

Mục Tiêu ............................................................................................................ 122

7.1.2


Mô Hình ............................................................................................................. 122

7.1.3

Chương Trình SCADA Simulink Trên Ipad............................................................. 122

7.2

Ứng Dụng Scada Trong Hệ Thống CIP .......................................................................... 126

7.2.1

Mục Tiêu ............................................................................................................ 126

7.2.2

Mô Hình ............................................................................................................. 127

7.2.3

Chương Trình Giám Sát Và Điều Khiển Hệ Thống CIP Trên iPad ............................ 128

CHƯƠNG 8

TỔNG KẾT, ĐÁNH GIÁ ĐỀ TÀI .............................................................................. 133

8.1

Kết Quả Đạt Được...................................................................................................... 133


8.2

Những Hạn Chế.......................................................................................................... 133

8.3

Hướng Phát Triển Trong Tương Lai............................................................................. 133

Page iii


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

DANH SÁCH HÌNH MINH HỌA
Hình 2-1 Giao diện Xcode 4.4 ........................................................................................................ 5
Hình 2-2 Màn hình tạo dự án mới ................................................................................................. 6
Hình 2-3 Màn hình chọn loại ứng dụng .......................................................................................... 6
Hình 2-4 Màn hình điền mẫu thông tin dự án ................................................................................ 7
Hình 2-5 Minh họa cho đối tượng autoRelease ............................................................................ 11
Hình 3-1 Sơ đồ Kernel ................................................................................................................. 18
Hình 4-1 NetworkPacket ............................................................................................................. 21
Hình 4-2 Kết nối TCP/IP ............................................................................................................... 23
Hình 4-3 Kết nối Socket ............................................................................................................... 24
Hình 4-4 Các hàm kết nối giữa Server và Client ............................................................................ 24
Hình 5-1 Project manager Form ................................................................................................... 27
Hình 5-2 Giao diện Device Form .................................................................................................. 29
Hình 5-3 Giao diện thiết kế device ............................................................................................... 30
Hình 5-4 Giao diện Device Form .................................................................................................. 31

Hình 5-5 Giải thuật thực thi khi nhấn nút add device hoặc khi edit device .................................... 32
Hình 5-6 Giao diện Task – Tag Form ............................................................................................. 34
Hình 5-7 Giao diện thiết kế Task .................................................................................................. 35
Hình 5-8 Giao diện thiết kế Tag ................................................................................................... 36
Hình 5-9 Xóa task hoặc tag khỏi chương trình ............................................................................. 36
Hình 5-10 Giải thuật thực thi khi nhấn nút add task (tag) hoặc khi edit task (tag).......................... 40
Hình 5-11 Giao diện màn hình chính ............................................................................................ 43
Hình 5-12 Giao diện tạo một class mới ........................................................................................ 45
Hình 5-13 Giao diện tạo Class mới ............................................................................................... 45
Hình 5-14 Giao diện tạo Class mới ............................................................................................... 46
Hình 5-15 Giao diện tạo Class mới ............................................................................................... 46

Page iv


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Hình 5-16 Giao diện tạo Class mới ............................................................................................... 48
Hình 5-17 Giao diện thiết kế Pop-Up ........................................................................................... 49
Hình 5-18 Giao diện chọn Image .................................................................................................. 53
Hình 5-19 Segment chọn Fucntion cho Image .............................................................................. 53
Hình 5-20 Giao diện thư viện Image ............................................................................................ 53
Hình 5-21 Giao diện hiển thị hình ảnh đã chọn ............................................................................ 54
Hình 5-22 Các bước làm việc với Button. ..................................................................................... 55
Hình 5-23 Giải thuật cho Expression ............................................................................................ 58
Hình 5-24 Giao diện Pop Up TextField ......................................................................................... 63
Hình 5-25 Giao diện chỉnh sửa TextField ...................................................................................... 65
Hình 5-26 Giao diện thiết kế Slider .............................................................................................. 67

Hình 5-27 Giao diện thiết kế Slider .............................................................................................. 67
Hình 5-28 Giao diện tạo Class ...................................................................................................... 70
Hình 5-29 Một giao diện View Edit Object ................................................................................... 70
Hình 5-30 Giao diện ProgressView ............................................................................................... 72
Hình 5-31 Giao diện thiết kế ProgressView .................................................................................. 74
Hình 5-32 Giao diện chính của ALARM ......................................................................................... 76
Hình 5-33 Giao diện thiết kế alarm tag ........................................................................................ 77
Hình 5-34 Giao diện khi xóa alarm tag ......................................................................................... 78
Hình 5-35 Giao diện Trend .......................................................................................................... 78
Hình 5-36 Giao diện cơ bản của Trend Form ................................................................................ 79
Hình 5-37 Giải thuật cập nhật dữ liệu và vẽ ................................................................................. 82
Hình 5-38 Giải thuật xử lý – Expand Mode Hàm cập nhật thông số trục x ..................................... 82
Hình 5-39 Giải thuật xử lý – Contract Mode ................................................................................. 83
Hình 5-40 Giao diện Single Trend ................................................................................................ 89
Hình 5-41 Giao diện Multi Trend ................................................................................................. 90
Hình 5-42 Giao diện mở ứng dụng SQLite .................................................................................... 91

Page v


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Hình 5-43 Giao diện tạo Table SQLite .......................................................................................... 92
Hình 5-44 Giao diện tạo Table cho SQLite .................................................................................... 93
Hình 5-45 Giao diện Update thông tin SQLite ............................................................................... 94
Hình 5-46 Giao diện chính của File SQLite được tạo ..................................................................... 95
Hình 5-47 Giao diện Add file SQLite vào Project ........................................................................... 95
Hình 5-48 Giao diện Add thư viện SQLite3 vào chương trình........................................................ 96

Hình 5-49 Giao diện DataLogging................................................................................................. 98
Hình 5-50 Giao diện UITableView .............................................................................................. 100
Hình 5-51 Giao diện hiển thị dữ liệu của DataLogging ................................................................ 103
Hình 5-52 Màn hình giao diện của Report .................................................................................. 103
Hình 5-53 Kết quả viết chữ lên file PDF ...................................................................................... 106
Hình 5-54 Kết quả vẽ đường thẳng lên file PDF .......................................................................... 108
Hình 5-55 Kết quả vẽ Table lên file PDF ..................................................................................... 111
Hình 5-56 File PDF chưa có Background ..................................................................................... 114
Hình 5-57 File PDF có Background ............................................................................................. 115
Hình 6-1 Cấu trúc XML trong chương trình SCADA ..................................................................... 117
Hình 7-1 Mô hình hệ thống Simulink ......................................................................................... 122
Hình 7-2 Giao diện Runtime hệ thống Simulink .......................................................................... 123
Hình 7-3 Giao diện Add Device hệ thống Simulink ...................................................................... 124
Hình 7-4 Giao diện Add Task/Tag hệ thống Simulink .................................................................. 124
Hình 7-5 Giao diện Trend hệ thống Simulink .............................................................................. 125
Hình 7-6 Giao diện Alarm hệ thống Simulink.............................................................................. 125
Hình 7-7 Giao diện DataLogging hệ thống Simulink .................................................................... 126
Hình 7-8 Sơ đồ hệ thống CIP ..................................................................................................... 126
Hình 7-9 Sơ đồ thực tế hệ thống CIP.......................................................................................... 127
Hình 7-10 Giao diện hệ thống CIP trên Citect ............................................................................. 128
Hình 7-11 Giao diện hệ thống CIP trên chương trình .................................................................. 128

Page vi


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Hình 7-12 Giao diện Add Task/Tag hệ thống CIP ........................................................................ 129

Hình 7-13 Giao diện Single Trend hệ thống CIP .......................................................................... 129
Hình 7-14 Giao diện Multi Trend hệ thống CIP ........................................................................... 130
Hình 7-15 Giao diện ALARM hệ thống CIP .................................................................................. 130
Hình 7-16 Giao diện DataLogging hệ thống CIP .......................................................................... 131
Hình 7-17 Giao diện Report hệ thống CIP ................................................................................... 131
Hình 7-18 Giao diện Save/Load hệ thống CIP ............................................................................. 132

Page vii


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

DANH SÁCH BẢNG SỐ LIỆU
Bảng 1-1 Các phần mềm SCADA thông dụng .................................................................................. 1
Bảng 2-1 Thuộc tính lớp .............................................................................................................. 12
Bảng 4-1 Định dạng gói tin IP ...................................................................................................... 22
Bảng 4-2 Hàm kết nối.................................................................................................................. 25
Bảng 4-3 Hàm kết nối.................................................................................................................. 25

Page viii


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu
CHƯƠNG 1

GIỚI THIỆU ĐỀ TÀI


1.1 Tính Cấp Thiết Của Đề Tài
Tên đề tài:
"Xây dựng công cụ cho phép thiết kế ứng dụng scada vừa và nhỏ trên nền iOS"
Hệ thống SCADA nói chung và phần mềm SCADA nói riêng là thứ không thể thiếu
trong quá trình phát triển nền công nghiệp hiện đại, nhất là với tốc độ hiện đại hóa ngày càng
nhanh chóng như hiện này.
Do hệ thống SCADA đã xuất hiện từ khá lâu nên hiện nay trên thế giới có rất phần
mềm SCADA của các công ty nổi tiếng, chúng được sử dụng rộng rãi và tính ổn định cao.
Bảng 1-1 Các phần mềm SCADA thông dụng

Tên phần mềm
Vijeo Citect
WinCC
InTouch
GeniDAQ
RSView
LabView

Công ty
Schneider Electric
Siemens
WonderWare
Advantech
Rockwell Automation
National Instruments

Quốc gia
Pháp
Đức

Hoa Kì
Đài Loan
Hoa Kì
Hoa Kì

Các phần mềm SCADA nói trên đều có hiệu năng cao và đáng tin cậy nhưng chúng
mắc phải một số nhược điểm sau:
 Giá thành quá cao đối với các ứng dụng vừa và nhỏ ở Việt Nam.
 Cấu trúc quá phức tạp cũng như mã nguồn đóng, có cơ chế mã hoá và ẩn quá trình thực
thi bên trong chỉ hiển thị về mặt thiết kế cho người dùng. Do đó khó sử dụng để bắt đầu
nghiên cứu chuyên sâu về hệ thống SCADA.
 Chỉ hỗ trợ phần mềm trên nền tảng Window, không hỗ trợ trên các nền tảng khác như
iOS, Android…
Bên cạnh đó, trên thị trường hiện nay cũng xuất hiện một số phần mềm SCADA trên các nền
tảng khác như iOS, Android nhưng các phần mềm này đều có một số khuyết điểm sau:
 Thu phí hoàn toàn.
 Không được bảo trì, cập nhật thường xuyên.
 Cách thức tiếp cận của chúng khác với các các kiến thức thường được giảng dạy nên
việc sử dụng chúng cho mục đích nghiên cứu cũng gặp nhiều khó khăn.
 Mã nguồn đóng hoàn toàn. Giao diện thiết kế trình bày khá phức tạp và gây khó khăn
cho việc sử dụng.
 Hầu hết các phần mềm đều trên nền tảng Android, có rất ít phần mềm được xây dựng
trên nền iOS.
Mặt khác, các phần mềm hoàn toàn là của nước ngoài. Ở Việt Nam chưa có bất cứ phần
mềm SCADA nào được thiết kế trên nền tảng iOS. Ngay cả việc tìm kiếm những thư viện hỗ trợ
Page 1


Luận Văn Tốt Nghiệp


GVHD: TS. Trương Đình Châu

cho việc viết phần mềm trên nền tảng iOS cũng khá khó khăn.
Qua các phân tích và đánh giá trên, việc xây dựng một công cụ SCADA trên nền iOS
theo cấu trúc mở với giao điện thân thiện, dễ sử dụng, có tính cấu trúc và tổng quát cao là cần
thiết để phục vụ quá trình học tập và nghiên cứu hệ thống SCADA cũng như áp dụng cho các
ứng dụng vừa và nhỏ ở Việt Nam. Bên cạnh đó, công cụ SCADA này cũng là một trong những
bước đi đầu tiên xây dựng cấu trúc SCADA trên nền tảng iOS để cho phép việc nghiên cứu, phát
triển hệ thống SCADA trên nền tảng iOS được dễ dàng hơn, thuận tiện hơn sau này. Và công cụ
SCADA trên nền iOS cũng tiến tới một bước mới hơn trong việc quản lý hệ thống, đó là quản lý
hệ thông qua mạng không dây wifi. Từ đó giảm độ phức tạp trong việc quản lý và kết nối hệ thống
đi rất nhiều.
Nếu được quan tâm đầu tư đúng mức thì công cụ SCADA này sẽ đáp ứng đầy đủ các
yêu cầu cơ bản cũng như nâng cao của một công cụ SCADA chuyên nghiệp.
1.2 Mục Tiêu Đề Tài
Mục tiêu:
 Nghiên cứu, thiết kế và xây dựng công cụ SCADA trên nền iOS bằng XCode với
ngôn ngữ Objective C. Phần mềm này có kiến trúc mở với ưu điểm gọn nhẹ, dễ sử
dụng nhưng vẫn đảm bảo thực hiện đầy đủ các tính năng của một công cụ SCADA.
 Ứng dụng công cụ đã được thiết kế vào các hệ thống vừa và nhỏ để kiểm tra các tính
năng đã được thiết kế.
1.3 Nhiệm Vụ Đề Tài
Thiết kế công cụ SCADA với các tính năng sau:
 Thu thập dữ liệu từ các RTU: PLC, PAC, remote I/O ..
 Điều khiển thiết bị thông qua nhiều loại giao diện.
 Cung cấp công cụ tiêu chuẩn để thiết kế các giao diện một cách dễ dàng và nhanh
chóng.
 Hổ trợ multitask.
 Xây dựng cơ chế lưu trữ bằng XML đơn giản gọn nhẹ, dễ hiểu và có thể được các
phần mềm khác sử dụng lại

 Lập trình theo hướng kế thừa, với một kiến trúc có tính hệ thống cao, đảm bảo cho
việc nâng cấp và phát triển sau này
 Ngoài ra cũng sẽ xây dựng thêm một số tính năng cần thiết khác như: alarm, trend,
data logging, report, …
Ứng dụng công cụ vừa thiết kế vào một số hệ thống SCADA của các bạn sinh viên thực
hiện luận văn trong đợt này. Thử nghiệm các hệ thống này để kiểm định tính năng của công
cụ.
Sau khi đáp ứng được các yêu cầu cơ bản, sẽ tiếp tục nghiên cứu và phát triển thêm
các thành phần cao cấp hơn như: script, redundancy, liên kết mạng đa giao thức, database,
Web-based, security, privileged access, 
Page 2


Luận Văn Tốt Nghiệp
CHƯƠNG 2

GVHD: TS. Trương Đình Châu

TỔNG QUAN VỀ MAC OS X, iOS, XCODE

2.1 Tổng Quan Mac Os X
MAC OS X là một hệ điều hành xây dựng trên nên tảng UNIX, đơn giản và trực
quan, rất dễ sử dụng khi người dùng nắm bắt được nó. Thiết kế MAC OS X là điểm nổi bật
của nó, phông chữ đẹp, sở hữu chế độ tìm kiếm và xem trước rất linh hoạt.
Ưu điểm của MAC OS X là tính ổn định và bảo mật cực cao, có rất ít virus có thể tấn
công lên MAC OS X, một phần do hệ điều hành này thường đi kèm với phần cứng của
Apple nên có sẵn bản quyền, đồng thời hệ điều hành cũng tự động thực hiện việc nâng cấp
hệ thống an ninh của MAC OS X khi máy kết nối đến Server.
MAC OS X được cung cấp một khối lượng khổng lồ các phần mềm tương thích với
nó, ngoài ra lượng phần mềm còn có thể nhân lên nhiều lần khi người dùng có thể cài đặt

Windows cùng các phần mềm chạy trên Windows lên MAC OS X thông qua ứng dụng
Parallels.
2.2 Tổng Quan Ios
iOS là hệ điều hành di động của hãng Apple, ban đầu hệ điều hành này chỉ dành cho
iPhone nhưng về sau đã được phát triển lên cho các sản phẩm khác của Apple như: iPod
Touch, iPad, Apple TV.
Hiện thời, iOS đã có 6 phiên bản (6.0.1). Hệ điều hành iOS đã làm điên đảo những
người lập trình cũng như những người đam mê về công nghệ xuất hiện từ lúc iPhone 2G ra
đời và cho đến nay khi iPhone 5G ra đời.
Ưu điểm của hệ điều hành :
 Home Screen (Màn hình chính): các biểu tượng ứng dụng được hiển thị ngay trên
màn hình chính và một hàng dưới cùng của màn hình là nơi dành cho những ứng
dụng mà người dung thường xuyên sử dụng.
 Folder (Thư mục): xuất hiện từ iOS 4 cho phép người dùng nhóm các ứng dụng trên
màn hình chính vào trong 1 thư mục giúp dễ dàng quản lý và sử dụng.
 Multitasking (Đa nhiệm): trước iOS 4, tính năng chạy đa nhiệm chỉ được giới hạn ở
một số lựa chọn ứng dụng gốc của Apple vì hiệu suất tiêu thụ pin sẽ quá nhanh.
Nhưng đến iOS 4 thì tính năng chạy đa nhiệm đã được hổ trợ thông qua 7 nền tảng








Âm thanh.
Voice over IP.
Vị trí.
Thông báo theo thời gian.

Thông báo.
Tác vụ hoàn thành.
Chuyển đổi ứng dụng nhanh.
Game Center : là một hệ thống liên hệ trực tuyến nhiều người, là một nơi người dùng
có thể cùng chơi 1 trò chơi, theo dõi thành tựu của họ và so sánh thành tựu này với người
Page 3


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

khác.
Ứng dụng gốc: màn hình chính các thiết bị iOS chứa những ứng dụng mặc định, một
số được ẩn đi và chỉ có thể tương tác với người dung thông qua Setting ( cài đặt ).Các ứng
dụng mặc định trên iOS bao gồm:
 Phone (Gọi điện)
 Mail, trình duyệt Web Safari và trình hổ trợ giải trí đa phương tiện gọi là iPod. o
Message (Tin nhắn). o Calendar (lịch), Photo, Camera, Maps. o Weather (thời
tiết). o Note (Ghi chú).
 iTunes, App Store (chợ ứng dụng), Compass (La bàn). o Contact (Danh bạ),
Newsstand (Sạp báo).
 Notification Center (Thanh báo trạng thái - iOS 5): tính năng thông báo trạng thái
máy của iOS.
Các thiết bị chạy hệ điều hành iOS:
iPhone:
Có tất cả 6 chiếc iPhone đã và đang được bán trên thì trường toàn thế giới với cái tên
lần lượt là : iPhone 2G, iPhone 3G, iPhone 3GS, iPhone 4G, iPhone 4GS, iPhone 5G. Ở mỗi
thế hệ iPhone, Apple đã giới thiệu đến người dùng đều có những nâng cấp đáng kể về phần
cứng cũng như phần mềm.

iPod:
Đây được coi là những chiếc iPhone lược bỏ đi tính năng gọi thoại, nhắn tin. Với tính
năng như một chiếc iPhone thực thụ, iPod đã tạo ra một cơn sốt trong thị trường máy nghe
nhạc từ lúc phiên bản đầu tiên ra đời.
iPad:
Đây là chiếc máy tính bảng được xem là nổi tiếng và đình đám nhất cho đến thời
điểm hiện tại. Hiện thời có 4 thế hệ iPad đã được ra mắt người dùng.
Trong luận văn này, thiết bị iPhone được lựa chọn để cài đặt ứng dụng Scada chạy
trên nên iOS
2.3 Xcode 4.4
Có rất nhiều trình biên dịch để lập trình ứng dụng cho MAC OS X hoặc iOS như
Xcode, Ruby. Trong luận văn lần này sử dụng trình biên dịch Xcode 4.4 chạy trên MAC OS
10.8 để lập trình ứng dụng iPhone. Ngôn ngữ lập trình là Objective - C.
Lý do lựa chọn Xcode 4.4 vì từ các bản Xcode 4.2 trở lên hổ trợ ARC (Automactic
Reference Counting) đây là chức năng quản lý bộ nhớ tự động mà các bản thấp hơn không
có.

Page 4


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Hình 2-1 Giao diện Xcode 4.4










Toolbar: chứa các công cụ hổ trợ lập trình trong đó bao gồm cả iPhone, iPad ảo.
Navigator selector bar : thanh điều hướng.
Breakpoint gutter : thanh đặt break để debug chương trình.
Fucus ribbon: thanh chọn vùng code để gom gọn trình duyệt code.
Navigator area: vùng chứa các file của dự án.
Editor area: vùng lập trình.
Debug area: Vùng hiển thị thông tin khi debug chương trình.

Utility area: vùng chọn đối tượng, class, thiết lập đối tượng.

Page 5


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Cách tạo một project trong Xcode 4.4
Khởi động Xcode và chúng ta có thể thấy ngay giao diện đầu tiên của Xcode 4.4 như
hình
Click “Create a new Xcode Project” để bắt đầu tạo một dự án.

Hình 2-2 Màn hình tạo dự án mới

Bước tiếp theo bên trái chọn iOS => Application sau đó chọn “Single View
Application”, click “Next”.


Hình 2-3 Màn hình chọn loại ứng dụng

Page 6


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Điền các thông tin như sau :
 Product Name.
 Organization Name .
 Company Identifier.
 Class Prefix : là tên sẽ đi đầu các lớp mà chúng ta sẽ tạo ra sau này
Click “Next”

Hình 2-4 Màn hình điền mẫu thông tin dự án

Chọn folder chứa dự án sẽ tạo như hình 4.5, sau đó click “Create” dự án đã được tạo
thành công.

Page 7


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Màn hình chứa thông tín chính dự án

Chúng ta có thể thấy các thông tin về project, cần để ý đến :







Version: đây chính là chỉ số version của ứng dụng tạo ra.
Devices: đây là phần lập trình viên sẽ lựa chọn, sẽ có 3 lựa chọn:
o Universal : ứng dụng được dùng cho cả iPhone và ipad.
o iPhone: ứng dụng được dùng cho iPhone.
o iPad: ứng dụng được dùng cho iPad.
Main Story Board: là tên file thiết kế giao diện cho iPhone.
Supported Device Orientations: hổ trợ giao diện nằm ngang hay dọc.
App Icons: hình ảnh đại diện cho ứng dụng trên màn hình chính.

Từ đây, có thể tạo ra giao diện ngƣời dùng bằng các đối tương được Xcode cung cấp
như : Button, TextField, Label… như Visual Studio 2010. Việc lập trình ứng dụng iPhone
không đòi hỏi lập trình viên phải có thiết bị thật như: iPhone, iPad, MACBookpro v.v. Tuy
Xcode chạy trên nền MAC OS X, nhưng không cần thiết phải có một MACBookpro để có
thể chạy hệ điều hành MAC OS X. Có 2 cách để có thể sở hữu MAC OS X:
Sử dụng VMWare - một công cụ máy ảo mạnh mẽ chạy trên Windows để tạo ra phần
cứng tương thích với các bản MAC OS X.
Có thể dùng Hackintosh, đây là bản MAC OS X đã đƣợc những người trong ngành
công nghệ thông tin bẻ khóa và tạo ra các driver phù hợp với các máy chạy Windows.
Trình biên dịch Xcode cung cấp iPhone và iPad ảo hỗ trợ debug chương trình cho lập
trình viên.
2.4 Giới Thiệu Về Objective C
Ngôn ngữ lập trình Objective – C là một ngôn ngữ lập trình hướng đối tượng được

Page 8


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

xây dựng dựa trên nên tảng ANSI C, ngoài ra nó còn được mở rộng từ Smalltalk - một trong
những ngôn ngữ lập trình hướng đối tượng đầu tiên. Objective – C được thiết kế với mục
đích đưa vào C các tính năng hướng đối tượng một cách đơn giản và dể hiểu nhất.
Objective – C là ngôn ngữ chính được Apple lựa chọn để viết các ứng dụng cho hệ
điều hành MAC OS X, iOS.
Như vậy, để nắm bắt đƣợc Objective – C cần phải có kinh nghiệm về ngôn ngữ C.
Nếu kiến thức về C tốt thì có thể nắm bắt nhanh chóng Objective – C và bắt đầu phát triển
các ứng dụng cho MAC OS X, iOS.
2.4.1 Cơ bản về Objective C
Khai báo các Class, Category, Protocol.
@interface: khai báo class hoặc interface.
@implementation: định nghĩa class hoặc category.
@Protocol: khai báo protocol
@end: kết thúc trong việc khai báo, định nghĩa category hoặc protocol.
@Private: giới hạn phạm vi trong lớp mà biến thể hiện đƣợc khai báo. @protected:
giới hạn phạm vi trong lớp và lớp con kế thừa mà biến thể hiện đƣợc khai báo.
@public: không giới hạn phạm vi truy xuất. Mặc định là
@protected
@try
@throw
@catch
@finally
@class: khai báo trƣớc một tên lớp đã đƣợc định nghĩa ở một nơi khác.

@selector(method_name): trả về một selector đã đƣợc biên dịch mà đƣợc định
nghĩa thông qua method_name.
@Protocol(protocol_name): trả về một protocol protocol_name (một thể hiện của
một lớp Protocol). @Protocol là hợp lệ (không có protocol_name) trong trƣờng hợp khai
báo trƣớc. @synchronized: định nghĩa một block mã nguồn trong nó phải đƣợc thực hiện
đồng bộ
#import: dùng để include một file, tƣơng tự include trong C, C++.
Một số từ khóa khác đƣợc dùng như: alloc, retain, release, autorelease, in, out, inout,
by, copy, byref, onewa, super, self.
Câu lệnh trong Objective-C
Vì Objective – C được thiết kế với mục đích đưa vào C các tính năng hướng đối
tượng nên các câu lệnh trong Objective – C không khác so với C chuẩn.
Page 9


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Đối tượng: Một chương trình hướng đối tượng được xây dựng từ các đối tượng. Mỗi
đối tượng bao gồm dữ liệu và các phương thức để sử dụng hoặc tương tác trên các dữ liệu
đó. Objective-C cho phép định danh một đối tượng mà không cần phải chỉ ra một lớp cụ thể
của đối tượng đó, điều này cho phép định kiểu động. Trong chƣơng trình thì ta phải luôn
đảm bảo rằng ta phải luôn xử lý các đối tƣợng không còn cần thiết nữa.
Id: Trong Objective-C, định danh đối tượng là một kiểu dữ liệu khác biệt: id. Kiểu
này được định nghĩa như là một con trỏ trỏ đến một đối tượng, trong thực tế, một con trỏ trỏ
đến các biến thể hiện của một đối tượng, với dữ liệu duy nhất. Giống như hàm hoặc mảng
trong C, một đối tượng được định danh bởi một địa chỉ. Tất cả các đối tượng, bất kể là biến
thể hiện hay phương thức, đều có kiểu là id.
Định kiểu động: Kiểu id là một kiểu hoàn toàn không hạn chế. Bản thân nó không

mang thông tin về một đối tượng, ngoài trừ nó là một đối tượng. Nhưng các đối tượng lại
không giống nhau. Tại một vài thời điểm, chương trình cần biết rõ các thông tin đặc tả của
một đối tượng, các biến thể hiện mà nó chứa, các hàm mà nó có thể thực hiện, kiểu id khi
được thiết kế ra không hỗ trợ được điều này. Để hỗ trợ điều này, mỗi đối tượng được thiết
kế mang trong nó một biến thể hiện isa với mục đích định danh lớp của đối tượng, cho biết
đối tượng đó thuộc loại nào. Như vậy tại mỗi thời điểm runtime, đối tượng là các kiểu động.
Bất cứ lúc nào cần, hệ thống runtime có thể biết chính xác lớp mà đối tượng đó thuộc về,
bằng cách hỏi ngay đối tƣợng đó. Con trỏ isa cho phép các đối tƣợng tìm các thông tin về
bản thân chúng. Trình biên dịch ghi nhận các thông tin về định nghĩa lớp vào các cấu trúc dữ
liệu để hệ thống runtime sử dụng. Các hàm của hệ thống runtime sử dụng isa để tìm ra các
thông tin này tại thời điểm runtime.
Bộ nhớ: Đối với C# (Windows) hay Android ( Java), bộ nhớ sẽ được cấp phát khi
có nhu cầu sử dụng và khi không có biến trỏ đến hoặc biến đã hết hạn trong stack thì vùng
nhớ sẽ đƣợc giải phóng một cách tự động nhờ chức năng thu gom rác (Garbage Collector).
Đối với Objective – C (iOS) không được hiện đại như vậy, nó không tự động thu hồi vùng
nhớ đã cấp phát khi vùng nhớ không được sử dụng nữa, việc quản lý bộ nhớ khi lập trình là
công việc nhàm chán nhưng cần được làm đúng. Khi một pointer trỏ đến đối tượng, nó giúp
đối tượng được giữ lại trong “Heap” và khi đối tượng không còn bất kỳ ai trỏ đến thì nó cần
được loại bỏ để giải phóng vùng nhớ. Thời gian sống của một đối tượng trong Objective – C
đƣợc thể hiện qua con số “RetainCount”. Khi người lập trình sử dụng các câu lệnh: “alloc,
new, copy …” thì RetainCount sẽ được tăng môt đơn vị, khi sử dụng lệnh: “release” thì
RetainCount sẽ giảm một đơn vị. Cho đến khi con số RetainCount này trở về không, lúc này
chức năng thu gom rác mới hoạt động loại bỏ đối tượng, giải phóng vùng nhớ.
Nếu không dùng hàm “release” thì đối tượng mà con trỏ trỏ tới trước đó sẽ trở nên vô
chủ, điều này dẫn đến ứng dụng vẫn chạy nhưng bộ nhớ bị rò rỉ (Leaking). Trong Objective
– C khi đối tượng là giá trị trả về của một phương thức, nó sẽ mang thuộc tính autorelease (
tự giải phóng) tức người lập trình không cần dùng “release” để giải phóng bộ nhớ nữa. Điều
này thực hiện như sau : kết thúc mỗi chu kì sử lý sự kiện, CoCoaTouch sẽ gửi message
“release” đến các đối tượng có thuộc tính autorelease.


Page 10


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Hình 2-5 Minh họa cho đối tượng autoRelease

Khi đối tượng đang được sử dụng thì không được “release” để loại bỏ đối tượng. Khi
chuyển con trỏ sang một đối tượng khác cần “release” đối tượng cũ. Trước iOS 5 : việc thực
hiện hủy đối tượng là công việc thủ công của lập trình viên nhưng sau iOS 5 công việc này
đã được thực hiện một cách tự động nhờ chức năng ARC (Automatic Reference Counting).
Lập trình viên không cần dùng các phương thức “retain, release, autorelease, delloc” một
cách thủ công nữa mà trình biên dịch sẽ tự động thêm vào khi cần. ARC không phải là
Garbage Collector, và hiện tượng Leaking vẫn có thể sảy ra nếu như lập trình viên dùng sai.
2.4.2 Các khái niệm về lớp, hàm và function
Lớp
Mọi đối tượng trong Objective - C được định nghĩa bởi 2 phần :
 Một “interface” dùng để định nghĩa trước các method, property, tên lớp cha của đối
tượng, đây chính là file *.h.
 Một “implementation” dùng để thực thi các method được định nghĩa trong file *.h,
đây chính là file *.m.
Interface (file *.h) của lớp có cấu trúc như sau:

Page 11


Luận Văn Tốt Nghiệp


GVHD: TS. Trương Đình Châu

Thuộc tính của lớp
Để thực hiện khả năng một đối tượng có thể dấu đi hoặc chia sẻ dữ liệu của chính nó
với đối tượng khác, Objective – C cung cấp nhiều cấp bảo vệ như sau:
Bảng 2-1 Thuộc tính lớp

Từ khóa

Ý nghĩa

@private

Biến chỉ được truy suất bởi chính lớp đó.

@protected

Biến chỉ được truy suất bởi chính lớp đó và lớp kế thừa. một biến
không định nghĩa thì được hiểu ngầm là “@protected”.

@public

Biến có thể truy suất từ mọi nơi.

@package

Chỉ có thể truy cập trong cùng một framework, library hoặc
executable. Nó giống internal trong C# và Friend trong VB.NET.

Cú pháp khai báo thuộc tính của lớp:

Page 12


Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Phương thức của lớp :
Cú pháp khai báo phương thức của lớp:

Gọi một phương thức trong Objective – C :

Trong Objective-C chỉ có 2 khái niệm quyền truy xuất đến phương thức: truy xuất
hoàn toàn qua lớp (public static) và truy xuất hoàn toàn qua đối tượng (public). Objective-C
qui định phần định nghĩa truy xuất như sau:
 Phương thức truy xuất thông qua tên lớp sẽ có ký hiệu là dấu +.
 Phương thức truy xuất thông qua đối tượng sẽ có ký hiệu là dấu –.
Tính kế thừa
Tính kế thừa trong Objective-C tƣơng tự trong các ngôn ngữ khác như C++,C#...
Mọi lớp của Objective – C đều kế thừa từ lớp NSObject.
Phương thức tạo
Trong Objective-C không có khái niệm phương thức tạo cho một lớp. Tất cả
các đối tượng của một lớp phải được cấp phát thông qua phương thức alloc và init.
MyClass *myObject = [[MyClass alloc] init];
Trong đó phương thức alloc là cấp phát vùng nhớ, còn phƣơng thức init như là một
phương thức tạo mặc định trong Objective-C, đƣợc định nghĩa trong lớp NSObject. Ví dụ:

Page 13



Luận Văn Tốt Nghiệp

GVHD: TS. Trương Đình Châu

Từ khóa “super” con trỏ trỏ đến lớp cha của lớp hiện tại, tương tự như “base” trong
C++ hoặc super trong Java.Từ khóa “self” là con trỏ đại diện cho lớp hiện tại, tƣơng tự con
trỏ “this” trong C++ hay Java.
Property
Trong Objective-C hỗ trợ tính năng Properties, cho phép chúng ta định nghĩa các bộ
truy xuất (setter/getter) vì vậy sẽ có nhiều lợi ích sử dụng khi truy xuất đến các biến thể hiện
của đối tượng.
Định nghĩa trong file.h: @property (<attributes>) type propertyName;
Thực thi trong file.m: @synthesize propertyName;
Ví dụ:

Page 14


Luận Văn Tốt Nghiệp









GVHD: TS. Trương Đình Châu


Các thuộc tính cho property
Writability
ReadWrite
Read- only
Setter Semantics
Assign
Retain
Copy

Categry Khi ta muốn thêm một số phương thức vào một lớp có sẵn, thông thường ta
sẽ mở rộng lớp đó bằng cách viết lại mã nguồn. Objective-C cung cấp tính năng Category
cho phép ta mở rộng lớp mà không cần phải viết lại mã nguồn của lớp cũ. Category cho
phép ta mở rộng lớp cũ trong một bộ thực thi khác.
Ví dụ : ta có 1 lớp đã định nghĩa sẵn

Page 15


×