Lập trình cấu trúc

Một phần của tài liệu thiết kế và chế tạo module huấn luyện tự động hóa (Trang 36 - 106)

Chương trình được chia thành những phần nhỏ với từng nhiệm vụ riêng biệt và các phần này nằm trong những khối chương trình khác nhau. Loại lập trình có cấu trúc phù hợp với những bài toán điều khiển nhiệm vụ và phức tạp. các khối cơ bản:

 Khối OB (Organization Block): khối tổ chức và quản lý chương trình điều khiển. có nhiều loại khối OB với những chức năng khác nhau.chúng được phan biệt với nhau bằng số nguyên theo nhóm ký tự OB, ví dụ như OB1, OB35….

 Khối FC (program block): khối chương trình với những chức năng riêng biệt giống như một chương trình con hay một hàm(chương trình co có biến hình thức). Một chương trình ứng dụng có thể có nhiều khối FC và các khối FC này được phân biệt với nhau bằng số nguyên theo sau nhóm ký tự FC, chẳng hạn FC1, FC2…

 Khối FB (Function Block): là khối FC đặc biệt có khả năng trao đổi một lượng dữ liệu lớn với các khối chương trình khác. Các dữ liệu này phải được tổ chức thành khối dữ liệu riêng được gọi là Data Block. Một chương trình ứng dụng có thể có nhiều khối FB và các khối FB này được phân biệt với nhau bằng số nguyên theo sau nhóm ký tự FB, chẳng hạn FB1, FB2…

 Khối DB (Data Block): khối dữ liệu cần thiết để thực hiện chương trình. Các tham số của khối do người sử dụng đặt. một chương trình ứng dụng có thể có nhiều khối DB và các khối DB này được phân biệt với nhau bằng số nguyên theo sau nhóm ký tự DB. Chẳng hạn DB1,DB2…

Chương trình trong các khối được lien kết với nhau bằng các lệnh gọi khối và chuyển khối. Các chương trình con được ghép lồng nhau, Tức từ một chương trình con này gọi một chương trinh con khác và từ chương trinh con được gọi lại gọi một chương trình con thứ 3. Hệ Điều hành OB1 FC1 FB5 FB2 FC3 FC7 FC9 ... ... ... ... ... Hình 3. 21: Lập trình có cấu trúc 3.2.1.5.3 Các khối OB đặc biệt

1) OB10 (Time of Day Interrupt): chương trình trong khối OB100 sẽ được thực hiện khi giá trị thời gian của đồng hồ thời gian nằm trong một khoảng thời gian đã được quy định. Việc quy định khoảng thời gian hay số lần gọi OB10 được thực hiện nhở chương trình hệ thống SFC28 hay trong bảng tham số của module CPU nhờ phần mềm step7.

2) OB2 (Time delay interrupt): chương trình trong khối OB20 sẽ được thực hiện sau một khoảng thời gian trễ đặt trước kể từ khi gọi chương trình hệ thống SFC32 để đặt thời gian trễ.

3) OB35 (Crylic interrupt): chương trình trong khối OB35 sẽ được thực hiện cách đều nhau một khoảng thời gian cố định. Mặc định, khoảng thời gian này là 100ms, nhưng ta có thể thay đổi nhờ step7.

4) OB40 (Hardware interrupt) chương trình trong khối OB40 sẽ được thực hiện khi xuất hiện một tín hiệu báo ngắt từ ngoại vi đứa vào CPU thông qua các cổng onboard đặc biệt, hoặc thông qua các module SM,CP,FM.

5) OB80 (Cycle time Fault): chương trình trong khối OB80 sẽ được thực hiện khi thời gian vòng quét( scan time) vượt qua khoảng thời gian cưc đại đã qui định hoặc khi có một tín hiệu ngắt gọi một khối OB nào đó mà khối OB này chưa kết thúc ở lần gọi trước. thời gian quét mặc định là 150ms.

