Bai giang S7 300 rất cơ bản, dễ hiểu
BÀI 2
LẬP TRÌNH VỚI S7-300 VÀ MÔ PHỎNG BẰNG PLCSIM
1. Cấu trúc của S7-300.
1.1. Cấu trúc chung
Nói chung một bộ PLC đều có cấu trúc chung như sau:
CPU
Bộ nhớ chương trình
Bộ đệm
vào/ra
Cổng
Cổngvào/ra
vào/ra
onboard
onboard
Cổng
Cổngngắt
ngắtvàvà
đếm
đếmtốc
tốcđộ
độcao
cao
Khối vi xử lý
Timer
trung tâm
+
Hệ điều hành
Counter
Bit cờ
Bus của PLC
Quản
Quảnlýlýghép
ghépnối
nối
1.2. Cấu trúc bộ nhớ
Bộ nhớ S7-300 được chia làm 3 vùng chính :
Vùng 1: Vùng chứa chương trình ứng dụng. Gồm 3 miền
OB (Organisation block) :Miền chương trình tổ chức.
FC (Function) : Miền chương trình con được tổ chức thành hàm có biến hình
thức để trao đổi dữ liệu với chương trình đã gọi nó .
FB (Function block) : Miền chương trình con, dược tổ chức thành hàm và có
khả năng trao đổi dữ liệu vớ bất cứ khối chương trình khác
và các dữ liệu này phải được xây dựng trong khối dữ liệu riêng DB ( Data block)
Vùng 2: Vùng chứa tham số của HDH và chương trình ứng dụng, được phân
chia thành 7 miền khác nhau, gồm có:
I (Process image input ): 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ẽ chuyển giá trị logic của bộ đệm Q tới các
cổng ra số.
Q (Process image output): Miền đệm các dữ liệu cổng ra số. Kết thúc chương
trình, PLC sẽ đọc giá trị logic của bộ đệm Q tới các cổng ra số.
M: Miền biến cờ. Chương trình lưu giữ các tham số cần thiết.
T: Miền nhớ phục vụ thời gian (Timer)
C: Miền nhớ phục vụ bộ đếm (Counter)
PI: Miền địa chỉ cổng vào các module tương tự (I/O External input)
PQ: Miền địa chỉ cổng ra cho các module tương tự(I/O External output)
Vùng 3: Vùng chứa các khối dữ liệu, chia thành 2 loại:
DB(data block): Miền chứa dữ liệu được tổ chức thành khối. Kích thước cũng
như số lượng do người sử dụng quy định.
L (local data block): Miền dữ liệu địa phương.
1.3. Các thanh ghi.
1.3.1. Thanh ghi trạng thái .
Khi thực hiện lệnh, CPU sẽ ghi nhận lại trạng thái trung gian cũng như kết quả
vào 1 thanh ghi đặc biệt 16 bits, được gọi là thanh ghi trạng thái, tuy nhiên ta chỉ sử
dụng 9 bits với cấu trúc như sau:
BR
CC1 CC0 OV OS
OR
STA RLO FC
FC(First check): Khi phải thực hiện các lệnh logic liên tiếp nhau gồm các phép
tính ^, v và nghịch đảo, bit FC có giá trị bằng 1.
RLO(Result of logic operation): Kết quả tức thời của phép tính logic vừa đươc
thực hiện.
STA(Status bit): luôn có giá trị logic của tiếp điểm được chỉ định trong lệnh.
OR: Ghi lại giá trị của phép logic ^ cuối cùng thực hiện phụ giúp cho việc thực
hiện phép toán v sau đó.
OS(Stored overflow bit): Bit ghi lại giá trị bit bị tràn ra ngoài mảng ô nhớ.
OV(Overflow bit): Bit báo kết quả phép tính bị tràn ra ngoài mảng ô nhớ.
CC0, CC1 (condition code): Hai bit báo trạng thái của kết quả phép tính với số
nguyên, số thực, phép dịch chuyển hoặc phép tính logic trong ACCU.
Cụ thể :
Khi thực hiện lệnh toán học như cộng, trừ, nhân ,chia với số nguyên hoặc
số thực.
CC1
0
0
1
CC0
0
1
0
Ý nghĩa
kết quả bằng 0
kết quả nhỏ hơn 0
kết quả lơn hơn 0
Khi thực hiện lệnh toán học với số nguyên nhưng kết quả bị tràn ô nhớ
CC1
CC0
0
0
0
1
1
0
1
1
Ý nghĩa
kết quả quá nhỏ khi thực
hiện lệnh cộng(I,D)
kết quả quá nhỏ khi thực
hiện nhân(I,D) hoặc quá
lớn khi thực hiện lệnh
cộng trừ(I,D)
kết quả quá lớn khi thực
hiện lệnh nhân, chia (I,D)
hoặc quá nhỏ khi thực
kết quả bị tràn do thực
hiện lệnh cộng, trừ
hiện lệnh chia cho 0
Khi thực hiện lệnh toán học với số thực nhưng kết quả bị tràn ô nhớ
CC1
0
0
1
1
CC0
0
1
0
0
Ý nghĩa
Kết quả có mũ e quá lớn
KQ có mantissa quá nhỏ
KQcó mantissa quá lớn
Phép tính sai quy chuẩn
Khi thực hiện lệnh dịch chuyển.
CC1
0
1
CC0
0
0
Ý nghĩa
GT bit bị đẩy ra bằng 0
GT bit bị đẩy ra bằng 1
Khi thực hiện lệnh logic trong ACCU.
CC1
0
1
CC0
0
0
Ý nghĩa
KQ bằng 0
KQ khác 0
-BR(Binary result bit): Bit trạng thái cho phép liên kết 2 loại ngôn ngữ STL và LAD
1.3.2. Thanh ghi ACCU.
Các CPU của S7-300 thường có hai thanh ghi Accumulator (ACCU) ký hiệu là
ACCU1 và ACCU2. Hai thanh ghi này có cùng kích thước 32 bits. Mọi phép tính toán
học trên số thực, số nguyên…đều được thực hiện trên 2 thanh ghi này.
Cấu trúc 2 thanh ghi này như sau:
31
24 23
16 15
87
0
ACCU1
Byte cao
Byte thấp
Byte cao
Byte thấp
31
ACCU2
24 23
Byte cao
Byte thấp
Từ cao
16 15
Byte cao
87
Byte thấp
Từ thấp
0
2. Các kiểu dữ liệu và các phép toán
2.1. Các kiểu dữ liệu.
TT
1
Kiểu dữ liệu
BOOL
2
BYTE
3
WORD
4
INT
5
DINT
6
REAL
7
S5T(S5TIME)
8
TOD
9
DATE
10
CHAR
Giá trị
Có giá trị logic 0,1
Gồm 8 bit, thường dùng dùng để biểu diễn một số
nguyên dương trong khoảng 255 hoặc mã ACSII của một
ký tự
VD: L B#16#07
// Nạp số nguyên 07 theo cơ số 16 độ dài 1 byte vào
thanh ghi ACCU1
Gồm 2 byte, biểu diễn một số nguyên dương trong
khoảng 0 đến 65535
VD: L 100
Dung lượng 2 byte, dùng dể biểu diễn một số nguyen
trong khoảng -32768 đến 32767
VD:
Gồm 4 byte, dùng để biểu diễn 1 số nguyên từ 2147483648 đến 2147483647
VD : L #100
Gồm 4 bytes, dùng để biểu diễn 1 số thực dấu phẩy động.
VD: L 100.0
Khoảng thòi gian, tính theo giờ/phút/giây/mili giây
VD : L S5T2h_1m_0s_5ms
Biểu diễn giá trị thời gian theo giờ/phut/giây
VD : L TOD#5:20:07
Biểu diễn giá trị thờ gian tính theo năm/tháng/ngày
VD : L DATE#2007-8-1
// Lệnh khai báo ngày 1 tháng 8 năm 2007
Biểu diễn 1 hoặc nhiều ký tự (nhiều nhất 4 ký tự)
VD : L ‘DKS’
2.2. Các phép toán.
Ở đây ta chỉ giới thiệu các phép toán hay được sử dụng trong ngôn ngữ LAD
2.2.1. Các phép toán logic
Logic tiếp điểm
Các lệnh logic với các bít trạng thái
2.2.2. Các phép toán số học
Phép toán với số nguyên
Phép toán với số thực
2.2.3.
Các
phép
toán chuyển đổi kiểu dữ liệu và so sánh.
Phép chuyển đổi kiểu dữ liệu
Các phép so sánh
3. Kỹ thuật lập trình
3.1. Vòng quét chương trình
PLC thực hiện chương trình theo chu trình lặp. Mỗi vòng lặp được gọi là vòng
quét. Mỗi vòng quét bắt đầu bằng giai đoạn chuyển dữ liệu từ các cổng vào số tới vùng
bộ đệm ảo I, tiếp theo là giai đoạn thực hiện chương trình. Trong từng vòng quét,
chương trình được thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB1.
Truyền thông và
kiểm tra nội bộ
Chuyển dữ liệu từ
cổng vào tới I
Vòng
quét
Chuyển dữ liệu từ Q
tới cổng ra
Thực hiện chương
trình
Thời gian vòng quét: Là thời gian cần thiết để PLC thực hiện 1 vòng quét.
Chú ý : Thời gian vòng quét không cố định. Nó tùy thuộc vào số lệnh trong chương
trình thực hiện, vào khối lương dữ liệu được truyền thông… trong vòng quét đó.
3.2. Phương pháp lập trình
3.2.1. Lập trình tuyến tính.
Kỹ thuật lập trình tuyến tính là phương pháp lập trình mà toàn bộ chương trình
ứng dụng sẽ chỉ nằm trong khối OB1, kỹ thuật này có ưu điểm là gọn, rất phù hợp với
những bài toán đơn giản, ít nhiệm vụ.
Do toàn bộ chương trình điều khiển chỉ nằm trong khối OB1 nên khối OB1 sẽ
chỉ gần như là được thường trực trong vùng nhớ Word memory, trừ trường hợp khi hệ
thống phải xử lý các tín hiệu báo ngắt. Ngoài khối OB1, trong vùng Word memory còn
có miền nhớ địa phương(local block) cấp phát cho OB1 và những khối BD được OB1 sử
dụng
Hệ
Hệ
điều
điều
hành
hành
Chuyển OB1 từ
load memory vào
Work memory và
cấp phát local
block cho nó
Xóa OB1 và giải
phóng local block
trong Work
memory
Thực
Thựchiện
hiện
OB1
OB1
trong
trong
Work
Work
memory
memory
System
memory
Share
DB
Instance
DB
3.2.2. Lập trình cấu trúc
Lập trình cấu trúc là kỹ thuât cài đặt thuật toán điều khiển bằng cách chia nhỏ
các khối chương trình con FC hay FB với mỗi khối thực hiện một nhiêm vụ cụ thể của
bài toán điều khiển chung và toàn bộ các khối chương trình này lại dược quản lý một
cách thống nhất bởi khối chương trình con theo thứ tự phù hợp với bài toán điều khiển
đặt ra.
Tương tự, một nhiệm vụ con lại có thể chia nhỏ thành nhiều 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.
Chú ý :
-Không bao giờ một khối chương trình con lại gọi chính nó.
-Ngoài ra do sự hạn chế về ngăn xếp của các module CPU nên không được tổ
chức chương trình con gọi bằng lồng nhau quá số lần mà module CPU cho
phép.
4. Giới thiệu ngôn ngữ lập trình với S7-300.
4.1. Các ngôn ngữ lập trình
Có nhiều ngôn ngữ lập trình và phương pháp lập trình cho phép bạn chọn phù hợp
với nhu cầu. Bộ STEP 7 có 3 ngôn ngữ lập trình chính là LAD, FBD, STL. Các ngôn
ngữ khác tùy chọn.
Lập trình kiểu STL (Statement List): là ngôn ngữ lập trình kiểu liệt kê gồm
danh sách các câu lệnh. chương trình ứng dụng được viết dưới dạng một chuỗi
các câu lệnh. Mỗi một câu lệnh chứa một lệnh (instruction) xác định nhiệm vụ.
Phụ thuộc vào dạng câu lệnh mà kèm theo lệnh còn có địa chỉ mà lệnh cần thực
thực hiện.
Ví dụ:
Lập trình kiểu FBD (Function Block Diagram): chương trình ứng dụng được
viết bằng cách kết nối các hộp. FBD cung cấp các hộp chức năng để thực hiện
các phép toán logic theo trạng thái tín hiệu, các hộp đơn giản dùng xử lý kết quả
của phép toán logic và các hộp phức tạp dùng cho các hàm không phải nhị
phân.
Ví dụ:
Lập trình LAD(Ladder logic): cho phép viết chương trình bằng cách sắp xếp
các phần tử theo dạng biểu đồ. Các phần tử chủ yếu gồm các tiếp điểm, cuộn
dây, hộp, liên kết với nhau thành một sơ đồ điều khiển rơ le dạng bậc thang.
Ví dụ:
Ngoài ra còn có các ngôn ngữ cấp cao hơn như :
Ngôn ngữ lập trình điều khiển có cấu trúc SCL ( Structured Control Language)
là một ngôn ngữ lập trình bậc cao giống như PASCAL, đã được tối ưu hoá để
lập trình cho PLC. SCL tương thích với tiêu chuẩn quốc tế IEC1131-1( DINEN 6.1131-3) và đặc biệt thích hợp cho việc lập trình các thuật toán phức tạp
hay các ứng dụng xử lý dữ liệu , S7-SCL chỉ chạy được khi đã có SIMATIC
Manager.
Ví dụ:
Biểu đồ chức năng liên tục CFC (Continuous Function Chart): Phần mềm CFC
là một phần mềm soạn thảo dưới dạng đồ họa, cho phép nối các khối bằng cách
vẽ một lưu đồ chức năng. CFC. Chương trình quản lý SIMATIC Manager
(STEP 7 Standard Tool) làm phần mềm cơ sở và phần mềm SCL để biên dịch .
Ví dụ :
Điều khiển tuần tự GRAPH (sequential Control GRAPH): S7-GRAPH là một
phương pháp lập trình đồ họa cho các hệ thống điều khiển tuần tự. Phần mềm
này tương thích với ngôn ngữ SFC theo tiêu chuẩn IEC 1131-3 (DIN EN
61131-3). Để sử dụng S7-GRAPH bạn phải cần SIMATIC Manager (STEP 7
Basic).
Ví dụ:
Điều khiển theo đồ hình trạng thái (HIGRAPH): Lập trình S7-HIGRAPH là
một phương pháp lập trình đồ họa cho các hệ điều khiển đồ hình trạng thái. Nó
cần phần mềm cơ sở là SIMATIC Manager (STEP 7).
Ví dụ :
Trong giáo trình này, chúng ta sẽ sử dụng chủ yếu 2 ngôn ngữ lập trình STL và LAD.
4.2. Ứng dụng module vào ra số với bài toán điều khiển cổng các công sở.
Các module vào ra số tạo ra một giao diện cho phép CPU có thể giao tiếp và xử
lý các tín hiệu số từ bên ngoài.
4.2.1. Giới thiệu về các module vào và ra số.
Trong S7-300 có rất nhiều các module vào ra số. Ở đây ta chỉ giới thiệu hai
module SM321 (DI-16) và SM322 (DO-16).
4.2.1.1. Module vào số SM321.
Module SM321 có :
Có 16 đầu vào, nguồn vào, gộp thành một
nhóm 16 đầu vào.
Dải điện áp hoạt động là 24VDC
Các đầu vào thường là các công tắc, nút bấm,
các loại cảm biến số…
Sơ đồ khối bên trong và sơ đồ các chân ra của module:
Các sơ đồ đấu dây thường dùng:
1
L+
K1
K2
SM321
.....
4.2.1.2. Module ra số SM322.
Module SM322 có :
Có 16 đầu ra, gộp thành hai nhóm, mỗi nhóm
có 8 đầu ra.
Dải điện áp cho tải là 24VDC
Các đầu ra thường là các công tắc tơ, các cuộn
hút của van điện từ, các đèn báo....
Đây là sơ đồ khối bên trong và cách đấu tải vào module:
4.2.2. Ứng dụng điều khiển đóng mở cổng ở các công sở.
4.2.2.1. Mô tả thiết bị.
Cổng được đóng mở bằng một xi lanh-piston thủy lực:
Cổng đóng – piston đẩy ra
Cổng mở – piston đóng lại
Cấu tạo của xi lanh-piston:
Đường dầu đi vào
Khi dầu đi vào đường bên trái, piston được đẩy sang bên phải, làm cho cổng mở
ra. Khi đường đi vào đường bên phải, xi lanh được đẩy sang bên trái làm cho cổng
đóng lại. Nếu cấp dầu cả hai bên và điều chỉnh lưu lượng thì ta có thể cho xi lanh dừng
ở vị trí tùy ý nào đó (điều khiển vị trí).
Hai đường ống cấp dầu cho xi lanh lại được điều khiển bằng một van điện từ.
Nguyên lý như sau:
Cuộn hút 2
Cuộn hút 1
Đường dầu
Đóng mở hai cuộn hút sẽ đóng mở hai đường dầu cấp cho cơ cấu xi lanh.
4.2.2.2. Yêu cầu của bài toán
Có một panel điều khiển gồm có 3 nút :
Các nút vận hành : Mở , đóng, dừng
Đèn báo : mở, đóng
Quy tắc vận hành:
Khi bấm nút Mở : cổng sẽ được mở ra.
Khi bấm nút Dừng : cổng sẽ dừng lại.
Khi bấm nút Đóng : cổng sẽ đóng lại.
Khi đang mở không thể đóng lại được ngay mà phải bấm nút dừng trước, và
ngược lại.
4.2.2.3. Phương án thiết kế.
Để giải bài toán này ta có rất nhiều phương án. Ở đây ta chỉ quan tâm tới hai
phương án. Và tìm ra sự liên quan.
Phương án 1. : Sử dụng các rơ le số và các nút bấm
Dưới đây là một sơ đồ được thiết kế bằng mạch điện chứa các rơ le và nút bấm.
Mở
K1
Dừng
R1
K2’
R2
Đóng
K2
K1’
Phương án 2: Sử dụng PLC và các nút bấm.
Ta sẽ thay thế sơ đồ mạch điều khiển ở trên bằng PLC
Nhận xét :
Với phương án 1 : mạch đơn giản, giá thành thấp, nhưng hoạt
động đơn lẻ
Với phương án 2: Mạch đơn giản hơn nưa, giá thành cao. Nhưng
ứng dụng tự động nhiều. Nếu có rất nhiều cổng, và giám sát từ xa,
kết hợp với các hệ thống tự động hóa trong tòa nhà, thì phương án
này rất phù hợp.
4.2.2.4. Thi công .
Ở đây ta sẽ chọn phương án thiết kế trên PLC.
Bảng điều khiển và sơ đồ kết nối với module như sau.
Đ1
Đ2
C1
C2
1 2
SM322
K1
K2
Đ1 Đ2
3
4
5
10
K3
SM321
Bảng điều khiển
2
3
4
K1 K2 K3
Sử dụng phần mềm Step7 để thiết kế ứng dụng.
Tạo một Project mới
Cấu hình phần cứng như sau:
Tạo các symbols:
1
- Xem thêm -