Tải bản đầy đủ (.doc) (131 trang)

luận văn tốt nghiệp thiết kế hệ thống SCADA dung cho wincc

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 (2.05 MB, 131 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA ĐIỆN-ĐIỆN TỬ
NGÀNH ĐIỀU KHIỂN TỰ ĐỘNG
******
Đề tài:
Thiết Kế Hệ SCADA Dùng WinCC
Thiết Kế Hệ SCADA Dùng WinCC
GVHD : PHAN NGUYỄN PHỤC QUỐC.
SVTH : TRẦN THỊ AN.
MSSV : 49700018.
Niên Khóa 1997-2002.
Lời cảm ơn
Lời đầu tiên em chân thành cám ơn thầy Phan Nguyễn Phục Quốc đã
trực tiếp hướng dẫn; cung cấp tài liệu, thiết bị và tạo mọi điều kiện để em hồn
thành tập luận văn này.
Em xin gởi lời cám ơn đến tất cả các thầy cô giáo bộ môn Điều Khiển
Tự Động, cũng như các thầy cô khoa Điện-Điện Tử thời gian qua đã truyền đạt
và trang bị cho em đầy đủ kiến thức chuẩn bị cho luận văn tốt nghiệp.
Tuy đã cố gắng nhiều nhưng do thời gian có hạn, tập luận văn này sẽ
không tránh khỏi sai sót, em xin quý thầy cô và độïc giả thông cảm bỏ qua. Em
xin tiếp nhận mọi ý kiến.
Người thực hiện
Sinh viên
Trần Thị An
Lời mở đầu
Lịch sử đã trải qua nhiều giai đoạn, và từng chứng kiến các cuộc
Cách Mạng Khoa Học Kỹ Thuật. Nó không những giải phóng sức lao
động, mà còn giúp việc sản xuất được tiến triển nhanh chóng, số lượng
và chất lượng sản phẩm không ngừng tăng lên, phục vụ cho đời sống
nhân loại.
Ngày nay, với sự trợ giúp của máy điện tốn, con người đã làm


được những việc tưởng chừng như không thể ở vài chục năm trước đây.
Hiện nay trong các ngành công nghiệp hiện đại, việc sử dụng máy tính
đòi hỏi gần như là tất yếu; chúng giúp cho việc sản xuất hay kiểm tra sản
phẩm được dễ dàng, thuận lợi, hạn chế sai số, thất thốt… Người ta có thể
không cần phải xuống tận các phân xưởng để theo dõi hay điều chỉnh
bằng tay, mà ta hồn tồn có thể điều khiển và thu thập, quản lý dữ liệu
ngay tại phòng Điều Khiển Trung Tâm cho các hệ thống Tự Động-hệ
thống này gọi chung là hệ thống SCADA.
Đi theo một nhánh nhỏ của hệ thống SCADA, em thực hiện việc
điều khiển cho bình trộn hố chất dùng ngôn ngữ lập trình S7-300 và
WinCC để thiết lập giao diện kết nối điều khiển đối tượng.

MỤC LỤC
Lời mở đầu.
PHẦN 1: PLCS7-300 1
Chương 1: Giới thiệu 2
I. Tổng quan về bộ điều khiển lập trình được 2
1. Bộ điều khiển lập trình được 2
2. Điều khiển nối cứng và điều khiển lập trình được 2
3.Quét chương trình tuần hồn và ảnh các quá trình 3
a. Quét chương trình tuần hồn 3
b. Aûnh các quá trình 3
II. Cấu trúc và phân chia bộ nhớ 4
1.Các module của PLC S7-300 4
a.Module CPU 4
b.Module mở rộng 5
2.Kiểu dữ liệu và phân chia bộ nhớ 6
a.Kiểu dữ liệu 6
b.Phân chia bộ nhớ 6
c.Tầm địa chỉ tối đa cho các vùng nhớ 7

3.Cấu trúc chương trình 8
a.Lập trình tuyến tính 8
b.Lập trình có cấu trúc 8
Chương 2: Ngôn ngữ lập trình S7-300 11
I. Sử dụng các ô nhớ và cấu trúc thanh ghi trạng thái 11
1. Địa chỉ ô nhớ 11
a. Phần chữ 11
b. Phần số 12
2. Cấu trúc thanh ghi trạng thái 12
II. Các lệnh và phép tốn 16
1. Lệnh nạp chuyển 16
2. Các lệnh tác động vào RLO và ô nhớ 16
3. Các lệnh tác động vào hai thanh ghi ACCU1 và ACCU2 17
a. Nhóm lệnh đảo vị trí bytes 17
b. Nhóm lệnh tăng giảm 17
c. Nhóm lệnh dịch chuyển 18
d. Nhóm lệnh chuyển đổi số BCD và số nguyên 20
e. Nhóm lệnh chuyển đổi số dấu chấm động sang số nguyên 20
f. Nhóm lệnh so sánh 21
g. Nhóm lệnh số học 22
4. Các lệnh điều khiển logic và điều khiển chương trình 23
a. Các lệnh điều khiển logic 23
b. Các lệnh điều khiển chương trình 25
5. Bộ định thời Timer 29
a. Chức năng Timer 29
b. Các ví dụ bằng giản đồ cho từng loại Timer 30
6. Bộ đếm Counter 33
a. Chức năng Counter 33
b. Ví dụ minh họa 34
Chương 3: Thực thi chương trình 35

I. Hoạt động của CPU 35
1. Các vùng nhớ CPU 35
2. Cất chương trình vào CPU 36
3. Định nghĩa các vùng nhớ giữ 36
a. Sử dụng RAM không bốc hơi 37
b. Đặt cấu hình dữ liệu cất trong RAM 38
c. Sử dụng pin backup để giữ dữ liệu 38
4. Hoạt động của CPU 39
a. Chu kỳ quét 39
b. Các chế độ hoạt động 39
c. Các chế độ hoạt động khác 41
II. Các khối logic 42
1. Các khối tổ chức OB 42
2. Các hàm và các khối hàm 48
3. Các khối hệ thống 48
4. Các khối của các CPU của PLC S7-300 49
5. Thực thi chương trình trong OB1 49
a. Hoạt động của OB1 49
b. Dữ liệu cục bộ trong OB1 50
c. Thông tin Start up 50
d. Lớp ưu tiên và chương trình ngắt 51
PHẦN 2: LẬP TRÌNH WINCC 54
Chương 1: Control Center 55
I. Nội dung của Control Center 56
1. Chức năng 56
a. Nhiệm vụ của quản lý dữ liệu 56
b. Nhiệm vụ của Control Center 56
2. Cấu trúc 57
3. Soạn thảo 58
4. Các thành phần của project trong Control Center 58

a. Máy tính 59
b. Quản lý tag 59
c. Các kiểu dữ liệu 63
d. Soạn thảo 65
Chương 2: Các thành phần soạn thảo 66
I. Alarm Logging 66
1. Chức năng 66
a. Nhiệm vụ của Alarm Logging CS 66
b. Nhiệm vụ của Alarm Logging RT 66
2. Khái quát về Alarm Logging 66
a. Thông báo 66
b. Thủ tục thông báo 67
c. Cấu trúc một thông báo 67
d. Tổ chức các thông báo 68
e. Hiển thị các thông báo trong chế độ run timer 68
II. Tag Logging 69
1. Chức năng 69
a. Nhiệm vụ của Tag Logging CS 69
b. Nhiệm vụ của Tag Logging RT 69
c. Thực hiện Tag Logging 70
d. Các kiểu dữ liệu 70
e. Các phương pháp lưu trữ dữ liệu quá trình 71
2. Cấu trúc của Tag Logging CS 75
a. Timers 75
b. Achives 75
c. Trends 77
d. Tables77
III. Graphic Designer 77
1. Chức năng 77
2. Cấu trúc 77

a. Palette đối tượng 78
b. Tab “Property” 81
c. Tab “Event” 81
IV. Global Scripts 82
1. Giới thiệu 82
2. Các hàm dự án 83
3. Các hàm chuẩn 84
a. Các hàm chuẩn có sẵn trong hệ thống 84
b. Các hàm chuẩn lựa chọn 86
4. Các hàm nội 86
V. Report Designer 95
1. Giới thiệu 95
2. Báo cáo 96
a. Báo cáo trong page layout 97
b. Báo cáo trong line layout 98
3. Kết nối Report Layouts với các ứng dụng 98
a. Chọn dữ liệu để phản hồi tài liệu 98
b. Chọn dữ liệu cho cấu hình on-line 102
PHẦN 3: ỨNG DỤNG HỆ SCADA VÀO HỆ THỐNG PHA TRỘN
HÓA CHẤT103
Chương 1: Hệ thống Scada 104
Giới thiệu hệ Scada 104
Các đặc tính chính của hệ thống Scada hiện đại 107
Chương 2: Thực hiện chương trình 110
o Giới thiệu về hệ thống pha trộn 110
Giới thiệu tổng quát 110
Hoạt động của hệ thống 110
o Tạo các giao diện kết nối bằng WinCC 114
Các tags và nhóm tag đã tạo trong chương trình 114
Các giao diện cho chương trình 116

a. Màn hình chính 116
b. Màn hình “Giới thiệu” 117
c. Màn hình “Thông tin” 118
d. Màn hình “Điều khiển” 119
e. Màn hình “Mô hình” 120
f. Màn hình “Xem dữ liệu” 121
g. Màn hình “Thu thập” 122
h. Màn hình “Đồ thị” 123
i. Màn hình “Thông báo” 124
o Lập trình cho hệ thống bằng Simatic S7-300 125
Đặc tính thiết bị 125
a. Cấu hình 125
b. Cáp kết nối MPI 126
Giới thiệu chương trình 127
a. Các khối sử dụng trong chương trình 127
b. Phần lập trình 127
Chương 3: Kết quả thực hiện và hướng phát triển đề tài 128
1. Kết quả thực hiện 128
2. Hướng phát triển đề tài 128
PHẦN 1
PHẦN 1
PLC S7-300
Chương 1 :
Giới Thiệu
Giới Thiệu
I. TỔNG QUAN VỀ BỘ ĐIỀU KHIỂN LẬP TRÌNH
ĐƯỢC.
Bộ điều khiển lập trình được.
Bộ điều khiển lập trình được (Programmable Logic Controller), gọi tắt là PLC,
là bộ điều khiển cho phép thực hiện linh hoạt các thuật tốn điều khiển số thông qua

ngôn ngữ lập trình để trao đổi thông tin với các PLC khác hoặc với máy tính. Tồn bộ
chương trình điều khiển được lưu trong bộ nhớ của PLC dưới dạng các khối chương
trình (khối OB, FB hoặc FC) và được thực hiện lặp theo chu kỳ của vòng quét (scan).
PLC chủ yếu bao gồm module CPU, các bộ xử lý và bộ nhớ chương trình, các
module xuất/nhập (I/O module), hệ thống bus và khối nguồn cấp điện.
Hệ thống tuyến (system bus): là tuyến để truyền các tín hiệu, gồm nhiều đường
tín hiệu song song:
 Tuyến địa chỉ (address bus): chọn địa chỉ trên các khối khác nhau.
 Tuyến dữ liệu (data bus): mang dữ liệu (thí dụ từ IM tới OM).
 Tuyến điều khiển (control bus): chuyển, truyền các tín hiệu định thì và
điều khiều để đồng bộ các hoạt động trong PLC.
Điều khiển nối cứng và điều khiển lập trình được.
 Điều khiển nối cứng (Hard_wired control)
Trong các hệ thống điều khiển nối cứng, các tiếp điểm cảm biến, các đèn, các
công tắc, được nối vĩnh viễn với cái khác. Do đó khi muốn thay đổi lại hệ
thống thì phải nối dây lại bộ điều khiển, với hệ thống phức tạp thì việc làm lại
này không hiệu quả và tốn kém.
 Điều khiển lập trình được (Programmable control)
Tuy nhiên trong các hệ thống điều khiển lập trình được thì cấu trúc của bộ
điều khiển và nối dây thì độc lập với chương trình. Điều này có nghĩa là các
bộ điều khiển chuẩn có thể sử dụng. Thí dụ: các tiếp điểm cảm biến và các
cuộn dây điều hành trên máy công cụ được nối trực tiếp vào các đầu nối của
bộ điều khiển.
Chương trình định nghĩa hoạt động điều khiển được ghi trực tiếp vào bộ
nhớ của bộ điều khiển (bộ nhớ chương trình) với sự trợ giúp của bộ lập trình
hoặc một máy vi tính.
Ta có thể thay đổi chương trình điều khiển bằng cách thay đổi nội dung
của bộ nhớ bộ điều khiển, nghĩa là bộ nhớ chương trình, còn phần nối dây bên
ngồi thì không bị ảnh hưởng. Đây chính là một trong các điểm thuận lợi quan
trọng nhất của bộ điều khiển lập trình được.

Quét chương trình tuần hồn và ảnh các quá trình.
a. Quét chương trình tuần hồn:
Thời gian để cho một lần quét qua tất cả các phát biểu được liệt kê trong
chương trình được gọi là thời gian quét (scan timer).
Một chu kỳ quét gồm có 4 giai đoạn sau:
• Chuyển dữ liệu từ cổng vào tới I.
• Thực hiện chương trình.
• Chuyển dữ liệu từ Q tới cổng ra.
• Truyền thông và kiểm tra nội bộ.
Thời gian quét này tùy thuộc vào số lệnh trong chương trình và tùy theo từng
loại PLC.
Nếu sử dụng các khối chương trình đặc biệt có chế độ ngắt, ví dụ như khối
OB40, OB80, , chương trình của các khối đó sẽ được thực hiện trong vòng quét khi
xuất hiện tín hiệu báo ngắt cùng chủng loại. Các khối chương trình này có thể được
thực hiện tại mọi thời điểm trong vòng quét chứ không bị gò ép là phải ở trong giai
đoạn thực hiện chương trình.
b. Aûnh các quá trình:
 Aûnh quá trình nhập PII (Process Input Image)
Sau khi bắt đầu thời gian theo dõi quét, các trạng thái tín hiệu của tất cả
các ngõ vào số trong PLC được quét (dò) và được đưa vào bộ đệm ảnh quá
trình nhập PII cho đến khi bắt đầu chu kỳ quét kế tiếp. Trong lúc quét
chương trình kế tiếp (được bắt đầu bằng cách gọi OB1), các trạng thái tín
hiệu của các ngõ vào được lấy từ ảnh quá trình PII này.
 Aûnh quá trình xuất PIQ (Process Output Image)
Nếu trong một chu kỳ quét, các trạng thái tín hiệu được thiết lập cho
một hay nhiều ngõ ra, thì trước hết chúng phải được đệm trong quá trình
xuất PIQ. Khi chương trình được quét đến phát biểu cuối (BE) của khối tổ
chức OB1, nội dung của ảnh quá trình xuất PIQ được chuyển đến các
module xuất.
Aûnh quá trình xuất/nhập là vùng RAM nội mà mỗi vị trí bộ nhớ được

gán cho mỗi ngõ vào số và ngõ ra số.
Các thuận lợi:
Việc đệm các trạng thái nhập và xuất trong các ảnh quá trình bảo đảm là các
tín hiệu vào mà thay đổi trong chu kỳ quét không thể có hiệu ứng trên chuỗi chức
năng.
Hơn nữa, việc đệm các trạng thái tín hiệu của các ngõ vào và các ngõ ra giảm
thời gian quét khi truy cập vào bộ nhớ dữ liệu hệ thống cần ít thời gian hơn nhiều truy
cập trực tiếp vào các modules xuất/ nhập.
II. CẤU TRÚC VÀ PHÂN CHIA BỘ NHỚ.
1. Các module của PLC S7-300.
Để tăng tính mềm dẻo trong ứng dụng thực tế mà ở đó phần lớn các đối tượng
điều khiển có số tín hiệu đầu vào, đầu ra cũng như chủng loại tín hiệu vào/ra khác
nhau mà các bộ điều khiển PLC được thiết kế không bị cứng hóa về cấu hình. Chúng
được chia nhỏ thành các module. Số các module được sử dụng nhiều hay ít tùy thuộc
vào từng bài tốn, song tối thiểu bao giờ cũng phải có một module chính là module
CPU. Các module còn lại là những module nhận/truyền tín hiệu với đối tượng điều
khiển, các module chuyên dụng như PID, điều khiển động cơ Chúng được gọi chung
là module mở rộng.
a. Module CPU:
Module CPU là loại module có chứa bộ vi xử lý, hệ điều hành, bộ nhớ, các bộ
định thời, bộ đếm, cổng truyền thông và có thể có một vài cổng vào ra số. Các cổng
vào ra số có trên module CPU được gọi là cổng vào ra onboard.
Trong họ PLC S7-300 có nhiều loại module CPU khác nhau. Chúng được đặt
tên theo bộ vi xử lý có trong nó như module CPU312, module CPU314, module
CPU315
Những module cùng sử dụng một loại bộ vi xử lý, nhưng khác nhau về cổng
vào/ra onboard cũng như các khối hàm đặc biệt được tích hợp sẵn trong thư viện của
hệ điều hành phục vụ việc sử dụng các cổng vào ra onboard này sẽ được phân biệt với
nhau trong tên gọi bằng thêm cụm từ IFM (Intergrated Function Module). Chẳng hạn
module CPU312 IFM, module CPU314 Ngồi ra còn có loại module với hai cổng

truyền thông như module CPU315-DP.
b. Module mở rộng:
Module mở rộng có 5 loại chính:
 PS (Power Supply): Module nguồn nuôi. Có 3 loại: 2A, 5A, 10A.
 SM (Signal Module): Module mở rộng cổng tín hiệu vào/ra, bao gồm:
• DI (Digital Input): Module mở rộng các cổng vào số.
• DO (Digital Output): Module mở rộng các cổng ra số.
• DI/DO: Module mở rộng các cổng vào/ra số.
• AI (Analog Input): Module mở rộng các cổng vào tương tự.
• AO (Analog Output): Module mở rộng các cổng ra tương tự.
• AI/AO: Module mở rộng các cổng vào/ra tương tự.
 IM (Interface module): Module ghép nối. Đây là loại module chuyên
dụng có nhiệm vụ nối từng nhóm các module mở rộng lại với nhau
thành một khối và được quản lý chung bởi một module CPU. Các
module mở rộng được gá trên một thanh rack. Trên mỗi rack có thể gá
được tối đa 8 module mở rộng (không kể module CPU và module
nguồn nuôi). Một module CPU S7-300 có thể làm việc trực tiếp được
với nhiều nhất 4 racks và các racks này phải được nối với nhau bằng
module IM.
 FM (Function Module): Module có chức năng điều khiển riêng, ví dụ
như module điều khiển động cơ bước, module điều khiển động cơ
servo, module PID, module điều khiển vòng kín,
 CP (Communication Module): Module phục vụ truyền thông trong
mạng giữa các PLC với nhau hoặc giữa PLC với máy tính.
2. Kiểu dữ liệu và phân chia bộ nhớ.
a. Kiểu dữ liệu:
Trong một chương trình có thể có các kiểu dữ liệu sau:
• BOOL: với dung lượng 1 bit và có giá trị là 0 hay 1.
• BYTE: gồm 8 bit, có giá trị nguyên dương từ 0 đến 255.
• WORD: gồm 2 byte, có giá trị nguyên dương từ 0 đến 65535.

• INT: có dung lượng 2 byte, dùng để biểu diễn số nguyên từ -32768
đến 32767.
• DINT: gồm 4 byte, biểu diễn số nguyên từ -2147463846 đến
2147483647.
• REAL: gồm 4 byte, biểu diễn số thực dấu phẩy động.
• S5T: khoảng thời gian, được tính theo giờ/phút/giây/miligiây.
• TOD: biểu diễn giá trị thời gian tính theo giờ/phút/giây.
• DATE : biểu diễn giá trị thời gian tính theo năm/tháng/ngày.
• CHAR: biểu diễn một hoặc nhiều ký tự (nhiều nhất là 4 ký tự).
b. Phân chia bộ nhớ:
CPU S7-300 có 3 vùng nhớ cơ bản:
 Vùng nhớ hệ thống (system memory): (RAM trong CPU) lưu trữ dữ
liệu hoạt động cho chương trình của ta:
• I (Process Input Image): Miền bộ đệm các dữ liệu cổng vào số.
Trước khi bắt đầu thực hiện chương trình, PLC sẽ đọc giá trị logic
của tất cả các cổng đầu vào và cất giữ chúng trong vùng nhớ I.
Thông thường chương trình ứng dụng không đọc trực tiếp trạng
thái logic của cổng vào số mà chỉ lấy dữ liệu của cổng vào từ bộ
đệm I.
• Q (Process Output Image): Miền bộ đệm các dữ liệu cổng ra số.
Kết thúc giai đoạn thực hiện chương trình, PLC sẽ chuyển giá trị
logic của bộ đệm Q tới các cổng ra số. Thông thường chương trình
không trực tiếp gán giá trị tới tận cổng ra mà chỉ chuyển chúng
vào bộ đệm Q.
• M: Miền các biến cờ. Chương trình ứng dụng sử dụng vùng nhớ
này để lưu trữ các tham số cần thiết và có thể truy nhập nó theo bit
(M), byte (MB), từ (MW), từ kép (MD).
• T (Timer): Miền nhớ phục vụ bộ định thời bao gồm việc lưu trữ
các giá trị thời gian đặt trước (PV-Preset Value), giá trị đếm thời
gian tức thời (CV-Current Value) cũng như giá trị logic đầu ra của

bộ thời gian.
• C (Counter): Miền nhớ phục vụ bộ đếm bao gồm việc lưu trữ giá
trị đặt trước (PV-Preset Value), giá trị đếm tức thời (CV-Current
Value) và giá trị logic của bộ đếm.
• PI (I/O External Input): Miền địa chỉ cổng vào của các module
tương tự. Các giá trị tương tự tại cổng vào của module tương tự sẽ
được module đọc và chuyển tự động theo những địa chỉ.
• PQ (I/O External Output): Miền địa chỉ cổng ra của các module
tương tự. Các giá trị tương tự tại cổng ra của module tương tự sẽ
được module đọc và chuyển tự động theo những địa chỉ.
 Vùng nhớ nạp (load memory): (RAM trong CPU, cộng thêm
EEPROM có sẵn trong CPU hoặc thẻ EEPROM gắn thêm) là vùng
nhớ chứa chương trình của ta bao gồm tất cả các khối chương trình
ứng dụng OB, FB, FC, các khối chương trình trong thư viện hệ thống
được sử dụng (SFB, SFC) và các khối dữ liệu DB. Tồn bộ các khối
chương trình và các khối dữ liệu nằm trong RAM sẽ bị xóa khi tác
động xóa bộ nhớ “CPU memory reset” (MRES).
 Vùng nhớ làm việc (word memory): (RAM trong CPU) chứa các bản
sao của các phần tử chương trình đang được CPU thực thi. Như các
khối DB đang được mở, khối chương trình (OB, FB, FC, SFB, SFB)
đang được CPU thực hiện và phần bộ nhớ cấp phát cho những tham
số hình thức để các khối chương trình này trao đổi tham trị với hệ
điều hành và với các khối chương trình khác (local block). Tại một
thời điểm nhất định vùng work memory chỉ chứa một khối chương
trình duy nhất.
c. Tầm địa chỉ tối đa cho các vùng nhớ:
• Với I, Q, PI, DB, DI và L:
Tầm địa chỉ tối đa cho bit: 0.0 đến 65535.7
Tầm địa chỉ tối đa cho byte: 0 đến 65535
Tầm địa chỉ tối đa cho word: 0 đến 65534

Tầm địa chỉ tối đa cho double word: 0 đến 65532
• Với bộ nhớ bit M:
Tầm địa chỉ tối đa cho bit: 0.0 đến 255.7
Tầm địa chỉ tối đa cho byte : 0 đến 255
Tầm địa chỉ tối đa cho word: 0 đến 254
Tầm địa chỉ tối đa cho double word: 0 đến 252
3. Cấu trúc chương trình.
Ta phải luôn luôn lập trình khối OB 1 để cho PLC quét tuần hồn chương trình
để thực thi.
Có hai kiểu lập trình: lập trình tuyến tính và lập trình có cấu trúc.
a. Lập trình tuyến tính (liner):
Tồn bộ chương trình điều khiển nằm trong một khối trong bộ nhớ. Loại hình
cấu trúc tuyến tính này phù hợp với những bài tốn tự động nhỏ, không phức tạp. Khối
được chọn phải là khối OB 1, là khối mà CPU luôn quét và thực hiện các lệnh trong
nó thường xuyên, từ lệnh đầu tiên đến lệnh cuối cùng và quay lại từ lệnh đầu tiên.
b. Lập trình có cấu trúc (structured) :
Trong PLC Siemens S7 tổ chức theo các khối mà có thể lập trình được với
từng nhiệm vụ riêng. Loại hình cấu trúc này phù hợp với những bài tốn điều khiển
nhiều nhiệm vụ và phức tạp. PLC S7-300 có 4 loại khối cơ bản:
 Khối tổ chức OB (Oganization block) : Khối tổ chức và quản lý
chương trình điều khiển.
 Khối hàm chức năng FB (Function block) : Là loại khối FC đặc biệt
có khả năng trao đổi một lượng dữ liệu 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ó
tên gọi là Data block .
 Khối hàm (Function) : Khối chương trình với những chức năng riêng
giống như một chương trình con hoặc một hàm.
 Khối dữ liệu (Data block) : Khối chứa các dữ liệu cần thiết để thực
hiện chương trình. Các tham số khối do ta tự đặt.
Ngồi ra còn có các khối hệ thống như : SFB, SFC, SDB.

Tồn bộ các khối chương trình con được quản lý một cách thống nhất bởi khối
OB1. Chương trình trong các khối được liên kết với nhau bằng các lệnh gọi khối,
chuyển khối. Từng nhiệm vụ điều khiển con có thể được chia thành những nhiệm vụ
nhỏ và cụ thể hơn nữa, do đó một khối chương trình con cũng có thể được gọi từ một
khối chương trình con khác. Nhưng tránh không bao giờ một khối chương trình con
lại gọi đến chính nó.
Khi thực hiện lệnh gọi một khối con, hệ điều hành sẽ:
• Chuyển khối con được gọi từ vùng load memory vào vùng word
memory.
OB1
• Cấp phát cho khối con một phần bộ nhớ trong word memory để làm
local block. Cấu trúc local block được quy định khi soạn thảo các khối.
• Truyền các tham trị từ khối mẹ cho biến hình thức IN, IN-OUT của
local block.
• Sau khi khối con thực hiện xong nhiệm vụ và ghi kết quả dưới dạng
tham trị đầu ra cho biến OUT, IN-OUT của local block, hệ điều hành sẽ
chuyển các tham trị này cho khối mẹ và giải phóng khối con cùng local
block ra khỏi word memory.
Số các lệnh gọi lồng nhau phụ thuộc vào từng chủng loại module CPU mà ta
sử dụng. Nếu số lần gọi khối lồng nhau mà vượt quá con số giới hạn cho phép, PLC
sẽ tự chuyển sang chế độ STOP và set cờ báo lỗi.
Ta có bảng so sánh khả năng lập trình của các PLC SIMATIC S7-300 như sau:
( CPU 312 IFM CPU 315-2 DP)
Khối CPU 312
IFM
CPU 314 IFM CPU 313/314/315 CPU 315-2 DP
OB 3 13 13 14
FB 32 128 128 128
FC 32 128 128 128
DB 63 127 127 127

SFC 25 36 36 (CPU 315:37) 40
SFB 2 7 - -
Bảng 1.1: so sánh khả năng lập trình của các PLC SIMATIC S7-300.
OB
FB
FC
SFB
FB FB SFC
FB sử dụng cùng
với DB
(instance)
Chương 2:
Ngôn Ngữ Lập Trình S7-300
Ngôn Ngữ Lập Trình S7-300
I. SỬ DỤNG CÁC Ô NHỚ VÀ CẤU TRÚC THANH
GHI TRẠNG THÁI.
1. Địa chỉ ô nhớ.
Địa chỉ ô nhớ gồm phần chữ và phần số.
a. Phần chữ: chỉ vị trí và kích thước ô nhớ.
• M: chỉ ô nhớ trong miền các biến cờ có kích thước là
1 bit.
• MB: chỉ ô nhớ trong miền các biến cờ có kích thước
là 1 byte.
• MW: chỉ ô nhớ trong miền các biến cờ có kích thước
là 2 bytes.
• MD: chỉ ô nhớ trong miền các biến cờ có kích thước
là 4 bytes.
• I: chỉ ô nhớ có kích thước là 1 bit trong miền bộ đệm
cổng vào số.
• IB: chỉ ô nhớ có kích thước là 1 byte trong miền bộ

đệm cổng vào số.
• IW: chỉ ô nhớ có kích thước là 1 từ trong miền bộ
đệm cổng vào số.
• ID: chỉ ô nhớ có kích thước là 2 từ trong miền bộ
đệm cổng vào số.
• Q: chỉ ô nhớ có kích thước là 1 bit trong miền bộ
đệm cổng ra số.
• QB: chỉ ô nhớ có kích thước là 1 byte trong miền bộ
đệm cổng ra số.
• QW: chỉ ô nhớ có kích thước là 1 từ trong miền bộ đệm cổng ra số.
• QD: chỉ ô nhớ có kích thước là 2 từ trong miền bộ đệm cổng ra số.
• T: chỉ ô nhớ trong miền nhớ của bộ thời gian Timer.
• C: chỉ ô nhớ trong miền nhớ của bộ đếm Counter.
• PIB: chỉ ô nhớ có kích thước 1 byte thuộc vùng peripheral input.
• PIW: chỉ ô nhớ có kích thước 1 từ thuộc vùng peripheral input.
• PID: chỉ ô nhớ có kích thước 2 từ thuộc vùng peripheral input.
• PQB: chỉ ô nhớ có kích thước 1 byte thuộc vùng peripheral output.
• PQW: chỉ ô nhớ có kích thước 1 từ thuộc vùng peripheral output.
• PQD: chỉ ô nhớ có kích thước 2 từ thuộc vùng peripheral output.
• DBX: chỉ ô nhớ có kích thước 1 bit trong khối dữ liệu DB.
• DBB: chỉ ô nhớ có kích thước 1 byte trong khối dữ liệu DB.
• DBW: chỉ ô nhớ có kích thước 1 từ trong khối dữ liệu DB.
• DBD: chỉ ô nhớ có kích thước 2 từ trong khối dữ liệu DB.
b. Phần số:
Chỉ địa chỉ của byte hoặc bit trong miền nhớ đã xác định.
Nếu ô nhớ đã được xác định thông qua phần chữ là có kích thước 1 bit thì phần
số sẽ gồm địa chỉ của byte và số thứ tự của bit trong byte đó được tách với nhau bằng
dấu chấm.
Ví dụ: I 1.3
M 100.5

Q 124.7
Nếu ô nhớ đã được xác định là 1 byte, từ hoặc từ kép thì phần số sẽ là địa chỉ
byte đầu tiên trong mảng byte của ô nhớ đó.
Ví dụ: DIB 15
MD 46
2. Cấu trúc thanh ghi trạng thái.
Khi thực hiện lệnh , CPU sẽ ghi nhận lại trạng thái của phép tính trung gian cũng
như của kết quả vào một thanh ghi đặc biệt gọi là thanh ghi trạng thái (status word).
Cấu trúc của thanh ghi trạng thái:
2
15
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2

0
BR CC1 CC0 OV OS OR STA RLO /FC
 Bit /FC (first check)
Bit 0 của thanh ghi trạng thái được gọi là bit kiểm tra đầu tiên (/FC). Mỗi lệnh
kiểm tra trạng thái tín hiệu của /FC cũng như trạng thái tín hiệu của tốn hạng. Nếu bit
/FC =0, lệnh cất kết quả kiểm tra trạng thái tín hiệu vào bit RLO và đặt bit /FC lên 1.
Quá trình này được gọi là kiểm tra đầu tiên (first check) hay quét lần thứ nhất (first
scan).
Nếu bit /FC =1 thì lệnh kết hợp kết quả dò mức của tốn hạng hiện tại với RLO
trước đó để tạo ra RLO mới.
Chuỗi lệnh logic luôn luôn kết thúc bằng lệnh xuất (S,R hay =), lệnh nhảy liên
hệ với RLO, hoặc một trong các lệnh lồng như A(, O(, X(, AN(, XN(; các lệnh này
reset bit /FC về 0.
 RLO (Result of Logic Operation): kết quả của phép tốn logic.
Bit 1 của STW được gọi là RLO, bit này chứa kết quả của lệnh logic trên bit
hoặc so sánh số học.
Ta có thể đặt RLO không điều kiện lên 1 bằng lệnh SET và xóa RLO không
điều kiện về 0 bằng lệnh CLR. Bit RLO cũng có liên quan đến các lệnh nhảy có điều
kiện.

Hình1.1: hiệu ứng của trạng thái tín hiệu bit /FC trên các lệnh logic.
 Bit STA (status)
Bit STA chứa giá trị của bit mà ta đang tham chiếu. Trạng thái của lệnh bit mà
truy cập đọc bộ nhớ (A, AN, O, ON, X, XN) luôn luôn bằng giá trị của bit mà lệnh
này kiểm tra (dò mức). Trạng thái của lệnh bit ghi vào bộ nhớ (S, R, =) bằng giá trị
của bit mà lệnh ghi vào; nếu không có xảy ra ghi thì nó bằng giá trị của bit nó tham
chiếu. Bit STA không có ý nghĩa với các lệnh bit mà không truy cập bộ nhớ, các lệnh
như vậy đặt bit STA lên 1. Bit này không bị kiểm tra bởi lệnh, nó chỉ được diễn dịch
khi thử chương trình.
 Bit OR

Bit cần có khi sử dụng lệnh O để thực hiện AND-trước -OR. Hàm AND chứa
các lệnh sau: A, AN, A(, AN(, ) và NOT. Bit OR cho thấy các lệnh mà hàm AND
được thực thi trước đó đã cho giá trị 1. Bất cứ lệnh xử lý bit khác reset bit OR.
 Bit OV (Overflow)
Bit OV có chức năng báo lỗi. Nó được đặt lên 1 bằng lệnh tốn học hay lệnh so
sánh dấu chấm động sau khi lỗi xảy ra (tràn, phép tốn không hợp lệ, số dấu chấm
động không hợp lệ). Bit này được đặt theo kết quả của lệnh tốn học kế hay lệnh so
sánh kế.
 Bit OS (stored overflow bit)
Bit OS được đặt cùng với bit OV khi có lỗi xảy ra. Bởi vì bit OS vẫn giữ là 1
sau khi đã khử lỗi, nó chứa trạng thái bit OV và cho thấy có lỗi hay không có lỗi xảy
ra ở một trong các lệnh được thực thi trước đó. Các lệnh sau reset bit OS: JOS (jump
after stored overflow), các lệnh gọi khối, và các lệnh kết thúc khối.
 Mã điều kiện CC1 và CC0
CC1 CC0 Giải thích
0 0 Kết quả =0
0 1 Kết quả <0
1 0 Kết quả >0
Bảng 1.2: CC1 và CC0 sau lệnh tốn học, không có tràn.
CC1 CC0 Giải thích
0 0 Tràn dãi trị âm trong +I và +D
0 1 Tràn dãi trị âm trong *I và *D
Tràn dãi trị dương trong +I, -I, +D, -D, NEGI và NEGD
1 0 Tràn dãi trị dương trong *I, *D, /I và /D
Tràn dãi trị âm trong +I, -I, +D, -D
1 1 Chia cho 0 trong /I, /D, và MOD
Bảng 1.3: CC1 và CC0 sau lệnh tốn học số nguyên, có tràn.
CC1 CC0 Giải thích
0 0 Tràn dưới
0 1 Tràn dãi trị âm

1 0 Tràn dãi trị dương
1 1 Số dấu chấm động không hợp lệ
Bảng 1.4: CC1 và CC0 sau các lệnh tốn học dấu chấm động, có tràn.
CC1 CC0 Giải thích
0 0 ACCU 2 =ACCU 1
0 1 ACCU 2 <ACCU 1
1 0 ACCU 2 >ACCU 1
1 1 ACCU 1 hay ACCU 2 là số dấu chấm động không hợp lệ
Bảng 1.5: CC1 và CC0 sau các lệnh so sánh.
CC1 CC0 Giải thích
0 0 Bit vừa dịch ra là 0
1 0 Bit vừa dịch ra là 1
Bảng 1.6: CC1 và CC0 sau các lệnh dịch và xoay.
CC1 CC0 Giải thích
0 0 Kết quả = 0
1 0 Kết quả <>0
Bảng 1.7: CC1 và CC0 sau các lệnh logic trên word.
 Bit BR (Binary Result)
Bit BR tạo liên kết giữa xử lý các bit và các word. Đây là phương tiện hữu
hiệu để diễn dịch kết quả của phép tốn trên word như kết quả nhị phân và đưa kết quả
này vào chuỗi logic nhị phân. Với cách nhìn này, bit BR biễu diễn bit bộ nhớ bên
trong máy mà RLO cất vào trước khi một phép tốn word làm thay đổi RLO, để cho
RLO khả dụng lần nữa sau khi phép tốn tiếp tục chuỗi logic bit bị ngắt.
Bit BR tương ứng với ngõ ra cho phép (ENO = enable output) của hộp LAD.
Ta nên sử dụng lệnh SAVE để cất RLO vào bit BR theo các tiêu chuẩn sau:
• Cất bit RLO =1 vào bit BR cho trường hợp mà FB hay FC được thực thi
không có lỗi.
• Cất bit RLO =0 vào bit BR cho trường hợp mà FB hay FC được thực thi
có lỗi.
Ta nên lập trình các lệnh này ở cuối FB hay FC để chúng là các lệnh cuối cùng

được thực thi trong khối.
II. CÁC LỆNH VÀ PHÉP TỐN.
1. Lệnh nạp chuyển.
Các lệnh này dùng để trao đổi thông tin bằng byte, word hay double word giữa
các module nhập và xuất, PII và PIQ, bộ định thời, bộ đếm và cờ, các khối dữ liệu
(DB).
Dữ liệu thường không được trao đổi trực tiếp mà luôn luôn thông qua thanh
ghi tích lũy ACCU. Nó là thanh ghi trong bộ xử lý và được dùng như bộ đệm (buffer).
Dòng đi thông tin như sau:
• Nạp (LOAD) từ bộ nhớ nguồn vào ACCU.
• Chuyển (TRANSFER) từ ACCU đến bộ nhớ đích.
Trong PLC có 2 thanh ghi: ACCU1 và ACCU2, mỗi thanh ghi có chiều dài 2
word.
Chú ý :
 Load và Transfer trực tiếp không qua PII và PIQ:
L PIB
T PQW
Với P là viết tắt của Peripheral (ngoại vi).
 Các lệnh Load và Transfer trực tiếp chỉ có thể lập trình bằng dạng STL
(ngoại trừ các tốn hạng của Timer, Counter và các lệnh so sánh).
2. Các lệnh tác động vào RLO và ô nhớ.
• SET: lệnh ghi logic 1 vào RLO.
• CLR: lệnh ghi logic 0 vào RLO.
• NOT: lệnh đảo giá trị của RLO.
• S: lệnh gán có điều kiện giá trị logic 1 vào ô nhớ.
• R: lệnh gán có điều kiện giá trị logic 0 vào ô nhớ.
• FP <tốn hạng> : lệnh phát hiện sườn lên.
Tốn hạng là địa chỉ bit I, Q, M, L, D và được sử dụng như một biến cờ để ghi
nhận lại giá trị của RLO tại vị trí này trong chương trình, nhưng của vòng quét trước.
Tại mỗi vòng quét lệnh sẽ kiểm tra: nếu tốn hạng có giá trị 0 và RLO có giá trị 1 thì sẽ

ghi 1 vào RLO, các trường hợp khác thì ghi 0, đồng thời chuyển nội dung của RLO
vào lại biến cờ. Như vậy RLO sẽ có giá trị 1 trong một vòng quét khi có sườn lên
trong RLO.
• FN <tốn hạng> : lệnh phát hiện sườn xuống.
Tốn hạng là địa chỉ bit I, Q, M, L, D và được sử dụng như một biến cờ để ghi
nhận lại giá trị của RLO tại vị trí này trong chương trình, nhưng của vòng quét trước.
Tại mỗi vòng quét lệnh sẽ kiểm tra: nếu tốn hạng có giá trị 1 và RLO có giá trị 0 thì sẽ
ghi 1 vào RLO, các trường hợp khác thì ghi 0, đồng thời chuyển nội dung của RLO
vào lại biến cờ. Như vậy RLO sẽ có giá trị 1 trong một vòng quét khi có sườn lên
trong RLO.
• SAVE : lệnh chuyển giá trị của RLO vào BR.
• Và một số phép tính cơ bản.
3. Các lệnh tác động vào 2 thanh ghi ACCU1 và ACCU2.
a. Nhóm lệnh đảo vị trí bytes:
• POP : lệnh chuyển nội dung của ACCU2 vào ACCU1.
• PUSH : lệnh chuyển nội dung của ACCU1 vào ACCU2.
• TAK : lệnh đảo nội dung của 2 thanh ghi ACCU1 và ACCU2.
• CAW : lệnh đảo nội dung 2 bytes của từ thấp trong ACCU1.
• CAD : lệnh đảo nội dung các bytes trong ACCU1.
• INVI : lệnh đảo giá trị các bits trong từ thấp của ACCU1
• INVD : lệnh đảo giá trị các bits của ACCU1.
b. Nhóm lệnh tăng giảm :
• INC <tốn hạng> : lệnh tăng nội dung thanh ghi ACCU1.
Tốn hạng là số nguyên 8 bits. Lệnh thực hiện phép cộng giữa byte thấp của từ
thấp trong ACCU1 với tốn hạng. Kết quả được ghi lại vào byte thấp của từ thấp của
ACCU1.
• DEC <tốn hạng> : lệnh giảm nội dung thanh ghi ACCU1.
Tốn hạng là số nguyên 8 bits. Lệnh thực hiện phép trừ byte thấp của từ thấp
trong ACCU1 cho tốn hạng. Kết quả được ghi lại vào byte thấp của từ thấp của
ACCU1.

c. Nhóm lệnh dịch chuyển:
• RLD [n] : lệnh xoay tròn các bits của ACCU1 theo chiều trái.
• RRD [n]: lệnh xoay tròn các bits của ACCU1 theo chiều phải.
Lệnh có thể có hoặc không có tốn hạng. Nếu tốn hạng bằng 0 thì lệnh tương
đương với lệnh NOP.
• RLDA : lệnh xoay tròn ACCU1 theo chiều trái 1 bit.
• RRDA : lệnh xoay tròn ACCU1 theo chiều phải 1 bit.
Bảng 1.8: tóm tắt các lệnh xoay bit.

Hình 1.2: xoay ACCU1 qua trái 3 bit.
Thí dụ: xoay phải word kép.
L +3
L MD10
RRD
T MD20

Hình 1.3: xoay ACCU1 phải 3 bit.
Hình 1.4: xoay trái 1 bit qua CC1.
• SLW [<tốn hạng>]: dịch trái các bits trong từ thấp của ACCU1.
Bit 0 được ghi 0, bit 15 đẩy vào CC1.
• SLD [<tốn hạng>]: dịch trái các bits của ACCU1. Bit 0 được ghi
0, bit 31 đẩy vào CC1.
• SRW [<tốn hạng>]: dịch phải các bits trong từ thấp của ACCU1.
Bit 0 được ghi 0, bit 15 đẩy vào CC1.
• SRD [<tốn hạng>]: dịch phải các bits của ACCU1. Bit 0 được ghi
0, bit 31 đẩy vào CC1.
• SSI [<tốn hạng>]: dịch phải các bits trong từ thấp của ACCU1.
Bit 0 đẩy vào CC1, bit 15 ghi lại giá trị cũ.
• SSD [<tốn hạng>]: dịch phải các bits của ACCU1. Bit 0 đẩy vào
CC1, bit 31 ghi lại giá trị cũ.

×