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 toán điểu khiển số thông qua ngôn ngữ lập trình để tra
Trang 1Luận Văn Tốt Nghiệp Phan 1
`
PLC S7-300
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 toá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
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 dugc (Programmable control)
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
của tất cả các ngõ vào số trong PLC được quét (đò) 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ế
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ư
PID, điều khiển động cơ Chúng được gọi chung là module mở rộng
a Module CPU:
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ó
thể làm việc trực tiếp được với nhiều nhất 4 racks và các racks này phải được nối với nhau bằng module IM
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,
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ý
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
vùng nhớ I Thông thường chương trình ứng dụng không đọc
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
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
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
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
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
khối con cùng local block ra khổi word memory
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
Ta có bảng so sánh khẩ năng lập trình cia cdc PLC SIMATIC S7-300 như sau: ( CPU 312 IFM CPU 315-2 DP)
Trang 11Luận Văn Tốt Nghiệp Phan 1
Trang 12T: 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
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:
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
nhẩy có điều kiện
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 toá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ế
s* Bit OS (stored overflow bit)
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
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
0 1 Tran dai tri dm
Trang 16
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
II CÁC LỆNH VÀ PHÉP TOÁN
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:
©« - Nạp (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:
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
e FN <toán hạng>: lệnh phát hiện sườn xuống
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
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:
¢ RLD [n] : lệnh xoay tròn các bits của ACCUI theo chiéu trái
Trang 19Luận Văn Tốt Nghiệp Phan 1
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)
Hình 1.2: xoay ACCỦI qua trái 3 bù
Thí dụ: xoay phải word kép
L 43
L MD10 RRD
T MD20
Trang 20| The three bits that are -—”
The last bit shifted is shifted out are inserted
also stored in CC 1 in the vacated places
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
đẩy vào CCI, bit 31 ghi lại giá trị cũ
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):
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
số nguyên kép | ACCUI sang số nguyên kép 32 bits
sang BCD BCD
DTR |Số nguyên kép | Đổi số nguyên kép 32 bits trong ACCUI sang số
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
RND Lam tròn Lam tròn số được chuyển đổi đến số nguyên
gan nhất Nếu phần phân số ở giữa kết quả
Trang 22Bảng 1.10: chuyển đổi số dấu chấm động 32 bits sang số nguyên 32 bits
= 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
Trang 23Luận Văn Tốt Nghiệp Phan 1
> 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
4 Các lệnh điều khiển logic và điều khiển chương trình
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ì
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ì
thực hiện lệnh kế
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ế
b Các lệnh điều khiển chương trình:
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:
Việc gọi có thể xảy ra một khi các chỉ tiết sau đã được đưa vào lúc CALL:
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
= 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
cứu!