Các hệ thời gian thực – Giới thiệu
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 1
Tổng quan về hệ tin học thời gian thực (1/5)
- Hệ tin học thời gian thực nhận các thông tin về trạng thái của quá trình bên ngoài, xử
lý các dữ liệu, và tùy thuộc vào kết quả mà đưa ra "quyết định" tác động đến môi
trường bên ngoài trong điều kiện các ràng buộc nghiêm ngặt về thời gian nhằm bảo
đảm trạng thái ổn định của quá trình.
- Một chương trình thời gian thực không có các đặc tính thường thấy ở các chương
trình tuần tự:
⇒ không có sự ràng buộc nào giữa kết quả tính toán với thời gian tính toán,
⇒ có khả năng tái sử dụng (comportement reproductible).
Hệ thời gian thực là hệ môi trường
song song
Ngô Khánh Hiếu
1
Các hệ thời gian thực – Giới thiệu 2
Tổng quan về hệ tin học thời gian thực (2/5)
- Khái niệm "song song" (Parallélisme) trong hệ tin học có thể được hiểu đơn giản
theo các cách sau:
(1) Hệ tin học hình thành từ nhiều máy tính
(2) Hệ tin học chỉ gồm một máy tính nhưng có nhiều vi xử lý (processeurs)
(3) Hệ tin học chỉ gồm một máy tính với một vi xử lý (mono-processeur)
nhưng có khả năng quản lý thời gian tính toán theo "khoảng thời gian"
xác định (tranches de temps). Khái niệm "song song" nếu được hiểu
theo nghĩa này còn được gọi là "pseudo-parallélisme".
- Một vòng lặp: ứng mỗi lần lặp sẽ thực hiện việc tính toán một ít của "tâche 1", một ít của
"tâche 2",… và cứ thế cho đến khi các "tâches" kết thúc việc tính toán.
- Chia một chương trình tin học thời gian thực làm hai phần: phần I liên quan đến việc thiết kế
(conception) các "tâches" cho chương trình; phần II giải quyết vần đề "parallélisme" hay
"pseudo-parallélisme" giữa các "tâches".
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 3
Tổng quan về hệ tin học thời gian thực (3/5)
- Phân loại các hệ thống "song song" (Système parallèle):
(1) Dạng dãy tuyến tính: hệ thống song song "pipeline" (dạng cấu trúc của
"processeur" hay "microprocesseur" cho phép thực hiện cùng một lúc
nhiều lệnh (instructions).
(2) SIMD (Single Instruction Multiple Data): cùng thực hiện chung một lệnh
(instruction) nhưng mỗi một "ouvrier" sẽ tính các phần khác nhau hay các
dữ liệu khác nhau.
(3) MIMD (Multiple Instruction Multiple Data): cho phép cùng một lúc thực
hiện nhiều "tâches" khác nhau (lưu ý: một "tâche" có thể gọi một hay
nhiều lệnh).
(4) SPMD (Single Program Multiple Data): là dạng đặc biệt của MIMD, ở mỗi
thời điểm trong quá trình thực hiện một chương trình (program), một
"tâche" không thể được tính ở hai hay nhiều nơi khác nhau (lưu ý: một
chuơng trình là tập hợp của một hay nhiều "tâche").
Ngô Khánh Hiếu
2
Các hệ thời gian thực – Giới thiệu 4
Tổng quan về hệ tin học thời gian thực (4/5)
- Phân loại tổng quát các hệ thống tin học (Systèmes informatiques):
(1) Các hệ biến đổi (Systèmes transformationnels): là các hệ sử dụng các dữ liệu
đầu vào (input) được cung cấp lúc khai báo ban đầu, sau đó xử lý các dữ liệu
đó để xuất ra các dữ liệu đầu ra (output) mà không có bất cứ ràng buộc nào về
thời gian.
(2) Các hệ tương tác (Systèmes interactifs): là hệ được hiểu theo nghĩa dữ liệu
được tạo ra bởi sự tác động với "môi trường" bằng nhiều hính thức khác nhau
như: bàn phím, file dữ liệu, mạng, chuột,... Đặc tính về thời gian trong trường
hợp này không có ảnh hưởng nào khác ngoài cảm giác không thoải mái khi làm
việc (aspect confort de travail) hay chất lượng phục vụ (qualité de service).
(3) Các hệ điều khiển hay phản ứng (Systèmes de contrôle-commande ou réactifs):
là các hệ có mối quan hệ với môi trường thực tế thông qua các dữ liệu đầu vào,
tuy nhiên khác với hệ tương tác, hệ điều khiển hay phản ứng có sự ràng buộc
bắt buộc về thời gian dưới các hình thức như: thời gian phản ứng (temps de
réaction), hạn thời gian phản hoàn thành (temps d’une échéance à respecter),...
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 5
Tổng quan về hệ tin học thời gian thực (5/5)
Ngô Khánh Hiếu
3
Các hệ thời gian thực – Giới thiệu 6
Phân loại hệ điều khiển (Système de contrôle-commande ou réactif) (1/2)
Từ định nghĩa hệ điều khiển ta có thể phân loại hệ điều khiển dựa theo các yêu cầu
(specifications) riêng của hệ như sau:
(1) Các hệ thời gian thực (Systèmes temps réel): là hệ điều khiển mà yêu cầu ứng
xử "đúng/chính xác" (exactitude) của các ứng dụng của nó không những chỉ
phụ thuộc vào kết quả (résultat), mà còn phụ thuộc vào thời gian mà kết quả đó
được tạo ra. Và nếu các ràng buộc về thời gian (contraintes temporelles) của
ứng dụng không được tuân thủ, ta nói hệ bị sai sót/lỗi (défaillance du système).
Dựa vào các ràng buộc thời gian này ta có thể chia hệ thời gian thực làm 2 loại:
1.a. ràng buộc thời gian lỏng/tương đối (contraintes temporelles relatives ou
lâches): là hệ có thể chịu được/bỏ qua (tolérance) một số lỗi xác định về
thời gian nếu phát sinh trong quá trình vận hành (ví dụ: trò chơi điện tử,
các ứng dụng về nghe nhìn, điện thoại di động,…).
1.b. ràng buộc thời gian chặt/nghiêm ngặt (contraintes temporelles strictes ou
dures): là hệ không chấp nhận/bỏ qua bất kỳ lỗi về thời gian nào phát sinh
trong quá trình vận hành (ví dụ: thiết bị điện tử hàng không, tàu vũ trụ, xe
hơi, hệ thống đường sắt…).
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 7
Phân loại hệ điều khiển (Système de contrôle-commande ou réactif) (2/2)
(2) Các hệ điều khiển "embarqué" (Systèmes de contrôle-commande embarqué):
được hiểu đơn giản là hệ được tích hợp trên các thiết bị hay các hệ thống khác
để điều khiển quá trình hoạt động của thiết bị hay hệ thống đó.
(3) Các hệ điều khiển "dédié" (Systèmes de contrôle-commande dédié): được hiểu
đơn giản là các hệ "cứng" hoặc "mềm" (architectures matériels ou logiciels)
được thiết kế dành riêng cho một ứng dụng cụ thể (ví dụ: hạt nhân hay lõi
(noyau) của một microprocesseur, vi xử lý (processeur),...).
(4) Các hệ điều khiển "distribué" (Systèmes de contrôle-commande distribué):
được hiểu đơn giản là một cấu trúc phần "cứng" (l’architecture matériel) được
hình thành từ nhiều vi xử lý (processeurs) liên kết với nhau thông qua một
"bus" hay một hệ thống mạng (réseau).
Ngô Khánh Hiếu
4
Các hệ thời gian thực – Giới thiệu 8
Các đặc tính cơ bản của hệ điều khiển (1/6)
Mối quan hệ tương hỗ giữa hệ
điều khiển với môi trường bên
ngoài mà nó điều khiển có thể
phân chia thành hai phần sau:
■ phần "quan sát" (observations) thông qua các cảm biến (sensors), cho phép thu
nhận các thông tin dưới hình thức các ngắt (interruptions, information tout ou
rien), hoặc các giá trị đo (mesures, information continue) từ quá trình thực tế mà
hệ điều khiển.
■ phần "hành động" (actions) được thực hiện nhờ các cơ cấu chấp hành
(actuators), cho phép phản ứng lại quá trình thực tế mà hệ điều khiển dưới hình
thức các lệnh (commandes) làm thay đổi trạng thái hiện hành của hệ thống, hoặc
đơn giản là dưới hình thức các hiển thị (affichage) như diodes, bóng đèn, màn
hình hiển thị, thiết bị hiển thị,…
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 9
Các đặc tính cơ bản của hệ điều khiển (2/6)
Một ứng dụng của hệ điều khiển trong điều khiển quá trình đốt cháy của động cơ
Ngô Khánh Hiếu
5
Các hệ thời gian thực – Giới thiệu 10
Các đặc tính cơ bản của hệ điều khiển (3/6)
Các đặc tính cơ bản của hệ điều khiển là:
(1) rất đa dạng các thiết bị đầu vào và đầu ra (dispositifs d’entrées/sorties):
dữ liệu đầu vào yêu cầu, được cung cấp bởi các cảm biến, và các dữ liệu
đầu ra cung cấp cho các cơ cấu chấp hành có các kiểu dữ liệu (types) rất
đa dạng (liên tục, rời rạc, "tout ou rien", hoặc "analogique").
(2) có khả năng tính toán song song (comportements concurrents): tập hợp
tất cả các dữ liệu thực tế từ bên ngoài, và "mạng" (le réseau) cho phép
nhập các dữ liệu dạng tin nhắn (messages) không được đồng bộ (ne sont
pas synchronisés) so với sự phát triển của chúng. Điều này dẫn đến, hệ
thống tin học phải có khả năng chấp nhận những sự khác biệt đồng thời
của các tham số (variations simultanées des paramètres).
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 11
Các đặc tính cơ bản của hệ điều khiển (4/6)
Các đặc tính cơ bản của hệ điều khiển là: (tiếp theo)
(3) tuân thủ các ràng buộc về thời gian (contraintes temporelles): đặc tính
trước đó của hệ điều khiển đặt ra cho hệ thống tin học một mặt phải có một
khả năng "phản ứng" (réactivité) đủ để xét hết tất cả các ứng xử đồng thời
(comportements concurrents), mặt khác phải trả lời các ứng xử đó bằng
cách tạo ra các lệnh trong tuân thủ một giới hạn thời gian (un délai) tương
ứng/phù hợp với tính động học của hệ thống (la dynamique du système)
(4) sự chắc chắn trong hoạt động (sureté de fonctionnement): các hệ điều
khiển thường được sử dụng trong các ứng dụng mà ở đó yêu cầu ở mức
độ rất quan trọng về sự an toàn vì lý do chi phí (cout) hoặc tính mạng của
con người (vies humaines). Để đáp ứng được yêu cầu này, rất cần thiết
phải bảo đảm tính chắc chắn trong hoạt động của các hệ điều khiển thông
qua các biện pháp như phát triển "chắc chắn", tests, các phương pháp
"formelles", các dự đoán (prévisibilité), déterminisme, tolérance aux
fautes, redondance,…
Ngô Khánh Hiếu
6
Các hệ thời gian thực – Giới thiệu 12
Các đặc tính cơ bản của hệ điều khiển (5/6)
So sánh tính động học của các ứng dụng khác nhau của hệ điều khiển
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 13
Một vài ứng dụng của hệ điều khiển (6/6)
■ Robot sản xuất: một robot, thực hiện một hoạt động cụ thể trong một chuỗi sản
xuất, phải hoàn thành công việc của nó trong khoảng thời gian cố định xác định
bởi dây chuyền chế tạo. Nếu thời gian này quá sớm hoặc quá trễ sản phẩm chế
tạo sẽ bị phá hủy hoặc làm hư hỏng dẫn đến các thiệt hại về kinh tế hoặc con
người nghiêm trọng.
■ Robot thăm dò/thám hiểm: robot này phải có khả năng tự dịch chuyển trong một
phạm vi mà về cơ bản là không biết rõ trước (như vùng nhiễm phóng xạ gần một
tại nạn về phóng xạ, hành tinh,…). Điều quan trọng đối với các robot loại này là
chúng phải có thể phản ứng lại các chướng ngại vật cố định hoặc di động để tránh
bị mất lái hay bị kẹt.
■ Điện thoại di động: hệ thống điều khiển phải có khả năng hoàn thành nhiều chức
năng mà trong đó một số có ràng buộc về thời gian cao để có chất lượng phục vụ
tốt (QoS, Quality of Service). Chức năng đầu tiên là truyền và nhận tín hiệu giọng
nói (577 µs giọng nói được phát cho mỗi 4.6 ms, và 577 µs giọng nói được nhận
cho mỗi 4.6 ms ở các khoảng cách khác nhau). Vi vậy cần phải
Ngô Khánh Hiếu
7
Các hệ thời gian thực – Giới thiệu 14
Cấu trúc của các ứng dụng của hệ điều khiển (1/16)
■ Cấu trúc phần mềm (Architecture logicielle) (1/14)
Ứng xử đồng thời của các tín hiệu được thể hiện dưới dạng các "événements" và các
đại lượng thực bên ngoài (grandeurs physiques externes) dẫn đến mô tả/thể hiện môi
trường điều khiển như là một hệ thống bắt buộc song song.
Cấu trúc phần mềm có thể đáp ứng tốt nhất để trả lời các ứng xử song song của
quá trình điều khiển bên ngoài (comportement parallèle du procédé externe) là cấu
trúc "multitâche" (multi-task hay multiprogrammation).
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 15
Cấu trúc của các ứng dụng của hệ điều khiển (2/16)
■ Cấu trúc phần mềm (Architecture logicielle) (2/14)
“In computing, multitasking is a method by which multiple tasks, also known as
processes, share common processing resources such as a CPU. In the case of a
computer with a single CPU, only one task is said to be running at any point in time,
meaning that the CPU is actively executing instructions for that task.
Multitasking solves the problem by scheduling which task may be the one running at
any given time, and when another waiting task gets a turn. The act of reassigning a
CPU from one task to another one is called a context switch.
When context switches occur frequently enough the illusion of parallelism is
achieved. Even on computers with more than one CPU (called multiprocessor
machines), multitasking allows many more tasks to be run than there are CPUs.”
(Trích nguồn Wikipedia)
Ngô Khánh Hiếu
8
Các hệ thời gian thực – Giới thiệu 16
Cấu trúc của các ứng dụng của hệ điều khiển (3/16)
■ Cấu trúc phần mềm (Architecture logicielle) (3/14)
“Operating systems may adopt one of many different scheduling strategies, which
generally fall into the following categories:
- In multiprogramming systems, the running task keeps running until it performs an
operation that requires waiting for an external event (e.g. reading from a tape) or
until the computer's scheduler forcibly swaps the running task out of the CPU.
Multiprogramming systems are designed to maximize CPU usage.
- In time-sharing systems, the running task is required to relinquish the CPU, either
voluntarily or by an external event such as a hardware interrupt. Time sharing
systems are designed to allow several programs to execute apparently
simultaneously.
- In real-time systems, some waiting tasks are guaranteed to be given the CPU
when an external event occurs. Real time systems are designed to control
mechanical devices such as industrial robots, which require timely processing.”
(Trích nguồn Wikipedia)
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 17
Cấu trúc của các ứng dụng của hệ điều khiển (4/16)
■ Cấu trúc phần mềm (Architecture logicielle) (4/14)
Ngô Khánh Hiếu
9
Các hệ thời gian thực – Giới thiệu 18
Cấu trúc của các ứng dụng của hệ điều khiển (5/16)
■ Cấu trúc phần mềm (Architecture logicielle) (5/14)
(1) “tâches" nhập/xuất (tâches d’entrées/sorties): đây là các "tâches" cho phép tiếp
cận với các dữ liệu bên ngoài thông qua các "cartes" giao tiếp nhập/xuất, và các
cảm biến (capteurs), các cơ cấu chấp hành (actionneurs) liên kết trực tiếp với
quá trình điều khiển. Các "tâches" này có thể được kích hoạt một cách đều đặn
(façon régulières) hoặc bằng "ngắt" (par interruption).
(2) “tâches" xử lý/tính toán (tâches de traitement): các "tâches" này tạo nên phần
trung tâm của ứng dụng. Nó tích hợp các phương pháp xử lý tín hiệu
(traitements de signaux) như phân tích phổ, sự tương đồng, xử lý hình ảnh,…;
các quy luật điều khiển (lois de commande) như điều khiển có chu kỳ theo thời
gian, điều khiển kiểu "tout ou rien", điều khiển PID,… Trong khuôn khổ của môn
học này, ta có thể xem các "tâches" xử lý/tính toán như là các hộp đen mà ở đó
phần xử lý/tính toán của từng "tâche" sẽ là phạm vi của các lĩnh vực liên quan
như xử lý tín hiệu, xử lý hình ảnh, điều khiển tự động,…
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 19
Cấu trúc của các ứng dụng của hệ điều khiển (6/16)
■ Cấu trúc phần mềm (Architecture logicielle) (6/14)
(3) “tâches" quản lý giao tiếp người sử dụng (tâches de gestion de l’interface
utilisateur): đây là các "tâches" cho phép hiển thị trạng thái của quá trình điều
khiển, cũng như việc giao tiếp với người sử dụng. Theo đó, người điều khiển có
thể hiệu chỉnh các dữ liệu điều khiển hoặc thay đổi các lệnh điều khiển. Các
"tâches" này có thể rất phức tạp và đắt về mặt thời gian tính toán nếu giao diện
điều khiển có kích thước "quan trọng" (de taille importante) như bảng điều khiển
trong buồng lái máy bay (tableau de bord) hoặc thuộc kiểu giao điện đồ họa như
hiển thị 3D,…
(4) “tâches" thông tin liên lạc (tâches de communications): các "tâches" này được
tạo ra để dành cho việc quản lý việc gởi và nhận các "messages" trong một
hoặc nhiều mạng hoặc thiết bị kết nối (réseaux ou bus de terrain). Nếu các
"tâches" dạng này xuất hiện trong ứng dụng của hệ điều khiển thì ứng dụng
được gọi là "phân phối" (distribuée ou répartie).
Ngô Khánh Hiếu
10
Các hệ thời gian thực – Giới thiệu 20
Cấu trúc của các ứng dụng của hệ điều khiển (7/16)
■ Cấu trúc phần mềm (Architecture logicielle) (7/14)
(5) “tâches" lưu trữ (tâches de sauvegarde): đây là các "tâches" cho phép lưu trữ
trạng thái của hệ thống (l’état du système) ở các thời điểm cố định. Việc lưu trữ
này có thể được sử dụng sau đó (a posteriori) để phân tích việc vận hành của
ứng dụng hoặc ngay sau một sự lấy lại trạng thái vận hành ở một giai đoạn
trước đó (une reprise d’exécution à une étape précédente).
Sau giai đoạn phân tích (l’analyse) và thiết kế (la conception) ứng dụng, ta thu
được tập hợp các "tâches" hay các "activités" có quan hệ lẫn nhau để thực
hiện việc điều khiển của quá trình. Các "tâches" này thuộc về các nhóm khác
nhau như liệt kê ở trên. Cách thức phân chia theo chức năng này có thể được
sửa đổi trong trường hợp áp dụng phương pháp thiết kế hướng về các đối
tượng hoặc các "entités" điều khiển.
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 21
Cấu trúc của các ứng dụng của hệ điều khiển (8/16)
■ Cấu trúc phần mềm (Architecture logicielle) (8/14)
Sơ đồ thể hiện cấu trúc "multitâche" của một ứng dụng của hệ điều khiển
Các "tâches" cấu thành lên ứng dụng của hệ điều khiển không phải là các thực thể
hoạt động độc lập. Một số "tâches" được kết nối với bên ngoài để nhập/xuất; một số
"tâches" có thể được liên kết với nhau trong quá trình vận hành của ứng dụng.
Ngô Khánh Hiếu
11
Các hệ thời gian thực – Giới thiệu 22
Cấu trúc của các ứng dụng của hệ điều khiển (9/16)
■ Cấu trúc phần mềm (Architecture logicielle) (9/14)
- Synchronisation: đây là kiểu kết nối giữa hai hay nhiều "tâches" để thể hiện một
mối quan hệ trước sau (une relation de précédence d’exécution) giữa chúng.
- Communication: đây là kiểu kết nối giữa hai hay nhiều "tâches" để thể hiện một
mối quan hệ trước sau nhưng có bổ sung thêm sự chuyển dữ liệu (le transfert de
données) giữa chúng.
- Partage de ressources: đây là kiểu kết nối giữa hai hay nhiều "tâches" cùng chia
sẽ với nhau các nguồn nghiêm ngặt (ressources critiques). Các nguồn nghiêm
ngặt là các nguồn mà sự tiếp cận chúng bởi hai hay nhiều "tâches" cùng một lúc
hoặc không thể thực hiện được, hoặc không thể để có một sự vận hành đúng.
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 23
Cấu trúc của các ứng dụng của hệ điều khiển (10/16)
■ Cấu trúc phần mềm (Architecture logicielle) (10/14)
Vai trò chính yếu của hệ tin học là điều phối sự đan xen (l’enchainement) và đồng thời
(la concurrence) của các "tâches" nhằm tối ưu thời gian chiếm dụng vi xử lý, chức năng
này thường được gọi là "ordonnancement" (schedulability).
Ta có thể phân chia mô hình vận hành của các hệ điều khiển thành hai mô hình sau: mô
hình "synchrone" và mô hình "asynchrone".
- Mô hình “synchrone”: ở mô hình này sự nhận thức thời điểm kích hoạt của tất cả
dữ kiện điều khiển (l’occurrence de tout événement) bởi hệ thống bị trễ bởi thời
gian tính toán của "tâche" hiện hành. Hay nói cách khác, các "tâches" của mô hình
"synchrone" là các "tâches" không thể ngắt (non interruptibles ou non préemptibles)
- Mô hình “asynchrone”: ở mô hình này sự nhận thức thời điểm kích hoạt của tất cả
dữ kiện điều khiển (l’occurrence de tout événement) được ghi nhận ngay lập tức bởi
hệ thống để cân nhắc tính chất khẩn (urgence) hay tính chất quan trọng của chúng.
Hay nói cách khác, các "tâches" của mô hình "asynchrone" là các "tâches" có thể
ngắt (interruptibles ou préemptibles)
Ngô Khánh Hiếu
12
Các hệ thời gian thực – Giới thiệu 24
Cấu trúc của các ứng dụng của hệ điều khiển (11/16)
■ Cấu trúc phần mềm (Architecture logicielle) (11/14)
Mô hình "synchrone" của một ứng dụng điều khiển
Phương pháp phân tích "ordonnancement" trong mô hình "synchrone" được gọi là
phương pháp phân tích "ordonnancement hors ligne".
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 25
Cấu trúc của các ứng dụng của hệ điều khiển (12/16)
■ Cấu trúc phần mềm (Architecture logicielle) (12/14)
Mô hình "asynchrone" của một ứng dụng điều khiển
Phương pháp phân tích "ordonnancement" trong mô hình "asynchrone" được gọi là
phương pháp phân tích "ordonnancement en ligne".
Ngô Khánh Hiếu
13
Các hệ thời gian thực – Giới thiệu 26
Cấu trúc của các ứng dụng của hệ điều khiển (13/16)
■ Cấu trúc phần mềm (Architecture logicielle) (13/14)
Cấu trúc của
ứng dụng:
tâches và
noyau temps
réel
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 27
Cấu trúc của các ứng dụng của hệ điều khiển (14/16)
■ Cấu trúc phần mềm (Architecture logicielle) (14/14)
Các ngôn ngữ lập trình được sử dụng để phát triển các ứng dụng điều khiển
với hạt nhân thời gian thực
1. Gestion des interruptions 2. Ordonnancement 3. Relations entre les tâches
Ngô Khánh Hiếu
14
Các hệ thời gian thực – Giới thiệu 28
Cấu trúc của các ứng dụng của hệ điều khiển (15/16)
■ Cấu trúc phần cứng (Architecture matérielle) (1/2)
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 29
Cấu trúc của các ứng dụng của hệ điều khiển (16/16)
■ Cấu trúc phần cứng (Architecture matérielle) (2/2)
Cấu trúc phần cứng giữ một vai trò rất quan trọng trong các ứng dụng hệ điều khiển.
Nó liên quan một mặt đến sự kết nối trực tiếp với môi trường thực tế nhờ vào các hệ
thống nhập/xuất đa dạng (une grande diversité de systèmes d’entrées/sorties); mặt
khác đến thiết bị tin học phần cứng (matériel informatique) chuyên biệt và được phát
triển dành riêng cho một ứng dụng nào đó.
Rất nhiều ứng dụng của hệ điều khiển vận hành dựa trên các nền PC truyền thống.
Tuy vậy, việc lắp đặt các cartes nhập/xuất, chúng phải được đồng bộ hóa (việc thu
nhận dữ liệu và xuất lệnh được thực hiện ở các thời điểm chính xác), là luôn cần thiết.
Vì vậy, trong các ứng dụng tin học này, các phần cứng chuyên biệt luôn tồn tại và hỗ
trợ tính năng về thời gian.
Trong nhiều trường hợp, các ứng dụng của hệ điều khiển thuộc dạng "distribué" mà ở
đó chúng vận hành trong môi trường "multitâche", được kết nối với nhau bởi một hoặc
nhiều hệ thống mạng (như Erthenet, CAN, FIP…)
Ngô Khánh Hiếu
15
Các hệ thời gian thực – Giới thiệu 30
Sự phát triển của các ứng dụng của hệ điều khiển (1/27)
Sự phát triển của các ứng dụng tin học có thể được chia thành các giai đoạn phát triển
chính sau: giai đoạn mô tả đặc tính/yêu cầu (Spécification); giai đoạn thiết kế
(Conception); giai đoạn xây dựng/triển khai (Implémentation/Codage); và giai đoạn
kiểm tra (Test/Validation).
Vòng phát triển với các giai đoạn chính nêu trên cho phép vừa thu được các ứng dụng
đạt chất lượng cao xét về khía cạnh cấu trúc phần mềm, vừa gia tăng khả năng về bảo
dưỡng/sửa chữa (maintenabilité) và mở rộng/phát triển (évolutivité).
Nếu như việc kiểm tra (Test/Validation), giữ vai trò quan trọng sống còn trong việc đạt
được chất lượng của hệ thống, có thể được thực hiện dễ dàng trong các ứng dụng tin
học truyền thống (như các programmes tính toán…) thì đối với các ứng dụng của hệ
điều khiển việc kiểm tra vận hành thực tế của hệ thường rất phức tạp phát sinh từ rất
nhiều nguyên nhân mà ta có thể nêu ra sau: việc vận hành là duy nhất (vệ tinh do
thám…), chi phí rất cao (hệ thống tên lửa, hệ thống tạo lực đẩy…), rủi ro cao về nhân
mạng (thiết bị bay…)…
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 31
Sự phát triển của các ứng dụng của hệ điều khiển (2/27)
Vòng phát triển cổ điển "Cascade" (1/5)
Được đưa ra đầu tiên bởi W.
Royce vào những năm 1970, vòng
"Cascade" nguyên thủy là một sự
phát triển theo trình tự từ giai đoạn
"Spécification" đến giai đoạn "Test".
Có sự xuất hiện của một liên kết giữa các
giai đoạn sau giai đoạn "Spécification" ban
đầu cho phép thực hiện các "Tests" ở cuối
mỗi giai đoạn trong vòng phát triển và phản
hồi kịp thời đến giai đoạn liền trước đó nếu
có vấn đề phát sinh
Ngô Khánh Hiếu
16
Các hệ thời gian thực – Giới thiệu 32
Sự phát triển của các ứng dụng của hệ điều khiển (3/27)
Vòng phát triển cổ điển "Cascade" (2/5)
?
?
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 33
Sự phát triển của các ứng dụng của hệ điều khiển (4/27)
Vòng phát triển cổ điển "Cascade" (3/5)
(1) Giai đoạn “Spécification": tìm hiểu hệ thống dưới cái nhìn tổng quát đến tất cả
các đặc tính của nó nhằm mục đích trả lời cho câu hỏi "Hệ thống làm gì?".
Các khía cạnh khảo sát ở đây không chỉ đơn thuần là các yêu cầu thuộc về
chức năng (besoins fonctionnels), mà còn bao hàm cả những yêu cầu không
thuộc về chức năng (besoins non fonctionnels) như yêu cầu về ứng xử/đáp
ứng của hệ thống (services comportementaux), vật liệu (matériaux), yêu cầu
về chất lượng (qualités requises), các ràng buộc về thời gian đối với các hệ
thời gian thực…
Ngô Khánh Hiếu
17
Các hệ thời gian thực – Giới thiệu 34
Sự phát triển của các ứng dụng của hệ điều khiển (5/27)
Vòng phát triển cổ điển "Cascade" (4/5)
(2) Giai đoạn “Conception": có thể phân chia thành hai giai đoạn, thiết kế sơ bộ
(conception préliminaire) và thiết kế chi tiết (conception détaillée). Mục đích của
giai đoạn này là "định nghĩa" cấu trúc bên trong của hệ thống (architecture
interne du système) từ các yêu cầu đặt ra ở giai đoạn trước đó nhằm mục đích
trả lời cho câu hỏi "Hệ thống làm như thế nào?".
Thiết kế sơ bộ đưa ra cấu trúc tổng quát của hệ thống bằng cách phân chia nó
thành các bộ phận cấu thành, đặc biệt là các "tâches" và các "modules". Module
ở đây có thể được hiểu là một đơn vị tập hợp một nhóm các "fonctions" hoặc các
"procédures" dành cho việc sử dụng kết hợp với các bộ phận khác.
Thiết kế chi tiết cho phép đi từ kết quả của thiết kế sơ bộ việc phân chia tiếp tục
hệ thống cho đến cấp độ mô tả chi tiết/cụ thể nhất từng bộ phận cấu thành của nó
như: các lựa chọn "algorithmes", mô tả chi tiết từng "tâche", "fonction", cấu trúc
dữ liệu, quan hệ giữa các "tâches"…
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 35
Sự phát triển của các ứng dụng của hệ điều khiển (6/27)
Vòng phát triển cổ điển "Cascade" (5/5)
(3) Giai đoạn “Implémentation": giai đoạn này cho phép triển khai các khái niệm
được đưa ra trong giai đoạn thiết kế thể hiện dưới dạng code chương trình.
Đối với các hệ song song, hoặc sử dụng các ngôn ngữ hỗ trợ song song như
Ada, Module 2…; hoặc sử dụng một ngôn ngữ tuần tự được dùng kết hợp với
một hệ điều hành "multitâche" hay một hạt nhân thời gian thực (noyau temps réel)
như ngôn ngữ C phát triển thành các chuẩn POSIX, VxWorks, OSEK/VDX…
Ngôn ngữ đồ họa có thể được sử dụng trong giai đoạn này. Dựa vào đặc tính đồ
họa, ngôn ngữ này cho phép không những triển khai các khái niệm thiết kế, mà
còn có thể tích hợp với các bộ phận của ứng dụng thực tế trong một môi trường
đồng nhất liên tục một cách trực quan. LabVIEW là một trong số những ngôn ngữ
đồ họa trong quá trình phát triển của các ứng dụng của hệ điều khiển.
Ngô Khánh Hiếu
18
Các hệ thời gian thực – Giới thiệu 36
Sự phát triển của các ứng dụng của hệ điều khiển (7/27)
Vòng phát triển dạng "V" (1/3)
- Đường dốc xuống bên trái là
sự thể hiện lại của các giai
đoạn phát triển của mô hình
"Cascade" từ "Spécification"
đến "Conception".
- Đường dốc lên bên phải là
sự thể hiện của các quá
trình "tests" mà ở đó ứng với
mỗi giai đoạn của quá trình
"Analyse" và "Conception" ta
thực hiện một quá trình
"Test" và "Validation".
Là một dạng thay đổi của mô hình "Cascade", mô hình V
tập trung vào quá trình kiểm tra/làm cho có hiệu lực quá
trình phát triển của hệ điều khiển (vérification et validation).
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 37
Sự phát triển của các ứng dụng của hệ điều khiển (8/27)
Vòng phát triển dạng "V" (2/3)
(4) Giai đoạn “tests unitaires": cho phép kiểm tra sự hoạt động của các thành phần
của hệ thống một cách độc lập để đảm bảo mỗi chúng phải thỏa các yều cầu
hoạt động riêng, và phải hoạt động "đúng" trong mọi điều kiện.
(5) Giai đoạn “tests d’intégration": là giai đoạn kiểm tra được tiến hành sau giai đoạn
"tests unitaires" nhằm mục đích kiểm tra sự hoạt động của các thành phần của
hệ thống trong sự vận hành tổng thể của nó: mối quan hệ giữa các bộ phận; sự
hoạt động của các "tâches" dựa trên các bộ phận này; các cơ chế bảo đảm
"communication/synchronisation" giữa các "tâches"…
(6) Giai đoạn “validation": là giai đoạn cho phép kiểm tra tính hiệu lực/tính đúng của
hệ điều khiển được phát triển trước các yêu cầu (besoins) đề ra ở giai đoạn đầu
tiên: "besoins fonctionnels" và "besoins non fonctionnels".
Ngô Khánh Hiếu
19
Các hệ thời gian thực – Giới thiệu 38
Sự phát triển của các ứng dụng của hệ điều khiển (9/27)
Vòng phát triển dạng "V" (3/3)
Mô hình "V" so với mô hình "Cascade" giúp giảm bớt quá trình "retours" về
các giai đoạn trước đó trong vòng phát triển của hệ điều khiển: cụ thể là mỗi
giai đoạn ở phần "lên" (montant) sẽ chỉ phản hồi thông tin lại cho một giai
đoạn tương ứng của phần "xuống" (descendant) trong sơ đồ V nhờ đó các lỗi
được phát hiện sẽ được chỉnh sửa kịp thời.
Mô hình "V" vẫn mang đặc tính của một mô hình tuyến tính (modèle linéaire)
nên các vấn đề gặp phải ở mô hình "Cascade" vẫn chưa được khắc phục: giai
đoạn sau chỉ được bắt đầu khi giai đoạn trước hoàn tất và kết thúc, nên giai
đoạn "tests" và "validation" chỉ được tiến hành sau khi giai đoạn
"implémentation" kết thúc, phần lớn các lỗi lại phát sinh ở giai đoạn
"spécification" ⇒ les retours coûtent chers
Ngô Khánh Hiếu
Các hệ thời gian thực – Giới thiệu 39
Sự phát triển của các ứng dụng của hệ điều khiển (10/27)
Một số vòng phát triển khác (1/6)
Mô hình tuyến tính sẽ rất phù hợp đối với các hệ điều khiển mà ở đó các yêu cầu
của nó có thể được xác định ngay từ giai đoạn đầu. Điều đó một mặt giúp chuẩn bị
tốt hơn cho giai đoạn "tests et validation"; mặt khác cố định và xuyên suốt các yêu
cầu ở những giai đoạn tiếp theo của vòng phát triển.
Tuy nhiên, đối với các mô hình "dirigés par les documents" thì phần lớn các ý
tưởng ban đầu của hệ được xác định ở giai đoạn "spécification" đều ở dạng chưa
hoàn chỉnh, nên rất có nhiều khả năng những "code" hay những thiết kế
(conception) đưa ra trong các giai đoạn tiếp theo của vòng phát triển không thể sử
dụng được/không phù hợp (inutilisable). Việc áp dụng các vòng phát triển dưa trên
mô hình tuyến tính (Cascade, V) cho các mô hình này là không thật sự phù hợp.
il est favorable d’utiliser d‘autres techniques de prototypage qui permettent de
valider tout ou une partie du cahier des charges et de prendre en considération
le «feed-back» entre le concepteur et l’utilisateur.
Ngô Khánh Hiếu
20