6) OB81 (Power Supply Fault): chương trình trong khối OB81 sẽ được thực hiện khi thấy có xuất hiện lỗi về bộ nguồn nuôi.

7) OB82 (Diagnostic Interrupt): chương trình trong khối OB82 sẽ được thực hiện có sự cố từ cscs module mở rộng vào/ra. Các module này phải là các module có khả năng tự kiểm tra mình(diagnostic cabilitíe).

8) OB87 (Communication Fault): chương trình trong khối OB87 sẽ được thực hiện có xuất hiện lỗi trong truyền thông.

9) OB100 (Start Up Information): chương trình trong khối OB100 sẽ được thực hiện một lần khi CPU chuyển từ trạng thái STOP sang RUN.

10) OB101 (Cold Start Up Information- chỉ với S7-400): chương trình trong khối OB101 sẽ được thực hiện một lần khi công tắc nguồn chuyển từ trạng thái OF sang ON.

11)OB121 (Synchronous Error): chương trình trong khối OB121 sẽ được thực hiện khi CPU phát hiện thấy lỗi logic trong chương trình đổi sai kiểu dữ liệu hay lỗi truy nhập khối DB, FC,FB không có trong bộ nhớ.

12) OB122 (Synchronous Error) chương trình trong khối OB122 sẽ được thưc hiện khi có lỗi truy nhập module trong chương trình.

3.2.1.6 Ngôn ngữ lập trình

PLC S7-300 có ba ngôn ngữ lập trình cơ bản sau:

 Ngôn ngữ lập trình liệt kê lệnh STL(Statêmnt List). Đây là dạng ngôn ngữ lập trình thông thường của máy tính. Một chương trình được hoàn chỉnh bởi sự ghép nối của nhiệu câu lệnh theo một thuật toán nhất định, mỗi lênh chiếm một hang và có cấu trúc chung” tên lệnh”+” toán hạng”.

 Ngôn ngữ lập trình LAD(Ladder logic). Đây là dạng ngôn ngữ đồ hoạ, thích hợp với những người lập trình quen với việc thiết kế mạch điều khiển logic.

 Ngôn ngữ lập trình FBD(Function Block Diagram). Đây cũng là dạng ngôn ngữ đồ hoạ, thích hợp cho những người quen biết thiết kế mạch điều khiển số.

 Ngôn ngữ lập trình Graph. Đây cũng là dạng ngôn ngữ đồ hoạ, thích hợp cho những hệ thống tuần tự.

 Ngôn ngữ lập trình SCL. Đây cũng là dạng ngôn ngữ cấp cao, thích hợp cho những người viết ngôn ngữ cấp cao.

Trong PLC có nhiều ngôn ngữ lập trình nhằm phục vụ cho các đối tượng sử dụng khác nhau. Tuy nhiên một chương trình viết trên ngôn ngữ LAD hay FBD có thể chuyển sang dạng STL, nhưng ngược lại thì không. Và trong STL có nhiều lệnh mà LAD hoặc FBD không có. Đây cũng là thế mạnh của ngôn ngữ STL:

STL

FBD LAD

Ví dụ:

3.2.2 SƠ LƢỢC VỀ PLC S7-200 CỦA SIEMENS. 3.2.2.1 Giới thiệu PLC S7-200 3.2.2.1 Giới thiệu PLC S7-200

PLC, viết tắt của programable logic controler là thiết bị điều khiển logic lập trình được, hay thiết bị logic khả trình cho phép thực hiện linh hoạt các thuật toán điều khiển logic thông qua một ngôn ngữ lập trình. Như vậy với chương trình điều khiển trong PLC trở thành bộ điều khiển số nhỏ gọn có thể dễ dàng thay đổi thuật toán điều khiển và trao đổi thông tin với môi trường bên ngoài ( PLC khác hoặc máy tính ).

