Các kiểu cấu trúc chương trình

Một phần của tài liệu Nghiên cứu, ứng dụng PLC S7-1200 điều khiển LOGO qua mạng (Trang 29)

5. Ứng dụng, nhu cầu thực tế của đề tài

1.3.2. Các kiểu cấu trúc chương trình

Dựa trên các yêu cầu của ứng dụng, ta có thể chọn cấu trúc thẳng còn gọi là lập trình tuyến tính hay cấu trúc kiểu khối kết cấu để tạo ra chương trình.

Chương trình thẳng thực thi tất cả các lệnh của tác vụ về tự động theo tuần tự, lệnh này theo sau lệnh kia. Thông thường, chương trình thẳng đặt tất cả các lệnh chương trình vào trong OB dành cho việc thực thi theo chu trình của chương trình (OB1). Loại cấu trúc thẳng chỉ thích hợp cho những bài toán tự động nhỏ, ít phức tạp.

Chương trình khối kết cấu sẽ gọi các khối mã đặc trưng mà khối mã đó thực hiện các tác vụ riêng biệt. Để tạo ra một cấu trúc theo khối kết cấu, ta chia tác vụ thành nhiều tác vụ phụ nhỏ hơn phù hợp với các chức năng về mặt kỹ thuật của tiến trình. Mỗi khối mã cung cấp đoạn chương trình cho mỗi tác vụ phụ. Ta cấu trúc chương trình bằng cách gọi một trong số các khối mã từ một khối khác. Loại lập trình cấu trúc có thể giúp ta giải quyết những bài toán điều khiển nhiều nhiệm vụ và phức tạp dễ dàng hơn.

Cấu trúc thẳng Cấu trúc khối kết cấu Hình 1.7. Các kiểu cấu trúc chương trình 1.3.3. Các khối OB đặc biệt

1) OB10 (Time of Day Interrupt): chương trình trong khối OB10 sẽ được thực hiện khi giá trị thời gian của đồng hồ thời gian thực 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 STEP 7.

2) OB20 (Time Relay 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 (Cyclic 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ờ phần mềm STEP 7.

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 quá khoảng thời gian cực đại đã quy đị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à 150 ms.

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 khi có sự cố từ các 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 cabilities).

8) OB87 (Communication Fault): chương trình trong khối OB87 sẽ được thực hiện khi 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 OFF 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 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.

1.3.4. Các chế độ hoạt động của CPU

CPU có 3 chế độ hoạt động: chế độ STOP, chế độ STARTUP và chế độ RUN. Các LED trạng thái trên mặt trước của CPU biểu thị chế độ hiện thời của sự vận hành.

- Trong chế độ STOP, CPU không thực thi chương trình nào, và ta có thể tải xuống một đề án.

- Trong chế độ STARTUP, các OB khởi động (nếu có) được thực thi một lần. Các sự kiện ngắt không được xử lý cho đến pha khởi động của chế độ RUN. - Trong chế độ RUN, chu kỳ quét được thực thi một cách lặp lại. Các sự kiện

ngắt có thể xuất hiện và được thực thi tại bất kỳ điểm nào nằm trong pha chu kỳ chương trình.

- Ta không thể tải xuống một đề án trong khi đang ở chế độ RUN.

CPU có hỗ trợ việc khởi động lại khi đang hoạt động (khởi động “nóng”) để đi vào chế độ RUN. Khởi động lại nóng không bao gồm sự đặt lại bộ nhớ. Tất cả các hệ thống không có khả năng giữ và dữ liệu người dùng đều được khởi chạy tại một sự khởi động lại nóng. Dữ liệu người dùng có khả năng giữ vẫn được giữ nguyên.

Một bộ nhớ đặt lại sẽ xóa tất cả các bộ nhớ làm việc, xóa các vùng nhớ có khả năng giữ và không có khả năng giữ, và sao chép bộ nhớ nạp đến bộ nhớ làm việc. Một sự đặt lại bộ nhớ không xóa đi bộ đệm chuẩn đoán hay các giá trị được lưu vĩnh viễn của địa chỉ IP.

Ta có thể chỉ định chế độ bật nguồn của CPU hoàn thành với phương pháp khởi động lại bằng cách sử dụng phần mềm lập trình. Biểu tượng cấu hình này xuất hiện trong mục Device Configuration đối với CPU đang trong khởi động. Khi nguồn được

