Luận Văn Tốt Nghiệp Phan 1
`
A 1
Trang 2Chuong 1: Giới Thiệu
I TỔNG QUAN VỀ BỘ ĐIỀU KHIỂN LẬP TRÌNH
DUOC
1 Bộ điều khiển lập trình được
Bộ điều khiển lập trình được (Programmable Logie 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 Toà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 xudt/nhdp (I/O module), hé thống bus và khối nguôn cấp
điện
Hệ thống tuyến (sysfem bus): là tuyến để truyền các tín hiệu, gồm nhiều
đường tín hiệu song song:
s* Tuyến địa chỉ (address bus): chọn địa chỉ trên các khối khác nhau
* Tuyén dif liéu (data bus): mang dif liéu (thi du tiv IM téi OM)
* Tuyén dié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
2 Đ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
Trang 3Luận Văn Tốt Nghiệp Phan 1 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 ngoà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
3 Quét chương trình tuân hoàn và ảnh các quá trình a Quét chương trình tuần hoà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 fimer) Một chu kỳ quét gồm có 4 giai đoạn sau:
e_ Chuyển dữ liệu từ cổng vào tới I
e Thực hiện chương trình
e_ Chuyển dữ liệu từ Q tới cổng ra e_ 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 ting loai 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 Ảnh các quá trình:
s% Ảnh quá trình nhập PHI (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
Trang 4tiế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 PHI này
s* Ả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 OBI, nội dung của ảnh quá trình xuất PIQ
được chuyển đến các module xuất
Ả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
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 toá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ư
Trang 5Luận Văn Tốt Nghiệp Phan 1
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 ho 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 CPU3 15
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ừ [EM (nergrafed
Function Module) Chang han module CPU312 IFM, module CPU314 Ngoai 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:
s* PS (Power Supply): Module nguồn nuôi Có 3 loại: 2A, 5A, 10A
s* SM (Signal Module): Module mở rộng cổng tín hiệu vào/ra, bao
gơm:
© DI (Digital Input): Module mé rong cdc cong vao sé © DO (Digital Output): Module mé rong céc cong ra số ¢ DI/DO: Module mé réng cc céng vao/ra số
e AI (Analog Input): Module mé réng cdc cong vao tudng tu ¢ AO (Analog Output): Module mở rộng các cổng ra tương tự e AƯAO: Module mở rộng các cổng vào/ra tương tự
° % 5 IM (Interface module): Module ghép néi Day 1a loai 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 røck Trên
mỗi rack có thể gá được tối đa § module mở rộng (không kể
module CPU và module nguồn nuôi) Một module CPU S7-300 có
Trang 6“ FM (Function Module): Module có chức năng điều khiển riêng, vi
dụ như module điều khiển động cơ bước, module điều khiển động
co servo, module PID, module diéu khién vòng kín,
oe
“ CP (Communication Module): Module phuc vu truyén thông trong mang 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 bít 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é thuc 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) luu trit
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
Trang 7Luận Văn Tốt Nghiệp Phan 1
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 Oufput 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)
e 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) cing nhu gid tri
logic đầu ra của bộ thời gian
e C (Counier): 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
e PI (/O External Input): Mién dia chi céng vao ctia 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 (/O External Output): Mién dia chi 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, cong thêm EEPROM có sẵn trong CPU hodc thé EEPROM gan 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 (SEB, SFC) và các khối dữ liệu DB Toà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
Trang 8cho 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) Tai m6t 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ớiI,Q,PL 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
e_ 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 hoà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):
Toà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 toá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
OB
Trang 9
Luận Văn Tốt Nghiệp Phan 1
b Lép trinh c6 cdu tric (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 toá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:
s* 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
s* Khối hàm chức năng FB (Function block) : Là loại khối EC
đặ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
s* Khối ham (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
Ngoài ra còn có các khối hệ thống như : SFB, SFC, SDB
Toà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ẽ:
e Chuyển khối con được gọi từ vùng load memory vào vùng word memory
¢ Cap phat cho khdi con mét phan b6 nhé trong word memory dé
làm local block Cấu trúc local block được quy định khi soạn thảo
các khối
e Truyén cdc tham tri từ khối mẹ cho biến hình thức IN, IN-OUT
của local block
e_ Sau khi khối con thực hiện xong nhiệm vụ và ghi kết quả dưới
dang tham tri dau ra cho bién OUT, IN-OUT cia 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
Trang 10OB FB FC SFB FB FB SFC FB sử dụng cùng với DB (instance)
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
Trang 11Luận Văn Tốt Nghiệp Phan 1 Chương 2: 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
Trang 12b ID: chi 6 nhé co kich thuéc 14 2 tit trong mién b6 đệ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 I byte thuộc vùng peripheral input
PIW: chỉ ô nhớ có kích thước 1 từ thuộc ving 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 PQM: chỉ ô nhớ có kích thước 1 từ thuộc vùng peripheral output PQD: chi 6 nhớ có kích thước 2 từ thudc ving 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
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 thi
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
Vidu:I 13
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ớ đó
Trang 13Luận Văn Tốt Nghiệp Phan 1
MD 46
2 Cấu trúc thanh ghỉ 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: 23 2 |2 |2 |2 J2* |2 |2 12! 29 2? BR |CCI |CC0 |OV |OS |OR |STA |RLO |/ŒC
a 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 toán
hạng Nếu bit /EC =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 /C lên 1 Quá trình này được gọi là kiểm tra dau tién (first check)
hay quét lần thứ nhất (first scan)
Nếu bit /C =l thì lệnh kết hợp kết quả dò mức của toá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 nhu A(, O(, X(, AN(, XN(;
cdc lénh nay reset bit /FC vé 0
a RLO (Result of Logic Operation): két qua cia phép todn 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 I 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
Trang 14
Statement Signal State | Resultof | RLO | FC Explanation List Program of Input (1) Check Bit Bit
or Output (Q)
0 FT bit = 0 indicates that next
““ instruction begins logic string
Al1.0 1 1 1 Result of first check is stored in RLO bit FT bit is set to 1 ANI 1.1 0 1 1 Result of check is combined with
previous RLO according to AND
truth table FT bit remains 1 =Q40 1 0 RLO Is assigned to output
coil FT bit is reset to 0
Hinh1.1: hiéu ứng của trạng thái tín hiệu bịt “FC trên các lệnh logic s» 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
~ BitOR
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
s» Bit OV (Overflow)
Bit OV có chức năng báo lỗi Nó được đặt lên 1 bằng lệnh toá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 toán học kế hay lệnh so sánh kế
Trang 15Luận Văn Tốt Nghiệp Phan 1
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 đump 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 CCI và CC0 CCl cc0 Giải thích 0 0 Kết quả =0 0 1 Kết quá <0 1 0 Két qua >0 Bang 1.2: CCI va CCO sau lénh todn hoc, khéng cé tran
CCI cco Giải thích
0 0 Tran dai tri 4m trong +I va +D 0 1 Tran dãi trị âm trong *I va *D
Tran dãi trị dương trong +I, -I, +D, -D, NEGI va NEGD 1 0 Tràn dãi trị dương trong *I, *D, /I va /D
Tran dai tri 4m trong +I, -I, +D, -D
1 1 Chia cho 0 trong /I, /D, vi MOD Bang 1.3: CCI và CC0 sau lệnh toán học số nguyên, có tràn CCI cco Giải thích 0 0 Tràn dưới
0 1 Tran dai tri dm
Trang 160 1 ACCU 2 <ACCU 1 1 0 ACCU 2 >ACCU I 1 1 ACCU 1 hay ACCU 2 là số dấu chấm động không hợp lệ Bảng 1.5: CCI và CC0 sau các lệnh so sánh CCI cœ0 Giải thích 0 0 Bit vita dich ra là 0 1 0 Bit vừa dịch ra là I Bảng 1.6: CC1 và CC0 sau các lệnh dịch và xoay CCI cœ0 Giải thích 0 0 Kết quả =0 1 0 Két qua <>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 toá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 toán word làm
thay đổi RLO, để cho RLO khả dụng lần nữa sau khi phép toá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:
e_ Cất bit RLO =l vào bit BR cho trường hợp mà FB hay FC được
thực thi không có lỗi
e_ 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 6 cuéi FB hay FC để chúng là các lệnh
cuối cùng được thực thi trong khối
Trang 17Luận Văn Tốt Nghiệp Phan 1
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:
âô - Np (LOAD) từ bộ nhớ nguồn vào ACCU
e_ 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 đài 2 word Chú ý: s* Load và Transfer trực tiếp không qua PII va PIQ: L PIB T PQW
Với P là viết tắt của Peripheral (ngoại vi)
s* 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 toá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ớ e SET: lénh ghi logic I vào RLO
e _ CLR: lệnh ghi logic 0 vào RLO e NOT: lénh đảo giá trị của RLO
e S: lệnh gán có điều kiện giá trị logic 1 vào ô nhớ e R: lệnh gán có điều kiện giá trị logic 0 vào ô nhớ
e FP <todn hang>: lệnh phát hiện sườn lên
Toá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 toán hạng có giá trị 0 và RLO có giá trị 1 thi 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
Trang 18Toá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 toán hạng có giá trị l 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
e SAVE : lénh chuyén giá trị của RLO vào BR
e Và một số phép tính cơ bản
3 Các lệnh tác động vào 2 thanh ghỉ ACCUI và ACCU2
a Nhóm lệnh đảo vị trí bytes:
e POP:lệnh chuyển nội dung của ACCU2 vào ACCUI
e _ PUSH:: lệnh chuyển nội dung của ACCUI1 vào ACCU2 e _ TAK: lệnh đảo nội dung của 2 thanh ghi ACCUI và ACCU2 e CAW: lệnh đảo nội dung 2 bytes của từ thấp trong ACCUI e CAD: lệnh đảo nội dung các bytes trong ACCUI
e _INVI: lệnh đảo giá trị các bits trong từ thấp của ACCUI e INVD:: lệnh đảo giá trị các bits của ACCUI
b.Ề Nhóm lệnh tăng giảm :
e INC_ <toán hạng>: lệnh tăng nội dung thanh ghi ACCUI Toá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 ACCUI với toán hạng Kết quả được ghi lại vào byte thấp của
từ thấp của ACCUI
e DEC <toán hạng>: lệnh giảm nội dung thanh ghi ACCUI
Toá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 ACCUI cho toán hạng Kết quả được ghi lại vào byte thấp của từ
thấp của ACCUI
c Nhóm lệnh dịch chuyển:
Trang 19Luận Văn Tốt Nghiệp Phan 1
« RRD_ [n]: lệnh xoay tròn các bits của ACCUI theo chiéu
phải
Lệnh có thể có hoặc không có toán hạng Nếu toán hạng bằng 0 thì lệnh
tương đương với lệnh NOP
e _ RLDA : lệnh xoay tròn ACCUI theo chiều trái 1 bit e RRDA : lệnh xoay tròn ACCUI theo chiểu phải 1 bit Instruction Rotate via CC 12 Direction Indication of Number of Places to Shift | Shift Range
RLDoa No Lett In the instruction statement n=() to 32 RLD No Lett In the low byte of the low word of 0 to 255
accumulator 2
RRD No Right In the instruction statement 01032 RRD No Right In the low byte of the low word of 0 t0 255
accumulator 2
RLDA Yes Left 1 (fixed) RRDA Yes Right 1 (fixed) Bảng 1.8: tóm tắt các lệnh xoay bùi 31 mn 0 111110000|1010|1010Ì0000|1111Ì0000|1111 ~— 8places I111]1000Ì0101|0101]0000|0111|1000[0111]1111] OS pes ld —¬ â 2
The three bits that are shited_ ——————————— ‡ out are inserted in the vacated The last bit shifted is places also stored in CC 1
Hình 1.2: xoay ACCỦI qua trái 3 bù Thí dụ: xoay phải word kép
L 43
Trang 2031 „16 15 0 1010|1010]0000Ì1111Ì0000Ì1111Ì0101]0101 3 places——* [1011]0101]0100]0001]1110]0001]1110] 1010] 1011 ĐÔ 7 7 ae | The three bits that are -—” The last bit shifted is shifted out are inserted
also stored in CC 1 in the vacated places Hinh 1.3: xoay ACCU] phai 3 bit CC1 31 16 15 gal {x}e{1010]1010]0000]1111[o000]1111[ 0101/0101 -—— iplace "| [1] [1010]0100]0001]1110[0001]1110]1010|101x| { |
The last bit shifted is The signal state of the
also stored in CC 1 CC 1 bit is loaded into the vacated bit place
Hinh 1.4: xoay trai 1 bit qua CC]
e SLW [<toán hạng>]: dịch trái các bits trong từ thấp của
ACCUI Bit 0 được ghi 0, bit 15 đẩy vào CCI
e SLD_ [<toán hạng>]: dịch trái các bits của ACCUI Bit 0
được ghi 0, bit 31 đẩy vào CCI
e SRW_ [<toán hạng>]: dịch phải các bits trong từ thấp của
ACCUI Bit 0 được ghi 0, bit 15 đẩy vào CCI
e SRD [<toán hạng>]: dịch phải các bits của ACCUI Bit 0 được ghi 0, bit 31 đẩy vào CCI
e SSL [<toán hạng>]: dịch phải các bits trong từ thấp của ACCUI Bit0 đẩy vào CCI, bit 15 ghi lại giá trị cũ
e SSD_ [<toán hạng>]: dịch phải các bits của ACCUI Bit 0
Trang 21Luận Văn Tốt Nghiệp Phần 1
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): Lệnh Ý nghĩa Chúc năng
BTI BCD sang số | Đổi số BCD trong word thấp của ACCUI sang số
nguyên nguyên 16 bits
BTD |BCD sang số | Đổi số BCD trong ACCUI sang sé nguyén kép
nguyên kép 32 bits
ITB | Số nguyên sang | Đổi số nguyên 16 bits trong word thấp của
BCD ACCUI sang số BCD
ITD_ |Số nguyên sang | Đổi số nguyên 16 bits trong word thấp của
số nguyên kép | ACCUI sang số nguyên kép 32 bits
DTB |Số nguyên kép | Đổi số nguyên kép 32 bits trong ACCUI sang số
sang BCD BCD
DTR |Số nguyên kép | Đổi số nguyên kép 32 bits trong ACCUI sang số
sang số thực dấu chấm động IEEE 32 bits (số thực)
Bả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 so
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 ACCUI thành số nguyên kép (các lệnh
khác nhau về cách làm tròn) và kết quả được cất ở ACCUI Lệnh Ý nghĩa Chức năng
RND Lam tròn Lam tròn số được chuyển đổi đến số nguyên
Trang 22Bảng 1.10: chuyển đổi số dấu chấm động 32 bits sang số nguyên 32 bits BCD BTI Integer Floating DTB RND, RND+, RND-, TRUNC Hình 1.5: tóm tắt các lệnh chuyển đổi và làm tròn 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ố ở ACCUI, nếu kết quả đúng nó sẽ trả về
RLO=I, 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ới
word thấp của ACCUI Dạng lệnh so sánh như sau: op datatype với øp (operator = toán tử) có thể là: So sánh op Bằng nhau == Không bằng <> Lớn hơn > Nhỏ hơn < Lớn hơn hoặc bằng >= Nhỏ hơn hoặc bằng <=
Trang 23Luận Văn Tốt Nghiệp Phan 1 ACCU2>ACCUI 1 0 JN, JP ACCU2<ACCUI 0 1 JN, JM ACCU2=ACCUI 0 0 JZ ACCU2<>ACCUI 0/1 1/0 JN ACCU2>=ACCU1 1/0 0/0 JPZ ACCU2<=ACCUI 0/0 1/0 JMZ Bảng 1.11: ảnh hưởng của các lệnh so sánh lên CC1 và CC0 g Nhóm lệnh số học:
> Với số nguyên 16 bits: có các lệnh thực hiện cộng (+l), trừ (-
1), nhân (*D, chia (/I) Lấy word thấp của ACCU2 +,-,*,/ với
word thấp của ACCUI, kết quả lại vào word thấp của
ACCUI
> 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 ACCUI,
kết quả lại vào ACCUI
> 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 ACCUI, kết quả lại vào ACCUI
> Các lệnh toá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 toán với đối số vào ở ACCUI và kết quả cất ở ACCUI
e ABS: lay trị tuyệt đối
e SQRT: tinh can bac hai (square root) xl
¢ SQR: tinh binh phuong (square) x?
e LN: tinh logarithm ty nhiên In(x)
e EXP: tinh ham mii e*
e SIN: tinh sin(x) e COS: tinh cos(x) e TAN: tinh tg(x)
e ASIN: tinh arcsin(x)
e ACOS: tinh arccos(x) e ATAN: tinh atctg(x)
2
Trang 24a 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:
e _ Lệnh nhảy không điều kiện: JU, JL
e_ Lệnh nhảy có điều kiện theo RLO: JC, JCN, JCB, JNB
e_ Lệnh nhảy có điểu kiện theo BR hoặc OV/OS: JBI, JNBI, JO,
JOS
e _ Lệnh nhảy theo mã diéu kién CCO, CC1: JZ,JN, JP, JM, JMZ, JPZ, JUO
e 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ển logic 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:
e _ 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ệnh này được thực hiện bất chấp điều kiện nào
e Lệnh nhảy theo danh sách JL: (giống lệnh case hay switch trong cdc 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:
e 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ế
e 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ế
se JCB nhãn: nếu RLO=l 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ế
e 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:
e JBI nhãn: nếu BR=l thì nhảy đến nhãn, còn ngược lại thì
Trang 25Luận Văn Tốt Nghiệp Phan 1
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 va FC trong
STW về 0 và set bit STA lên 1
Theo điều kiện OV:
JO nhãn: nếu OV=I 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=l 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 CCI 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 qua 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 qua 14 0 hay >0 thi nhay đế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 toá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ế
> Lệnh điều khiển vòng lặp:
Ta có thể sử dụng lệnh LOOP để thực hiện một đoạn chương trình nhiều
lần Lệnh LOOP giảm word thấp của ACCUI bớt đi 1 và kiểm tra trị mới có được ở ACCUI Nếu ACCUI! lúc này khác không thì nhảy đến nhãn chỉ ra kế
LOOP, còn ngược lại thì thực hiện lệnh kế
Trang 26Ta có thể sử dụng các lệnh sau để điều khiển chương trình
= Lénh goi CALL ding dé goi FC, FB, SFC hay SFB ma bat
chấp RLO 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ọi các FC không có tham số
"Lệnh gọi không điều kiện (UC) dùng để gọi SFC không có
tham số
" 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ạy chươ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 ŒC) và khối ham (FB),
lệnh nà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ện nà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ào
khố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):
e_ Giá trị của tham số thật
e Pointer chi dén dia chỉ của tham số thật
e Pointer chi dén “L stack” cia 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:
Trang 27Luận Văn Tốt Nghiệp Phan 1
e Téncta khéi ham
e_ Tên của khối dữ liệu instance và e_ 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=I)
UC_ addr (unconditional call: gọi bất chấp RLO) Chú ý: không được sử dụng DB “instance” với CC va UC
Addr có thể là địa chỉ trực tiếp hay là địa chỉ gián tiếp bộ nhớ (memory
indirect address)
> Làm việc với chức năng MCR:
MCR ding để tạo hay ngắt luồng năng lượng (đường dẫn điện) Các
lệnh sau bị ảnh hưởng bởi MCR là: lệnh gán (=), lệnh SET và RESET bit (S, R) và lệnh chuyển dữ liệu T (dùng byte, word, double word) Sự phụ thuộc của
chúng theo MCR được cho theo bảng 1.12 Trạng thái tín|= ShayR T hiệu của MCR 0 Ghi 0 Không ghi (nghĩa | Ghi 0 là toán hạng không đổi) 1 Thực thí bình |Thực thí bình |Thực thí bình thường thường thường Bảng 1.12: các lệnh phụ thuộc MCR s* Các lệnh cài đặt MCR
= MCRA: kich hoat ving MRC (A= Activate) = MCRD: bé kich hoat ving MCR (D= Deactivate)
= MCR(: c&t RLO vào ngăn xếp MCR, bat dau ving MCR = )MCR : lay lai RLO, két thtic ving MCR
Chú ý: không bao giờ sử dụng lệnh MCR cho thiết bị an toàn hay cấp
Trang 28* Anh hudng cia MCRA va MCRD
Trong vùng MCR nếu gọi 1 hàm thì hàm đó không bị ảnh hưởng của
vùng MCR, 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ưởng của vùng MCR Cài đặt MCR
Các lệnh sau bật hay tắt chức năng MCR:
e_ Cất RLO trong ngăn xếp MCR, bắt đầu MCR: MCR(
e Lay lai RLO< két thtic MCR: )MCR
Nhu vậy, ta phải luôn luôn có cặp MCR( và )MCR; hệ thống cho phép lồng cdc cip MCR( va )MCR va toi da 1a 8 OB1 FBx FCy MCRA MCRA MCRA MCRD CALL FCy CALL FBx MCRD BEU MCRA BEU
| Instructions do not depend on the MCR bit
II Instructions depend on the MCR bit
Trang 29
Luận Văn Tốt Nghiệp Phan 1
Hình 1.6: kích hoạt và bỏ kích hoạt vang MCR
> Cac lệnh kết thúc khối BEU và BEC
Lệnh Ý nghĩa
BE 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=l1 thì khối hiện hành được kết thúc và quét chương trình được tiếp tục ở lệnh ngay sau lệnh gọi khối
Khi RLO=0 thi không thực hiện kết thúc khối và cho RLO=I sau đó thực hiện lệnh kế lệnh này
Bảng 1.13: tóm tắt các lệnh kết thúc khối
5 Bộ định thời Timer
a Chitc nang Timer:
Các công việc cần điểu khiển cần nhiều chức năng Timer khác nhau
PLC SIMATIC S7 cho người sử dụng một số timer với các chức năng khác
nhau Một word 16 bits (timer word) trong vùng dữ liệu hệ thống được gán cho
một trong các timer
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:
a_ 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ều kiện bắt dau
a 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”
a_ Các ngõ ra số: giá trị thời gian thật sự có thể đọc được từ hai
Trang 30a Ngo ra nhi phan: trang thai tin 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ành phần:
e D6 phân giải với đơn vị là ms
e_ 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 Giá trị PV dưới dạng mã BCD Độ phân giải 0 0 10ms 0 1 100ms 1 0 1s 1 1 10s Không sử dụng Một số lệnh dành cho timer e« FR Tx : lệnh cho phép timer se R Tx :chủ động xóa timer
e L Tx : lấy giá tri timer dang nhi phan
e L Tx : lấy giá tri timer dang BCD
Với x từ 0 đến 255
Start timer (SP, SE, SD, SS, SF)
Enable timer (FR) + Teer ort yo —$§ Reset timer (R)
Check signal state of timer (A, O, X, AN, ON, XN) Loadtimer (L,LC)
Trang 31Luận Văn Tốt Nghiệp Phan 1
Hình 1.7: các lệnh cho phép sử dụng timer word nhv dia chi
b Các ví dụ bằng giản đồ cho từng loại timer: s s* Timer SD (On delay timer): trễ theo sườn lên không nhớ Enable Input l2l Start Input 124 ` Reset Input 122 / Á Đ 1¬ OY SLIME i = "À Load Timer: L, LC " Ầ N | t=programmed time interval =
Hình 1.8: giản đồ xung cho timer SD
Trang 32Enable input Start input _T tí KL Resetinput 4 i Output RASS n n_ Tả x
Load timer: L, LC err NN ~
t= programmed time interval
Hình1.9: giản đồ xung cho timer SS
«+ Timer SP (Pulse timer): timer tao xung không có nhớ Enable input Start input ‡ & L Reset input Timer Output q40 Load timer: L, LE t= programmed time interval
Hinh 1.10: gidn dé xung cho timer SP
“+ Timer SE (Extended pulse timer): timer tao xung có nhớ
Trang 33
Luận Văn Tốt Nghiệp Phan 1 Enable input 120 Start input 124 Reset input 122 A Al ANN | Timer { em Output q40
Load timer: L, LC IN| |
t= programmed time interval
Hình 1.11: giản đồ xung cho timer SE
s* Timer SF (Off delay): timer trễ theo sườn xuống Enable input 12.0 Start input Reset input Timer Output 4 Ed Load timer: L, LC | À | t= programmed time interval Hinh 1.12: gidn dé xung cho timer SF 6 Bộ đếm Counter a Chức năng Counfer:
Counter là bộ đếm thực hiện chức năng đếm sườn xung của các tín hiệu
đầu vào S7-300 có tối đa 256 Counter, ký hiệu Cx Counter đếm tiến theo sườn
Trang 35
Luận Văn Tốt Nghiệp Phan 1 12.0 Enable 12.1 Count Up 12.2 Count Down m 12.3 Set j 7 12.4 Reset C ( ( if £ Counter : 0 Response SO Check signal 8 State of counte; output Q 4.0 MW10 Load MW12 SERA) : Hình 1.15: ví dụ về các lệnh Counter
Chương3: Thực Thi Chương Trình
I HOẠT ĐỘNG CỦA CPU 1 Các vùng nhớ CPU CPU S7-300 có 3 vùng nhớ cơ bản: = Ving nhớ hệ thống = Ving nhé nap " Vùng nhớ làm việc
Bộ nhớ làm việc của CPU cũng cung cấp bộ nhớ tạm (bộ nhớ dữ liệu cục bộ hoặc L stack) mà được cấp phát cho chương trình khi một khối con được gọi Khi khối đó còn tích cực, thì bộ nhớ cục bộ còn được duy trì, ta có thể ghi dữ liệu vào “L stack” (thay vi vao DB hay bộ nhớ bit) Dữ liệu này chỉ hợp lệ khi
khối đó đang tích cực; khi một khối mới được gọi thì “L stack” được cấp phát
Trang 36Distribution of the Memory Areas CPU
Dynamic load memory (RAM, integrated or on a memory card): contains the user program
Work memory (RAM)
contains the executable user program (for example logic and data blocks)
Retentive load memory (FEPROM, on memory card or integrated in S7-
300 CPUs):
contains the user program
System memory (RAM) contains:
Process-image inpuVoutput tables,
bit memory, timers, counters Local data stack Block stack Interrupt stack Diagnostic buffer
Hình I.I6: các vùng nhớ trong các CPU của PLC S7-300
Ngoài ra, CPU còn sử dụng các thành phần sau để xử lý chương trình:
2 Cất chương trình vào CPU
s* Các phần tử của chương trình:
Chương trình gồm các phần tử sau:
e_ Các khối logic: chứa các lệnh, ký hiệu và chú thích
e_ Các khối dữ liệu: chứa dữ liệu, ký hiệu và chú thích
Hai thanh ghi tích lũy 32 bits (ACCUI1 và ACCU2) dùng để làm các toá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 (ARI 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
Ty trang thdi 16 bits (STW) chứa trạng thái của các lệnh khi thực thi trong chương trình như RLO,OV (overflow), OS (overflow stored), CC1 va CCO (CC=condition code) va BR (binary result)
STEP?7 lưu trữ các phần tử này trong các đối tượng khác nhau trong cấu
Trang 37Luận Văn Tốt Nghiệp Phan 1 %% 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ình 1.16)
CPU chép chương trình (lệnh và dữ liệu) từ bộ nhớ nạp vào bộ nhớ làm việc Việc này được thực hiện khi ta tải chương trình xuống CPU và (trong
trường hợ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ương trình vẫn giữ ở trong bộ nhớ nạp; các DB được tạo bởi chương trình
(bằng cách dùng SEC) được cất vào chỉ ở bộ nhớ làm việc Từ bộ nhớ làm việc,
chương trình củ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ệu của nó:
e© Ta có thể giữ chương trình bằng cách ding EEPROM (dùng thé
bộ nhớ hoặc có sẵn trong CPU [tùy CPU])
e Ta có thể giữ dữ liệu cụ thể trong vùng RAM không bốc hơi
(non-volatile)
e_ 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 pin
Trang 38' $7-400 Programming device $7-300 R ay E + em if Load memory Work memory Logic blocks
Entire logic Parts of logic and
blocks data blocks
Data blocks relevant to Entire data program execution blocks Comments | Symbols Sf Saved on the hard disk
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:
CPU S7 cung cấp vùng RAM không bốc hơi (xem hình 1.18) Non-Volatile Memory Area on S7-300 CPUs ee 1
Dynamic load Configurable
memory Work memory System (RAM) memory (NVRAM) memory
Static load ail memo: (FEPROM) Plug-in FEPROM- CPU cartridge (optional) 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ố đữ 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:
a Thông tin được cất vào DB (chỉ hữu dụng nếu ta cũng đã cất
chương trình vào EEPROM của bộ nhớ nạp)
Trang 39
Luận Văn Tốt Nghiệp Phần 1 a Cac gid trị của timer và counter
a_ 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ùng
RAM 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đến64 |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à cung cấp 3 word sau (byte) cho mỗi DB được giữ: e Word 1: DB sé may (I đến 127) e Word 2: dia chi offset cia DB (0 dén 8191) e Word 3: chiều đài vùng trong DB cụ thể được giữ (0 đến 65535 bytes)
Bảng L.14: các vùng nhớ giữ (với CPU 314)
c Sit dung pin backup dé giit dit ligu:
V6i 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, EB, 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 tin này cũng được giữ 4 Hoạt động của CPU
a Chu ky quét (scan cycle):
Trang 40e CPU quét trang thái của các module nhập và cập nhật vùng
nhớ đệm PII
e = Thuc thi chương trình và thực hiện các tác vụ mà chương trình
yêu cầu
e 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ạng thái của các module nhập Scan cycle on existing CPUs Scan cycle on new CPUs Startup program Startup program
Read the inputs from the modules
and update the data in the process-
image input table
Transfer the values of the process-
image output table to the modules
Execute the user program (OB1
and all the blocks called in it) Read the inputs from the modules
and update the data in the process-
image input table
Execute the user program (OB1 Transfer the values of the process- she
and all the blocks called in it) image output table to the modules Free scan cycle Free scan cycle
Hinh 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
(debugging) chương trình điều khiển và để sửa chữa Có 4 chế độ hoạt động
trong PLC S7-300: STOP, START UP, RUN, va HOLD (RUN va STOP lién
quan với công tắc trên CPU)
“ Ở chế độ STOP, CPU nạp cấu hình, đặt I/O vật lý vào trạng