S7-200 là thiết bị điều khiển logic khả trình của hãng Siemens ( CHLB Đức ), có cấu trúc kiểu module và có các module mở rộng. Các module này được sử dụng với những mục đích khác nhau. Toàn bộ nội dung chương trình được lưu trong bộ nhớ của PLC, trong trường hợp dung lượng bộ nhớ không đủ ta có thể sử dụng bộ nhớ ngoài để lưu chương trình và dữ liệu (Catridge ). Dòng PLC S7-200 có hai họ là 21X ( loại cũ ) và 22X ( loại mới ), trong đó họ 21X không còn sản xuất nữa. Họ 21X có các đời sau: 210, 212, 214, 215-2DP, 216; họ 22X có các đời sau: 221, 222, 224, 224XP, 226, 226XM.

Feature CPU 221 CPU 222 CPU 224 CPU 226 CPU

226XM Physical size (mm) 90 x 80 x 62 90 x 80 x 62 120.5 x 80 x 62 190 x 80 x 62 190 x 80 x 62 Program memory

Data memory 2048 bytes 2048 bytes 5120 bytes 5120 bytes 10240 bytes Memory backup 50 hours

typical 50 hours typical 190 hours typical 190 hours typical 190 hours typical Local on board I/O

6 In/ 4 Out 8 In/ 6 Out 14 In/ 10 Out 24 In/ 16 Out 24 In/ 16 Out Expansion modules 0 2 7 7 7 High-speed counters Single phase two phase

4 at 30 kHz 2 at 20 kHz 4 at 30 kHz 2 at 20 kHz 6 at 30 kHz 4 at 20 kHz 6 at 30 kHz 4 at 20 kHz 6 at 30 kHz 4 at 20 kHz Pulse outpus (DC) 2 at 20 kHz 2 at 20 kHz 2 at 20 kHz 2 at 20 kHz 2 at 20 kHz Analog adjustments 1 1 2 2 2

Real-time clock Cartridge Cartridge Built-in Built-in Built-in Communications ports 1 RS-485 1 RS- 485 1 RS- 485 2 RS- 485 2 RS- 485 Floating-point math Yes Digital I/O image size 256 (128 in, 128 out) Boolean execution speed 0.37 microseconds/instrutio

Hình 3. 23: Thông số và các đặc điểm kỹ thuật của series 22X * Giới thiệu về module mở rộng:

24VDC/120-230VAC.

- Module đầu ra số: EM222 bao gồm 4/8 đầu ra 24VDC/RELAY/230VAC.

- Module vào/ra số: EM223 bao gồm 4/8/16 đầu vào 24VDC và 4/8/16 đầu ra 24VDC/RELAY/230VAC.

- Module đầu vào tương tự: EM231 từ 2/4 đầu vào với các loại tín hiệu 0-10V,4- 20mA…

- Module đầu ra tương tự: EM232 có 2 đầu ra.Module vào ra tương tự: EM235 gồm 4 đầu vào và 1 đầu ra.

- Ngoài ra còn có các loại module thích hợp cho những ứng dụng khác như module điều khiển vị trí, module truyền thông.

3.2.2.2 Cấu trúc phần cứng của S7-200. 3.2.2.2.1 Hình dạng và cấu trúc bên ngoài. 3.2.2.2.1 Hình dạng và cấu trúc bên ngoài.

 Các đầu vào/ra số:

- Đầu vào (Ix.x): kết nối với nút bấm, công tắc, sensor…với điện áp vào tiêu chuẩn 24VDC.

- Đầu ra (Qx.x): kết nối với thiết bị điều khiển với các điện áp 24VDC/220VAC ( tùy theo loại CPU ).

- Đầu vào nguồn: 24VDC/220VAC ( tùy theo loại CPU ).

 Đèn trạng thái:

- Đèn RUN (màu xanh): Chỉ báo PLC đang ở chế độ làm việc và thực hiện chương trình đã được nạp vào bộ nhớ chương trình.

- Đèn STOP (màu vàng): Chỉ báo PLC đang ở chế độ dừng và không thực hiện chương trình, các đầu ra đều ở trạng thái “OFF”.