bật, CPU thực hiện một tuần tự các kiểm tra chuẩn đoán bật nguồn và khởi chạy hệ thống. CPU sau đó sẽ đi vào chế độ bật nguồn tương ứng. Tất nhiên các lỗi được phát hiện sẽ ngăn không cho CPU đi vào chế độ RUN. CPU hỗ trợ các chế độ bật nguồn sau đây:

 Chế độ STOP.

 Chuyển sang chế độ RUN sau một sự khởi động lại nóng.  Chuyển sang chế độ trước đó sau một sự khởi động lại nóng.

Trong chế độ RUN, CPU thực hiện các tác vụ được thể hiện như trong hình sau đây:

Hình 1.8. Chế độ hoạt động của CPU STARTUP

- A: Xóa vùng nhớ I.

- B: Khởi chạy các ngõ ra cả với giá trị cuối cùng hay giá trị thay thế. - C: Thực thi các OB khởi động.

- D: Sao chép trạng thái của các ngõ vào vật lý đến vùng nhớ I.

- E: Lưu trữ bất kỳ các sự kiện ngắt nào vào trong thứ tự để xử lý trong chế độ RUN - F: Kích hoạt việc ghi vùng nhớ Q đến các ngõ ra vật lý.

RUN

- Ghi bộ nhớ Q đến các ngõ ra vật lý.

- Sao chép trạng thái các ngõ vào vật lý đến vùng nhớ I. - Thực thi các OB chu kỳ chương trình.

- Thực hiện các chuẩn đoán tự kiểm tra.

- Xử lý các ngắt và truyền thông trong suốt bất kỳ phần nào của chu kỳ quét. 1.3.5. Bảo vệ bằng mật khẩu cho CPU S7-1200

1.3.5.1. Cách thiết lập mật khẩu

CPU cung cấp 3 cấp độ bảo mật để hạn chế sự truy cập đến một số chức năng riêng biệt. Khi cấu hình cấp độ bảo mật và mật khẩu cho một CPU, ta giới hạn các chức năng và các vùng nhớ mà có thể truy cập không cần nhập vào mật khẩu.

Hình 1.9. Các chế độ thiết lập mật khẩu Để cấu hình mật khẩu ta làm theo các bước sau đây: 1. Trong mục “Device configuration”, lựa chọn CPU. 2. Trong cửa sổ kiểm tra, lựa chọn thẻ “Properties”.

3. Lựa chọn thuộc tính “Protection” để chọn cấp độ bảo vệ và để nhập vào mật khẩu.

Điều kiện mặc định cho CPU là phải không có sự hạn chế nào và không có một sự bảo vệ bằng mật khẩu nào thì ta mới có thể thiết lập mật khẩu.

Sự bảo vệ bằng mật khẩu không áp dụng đến sự thực thi của tập lệnh chương trình người dùng bao gồm các hàm truyền thông.

Việc thiết lập mật khẩu chỉ để hạn chế việc truy xuất đến một CPU và một số các chức năng của chương trình. Truyền thông PLC đến PLC (sử dụng tập lệnh truyền thông trong các khối mã) sẽ không bị hạn chế bởi cấp độ bảo mật trong CPU. Chức năng HMI cũng không bị hạn chế.

Bảng 1.1. Các cấp độ bảo mật Cấp độ bảo mật Những sự hạn chế truy cập

No protection Cho phép truy hoàn toàn các chức năng vì không có mật khẩu bảo vệ.

Write protection Cho phép đọc, truy cập vào CPU, truy cập HMI và PLC-to-PLC mà không cần nhập mật khẩu bảo vệ.

Mật khẩu sẽ ngăn chặc việc sửa đổi (chương trình) CPU và việc thay đổi chế độ CPU (RUN / STOP).

Read/write protection

Cho phép truy cập HMI và tất cả các hình thức truyền thông PLC- to-PLC mà không cần nhập mật khẩu bảo vệ.

Mật khẩu sẽ ngăn chặn việc đọc dữ liệu trong CPU, thay đổi (chương trình) của CPU, và thay đổi chế độ CPU (RUN / STOP).

1.3.5.2. Cách phục hồi mật khẩu bị mất

