Thiết Kế Hệ SCADA Dùng WinCC
Trang 1TRƯỜ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
GVHD : Thầy PHAN NGUYỄN PHỤC
QUỐC.
SVTH : TRẦN THỊ AN.
MSSV : 49700018.
Niên Khóa 1997-2002.
Trang 2Lờ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áytí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ểmtra 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õihay đ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ệnviệ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.
Trang 3PHẦ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
Trang 46 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
Trang 5a 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
Trang 6PHẦN 3: ỨNG DỤNG HỆ SCADA VÀO HỆ THỐNG PHA
Chương 1: Hệ thống Scada 104
I Giới thiệu hệ Scada 104 II 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
I Giới thiệu về hệ thống pha trộn 110
1 Giới thiệu tổng quát 110
2 Hoạt động của hệ thống 110
II Tạo các giao diện kết nối bằng WinCC 114
1 Các tags và nhóm tag đã tạo trong chương trình 114
2 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
III Lập trình cho hệ thống bằng Simatic S7-300 125
1 Đặc tính thiết bị 125
a Cấu hình 125
b Cáp kết nối MPI 126
2 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 Hướng phát triển đề tài 128
PHẦN 1
PLC S7-300
Trang 7Chương 1 : Giới Thiệu
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áytính Tồn bộ chương trình điều khiển được lưu trong bộ nhớ của PLC dưới dạngcá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)
Trang 8Trong 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 đổilạ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 đầunố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ậptrì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 dungcủa bộ nhớ bộ điều khiển, nghĩa là bộ nhớ chương trình, cịn phần nối dâybên ngồi thì khơng bị ảnh hưởng Đây chính là một trong các điểm thuậnlợ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 theotừ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ốiOB40, OB80, , chương trình của các khối đĩ sẽ được thực hiện trong vịng quétkhi 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ủatấ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
Trang 9Trong 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 PIInà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 chomộ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ủakhố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ỗichứ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õ ragiả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ơnnhiều truy cập trực tiếp vào các modules xuất/ nhập
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 đốitượ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/rakhá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 íttù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 đốitượ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áccổ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
Trang 10Nhữ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 nhauthà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 nhaubằ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.
Trang 11 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ùngnhớ I Thông thường chương trình ứng dụng không đọc trựctiếp trạng thái logic của cổng vào số mà chỉ lấy dữ liệu củacổ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ểngiá trị logic của bộ đệm Q tới các cổng ra số Thông thườngchươ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 moduletương tự sẽ được module đọc và chuyển tự động theo nhữngđịa chỉ
Trang 12 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ùngnhớ 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 chonhữ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.7Tầm địa chỉ tối đa cho byte: 0 đến 65535Tầm địa chỉ tối đa cho word: 0 đến 65534Tầ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.7Tầm địa chỉ tối đa cho byte : 0 đến 255Tầm địa chỉ tối đa cho word: 0 đến 254Tầm địa chỉ tối đa cho double word: 0 đến 252
Trang 13b 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ớitừ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ểnnhiề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ươngtrình khác Các dữ liệu này phải được tổ chức thành khối dữ liệuriê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ởikhố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ọikhối, chuyển khối Từng nhiệm vụ điều khiển con có thể được chia thành nhữngnhiệ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ốichươ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 wordmemory
Cấp phát cho khối con một phần bộ nhớ trong word memory để làmlocal block Cấu trúc local block được quy định khi soạn thảo cáckhối
Truyền các tham trị từ khối mẹ cho biến hình thức IN, IN-OUT củalocal block
Sau khi khối con thực hiện xong nhiệm vụ và ghi kết quả dưới dạngtham 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ùnglocal block ra khỏi word memory
OB1
Trang 14Số 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)
(instance)
Trang 16 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
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ớinhau bằng dấu chấm
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 giancũ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 (statusword) Cấu trúc của thanh ghi trạng thái:
215 .29 28 27 26 25 24 23 22 21 20
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ỗilệ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à đặtbit /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ầnthứ nhất (first scan)
Trang 17Nế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ớiRLO 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ảyliê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ệnhnà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ênbit 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 RLOkhông điều kiện về 0 bằng lệnh CLR Bit RLO cũng có liên quan đến các lệnhnhả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ằnggiá 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 ANDchứa các lệnh sau: A, AN, A(, AN(, ) và NOT Bit OR cho thấy các lệnh mà hàm
Trang 18AND được thực thi trước đó đã cho giá trị 1 Bất cứ lệnh xử lý bit khác reset bitOR.
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ấuchấ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ế haylệ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ỗixả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
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
Trang 19Bả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ữuhiệ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ếtquả 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ộpLAD 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ựcthi 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ựcthi 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ốicù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 wordgiữ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)
Trang 20Dữ liệu thường không được trao đổi trực tiếp mà luôn luôn thông qua thanhghi 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
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ạngSTL (ngoại trừ các tốn hạng của Timer, Counter và các lệnh sosá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éttrướ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ộidung 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étkhi 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éttrướ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ộidung 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étkhi 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.
Trang 21a 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ấpcủ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ấptrong ACCU1 cho tốn hạng Kết quả được ghi lại vào byte thấp của từ thấp củaACCU1
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.
Trang 22
Hình 1.2: xoay ACCU1 qua trái 3 bit.
Thí dụ: xoay phải word kép.
L +3
L MD10RRD
T MD20
Hình 1.3: xoay ACCU1 phải 3 bit.
Trang 23Hì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ũ
d Nhóm lệnh chuyển đổi số BCD và số nguyên:
Bảng sau tóm tắt các lệnh chuyển đổi BCD và số nguyên (dạng STL):
Trang 24Bảng 1.9: chuyển đổi số BCD và số nguyên.
e Nhóm lệnh chuyển đổi số dấu chấm động 32 bits sang số nguyên 32 bits:
Ta có thể sử dụng bất kỳ một trong các lệnh sau để chuyển đổi số dấu chấmđộng IEEE 32 bits trong thanh ghi ACCU1 thành số nguyên kép (các lệnh khácnhau về cách làm tròn) và kết quả được cất ở ACCU1
Lệnh Ý nghĩa Chức năng
RND Làm tròn Làm tròn số được chuyển đổi đến số nguyên
gần nhất Nếu phần phân số ở giữa kết quả chẵn
và lẻ thì sẽ chọn kết quả chẵnRND+ Làm tròn thành số
nguyên kép lớn hơn Làm tròn thành số nguyên nhỏ nhất mà lớn hơnhay bằng số chấm độngRND- Làm tròn thành số
nguyên kép nhỏ hơn Làm tròn thành số nguyên lớn nhất mà nhỏ hơnhay bằng số chấm độngTRUNC Bỏ phần lẻ Chỉ lấy phần nguyên của số chấm động
Bảng 1.10: chuyển đổi số dấu chấm động 32 bits sang số ngưyên 32 bits.
Hình 1.5: tóm tắt các lệnh chuyển đổi và làm tròn.
f Nhóm lệnh so sánh:
Dùng để so sánh các cặp giá trị số sau:
Hai số nguyên 16 bits
Hai số nguyên kép (32 bits)
Hai số thực (dấu chấm động IEEE 32 bits)
CPU sẽ so sánh giá trị số ở ACCU1, nếu kết quả đúng nó sẽ trả về RLO=1,nếu sai thì RLO=0
Với số nguyên 16 bits thì nó dựa trên so sánh word thấp của ACCU2 vớiword thấp của ACCU1
Dạng lệnh so sánh như sau:
op datatype
với op (operator = tốn tử) có thể là:
Trang 25datatype cĩ thể là I (số nguyên 16 bits), D (số nguyên kép 32 bits), R (số thực).
Aûnh hưởng của việc thực thi lệnh so sánh lên mã điều kiện CC1 và CC0
Điều kiện so sánh CC1 CC0 Các lệnh nhảy cĩ điều kiện
Với số nguyên 16 bits: cĩ các lệnh thực hiện cộng (+I), trừ (-I),
nhân (*I), chia (/I) Lấy word thấp của ACCU2 +,-,*,/ với wordthấp của ACCU1, kết quả lại vào word thấp của ACCU1
Với số nguyên kép 32 bits: cĩ các lệnh thực hiện cộng (+D), trừ
(-D), nhân (*D), chia (/D) Lấy ACCU2 +,-,*,/ với ACCU1, kếtquả lại vào ACCU1
Với số thực: cĩ các lệnh thực hiện cộng (+R), trừ (-R), nhân
(*R), chia (/R) Lấy ACCU2 +,-,*,/ với ACCU1, kết quả lại vàoACCU1
Các lệnh tốn học mở rộng trên số thực:
Tất cả các lệnh sau đều thực hiện phép tốn với đối số vào ở ACCU1 và kếtquả cất ở ACCU1
ABS: lấy trị tuyệt đối.
SQRT: tính căn bậc hai (square root) x1/2
Trang 26 ASIN: tính arcsin(x)
ACOS: tính arccos(x)
ATAN: tính atctg(x)
4 Các lệnh điều khiển logic và điều khiển chương trình.
a Các lệnh điều khiển logic:
Ta có thể sử dụng các lệnh jump (bắt đầu bằng J) và loop để điều khiển rẽnhánh trong một khối chương trình Địa chỉ cho lệnh jump và loop là nhãn nhảyđến trong chương trình (label)
Có các lệnh điều khiển logic sau:
Lệnh nhảy không điều kiện: JU, JL
Lệnh nhảy có điều kiện theo RLO: JC, JCN, JCB, JNB
Lệnh nhảy có điều kiện theo BR hoặc OV/OS: JBI, JNBI, JO,JOS
Lệnh nhảy theo mã điều kiện CC0, CC1: JZ,JN, JP, JM, JMZ,JPZ, JUO
Lệnh điều khiển lặp vòng: LOOP
Nhãn nhảy đến trong khối chương trình để đánh dấu nên chuyển điều khiểnlogic tới (nơi rẽ nhánh đến) Nó có chiều dài tối đa là 4 ký tự, và ký tự đầu phải làchữ, sau nó phải có dấu hai chấm
Các lệnh nhảy không điều kiện:
Lệnh nhảy không điều kiện JU: lệnh này ngắt luồng điều
khiển bình thường và nhảy đến nhãn được chỉ sau JU Lệnhnày được thực hiện bất chấp điều kiện nào
Lệnh nhảy theo danh sách JL: (giống lệnh case hay switch
trong các ngôn ngữ lập trình khác).
Các lệnh nhảy có điều kiện dựa vào RLO:
JC nhãn: nhảy đến nhãn nếu RLO=1 còn ngược lại thì thực
hiện lệnh kế
JCN nhãn: nhảy đến nhãn nếu RLO=0 còn ngược lại thì
thực hiện lệnh kế
JCB nhãn: nếu RLO=1 thì gán trị RLO vào BR và nhảy đến
nhãn, còn ngược lại thì thực hiện lệnh kế
JNB nhãn: nếu RLO=0 thì gán trị RLO vào BR và nhảy đến
nhãn, còn ngược lại thì thực hiện lệnh kế
Các lệnh nhảy có điều kiện dựa theo BR hay OV/ OS:
Theo điều kiện của BR:
JBI nhãn: nếu BR=1 thì nhảy đến nhãn, còn ngược lại thì
thực hiện lệnh kế
Trang 27 JNBI nhãn: nếu BR=0 thì nhảy đến nhãn, còn ngược lại thì
thực hiện lệnh kế
Chú ý: các lệnh JBI và JNBI reset các bit OR và FC trong
STW về 0 và set bit STA lên 1
Theo điều kiện OV:
JO nhãn: nếu OV=1 thì nhảy đến nhãn, còn ngược lại thì
thực hiện lệnh kế
Theo điều kiện OS:
JOS nhãn: nếu OV=1 thì nhảy đến nhãn, còn ngược lại thì
thực hiện lệnh kế
Lệnh này reset bit OS về 0
Các lệnh nhảy có điều kiện dựa theo CC1 và CC0:
Dạng lệnh: J<điều-kiện> nhãn
Với các điều-kiện là :
Z (zero): nếu kết quả là 0 thì nhảy đến nhãn, còn ngược lại
thì thực hiện lệnh kế
N (not zero): nếu kết quả là khác 0 thì nhảy đến nhãn, còn
ngược lại thì thực hiện lệnh kế
P (positive): nếu kết quả >0 thì nhảy đến nhãn, còn ngược lại
thì thực hiện lệnh kế
M (minus = negative): nếu kết quả <0 thì nhảy đến nhãn, còn
ngược lại thì thực hiện lệnh kế
MZ (minus hay zero): nếu kết quả là 0 hay <0 thì nhảy đến
nhãn, còn ngược lại thì thực hiện lệnh kế
PZ (positive hay zero): nếu kết quả là 0 hay >0 thì nhảy đến
nhãn, còn ngược lại thì thực hiện lệnh kế
UO (unordered): nếu 1 trong các số của phép tốn dấu chấm
động không phải là số chấm động hợp lệ thì nhảy đến nhãn,còn ngược lại thì thực hiện lệnh kế
b Các lệnh điều khiển chương trình:
Ta có thể sử dụng các lệnh sau để điều khiển chương trình
Lệnh gọi CALL dùng để gọi FC, FB, SFC hay SFB mà bất chấpRLO hay bất cứ điều kiện nào khác
Lệnh gọi có điều kiện (CC) và không điều kiện (UC) dùng để gọicác FC không có tham số
Trang 28 Lệnh gọi không điều kiện (UC) dùng để gọi SFC không có thamsố.
Rờ-le điều khiển chính MCR (Master Control Relay)
Các lệnh kết thúc khối không điều kiện (BEU) và kết thúc khối
có điều kiện (BEC)
Gán tham số khi gọi hàm và khối hàm
Tham số hình thức (formal parameter): là tham số mà tên và kiểu dữ liệu
của nó được gán và khai báo khi tạo khối Sau đó khi viết chương trình thì STEP7
tự động liệt kê tất cả các tham số hình thức
Khi đó ta phải gán các tham số thật (actual parameter) cho các tham số
hình thức Tham số thật là tham số là hàm và khối hàm sử dụng trong lúc chạychương trình Tham số thật phải có cùng kiểu dữ liệu với tham số hình thức tươngứng gán cho nó
Gọi hàm và khối hàm bằng CALL:
Ta có thể sử dụng lệnh CALL để gọi các hàm (FC) và khối hàm (FB), lệnhnày gọi FC hay FB do ta chỉ ra và được thực thi bất chấp RLO hay bất kỳ điều kiệnnào khác
Khi ta gọi khối hàm FB thì ta phải cung cấp khối dữ liệu instance cục bộ.Khối dữ liệu instance chứa tất cả các biến tĩnh và các tham số thật của khối hàm
Khi ta gọi khối hàm thì lệnh CALL chép lại một trong các mục sau vàokhối dữ liệu instance của khối hàm, phụ thuộc vào kiểu dữ liệu của tham số thật vàvào khai báo của tham số hình thức (IN, OUT, IN-OUT):
Giá trị của tham số thật
Pointer chỉ đến địa chỉ của tham số thật
Pointer chỉ đến “L stack” của khối gọi mà ở đó giá trị của tham
số thật đã được đệm
Gọi FB với DB instance và các tham số khối:
Việc gọi có thể xảy ra một khi các chi tiết sau đã được đưa vào lúc CALL:
Tên của khối hàm
Tên của khối dữ liệu instance và
Các tham số
Lệnh gọi sử dụng địa chỉ tuyệt đối hoặc địa chỉ ký hiệu
Gọi tuyệt đối: CALL FBx, Dby (các tham số truyền);
Gọi bằng ký hiệu: CALL fbname, datablockname (pass parameters);
Với fbname= tên ký hiệu của khối
datablockname= tên ký hiệu của khối dữ liệu
Gọi hàm và khối hàm bằng CC và UC:
Dạng lệnh: CC addr (conditional call: gọi khi RLO=1)
UC addr (unconditional call: gọi bất chấp RLO)
Chú ý: không được sử dụng DB “instance” với CC và UC.
Trang 29Addr cĩ thể là địa chỉ trực tiếp hay là địa chỉ gián tiếp bộ nhớ (memoryindirect address).
Làm việc với chức năng MCR:
MCR dùng để tạo hay ngắt luồng năng lượng (đường dẫn điện) Các lệnhsau bị ảnh hưởng bởi MCR là: lệnh gán (=), lệnh SET và RESET bit (S, R) và lệnhchuyển dữ liệu T (dùng byte, word, double word) Sự phụ thuộc của chúng theoMCR được cho theo bảng 1.12
MCR( : cất RLO vào ngăn xếp MCR, bắt đầu vùng MCR
)MCR : lấy lại RLO, kết thúc vùng MCR
Chú ý: khơng bao giờ sử dụng lệnh MCR cho thiết bị an tồn hay cấp cứu!
Aûnh hưởng của MCRA và MCRD
Trong vùng MCR nếu gọi 1 hàm thì hàm đĩ khơng bị ảnh hưởng của vùngMCR, muốn hàm cĩ vùng MCR thì ta phải tạo thêm Hình 1.6 cho thấy ảnh hưởngcủa vùng MCR
Cài đặt MCR
Các lệnh sau bật hay tắt chức năng MCR:
Cất RLO trong ngăn xếp MCR, bắt đầu MCR: MCR(
Lấy lại RLO< kết thúc MCR: )MCRNhư vậy, ta phải luơn luơn cĩ cặp MCR( và )MCR; hệ thống cho phép lồngcác cặp MCR( và )MCR và tối đa là 8
Trang 30BE Kết thúc khối (block end).
Khối hiện hành được kết thúc bất chấp RLO
Quét chương trình được tiếp tục ở lệnh ngay sau lệnh gọi khối
BE luôn luôn là phát biểu cuối cùng trong khối
BEU Kết thúc khối không điều kiện (unconditional)
Khối hiện hành được kết thúc bất chấp RLO
Quét chương trình được tiếp tục ở lệnh ngay sau lệnh gọi khối.BEC Kết thúc khối có điều kiện conditional)
Khi RLO=1 thì khối hiện hành được kết thúc và quét chươngtrình được tiếp tục ở lệnh ngay sau lệnh gọi khối
Trang 31Khi RLO=0 thì không thực hiện kết thúc khối và cho RLO=1 sau
Timer tạo nên một chức năng phức tạp với các ngõ vào và ngõ ra sau:
Ngõ vào Start: timer được bắt đầu với sự thay đổi tín hiệu từ
“0” lên “1” (RLO) ở ngõ vào Start của nó Thời gian và hoạtđộng của timer phải được lập trình ngay sau hoạt động quét điềukiện bắt đầu
Ngõ vào Reset: tín hiệu ở ngõ vào Reset (RLO=”1”) làm dừng
timer Thời gian hiện hành được đặt về 0 và ngõ ra Q của timer
bị xóa về “0”
Các ngõ ra số: giá trị thời gian thật sự có thể đọc được từ hai
ngõ ra số BI (số nhị phân) và BCD (số thập phân)
Ngõ ra nhị phân: trạng thái tín hiệu của ngõ ra nhị phân Q của
timer phụ thuộc vào chức năng timer được lập trình
Thời gian trễ được khai báo với timer bằng một giá trị 16 bits gồm 2 thànhphần:
Độ phân giải với đơn vị là ms
Một số nguyên (BCD) trong khoảng 0 đến 999, gọi là PV.Vậy, thời gian trễ =độ phân giải* PV
Trang 32Một số lệnh dành cho timer
FR Tx : lệnh cho phép timer.
R Tx : chủ động xóa timer.
L Tx : lấy giá trị timer dạng nhị phân.
L Tx : lấy giá trị timer dạng BCD.
Với x từ 0 đến 255
Hình 1.7: các lệnh cho phép sử dụng timer word như øđịa chỉ.
b Các ví dụ bằng giản đồ cho từng loại timer:
Timer SD (On delay timer): trễ theo sườn lên không nhớ.
Hình 1.8: giản đồ xung cho timer SD.
Trang 33 Timer SS ( Retentive on delay timer): trễ theo sườn lên có nhớ.
Hình1.9: giản đồ xung cho timer SS.
Timer SP (Pulse timer): timer tạo xung không có nhớ.
Hình 1.10: giản đồ xung cho timer SP.
Timer SE (Extended pulse timer): timer tạo xung có nhớ.
Trang 34
Hình 1.11: giản đồ xung cho timer SE.
Timer SF (Off delay): timer trễ theo sườn xuống.
Trang 35Hình 1.13: nạp giá trị counter vào ACCU1 dùng lệnh L.
Hình 1.14: nạp giá trị counter vào ACCU1 dùng lệnh LC.
b Ví dụ minh họa:
Trang 36Hình 1.15: ví dụ về các lệnh Counter.
Chương 3: Thực Thi Chương Trình
I HOẠT ĐỘNG CỦA CPU.
“L stack” (thay vì vào DB hay bộ nhớ bit) Dữ liệu này chỉ hợp lệ khi khối đó đangtích cực; khi một khối mới được gọi thì “L stack” được cấp phát lại
Trang 37
Hình 1.16: các vùng nhớ trong các CPU của PLC S7-300.
Ngồi ra, CPU còn sử dụng các thành phần sau để xử lý chương trình:
Hai thanh ghi tích lũy 32 bits (ACCU1 và ACCU2) dùng để làm cáctốn hạng trong các lệnh nạp, chuyển, số học và dịch
Hai thanh ghi địa chỉ 32 bits (AR1 và AR2) được dùng làm pointer
để định địa chỉ gián tiếp thanh ghi
Hai thanh ghi khối dữ liệu 32 bits (DB và DI) chứa địa chỉ của DBđang được mở (tích cực) Mỗi lần ta có thể mở 2 DB: một làm khối
dữ liệu DB và một làm khối dữ liệu DI
Từ trạng thái 16 bits (STW) chứa trạng thái của các lệnh khi thực thitrong chương trình như RLO,OV (overflow), OS (overflow stored),CC1 và CC0 (CC=condition code) và BR (binary result)
2 Cất chương trình vào CPU.
Các phần tử của chương trình:
Chương trình gồm các phần tử sau:
Các khối logic: chứa các lệnh, ký hiệu và chú thích
Các khối dữ liệu: chứa dữ liệu, ký hiệu và chú thích
STEP7 lưu trữ các phần tử này trong các đối tượng khác nhau trong cấutrúc file trên đĩa cứng của thiết bị lập trình
Tải xuống (download) các thành phần chương trình:
Khi ta download chương trình, chỉ có các lệnh, dữ liệu và thông tin cần đểquản lý và để biên dịch lại được chép vào vùng nhớ nạp trong CPU (xem hình1.16)
Trang 38CPU chép chương trình (lệnh và dữ liệu) từ bộ nhớ nạp vào bộ nhớ làmviệc Việc này được thực hiện khi ta tải chương trình xuống CPU và (trong trườnghợp mà chương trình của ta được cất vào EEPROM của bộ nhớ nạp) sau khi reset
bộ nhớ (MRES) Các phần tử của chương trình mà không cần để chạy chươngtrình vẫn giữ ở trong bộ nhớ nạp; các DB được tạo bởi chương trình (bằng cáchdùng SFC) được cất vào chỉ ở bộ nhớ làm việc Từ bộ nhớ làm việc, chương trìnhcủa ta truy cập các vùng nhớ khác
3 Định nghĩa các vùng nhớ “giữ” (retentive).
Khi mất nguồn điện hoặc reset bộ nhớ (MRES), bộ nhớ CPU (bộ nhớ nạp,
bộ nhớ làm việc và bộ nhớ hệ thống động), tất cả dữ liệu cất trong vùng này bịmất Các CPU S7 cho phép sử dụng các cách sau để giữ chương trình và dữ liệucủa nó:
Ta có thể giữ chương trình bằng cách dùng EEPROM (dùng thẻ bộnhớ hoặc có sẵn trong CPU [tùy CPU])
Ta có thể giữ dữ liệu cụ thể trong vùng RAM không bốc hơi volatile)
(non- Ta có thể giữ tất cả các dữ liệu được cất trong bộ nhớ nạp, bộ nhớlàm việc và các phần của bộ nhớ hệ thống bằng cách sử dụng pinbackup
Hình 1.17: nạp chương trình vào bộ nhớ CPU.
a Sử dụng RAM không bốc hơi:
Trang 39CPU S7 cung cấp vùng RAM không bốc hơi (xem hình 1.18)
Hình 1.18: vùng nhớ không bốc hơi.
Nếu ta đã cất chương trình trong EEPROM cho bộ nhớ nạp, ta cũng có thểgiữ một số dữ liệu (khi mất nguồn hoặc khi CPU từ STOP sang RUN) bằng cáchđặt cấu hình lượng dữ liệu sau sẽ được cất trong vùng RAM không bốc hơi:
Thông tin được cất vào DB (chỉ hữu dụng nếu ta cũng đã cấtchương trình vào EEPROM của bộ nhớ nạp)
Các giá trị của timer và counter
Thông tin được cất ở bộ nhớ bit
b Đặt cấu hình dữ liệu cất trong RAM:
Ta chỉ ra các vùng nhớ giữ “retentive” khi ta đặt cấu hình CPU và I/O(dùng ứng dụng “S7 Configuration” trong phần mềm STEP7)
Bảng sau cho thấy lượng bộ nhớ mà có thể được đặt cấu hình trong vùngRAM không bốc hơi Ta không thể giữ nhiều hơn lượng dữ liệu cho CPU cụ thể
Vùng nhớ Số lượng Mặc nhiên Mô tả
Bộ nhớ bit 0 đến 256 16 Số byte của nhớ bit được giữ
Timer 0 đến 128 0 Số timer được giữ
Counter 0 đến 64 8 Số counter được giữ
Số DB 0 đến 127 1 Ta xác định số lượng vùng DB (mà có
thể một phần của DB) được giữ và cungcấp 3 word sau (byte) cho mỗi DB đượcgiữ:
Bảng 1.14: các vùng nhớ giữ (với CPU 314).
Trang 40c Sử dụng pin backup để giữ dữ liệu:
Với pin backup, bộ nhớ nạp và bộ nhớ làm việc được giữ khi bị mất nguồn
Nó cất các chương trình của ta (các OB, FB, FC và DB) Nếu ta đặt cấu hình bất
cứ timer nào, counter nào hoặc bộ nhớ bit trong RAM không bốc hơi thì thông tinnày cũng được giữ
4 Hoạt động của CPU.
a Chu kỳ quét (scan cycle):
Hình 1.19 cho thấy các giai đoạn của chu kỳ quét CPU S7:
CPU quét trạng thái của các module nhập và cập nhật vùng nhớđệm PII
Thực thi chương trình và thực hiện các tác vụ mà chương trìnhyêu cầu
Ghi các giá trị từ vùng đệm PIQ ra các module xuất
Sau khi ghi ra các ngõ xuất thì CPU tiếp tục lặp lại từ đầu và đọc các trạngthái của các module nhập
Hình 1.19: chu kỳ quét CPU.
b Các chế độ hoạt động (còn gọi là chế độ làm việc):
Các chế độ hoạt động mô tả thao tác của CPU S7 ở bất cứ thời điểm nào.Khi biết chế độ hoạt động thì hữu ích cho việc lập trình khởi động, gỡ rối