- Đèn SF/DIAG: Chỉ báo hệ thống bị hỏng tức do lỗi phần cứng hoặc hệ điều hành.

- Đèn Ix.x(màu xanh): Chỉ báo trạng thái của đầu vào số(ON/OFF). - Đèn Qx.x(màu xanh): Chỉ báo trạng thái của đầu ra số(ON/OFF).

 Port truyền thông.

- Port truyền thông nối tiếp RS485: Giao tiếp với PC, PG, TD200, OP, mạng biến tần…

- Port cho module mở rộng: Kết nối với module mở rộng.

 Công tắc chuyển chế độ.

- RUN: Cho phép PLC thực hiện chương trình, khi chương trình lỗi hoặc gặp lệnh STOP thì PLC tự động chuyển sang chế độ STOP mặc dù công tắc vẫn ở vị trí RUN ( quan sát đèn trạng thái ).

- TERM: Cho phép người dùng chọn một trong hai chế độ RUN/STOP từ xa, ngoài ra còn được dùng để download chương trình người dùng.

 Vít chỉnh tương tự.

Mỗi PLC đều có từ một đến hai vít chỉnh tương tự ta có thể xoay được 270 độ để thay đổi giá trị của vùng nhớ biến trong chương trình.

Hình 3. 25: Chi tiết phần cứng PLC S7-200

3.2.2.2.2 Cấu trúc phần cứng.

Cấu trúc phần cứng của một PLC gồm có các module sau: - Module nguồn.

- Module đầu vào. - Module đầu ra.

- Module đơn vị xử lý trung tâm (CPU). - Module bộ nhớ.

- Module quản lý phối ghép vào ra.

Đơn vị xử lý trung tâm (CPU Central Processing Unit).

CPU dùng để xử lý, thực hiện những chức năng điều khiển phức tạp quan trọng của PLC. Mỗi PLC thường có một đến hai đơn vị xử lý trung tâm.

CPU thường được chia làm hai loại: đơn vị xử lý “một bit” và đơn vị xử lý “từ ngữ”:

- Đơn vị xử lý “một bit”: Chỉ áp dụng cho những ứng dụng nhỏ, đơn giản, chỉ đơn thuần xử lý ON/OFF nên kết cấu đơn giản, thời gian xử lý dài.

- Đơn vị xử lý “từ ngữ”: có khả năng xử lý nhanh các thong tin số, văn bản, phép toán, đo lường, đánh giá, kiểm tra nên cấu trúc phần cứng phức tạp hơn nhiều tuy nhiên thời gian xử lý được cải thiện nhanh hơn.

Bộ nhớ.

Bao gồm các loại bộ nhớ RAM, ROM, EEFROM, là nơi lưu trữ các thông tin cần xử lý trong chương trình của PLC.

Bộ nhớ được thiết kế thành dạng module để cho phép dễ dàng thích nghi với các chức năng điều khiển với các kích cỡ khác nhau. Muốn mở rộng bộ nhớ chỉ cần cắm thẻ nhớ vào rãnh cắm chờ sẵn trên module CPU.

Bộ nhớ có một tụ dùng để duy trì dữ liệu chương trình khi mất điện.

Khối vào/ra.

Khối vào ra dùng để giao tiếp giữa mạch vi điện tử của PLC (điện áp 5/15VDC) với mạch công suất bên ngoài (điện áp 24VDC/220VAC).

Khối ngõ vào thực hiện việc chuyển mức điện áp từ cao xuống mức tín hiệu tiêu chuẩn để đưa vào bộ xử lý.

Khối ngõ ra thực hiện việc chuyển mức tín hiệu từ tiêu chuẩn sang tín hiệu ngõ ra và cách ly.

Bộ nguồn.

Biến đổi từ nguồn cấp bên ngoài vào để cung cấp cho sự hoạt động của PLC.

Dùng để phối ghép giữa PLC với các thiết bị bên ngoài như máy tính, thiết bị lập trình, bảng vận hành, mạng truyền thong công nghiệp.