Nếu đã đánh mất mật khẩu của một CPU được bảo vệ bằng mật khẩu, ta sử dụng một thẻ chuyển trống để xóa đi chương trình được bảo vệ bằng mật khẩu. Thẻ chuyển trống sẽ xóa bộ nhớ nạp bên trong của CPU. Sau đó ta có thể tải xuống một chương trình người dùng mới từ phần mềm STEP 7 Basic đến CPU.

Ta phải lấy thẻ chuyển trống ra trước khi thiết lập CPU sang chế độ RUN.

1.4. TÌM HIỂU TẬP LỆNH PLC S7-1200 CỦA SIEMENS

1.4.1. Các lệnh cơ bản

1.4.1.1. Bit logic (tập lệnh tiếp điểm)

- Tiếp điểm thường hở - Tiếp điểm thường đóng

L A D

Tiếp điểm thường đóng sẽ đóng khi giá trị của bit có địa chỉ n là 0

Toán hạng n: I, Q, M, L, D - Lệnh OUT L A D

Giá trị của bit có địa chỉ là n sẽ bằng 1 khi đầu vào của lệnh này bằng 1 và ngược lại

Toán hạng n: Q, M, L, D

Chỉ sử dụng một lệnh out cho 1 địa chỉ

- Lệnh OUT đảo

L A D

Giá trị của bit có địa chỉ là n sẽ bằng 1 khi đầu vào của lệnh này bằng 0 và ngược lại

Toán hạng n: Q, M, L, D

Chỉ sử dụng một lệnh out not cho 1 địa chỉ

- Lệnh logic NOT L

A D

Lệnh đảo trạng thái ngõ vào/ra

L A D

Giá trị của các bit có địa chỉ là n sẽ bằng 1 khi đầu vào của lệnh này bằng 1 Khi đầu vào của lệnh bằng 0 thì bit này vẫn giữ nguyên trạng thái.

Toán hạng n: Q, M, L, D - Lệnh Reset

L A D

Giá trị của các bit có địa chỉ là n sẽ bằng 0 khi đầu vào của lệnh này bằng 1. Khi đầu vào của lệnh bằng 0 thì các bit này vẫn giữ nguyên trạng thái. Toán hạng n: Q, M, L, D

- Lệnh set nhiều bit

L A D

Giá trị của các bit có địa chỉ đầu tiên là OUT sẽ bằng 1 khi đầu vào của lệnh này bằng 1 Khi đầu vào của lệnh bằng 0 thì các bit này vẫn giữ nguyên trạng thái. Trong đó số bit là giá trị của n

Toán hạng OUT: Q, M, L, D n: là hằng số

L A D

Giá trị của các bit có địa chỉ đầu tiên là OUT sẽ bằng 0 khi đầu vào của lệnh này bằng 1 Khi đầu vào của lệnh bằng 0 thì các bit này vẫn giữ nguyên trạng thái. Trong đó số bit là giá trị của n.

Toán hạng OUT: Q, M, L, D n: là hằng số

- Tiếp điểm phát hiện xung cạnh lên dạng 1

L A D

Tiếp điểm phát hiện cạnh lên sẽ phát ra một xung khi đầu vào tiếp điểm P có sự chuyển đổi từ mức thấp lên mức cao.

Trạng thái của tín hiệu được lưu lại vào “M_BIT”

Độ rộng của xung này bằng thời gian của một chu kì quét.

- Tiếp điểm phát hiện xung cạnh lên dạng 2

L A D

Thay đổi trạng thái tín hiệu phía trước không ảnh hưởng đến “IN”

Phát hiện sự thay đổi trạng thái của 1 tín hiệu “IN” từ 0 lên 1

Trạng thái của tín hiệu IN được lưu lại vào “M_BIT”

Độ rộng của xung này bằng thời gian của một chu kì quét.

- Tiếp điểm phát hiện xung cạnh xuống dạng 1

L A D

Tiếp điểm phát hiện cạnh xuống sẽ phát ra một xung khi đầu vào tiếp điểm này có sự chuyển đổi từ mức cao xuống mức thấp

Trạng thái của tín hiệu được lưu lại vào “M_BIT”

Độ rộng của xung này bằng thời gian của một chu kì quét.

- Tiếp điểm phát hiện xung cạnh xuống dạng 2

L A D

Thay đổi trạng thái tín hiệu phía trước không ảnh hưởng đến “IN”