3.2.2.3 Cấu trúc bộ nhớ. 3.2.2.3.1 Phân chia bộ nhớ

Bộ nhớ của PLC S7-200 được chia thành bốn vùng cơ bản và hầu hết có thể đọc ghi được chỉ trừ vùng nhớ đặc biệt (SM) chỉ có thể truy cập để đọc.

Hình 3. 27: Cấu trúc bộ nhớ của PLC

- Vùng nhớ chương trình: Là miền nhớ được dùng để lưu trữ các lệnh được dùng

trong chương trình.Vùng này thuộc kiểu non-volatile có thể đọc và ghi được. - Vùng nhớ tham số: Dùng để lưu giữ các tham số như từ khóa, địa chỉ trạm… Vùng

này thuộc kiểu non-volatile có thể đọc và ghi được.

- Vùng dữ liệu: Dùng để cất giữ các dữ liệu của chương trình bao gồm kết quả các

phép tính, các hằng số được định nghĩa trong chương trình, bộ đệm truyền thông… - Vùng đối tượng: Bao gồm các bộ đếm, bộ định thì, các cổng vào ra tương tự. Vùng

này không thuộc kiểu non-volatile nhưng có thể đọc và ghi được.

Hai vùng nhớ cuối có ý nghĩa quan trọng trong việc thực hiện một chương trình.

3.2.2.3.2 Vùng nhớ chƣơng trình

- OB1: Chứa chương trình chính, các lệnh trong khối này luôn được quét trong mỗi vòng quét.

- SUBROUTIN: Chứa chương trình con, được tổ chức thành hàm và có biến hình thức để trao đổi dữ liệu, chương trình con sẽ được thực hiện khi có lệnh gọi từ chương trình chính.

- INTERRUPT: Miền chứa chương trình ngắt, được tổ chức thành hàm và có khả năng trao đổi dữ liệu với bất kỳ một khối chương trình nào khác. Chương trình này sẽ được thực hiện khi có sự kiện ngắt xảy ra.

3.2.2.3.3 Vùng nhớ dữ liệu

Vùng dữ liệu là một vùng nhớ động. Nó có thể được truy cập theo từng bit, từng byte, từng từ đơn (word) hay từ kép (double word) và được sử dụng làm miền lưu trữ dữ liệu cho các thuật toán, các hàm truyền thông, lập bảng, các hàm dịch chuyển, xoay vòng thanh ghi, con trỏ địa chỉ…

Vùng dữ liệu được chia thành những vùng nhớ nhỏ để phục vụ cho những mục đích và công dụng khác nhau, bao gồm các vùng sau:

- V (Variable memory): Vùng nhớ biến. - I (Input image register): Vùng đệm đầu vào. - Q (Output image register): Bùng đệm đầu ra. - M (Internal memory bits): Vùng nhớ các bit nội. - SM (Special memory): Vùng nhớ đặc biệt. Cách thức truy cập địa chỉ của vùng dữ liệu:

Truy cập trực tiếp.

- Truy cập theo bit: Tên miền nhớ + địa chỉ byte + • + chỉ số bit.Ví dụ:V10.4 chỉ bit

4 của byte 10 thuộc miền nhớ V.

- Truy cập theo byte: Tên miền nhớ + B + địa chỉ byte. Ví dụ VB15 chỉ byte 15 trong miền nhớ V.

từ đơn gồm hai byte là VB183 và VB184 trong đó VB183 là byte cao trong từ.

- Truy cập theo từ kép: Tên miền + D + địa chỉ byte cao trong miền.Ví dụ VD345 chỉ từ kép gồm 4 byte 345, 346, 347, 348 trong miền nhớ V trong đó 345 là byte cao trong từ kép.

Truy cập gián tiếp.

Truy cập địa chỉ gián tiếp thông qua con trỏ (pointer). Con trỏ là một miền nhớ từ

Một phần của tài liệu thiết kế và chế tạo module huấn luyện tự động hóa (Trang 36 - 106)