Phát hiện sự thay đổi trạng thái của 1 tín hiệu “IN” từ 1 xuống 0

Trạng thái của tín hiệu IN được lưu lại vào “M_BIT”

Độ rộng của xung này bằng thời gian của một chu kì quét.

- Lệnh SR fliplop L

A D

Mạch chốt RS ưu tiên Reset

- Lệnh RS fliplop L

A D

1.4.1.2. Sử dụng bộ Timer

Sử dụng lệnh Timer để tạo một chương trình trễ định thời. Số lượng của Timer phụ thuộc vào người sử dụng và số lượng vùng nhớ của CPU. Mỗi timer sử dụng 16 byte IEC_Timer dữ liệu kiểu cấu trúc DB. Step 7 tự động tạo khối DB khi lấy khối Timer.

Kích thước và tầm của kiểu dữ liệu Time là 32 bit, lưu trữ như là dữ liệu Dint: T#-14d_20h_31m_23s_648 ms - T#24d_20h_31m_23s_647 ms hay là 2.147.483.648 ms đến 2.147.483.647 ms.

- Timer tạo xung - TP

L A D

Timer TP tạo một chuỗi xung với độ rộng xung đặt trước. Thay đổi PT, IN không ảnh hưởng khi Timer đang chạy. Khi đầu vào IN được tác động vào timer sẽ tạo ra một xung có độ rộng bằng thời gian đặt PT.

- Timer trễ sườn lên có nhớ - Timer TONR

L A D

Thay đổi PT không ảnh hưởng khi Timer đang vận hành, chỉ ảnh hưởng khi timer đếm lại

Khi ngõ vào IN chuyển sang “FALSE” khi vận hành thì timer sẽ dừng nhưng không đặt lại bộ định thì. Khi chân IN “TRUE” trở lại thì Timer bắt đầu tính thời gian từ giá trị thời gian đã tích lũy.

L A D

Khi ngõ vào IN ngừng tác động thì reset và dừng hoạt động Timer. Thay đổi PT khi Timer vận hành không có ảnh hưởng gì.

- Timer trễ sườn xuống – TOF

L A D

Khi ngõ vào IN ngừng tác động thì reset và dừng hoạt động Timer. Thay đổi PT khi Timer vận hành không có ảnh hưởng gì.

1.4.1.3. Sử dụng bộ Counter

Lệnh Counter được dùng để đếm các sự kiện ở ngoài hay các sự kiện quá trình ở trong PLC. Mỗi Counter sử dụng cấu trúc lưu trữ của khối dữ liệu DB để làm dữ liệu của Counter. Step 7 tự động tạo khối DB khi lấy lệnh.

Tầm giá trị đếm phụ thuộc vào kiểu dữ liệu mà bạn chọn lựa. Nếu giá trị đếm là một số Interger không dấu, có thể đếm xuống tới 0 hoặc đếm lên tới tầm giới hạn. Nếu giá trị đếm là một số interger có dấu, có thể đếm tới giá trị âm giới hạn hoặc đếm lên tới một số dương giới hạn.

- Counter đếm lên - CTU

L A D

Giá trị bộ đếm CV được tăng lên 1 khi tín hiệu ngõ vào CU chuyên từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV≥PV. Nếu trạng thái R=Reset được tác động thì bộ đếm CV = 0.

- Counter đếm xuống – CTD

L A D

Giá trị bộ đếm được giảm 1 khi tín hiệu ngõ vào CD chuyển từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi CV≤0. Nếu trạng thái LOAD được tác động thì CV=PV.

- Counter đếm lên xuống – CTUD

L A D

Giá trị bộ đếm CV được tăng lên 1 khi tín hiệu ngõ vào CU chuyển từ 0 lên 1. Ngõ ra QU được tác động lên 1 khi CV≥PV. Nếu trạng thái R = Reset được tác động thì bộ đếm CV = 0.

Giá trị bộ đếm CV được giảm 1 khi tín hiệu ngõ vào CD chuyển từ 0 lên 1. Ngõ ra QD được tác động lên 1 khi CV≤0. Nếu trạng thái Load được tác động thì CV = PV.

1.4.2. Các lệnh nâng cao

Một phần của tài liệu Nghiên cứu, ứng dụng PLC S7-1200 điều khiển LOGO qua mạng (Trang 29)

Tải bản đầy đủ (PDF)

(110 trang)