Professional Documents
Culture Documents
Tài liệu PLC Siemens S7-1200 p1 PDF
Tài liệu PLC Siemens S7-1200 p1 PDF
Năm 2009, Siemens ra dòng sản phẩm S7-1200 dùng để thay thế dần cho S7-200. So
với S7-200 thì S7-1200 có những tính năng nổi trội:
-S7-1200 là một dòng của bộ điều khiển logic lập trình (PLC) có thể kiểm soát
nhiều ứng dụng tự động hóa. Thiết kế nhỏ gọn, chi phí thấp, và một tập lệnh mạnh làm
cho chúng ta có những giải pháp hoàn hảo hơn cho ứng dụng sử dụng với S7-1200
-S7-1200 bao gồm một microprocessor, một nguồn cung cấp được tích hợp sẵn,
các đầu vào/ra (DI/DO).
-Một số tính năng bảo mật giúp bảo vệ quyền truy cập vào cả CPU và chương
trình điều khiển:
+Tất cả các CPU đều cung cấp bảo vệ bằng password chống truy cập vào PLC
+Tính năng “know-how protection” để bảo vệ các block đặc biệt của mình
-S7-1200 cung cấp một cổng PROFINET, hỗ trợ chuẩn Ethernet và TCP/IP.
Ngoài ra bạn có thể dùng các module truyền thong mở rộng kết nối bằng RS485 hoặc
RS232.
-Phần mềm dùng để lập trình cho S7-1200 là Step7 Basic. Step7 Basic hỗ trợ ba
ngôn ngữ lập trình là FBD, LAD và SCL. Phần mềm này được tích hợp trong TIA
Portal 11 của Siemens.
-Vậy để làm một dự án với S7-1200 chỉ cần cài TIA Portal vì phần mềm này đã
bao gồm cả môi trường lập trình cho PLC và thiết kế giao diện HMI
1.2. Các module trong hệ PLC S7-1200
1.2.1. Giới thiệu về các module CPU
Các module CPU khác nhau có hình dạng, chức năng, tốc độ xử lý lệnh, bộ nhớ
chương trình khác nhau….
PLC S7-1200 có các loại sau:
1.2.2. Sign board của PLC SIMATIC S7-1200
Sign board: SB1223 DC/DC
- Ngõ ra analog
-AO 1 x 12bit
-Chức năng bảo vệ : Kiến trúc phần mềm tạo thành một cơ sở ổn định cho sự đổi
mới trong tương lai.
Chọn cấu hình Type of the PG/PC interface và PG/PC interface như hình dưới
sau đó nhấn chọn load
Chọn start all như hình vẽ và nhấn finish
3.3. Giám sát và thực hiện chương trình
Để giám sát chương trình trên màn hình soạn thảo kích chọn Monitor trên thanh
công cụ.
Sau khi chọn monitor chương trình soạn thảo xuất hiện như sau:
+Xử lý lỗi
-Startup oB, Cycle OB, Timing Error OB và Diagnosis OB : có thể chèn và lập
trình các khối này trong các project. Không cần phải gán các thông số cho chúng và
cũng không cần gọi chúng trong chương trình chính.
-Process Alarm OB và Time Interrupt OB : Các khối OB này phải được tham số
hóa khi đưa vào chương trình. Ngoài ra, quá trình báo động OB có thể được gán cho
một sự kiện tại thời gian thực hiện bằng cách sủ dụng các lệnh ATTACH, hoặc tách
biệt với lệnh DETACH.
-Time Delay Interrupt OB : OB ngắt thời gian trễ có thể được đưa vào dự án và
lập trình. Ngoài ra, chúng phải được gọi trong chương trình với lệnh SRT_DINT,
tham số là không cần thiết
-Start Information : Khi một số OB được bắt đầu, hệ điều hành đọc ra thông tin
được thẩm định trong chương trình người dùng, điều này rất hữu ích cho việc chẩn
đoán lỗi, cho dù thông tin được đọc ra được cung cấp trong các mô tả của các khối OB
4.2.2. Hàm chức năng – FUNCTION
-Funtions (FCs) là các khối mã không cần bộ nhớ. Dữ liệu của các biến tạm thời
bị mất sau khi FC được xử lý. Các khối dữ liệu toàn cầu có thể được sử dụng để lưu
trữ dữ liệu FC.
-Functions có thể được sử dụng với mục đích
+Trả lại giá trị cho hàm chức năng được gọi
+Thực hiện công nghệ chức năng, ví dụ : điều khiển riêng với các hoạt động
nhị phân
+Ngoài ra, FC có thể được gọi nhiều lần tại các thời điểm khác nhau trong một
chương trình. Điều này tạo điều kiện cho lập trình chức năng lập đi lặp lại phức tạp.
-FB (function block) : đối với mỗi lần gọi, FB cần một khu vực nhớ. Khi một FB
được gọi, một Data Block (DB) được gán với instance DB. Dữ liệu trong Instance DB
sau đó truy cập vào các biến của FB. Các khu vực bộ nhớ khác nhau đã được gán cho
một FB nếu nó được gọi ra nhiều lần.
-DB (data block) : DB thường để cung cấp bộ nhớ cho các biến dữ liệu . Có hai
loại của khối dữ liệu DB : Global DBs nơi mà tất cả các OB, FB và FC có thể đọc
được dữ liệu lưu trữ, hoặc có thể tự mình ghi dữ liệu vào DB, và instance DB được
gán cho một FB nhất định.
5. Giới thiệu các tập lệnh
5.1. Bit logic (tập lệnh tiếp điểm)
D Toán hạng n: I, Q, M, L, D
3)lệnh OUT
A Toán hạng n : Q, M, L, D
6)Lệnh SET
7)lệnh Reset
n : là hằng số
n : là hằng số
D “M_BIT”
D “M_BIT”
14)lệnh SR fliplop
15)lệnh RS fliplop
L
Sử dụng lệnh Timer để tạo một chương trình trễ định thời. Số lượng của Timer
phụ thuộc vào người sử dụng và số lượng vùng nhớ của CPU. Mỗi timer sử dụng 16
byte IEC_Timer dữ liệu kiểu cấu trúc DB. Step 7 tự động tạo khối DB khi lấy khối
Timer
Kích thước và tầm của kiểu dữ liệu Time là 32 bit, lưu trữ như là dữ liệu Dint :
T#-14d_20h_31m_23s_648ms đến T#24d_20h_31m_23s_647ms hay là -
2.147.483.648 ms đến 2.147.483.647 ms.
D chân IN “TRUE” trở lại thì Timer bắt đầu tính thời gian
từ giá trị thời gian đã tích lũy.
Lệnh Counter được dùng để đếm các sự kiện ở ngoài hay các sự kiện quá trình ở
trong PLC. Mỗi Counter sử dụng cấu trúc lưu trữ của khối dữ liệu DB để làm dữ liệu
của Counter. Step 7 tự động tạo khối DB khi lấy lệnh.
Tầm giá trị đếm phụ thuộc vào kiểu dữ liệu mà bạn chọn lựa. Nếu giá trị đếm là
một số Interger không dấu, có thể đếm xuống tới 0 hoặc đếm lên tới tầm giới hạn. Nếu
giá trị đếm là một số interder có dấu, có thể đếm tới giá trị âm giới hạn hoặc đếm lên
tới một số dương giới hạn.
L Giá trị bộ đếm được giảm 1 khi tín hiệu ngõ vào CD
chuyển từ 0 lên 1. Ngõ ra Q được tác động lên 1 khi
A
CV <=0. Nếu trạng thái LOAD được tác động thì
D CV = PV.
1)Lệnh so sánh
So sánh 2 kiểu dữ liệu giống nhau, nếu lệnh so sánh thỏa thì ngõ ra sẽ là mức 1 =
TRUE
Kiểu dữ liệu so sánh là : SInt, Int, Dint, USInt, UDInt, Real, LReal, String, Char,
Time, DTL, Constant.
4)Lệnh OK
L Tham số : IN
5)Lệnh NOT OK
Tham số : IN
L
Kiểu dữ liệu : Real, LReal
A
Lệnh NOT_OK kiểm tra tính không hợp lệ của toán
D
tử
L Tham số:
A EN : Bool
ENO : Bool
D
IN1 : SINT, INT, DINT, USINT, UINT, UDINT
Tham số :
Tham số :
-ENO = 0: kết quả nằm ngoài tầm giá trị của kiểu dữ
liệu
L Tham số :
1)Lệnh MOVE
L Tham số:
Tham số:
Công dụng : dùng để lấp đầy một vùng nhớ với nội
dung tại một vùng nhớ khác. Lệnh Fill block di
L
chuyển nội dung của một vùng nhớ tới một vùng
A
nhớ xác định. Hành động vận chuyển các biến sao
D chép theo hướng tăng dần
1)Lệnh CONV
Công dụng :
-Lệnh AND kết hợp các giá trị ngõ vào IN1 và IN2
theo các bit tương ứng theo phép AND logic, xuất
L
kết quả tại OUT
A - Lệnh OR kết hợp các giá trị ngõ vào IN1 và IN2
D theo các bit tương ứng theo phép OR logic, xuất
kết quả tại OUT
- Lệnh XOR kết hợp các giá trị ngõ vào IN1 và
IN2 theo các bit tương ứng theo phép XOR logic,
xuất kết quả tại OUT
L Công dụng : Đảo bit tín hiệu tại ngõ vào IN. Giá trị
A của những bit lấy bù sẽ được gửi tối ngõ ra
Công dụng :
L
-Lệnh SEL : Dựa vào tín hiệu ngõ vào G, lệnh SEL
A lựa chọn ngõ vào IN1 hoặc IN0 và di chuyển nội
dung của nó vào ngõ ra OUT.
D
+Nếu G = 0 OUT = IN0
+Nếu G = 1 OUT = IN1
-Lệnh MUX : Sao chép nội dung của một ngõ vào
xác định tới ngõ ra OUT. Nếu giá trị của tham số K
lớn hơn số ngõ vào hiện hữu thì nội dung của tham
số ELSE sẽ được sao chép tới ngõ ra OUT
Công dụng : Dịch chuyển nội dung của toán hạng tại
L
ngõ vào IN theo từng bit sang bên phải và truy xuất
A
kết quả ra ngõ ra OUT.
D
Thông số N để xác định số bit dịch chuyển
Công dụng : Xoay nội dung của một toán hạng tại
L ngõ vào IN theo từng bit về hướng bên phải và truy
Công dụng : Xoay nội dung của một toán hạng tại
L ngõ vào IN theo từng bit về hướng bên trái và truy
Chƣơng 1
Bộ điều khiển logic khả trình (PLC) S7-1200 mang lại tính linh hoạt và sức
mạnh để điều khiển nhiều thiết bị đa dạng hỗ trợ các yêu cầu về điều khiển tự động. Sự
kết hợp giữa thiết kế thu gọn, cấu hình linh hoạt và tập lệnh mạnh mẽ đã khiến cho S7-
1200 trở thành một giải pháp hoàn hảo dành cho việc điều khiển nhiều ứng dụng đa
dạng khác nhau.
Kết hợp một bộ vi xử lý, một bộ nguồn tích hợp, các mạch ngõ vào và mạch
ngõ ra trong một kết cấu thu gọn, CPU trong S7-1200 đã tạo ra một PLC mạnh mẽ.
Sau khi người dùng tải xuống một chương trình, CPU sẽ chứa mạch logic được yêu
cầu để giám sát và điều khiển các thiết bị nằm trong ứng dụng. CPU giám sát các ngõ
vào và làm thay đổi ngõ ra theo logic của chương trình người dùng, có thể bao gồm
các hoạt động như logic Boolean, việc đếm, định thì, các phép toán phức hợp và việc
truyền thông với các thiết bị thông minh khác.
Một số tính năng bảo mật giúp bảo vệ việc truy xuất đến cả CPU và chương
trình điều khiển:
Mỗi CPU cung cấp một sự bảo vệ bằng mật khẩu cho phép người dùng cấu hình
việc truy xuất đến các chức năng của CPU.
Người dùng có thể sử dụng chức năng “know-how protection” để ẩn mã nằm
trong một khối xác định.
CPU cung cấp một cổng PROFINET để giao tiếp qua một mạng PROFINET.
Các module truyền thông là có sẵn dành cho việc giao tiếp qua các mạng RS232 hay
RS485.
Các kiểu CPU khác nhau cung cấp một sự đa dạng các tính năng và dung lượng giúp
cho người dùng tạo ra các giải pháp có hiệu quả cho nhiều ứng dụng khác nhau.
Kích thước ảnh tiến trình 1024 byte ngõ vào (I) và 1024 byte ngõ ra (Q)
3 4 6
Các bộ đếm tốc độ cao
3 tại 100 kHz 3 tại 100 kHz 3 tại 100 kHz
Đơn pha
1 tại 30 kHz 3 tại 30 kHz
3 tại 80 kHz 3 tại 80 kHz 3 tại 80 kHz
Vuông pha
1 tại 20 kHz 3 tại 20 kHz
Họ S7-1200 cung cấp một số lượng lớn các module tín hiệu và bảng tín hiệu để
mở rộng dung lượng của CPU. Người dùng còn có thể lắp đặt thêm các module truyền
thông để hỗ trợ các giao thức truyền thông khác.
8 x DC In 8 x DC Out 8 x DC In / 8 x DC Out
8 x Relay Out 8 x DC In / 8 x Relay Out
Kiểu số 16 x DC In / 16 x DC Out
Module tín 16 x DC In 16 x DC Out
16 x DC In / 16 x Relay
hiệu (SM) 16 x Relay Out
Out
Kiểu 4 x Analog In 2 x Analog In 4 x Analog In / 2 x Analog
tương tự 8 x Analog In 4 x Analog In Out
Kiểu số _ _ 2 x DC In / 2 x DC Out
Bảng tín hiệu
Kiểu
(SB) _ 1 x Analog In _
tương tự
Module truyền thông (CM)
RS485
RS232
Một bảng tín hiệu (SB) cho phép người dùng thêm vào I/O cho CPU. Người
dùng có thể thêm một SB với cả I/O kiểu số hay kiểu tương tự. SB kết nối vào phía
trước của CPU.
Người dùng có thể sử dụng các module tín hiệu để thêm vào CPU các chức
năng. Các module tín hiệu kết nối vào phía bên phải của CPU.
Họ S7-1200 cung cấp các module truyền thông (CM) dành cho các tính năng bổ
sung vào hệ thống. Có 2 module truyền thông: RS232 và RS485.
Phần mềm STEP 7 Basic cung cấp một môi trường thân thiện cho người dùng
nhằm phát triển, chỉnh sửa và giám sát mạng logic được yêu cầu để điều khiển ứng
dụng, bao gồm các công cụ dành cho quản lý và cấu hình tất cả các thiết bị trong đề
án, như các thiết bị PLC hay HMI. STEP 7 Basic cung cấp hai ngôn ngữ lập trình
(LAD và FBD) để thuận tiện và có hiệu quả trong việc phát triển chương trình điều
khiển đối với ứng dụng, và còn cung cấp các công cụ để tạo ra và cấu hình các thiết bị
HMI trong đề án của người dùng.
Để giúp người dùng tìm ra thông tin cần thiết, STEP 7 Basic cung cấp một hệ
thống trợ giúp trực tuyến.
Để cài đặt STEP 7 Basic, người dùng cần đưa đĩa CD vào trong ổ CD-ROM
của máy tính. Trình thuật sĩ cài đặt sẽ khởi động một cách tự động và nhắc người dùng
trong suốt quá trình cài đặt.
Lƣu ý
Để cài đặt STEP 7 Basic trên một máy tính cá nhân dùng hệ điều hành
Windows 2000, Windows XP hay Windows Vista, người dùng cần phải đăng nhập với
quyền hạn Administrator.
1.5.1. Các kiểu xem khác nhau giúp công việc dễ dàng hơn.
Nhằm giúp gia tăng hiệu suất công việc, phần Totally Intergrated Automation
Portal cung cấp hai kiểu xem thiết lập công cụ khác nhau: một là thiết lập được định
hướng theo công việc, thiết lập này được tổ chức trong chức năng của các công cụ
(kiểu xem Portal), hai là kiểu xem được định hướng theo đề án gồm các phần tử bên
trong đề án (kiểu xem Project). Người dùng cần chọn kiểu xem nào giúp làm việc với
hiệu quả tốt nhất. Với một cú nhấp chuột,
người dùng có thể chuyển đổi giữa kiểu
xem Portal và kiểu xem Project.
Người dùng có thể dễ dàng xác định cách thức để tiến hành và nhiệm vụ để
chọn.
Nhanh chóng tìm kiếm tìm ra câu trả lời đến ngƣời dùng.
Để giúp người dùng giải quyết những phát sinh một cách nhanh chóng và có
hiệu quả, STEP 7 Basic cung cấp phần trợ giúp thông minh đến từng yêu cầu:
Một trường nhập vào cung cấp trợ giúp kiểu “mở ra” để hỗ trợ người dùng nhập
vào thông tin chính xác (các phạm vi và kiểu dữ liệu) đối với trường đó. Ví dụ,
nếu người dùng đã nhập một giá trị không hợp lệ, một hộp văn bản thông điệp
sẽ mở ra nhằm cung cấp phạm vị các giá trị hợp lệ.
Một số thủ thuật về công cụ trong giao diện (ví dụ đối với các lệnh) “xếp tầng”
nhằm cung cấp thông tin bổ sung. Các thủ thuật về công cụ này sẽ liên kết đến
các chủ đề xác định trong hệ thống thông tin trực tuyến (trợ giúp trực tuyến).
Thêm vào đó STEP 7 Basic có một hệ thống thông tin toàn diện miêu tả một
cách đầy đủ chức năng của các công cụ SIMATIC.
Các trường nhập vào gồm nhiều hộp thoại khác nhau và các thẻ nhiệm vụ sẽ
cung cấp phản hồi dưới dạng một hộp thông điệp, hộp này mở ra và cho người dùng
biết về phạm vi hay các kiểu của dữ liệu được yêu cầu.
Các phần tử trong giao diện phần mềm cung cấp các thủ
thuật về công cụ để giải thích chức năng của phần tử đó. Một vài
phần tử, ví dụ các biểu tượng “Open” hay “Save”, không yêu cầu
các thông tin bổ sung. Tuy nhiên, một số phần tử cung cấp cơ
chế để hiển thị phần miêu tả bổ sung về phần tử đó. Thông tin bổ
sung này “xếp tầng” trong một hộp từ thủ thuật về công cụ. (Một
mũi tên màu đen kế bên thủ thuật công cụ cho thấy rằng các thông tin thêm là có sẵn.)
Ở xung quanh một phần tử trong giao diện phần mềm hiển thị thủ thuật công
cụ. Cách đơn giản để hiển thị thông tin bổ sung là di chuyển con trỏ xung quanh phần
thủ thuật công cụ. Một số các thủ thuật công cụ còn cung cấp các kiên kết đến những
chủ đề có liên quan trong hệ thống thông tin. Việc nhấp chuột vào liên kết sẽ hiển thị
chủ đề xác định.
Phần mềm STEP 7 Basic cung cấp các thông tin trực tuyến toàn diện và hệ
thống trợ giúp miêu tả tất cả các sản phầm SIMATIC mà người dùng đã cài đặt. Hệ
thống thông tin còn bao gồm các thông tin tham khảo và các ví dụ. Để hiển thị hệ
thống thông tin, người dùng chọn từ các điểm truy xuất sau:
Từ kiểu xem Portal, lựa chọn cổng Start và nhấp chuột vào lệnh “Help”.
Từ kiểu xem Project, lựa chọn lệnh “Show help” trong trình đơn “Help”.
Từ một thủ thuật công cụ xếp tầng, nhấp vào liên kết để hiển thị thông tin bổ
sung về chủ đề đó.
Hệ thống thông tin sẽ mở ra trong một cửa sổ mà không che khuất vùng làm
việc.
Nhấp vào nút “Show/hide contents” trên hệ thống thông tin để hiển thị nội dung
và tách khỏi cửa sổ trợ giúp. Người dùng có thể thay đổi kích thước của cửa sổ. Sử
dụng các thẻ “Contents” hay “Index” để tìm kiếm xuyên suốt hệ thống thông tin theo
chủ đề hay từ khóa.
Lƣu ý
Nếu chương trình STEP 7 Basic được phóng lớn tối đa, việc nhấp vào nút
“Show/hide contents” sẽ không làm tách rời khỏi cửa sổ trợ giúp. Nhấp vào nút
“Restore down” để thực hiện việc tách rời. Sau đó người dùng có thể di chuyển và
thay đổi kích thước cửa sổ này.
Để in từ hệ thống thông tin, nhấp vào nút “Print” trên cửa sổ trợ giúp.
Hộp thoại “Print” cho phép người dùng lựa chọn các chủ đề để in. Hãy chắc
chắn rằng bảng này hiển thị một chủ đề. Người dùng sau đó có thể lựa chọn bất kỳ chủ
đề nào khác để in. Nhấp vào nút “Print” để gửi các chủ đề được chọn đến máy in.
Do sự trực quan hóa trở thành một thành phần tiêu chuẩn đối với hầu hết các
thiết kế máy móc, SIMATIC HMI Basic Panels cung cấp các thiết bị kiểu chạm màn
hình dành cho việc điều khiển thuật toán cơ bản và việc giám sát các nhiệm vụ. Tất cả
các bảng đều có cấp độ bảo vệ IP65 và chứng nhận CE, UL, cULus và NEMA 4x.
Chƣơng 2
CPU hỗ trợ các kiểu khối mã sau đây, cho phép ta tạo ra một cấu trúc hiệu quả
cho chương trình người dùng:
Khối tổ chức (OB) xác định cấu trúc chương trình. Một vài OB có trạng thái và
các sự kiện khởi động được thiết lập trước, nhưng ta cũng có thể tạo ra các OB
với các sự kiện khởi động tùy chỉnh.
Hàm (FC) và khối hàm (FB) chứa mã chương trình tương ứng với các nhiệm vụ
riêng biệt hay với sự kết hợp các thông số. Mỗi FC và FB cung cấp một tổ hợp
các thông số ngõ vào và ngõ ra dành cho việc chia sẻ dữ liệu với khối đang gọi.
FB cũng sử dụng một khối dữ liệu (đã gọi một DB tức thời) có liên quan để duy
trì trạng thái của các giá trị giữa sự thực thi mà có thể được sử dụng bởi các
khối khác trong chương trình.
Khối dữ liệu (DB) lưu trữ dữ liệu mà có thể được sử dụng bởi các khối chương
trình.
Sự thực thi chương trình người dùng bắt đầu với một hay nhiều hơn các khối tổ
chức (OB) khởi động tùy chọn, được thực thi một lần trong lúc đi vào chế độ RUN, và
được theo sau bởi một hay nhiều hơn các OB chu kỳ chương trình được thực thi một
cách tuần hoàn. OB cũng có thể kết hợp với một sự kiện ngắt, có thể là một sự kiện
ngắt tiêu chuẩn hay một sự kiện lỗi, và thực thi khi nào mà sự kiện tiêu chuẩn hay sự
kiện lỗi tương ứng xuất hiện.
Hàm (FC) hay khối hàm (FB) là một khối mã chương trình mà có thể được gọi
từ một OB hay từ một FC hay FB khác, xuống đến các cấp độ sau đây:
FC không liên kết với bất kỳ phần nào của khối dữ liệu (DB), trong khi FB
được gắn kết một cách trực tiếp đến một DB và sử dụng DB để chuyển tiếp các thông
số và lưu trữ các giá trị và các kết quả tạm thời.
Kích thước của chương trình người dùng, của dữ liệu và của sự cấu hình được
giới hạn bởi bộ nhớ nạp có sẵn và bộ nhớ làm việc trong CPU. Không có giới hạn nào
đối với số lượng các khối được hỗ trợ bên trong lượng bộ nhớ làm việc có sẵn.
Mỗi chu kỳ bao gồm việc ghi các ngõ ra, việc đọc các ngõ vào, việc thực thi các
lệnh của chương trình người dùng, và việc thực hiện bảo trì hệ thống hay tiến trình xử
lý nền sau. Chu kỳ được nói đến như là một chu kỳ quét hay một lần quét.
Bảng tín hiệu, các module tín hiệu và các module truyền thông được nhận biết
và được ghi lại chỉ trong khi nguồn được bật.
Lƣu ý
Việc lắp vào và tháo ra một bảng tín hiệu, các module tín hiệu và module truyền thông
khi có nguồn (thao tác nóng) thì không được hỗ trợ. Chỉ một ngoại lệ là thẻ nhớ
SIMATIC, có thể được lắp vào hay lấy ra trong khi CPU đang được cấp nguồn.
Dưới cấu hình mặc định, tất cả các điểm I/O kiểu số và kiểu tương tự được cập
nhật một cách đồng bộ với chu kỳ quét bằng cách sử dụng một vùng nhớ bên trong
được gọi là ảnh tiến trình. Ảnh tiến trình chứa một sự chụp nhanh các ngõ vào và ngõ
ra vật lý (các điểm I/O trên CPU, trên bảng tín hiệu và trên các module tín hiệu).
CPU ghi các ngõ ra từ vùng ngõ ra ảnh tiến trình đến các ngõ ra vật lý.
CPU đọc các ngõ vào chỉ ưu tiên cho sự thực thi chương trình người dùng và
lưu trữ các giá trị ngõ vào trong vùng ngõ vào ảnh tiến trình. Điều này đảm bảo
rằng các giá trị này sẽ vẫn giữ nguyên tính nhất quán trong suốt sự thực thi của
các lệnh người dùng.
CPU thực thi logic của các lệnh người dùng và cập nhật các giá trị ngõ ra trong
vùng ngõ ra ảnh tiến trình thay vì ghi đến các ngõ ra vật lý thực tế.
Chu trình này cung cấp logic nhất quán xuyên suốt sự thực thi của các lệnh
người dùng đối với trong một chu kỳ đã cho và ngăn chặn sự chập chờn của các điểm
ngõ ra, điều mà có thể thay đổi trạng thái nhiều lần trong vùng ngõ ra ảnh tiến trình.
Ta có thể chỉ định khi nào các điểm I/O kiểu số và kiểu tương tự được lưu trữ
trong ảnh tiến trình. Nếu ta chèn vào một module trong kiểu xem thiết bị, dữ liệu của
nó được đặt trong ảnh tiến trình của CPU S7-1200 (mặc định). CPU thực thi sự thay
đổi dữ liệu giữa module và vùng ảnh tiến trình một cách tự động trong suốt việc cập
nhật của ảnh tiến trình. Để gỡ bỏ các điểm kiểu số hay kiểu tương tự ra khỏi sự cập
nhật tự động ảnh tiến trình, ta lựa chọn thiết bị tương ứng trong Device configuration,
xem thẻ Properties, mở rộng nếu cần để đặt các điểm I/O mong muốn, và sau đó lựa
chọn “IO addresses/HW identifier”. Sau đó thay đổi mục nhập cho “Process image:”
từ “Cyclic PI” sang “---”. Để thêm các điểm trở lại sự cập nhật tự động ảnh tiến trình,
thay đổi mục lựa chọn này trở về “Cyclic PI”.
Ta có thể đọc các giá trị ngõ vào và ghi các giá trị ngõ ra ngay lập tức khi một
lệnh thực thi. Một lần đọc tức thời sẽ truy xuất đến trạng thái hiện thời của ngõ vào vật
lý và không cập nhật vùng ngõ vào ảnh tiến trình, bất chấp dù cho một điểm được cấu
hình để được lưu trữ trong ảnh tiến trình. Một lần ghi tức thời đến ngõ ra vật lý sẽ cập
nhật cả vùng ngõ ra ảnh tiến trình (nếu một điểm được cấu hình để được lưu trữ trong
ảnh tiến trình) và điểm ngõ ra vật lý. Ta nối thêm hậu tố “:P” vào địa chỉ I/O nếu muốn
chương trình truy xuất ngay lập tức dữ liệu I/O một cách trực tiếp từ điểm vật lý thay
vì sử dụng ảnh tiến trình.
Ta sử dụng các thuộc tính của CPU để cấu hình cách thức CPU khởi động sau
một chu kỳ cấp nguồn.
CPU thực hiện một sự khởi động lại nóng trước khi đi vào chế độ RUN. Sự
khởi động lại nóng sẽ đặt lại toàn bộ các bộ nhớ giữ lại về các giá trị khởi động mặc
định, nhưng vẫn giữ nguyên các giá trị hiện thời được lưu trữ trong bộ nhớ giữ lại.
Lƣu ý
CPU luôn luôn thực hiện một sự khởi động lại sau một việc tải xuống
Khi ta tải xuống một phần tử của đề án (như một khối chương tình, một khối dữ
liệu hay cấu hình phần cứng), CPU thực hiện một sự khởi động lại trong lần chuyển
tiếp kế tiếp sang chế độ RUN. Ngoài việc xóa đi các ngõ vào, khởi chạy các ngõ ra và
khởi chạy bộ nhớ không có khả năng giữ lại, sự khởi động lại còn khởi kích hoạt các
vùng nhớ có khả năng giữ lại.
Sau một khởi động lại theo sau sự tải xuống, tất cả các chuyển đổi STOP sang
RUN tuần tự cũng sẽ thực hiện một sự khởi động lại nóng (mà không kích hoạt bộ nhớ
có khả năng giữ).
CPU có 3 chế độ hoạt động: chế độ STOP, chế độ STARTUP và chế độ RUN.
Các LED trạng thái trên mặt trước của CPU biểu thị chế độ hiện thời của sự vận hành.
Trong chế độ STOP, CPU không thực thi chương trình nào, và ta có thể tải
xuống một đề án.
Trong chế độ STARTUP, các OB khởi động (nếu có) được thực thi một lần.
Các sự kiện ngắt không được xử lý cho đến pha khởi động của chế độ RUN.
Trong chế độ RUN, chu kỳ quét được thực thi một cách lặp lại. Các sự kiện
ngắt có thể xuất hiện và được thực thi tại bất kỳ điểm nào nằm trong pha chu kỳ
chương trình.
Ta không thể tải xuống một đề án trong khi đang ở chế độ RUN.
CPU hỗ trợ một sự khởi động lại nóng để đi vào chế độ RUN. Khởi động lại
nóng không bao gồm một sự đặt lại bộ nhớ. Tất cả các hệ thống không có khả năng giữ
và dữ liệu người dùng đều được khởi chạy tại một sự khởi động lại nóng. Dữ liệu
người dùng có khả năng giữ vẫn được giữ nguyên.
Một bộ nhớ đặt lại sẽ xóa tất cả các bộ nhớ làm việc, xóa các vùng nhớ có khả
năng giữ và không có khả năng giữ, và sao chép bộ nhớ nạp đến bộ nhớ làm việc. Một
sự đặt lại bộ nhớ không xóa đi bộ đệm chẩn đoán hay các giá trị được lưu vĩnh viễn
của địa chỉ IP.
Ta có thể chỉ định chế độ bật nguồn của CPU hoàn thành với phương pháp khởi
động lại bằng cách sử dụng phần mềm lập trình. Biểu tượng cấu hình này xuất hiện
trong mục Device Configuration đối với CPU đang trong khởi động. Khi nguồn được
bật, CPU thực hiện một tuần tự các kiểm tra chẩn đoán bật nguồn và khởi chạy hệ
thống. CPU sau đó sẽ đi vào chế độ bật nguồn tương ứng. Tất nhiên các lỗi được phát
hiện sẽ ngăn không cho CPU đi vào chế độ RUN. CPU hỗ trợ các chế độ bật nguồn
sau đây:
Chế độ STOP
Chuyển sang chế độ RUN sau một sự khởi động lại nóng
Chuyển sang chế độ trước đó sau một sự khởi động lại nóng
Ta có thể thay đổi chế độ vận hành hiện thời bằng cách sử dụng các lệnh
“STOP” hay “RUN” từ các công cụ trực tuyến của phần mềm lập trình. Ta cũng có thể
bao gồm một lệnh STP trong chương trình để chuyển CPU về chế độ STOP. Điều này
cho phép ta dừng sự thực thi chương trình dựa trên logic lập trình.
Trong chế độ STOP, CPU không thực thi chương trình người dùng, và các cập
nhật tự động của ảnh tiến trình sẽ không xuất hiện.
Trong chế độ RUN, CPU thực hiện các tác vụ được thể hiện như trong hình sau
đây:
STARTUP
B Khởi chạy các ngõ ra cả với giá trị cuối cùng hay giá trị thay thế.
D Sao chép trạng thái của các ngõ vào vật lý đến vùng nhớ I.
E Lưu trữ bất kỳ các sự kiện ngắt nào vào trong thứ tự để xử lý trong chế độ RUN.
F Kích hoạt việc ghi vùng nhớ Q đến các ngõ ra vật lý.
RUN
Sao chép trạng thái các ngõ vào vật lý đến vùng nhớ I.
Xử lý các ngắt và truyền thông trong suốt bất kỳ phần nào của chu kỳ quét.
Khi trạng thái hoạt động thay đổi từ STOP sang RUN, CPU xóa đi các ngõ vào
ảnh tiến trình, khởi chạy các ngõ ra ảnh tiến trình và thực thi các OB khởi động. Bất
kỳ việc đọc nào truy xuất đến các ngõ vào ảnh tiến trình bằng các lệnh trong các OB
khởi động sẽ đọc giá trị zero hơn là giá trị ngõ vào vật lý hiện thời. Do vậy, để đọc
trạng thái hiện thời của một ngõ vào vật lý trong suốt chế độ khởi động, ta phải thực
hiện một việc đọc tức thời. Các OB khởi động và bất kỳ các FC và FB nào có liên
quan sẽ được thực thi tiếp theo. Nếu có nhiều hơn 1 OB khởi động tồn tại, mỗi OB đó
sẽ được thực thi theo thứ tự số hiệu OB, trong đó số hiệu OB thấp nhất được thực thi
đầu tiên.
Mỗi OB khởi động bao gồm thông tin khởi động giúp ta xác định tính hợp lệ
của các dữ liệu lưu giữ và của đồng hồ giờ trong ngày. Ta có thể lập trình các lệnh bên
trong các OB khởi động để kiểm tra các giá trị khởi động này và để thực hiện thao tác
thích hợp. Các vùng khởi động sau đây được hỗ trợ bởi các OB khởi động:
LostRetentive Bool Bit này đúng nếu các vùng lưu trữ dữ liệu giữ đã bị mất
Bit này đúng nếu đồng hồ giờ trong ngày (Real time
LostRTC Bool
Clock) đã bị mất
CPU còn thực hiện các tác vụ sau đây trong suốt quá trình khởi động:
Các ngắt được sắp thứ tự nhưng không được thực thi trong suốt pha khởi động
Không có việc giám sát thời gian chu trình nào được thực hiện trong suốt pha
khởi động
Sự cấu hình làm thay đổi các module HSC, PWM và PtP đều có thể được thực
hiện trong lúc khởi động
Sự vận hành thực tế của các module HSC, PWM và PtP chỉ xuất hiện trong chế
độ RUN
Sau khi sự thực thi của các OB khởi động đã hoàn thành, CPU đi vào chế độ
RUN và thực thi các tác vụ điều khiển trong một chu kỳ quét liên tiếp.
Đối với mỗi chu kỳ quét, CPU ghi các ngõ ra, đọc các ngõ vào, thực thi chương
trình người dùng, cập nhật các module truyền thông, thực hiện các công việc nội dịch
(housekeeping) và đáp ứng đến các sự kiện ngắt của người dùng và các yêu cầu truyền
thông. Các yêu cầu truyền thông được xử lý một cách định kỳ xuyên suốt quá trình
quét.
Các hoạt động này (ngoại trừ các sự kiện ngắt của người dùng) được thực hiện
thường xuyên và theo một trật tự tuần tự. Các sự kiện ngắt của người dùng được kích
hoạt sẽ được phục vụ với mức ưu tiên theo trật tự mà chúng xuất hiện.
Hệ thống đảm bảo rằng chu kỳ quét sẽ được hoàn tất trong một chu kỳ thời gian
được gọi là thời gian chu trình tối đa, nếu không một sự kiện lỗi thời gian sẽ được sinh
ra.
Mỗi chu kỳ quét bắt đầu bằng việc tìm kiếm các giá trị hiện thời của các ngõ ra
kiểu số hay kiểu tương tự từ ảnh tiến trình và sau đó ghi chúng đến các ngõ ra
vật lý của CPU, các module SB và SM được cấu hình cho việc cập nhật I/O tự
động (cấu hình mặc định). Khi một ngõ ra vật lý được truy xuất bởi một lệnh,
cả ảnh tiến trình ngõ ra và bản thân ngõ ra vật lý đều được cập nhật.
Chu kỳ quét tiếp tục bằng việc đọc các giá trị hiện thời của các ngõ vào kiểu số
hay kiểu tương tự từ CPU, các module SB, SM được cấu hình cho việc cập nhật
I/O tự động (cấu hình mặc định), và sau đó ghi các giá trị này đến ảnh tiến
trình. Khi một ngõ vào vật lý được truy xuất bởi một lệnh, giá trị của ngõ vào
vật lý được truy xuất, nhưng ảnh tiến trình ngõ vào không được cập nhật.
Sau khi đọc các ngõ vào, chương trình người dùng được thực thi từ lệnh đầu
tiên cho đến lệnh cuối cùng. Điều này bao gồm tất cả các OB chu kỳ chương
trình cộng với tất cả các FC và FB có liên quan của chúng. Các OB chu kỳ
chương tình được thực thi theo trật tự của số hiệu OB, trong đó số hiệu OB thấp
nhất được thực thi trước tiên.
Việc xử lý các truyền thông xuất hiện một cách định kỳ trong suốt quá trình
quét, có thể ngắt sự thực thi chương trình người dùng.
Các kiểm tra tự chẩn đoán bao gồm cả các kiểm tra định kỳ của hệ thống và các
kiểm tra trạng thái module I/O.
Các ngắt có thể xuất hiện trong suốt bất kỳ phần nào của chu kỳ quét, và được
điều khiển theo sự kiện. Khi một sự kiện xuất hiện, CPU ngắt chu kỳ quét và gọi OB
đã được cấu hình để thực thi sự kiện đó. Sau khi OB hoàn thành việc thực thi sự kiện,
CPU khôi phục lại sự thực thi của chương trình người dùng tại điểm ngắt.
Các OB điều khiển sự thực thi của chương trình người dùng. Mỗi OB phải có
một số hiệu OB duy nhất. Một số số hiệu OB mặc định được đảo ngược dưới giá trị
200. Các OB khác phải được đánh số từ 200 hay lớn hơn.
Các sự kiện riêng biệt trong CPU kích hoạt sự thực thi của một khối tổ chức.
Các OB không thể gọi lẫn nhau hay được gọi từ một FC hay FB. Chỉ có một sự kiện
khởi động, như là một ngắt chẩn đoán hay một khoảng cách thời gian, là có thể khởi
động sự thực thi của một OB. CPU xử lý các OB theo các lớp ưu tiên tương ứng của
chúng, trong đó các OB có mức ưu tiên cao hơn được xử lý trước các OB có mức ưu
tiên thấp hơn. Lớp ưu tiên thấp nhất là 1 (đối với chu kỳ chương trình chính), và lớp
ưu tiên cao nhất là 27 (đối với các ngắt lỗi thời gian).
Các OB chu kỳ chương trình thực thi một cách tuần hoàn trong khi CPU đang ở
chế độ RUN. Khối chính của chương trình là một OB chu kỳ chương trình. Đây
là nơi mà ta đặt các lệnh điều khiển chương trình và cũng là nơi ta gọi các khối
người dùng bổ sung. Nhiều OB chu kỳ chương trình được cho phép và được
thực thi theo thứ tự bằng số. OB 1 là mặc định. Các OB chu kỳ chương trình
khác phải được nhận dạng là OB 200 hay lớn hơn.
Các OB trì hoãn thời gian thực thi tại một khoảng thời gian dừng được xác định
sau một sự kiện, được cấu hình hình bởi lệnh ngắt khởi động (SRT_DINT).
Thời gian trì hoãn được xác định trong thông số ngõ vào của lệnh mở rộng
CHƢƠNG 2: CÁC KHÁI NIỆM VỀ PLC Trang 2 - 11
www.TuDongHoaVietNam.net
SRT_DINT. Một OB trì hoãn thời gian ngắt sự thực thi chương trình theo chu
trình chuẩn khi một thời gian trì hoãn được định trước đã trôi qua. Ta có thể cấu
hình tối đa 4 sự kiện ngắt trì hoãn thời gian tại bất kỳ thời gian nào đã cho, với
một OB được cho phép cho mỗi sự kiện trì hoãn thời gian được cấu hình. OB trì
hoãn thời gian phải là từ OB 200 trở lên.
Các OB ngắt theo chu trình thực thi tại mỗi khoảng thời gian dừng được xác
định. Chúng sẽ ngắt sự thực thi chương trình theo chu trình tại khoảng thời gian
do người dùng định trước, ví dụ như mỗi 2 giây. Ta có thể cấu hình tối đa 4 sự
kiện ngắt theo chu trình, với một OB được cho phép cho mỗi sự kiện ngắt theo
chu trình được cấu hình. OB này phải là OB 200 trở lên.
Các OB ngắt phần cứng thực thi khi sự kiện phần cứng có liên quan xuất hiện,
bao gồm các ngưỡng tăng và giảm trên các ngõ vào số tích hợp và các sự kiện
HSC. Một OB ngắt phần cứng sẽ ngắt sự thực thi chương trình theo chu trình
chuẩn theo phản ứng đến một tín hiệu từ sự kiện phần cứng. Ta xác định các sự
kiện trong các thuộc tính của cấu hinh phần cứng. Một OB được cho phép cho
mỗi sự kiện phần cứng được cấu hình. OB này phải là OB 200 trở lên.
Các OB ngắt lỗi thời gian thực thi ki một lỗi thời gian được phát hiện. Một OB
ngắt lỗi thời gian sẽ ngắt sự thực thi chương trình theo chu trình chuẩn nếu thời
gian chu trình tối đa đã bị vượt quá. Thời gian chu trình tối đa được xác định
trong các thuộc tính của PLC. Chỉ có OB 80 là OB được hỗ trợ cho các sự kiện
lỗi thời gian. Ta có thể cấu hình thao tác để thực hiện khi không có mặt OB 80:
hoặc bỏ qua lỗi hoặc chuyển về STOP.
Các OB ngắt lỗi chẩn đoán thực thi khi một lỗi chẩn đoán được phát hiện và
được báo cáo lại. Một OB chẩn đoán sẽ ngắt sự thực thi chương trình theo chu
trình chuẩn nếu một module có khả năng chẩn đoán phát hiện ra một lỗi (nếu sự
ngắt lỗi chẩn đoán đã được khởi động cho module). Chỉ có OB 82 là OB được
hỗ trợ cho sự kiện lỗi chẩn đoán. Nếu không có OB chẩn đoán nào trong
chương trình, ta có thể cấu hình CPU để hoặc bỏ qua lỗi hoặc chuyển về STOP.
2.1.2. Các mức ưu tiên và sự sắp xếp việc thực thi sự kiện.
Việc xử lý của CPU được điều khiển bởi các sự kiện. Các sự kiện kích hoạt các
OB ngắt để được thực thi. OB ngắt cho một sự kiện được xác định trong suốt quá trình
tạo ra khối, trong mục Device Configuration hay với một lệnh ATTACH hoặc
DETACH. Một số sự kiện xảy ra trên một nền tảng có hệ thống giống như chu kỳ
chương trình hay các sự kiện theo chu trình. Các sự kiện khác chỉ xảy ra trong một
thời gian ngắn, giống như sự kiện khởi động và các sự kiện trì hoãn thời gian. Một số
sự kiện xảy ra khi có một sự thay đổi được kích hoạt bởi phần cứng, ví dụ như một sự
kiện ngưỡng trên một điểm ngõ vào hay một sự kiện bộ đếm tốc độ cao. Ngoài ra còn
có các sự kiện như sự kiện lỗi chẩn đoán và sự kiện lỗi thời gian chỉ xảy ra khi có một
lỗi. Các mức ưu tiên sự kiện, các nhóm và thứ tự ưu tiên được sử dụng để xác định trật
tự xử lý đối với các OB ngắt sự kiện.
Sự kiện chu kỳ chương trình xảy ra một lần trong suốt mỗi chu kỳ chương trình
(hay chu kỳ quét). Trong suốt chu kỳ chương trình, CPU ghi các ngõ ra, đọc các ngõ
vào và thực thi các OB chu kỳ chương trình. Sự kiện chu kỳ chương trình là cần thiết
và luôn luôn được kích hoạt. Ta có thể không có các OB chu kỳ chương trình, hoặc có
nhiều OB được lựa chọn cho mỗi sự kiện chu kỳ chương trình. Sau khi sự kiện chu kỳ
chương trình được kích hoạt, OB chu kỳ chương trình được đánh số thấp nhất (thường
là OB 1) sẽ được thực thi. Các OB chu kỳ chương trình khác được thực thi một cách
tuần tự, theo trật tự được đánh số, chỉ trong chu kỳ chương trình.
Các sự kiện ngắt theo chu trình cho phép ta cấu hình sự thực thi của một OB
ngắt tại một khoảng thời gian được cấu hình. Khoảng thời gian được cấu hình khi OB
được tạo ra và được lựa chọn để trở thanh một OB ngắt theo chu trình. Các sự kiện
theo chu trình sẽ ngắt chu kỳ chương trình và thực thi OB ngắt theo chu trình (sự kiện
theo chu trình nằm ở nhóm mức ưu tiên cao hơn so với sự kiện chu kỳ chương trình).
Chỉ một OB ngắt theo chu trình là có thể được gắn kèm đến một sự kiện theo chu
trình. CPU hỗ trợ 4 sự kiện ngắt theo chu trình. Các OB ngắt theo chu trình có một
thuộc tính dịch chuyển pha, vì vậy sự thực thi của các ngắt theo chu trình trong chu kỳ
thời gian giống nhau có thể được dịch chỉnh từ một thời gian khác bởi một độ dịch
chỉnh pha.
Sự kiện khởi động xảy ra một lần trên sự chuyển đổi từ STOP sang RUN và
làm cho OB khởi động được thực thi. Nhiều OB có thể được lựa chọn cho sự kiện khởi
động. Các OB khởi động được thực thi theo thứ tự đánh số.
Các sự kiện ngắt trì hoãn thời gian cho phép ta cấu hình sự thực thi của một OB
ngắt sau khi một thời gian trì hoãn đã trôi qua. Thời gian trì hoãn được xác định với
lệnh SRT_DINT. Các sự kiện trì hoãn thời gian sẽ ngắt chu kỳ chương trình để thực
thi OB ngắt trì hoãn thời gian. Chỉ có một OB ngắt trì hoãn thời gian là có thể được
gắn kèm vào một sự kiện trì hoãn thời gian. CPU hỗ trợ 4 sự kiện trì hoãn thời gian.
Các sự kiện ngắt phần cứng được kích hoạt bởi một sự thay đổi trong phần
cứng, ví dụ một ngưỡng tăng hay ngưỡng giảm trên một điểm ngõ vào, hay một sự
kiện HSC. Có thể có một OB ngắt được lựa chọn cho mỗi sự kiện ngắt phần cứng. Các
sự kiện phần cứng được cho phép trong phần Device configuration. Các OB được xác
định cho sự kiện trong Device configuration hay với một lệnh ATTACH trong chương
trình người dùng. CPU hỗ trợ một số sự kiện ngắt phần cứng. Các sự kiện chính xác
được dựa trên kiểu CPU và số lượng các điểm ngõ vào.
Các sự kiện ngắt lỗi chẩn đoán và ngắt lỗi thời gian được kích hoạt khi CPU
phát hiện một lỗi. Các sự kiện này nằm ở nhóm mức ưu tiên cao hơn so với các sự kiện
ngắt khác và có thể ngắt sự thực thi của các sự kiện trì ngắt phần cứng, ngắt theo chu
trình và ngắt trì hoãn thời gian. Một OB ngắt có thể được xác định cho mỗi sự kiện
trong các sự kiện ngắt lỗi chẩn đoán và ngắt lỗi thời gian.
Nhận biết các mức ƣu tiên và xếp hàng thực thi sự kiện
Số lượng các sự kiện chờ (xếp hàng) từ một nguồn đơn lẻ được giới hạn bằng
cách sử dụng một hàng khác cho mỗi kiểu sự kiện. Dưới sự đạt đến giới hạn của các sự
kiện chờ đối với một kiểu sự kiện đã cho, sự kiện tiếp theo sẽ bị mất.
Mỗi sự kiện CPU có một mức ưu tiên liên quan, và các mức ưu tiên được phân
loại vào trong các nhóm ưu tiên. Bảng sau đây tóm lược các độ sâu xếp hàng, các
nhóm ưu tiên và các mức ưu tiên cho các sự kiện CPU được hỗ trợ.
Lƣu ý
Ta không thể thay đổi việc gán mức ưu tiên hay nhóm ưu tiên và độ sâu xếp hàng
Thông thường, các sự kiện được phục vụ theo thứ tự mức ưu tiên (mức ưu tiên
cao nhất trước tiên). Các sự kiện có cùng mức ưu tiên sẽ được phục vụ trên cơ sở “đến
trước, phục vụ trước”.
Sự kiện
1 sự kiện 2xMaxCycle Không có OB
2xMaxCycle - 3 27
time được gọi
time
1
Các trường hợp đặc biệt đối với sự kiện khởi động:
Sự kiện khởi động và sự kiện chu kỳ chương trình sẽ không bao giờ xuất hiện tại cùng
một thời điểm vì sự kiện khởi động sẽ hoàn thành trước khi sự kiện chu kỳ chương trình
được bắt đầu (điều này được điều khiển bởi hệ điều hành).
Không có sự kiện nào được cho phép để ngắt sự kiện khởi động. Các sự kiện xuất hiện
trong suốt sự kiện khởi động thay vào đó được xếp hàng để xử lý sau, sau khi sự kiện
khởi động được hoàn tất.
Sau khi sự thực thi của một OB đã bắt đầu, việc xử lý OB không thể bị ngắt
bằng sự xuất hiện của một sự kiện khác từ cùng một nhóm ưu tiên hay thấp hơn. Các
sự kiện nào được xếp hàng để xử lý sau sẽ cho phép OB hiện thời hoàn tất.
Tuy nhiên, sự kiện từ một nhóm ưu tiên cao hơn sẽ ngắt OB hiện thời, và CPU
sau đó sẽ thực thi OB của sự kiện có mức ưu tiên cao hơn. Sau khi OB có mức ưu tiên
cao hơn hoàn tất, CPU thực thi các OB của các sự kiện khác được xếp hàng trong
nhóm ưu tiên cao này, dựa trên mức ưu tiên nằm trong nhóm đó. Khi không có sự kiện
nào đang chờ (xếp hàng) trong nhóm ưu tiên cao hơn này, CPU sẽ trở lại đến nhóm ưu
tiên thấp hơn và khôi phục lại việc xử lý của OB đã bị xóa rỗng trước, tại điểm mà
việc xử lý của OB đó đã bị ngắt.
Độ trễ ngắt
Độ trễ sự kiện ngắt (thời gian tính từ thông báo của CPU rằng một sự kiện đã
xuất hiện cho đến khi CPU bắt đầu việc thực thi của lệnh đầu tiên trong OB phục vụ sự
kiện) là xấp xỉ 210 micro giây, cho biết rằng một OB chu kỳ chương trình chỉ là
chương trình con phục vụ sự kiện kích hoạt tại thời điểm của sự kiện ngắt.
Sự xuất hiện của bất kỳ trong một số các điều kiện lỗi thời gian khác nhau, gây
ra kết quả là một sự kiện lỗi thời gian. Các sự kiện lỗi thời gian sau đây là được hỗ trợ:
Điều kiện thời gian chu trình tối đa bị vượt quá xảy ra khi chu kỳ chương trình
không hoàn tất trong khoảng thời gian chu trình quét tối đa được định trước.
Điều kiện OB được yêu cầu không thể được khởi động xảy ra khi một OB được
yêu cầu bởi một ngắt theo chu trình hay một ngắt trì hoãn thời gian, nhưng OB được
yêu cầu đó lại vừa mới đang được thực thi.
Điều kiện tràn ra trong hàng chờ xảy ra khi các ngắt xuất hiện nhanh hơn so với
tốc độ chúng được xử lý. Số lượng các sự kiện chờ (xếp hàng) được giới hạn bằng
cách sử dụng một hàng chờ khác nhau cho mỗi kiểu sự kiện. Nếu một sự kiện xuất
hiện khi hàng chờ tương ứng đang đầy, một sự kiện lỗi thời gian được sinh ra.
Tất cả các sự kiện lỗi thời gian sẽ kích hoạt sự thực thi của OB 80 nếu có. Nếu
OB 80 không tồn tại, CPU sẽ bỏ qua lỗi này. Nếu hai điều kiện thời gian chu trình tối
đa bị vượt quá xuất hiện trong cùng một chu kỳ chương trình mà không đặt lại bộ định
thì chu kỳ, CPU sẽ chuyển về chế độ STOP, bất chấp OB 80 có tồn tại hay không.
OB 80 bao gồm các thông tin khởi động giúp ta xác định sự kiện và OB nào đã
sinh ra lỗi. Ta có thể lập trình tập lệnh bên trong OB 80 để kiểm tra các giá trị khởi
động này và để thực hiện thao tác thích hợp. Các vùng khởi động sau đây được hỗ trợ
bởi OB 80:
csg_OBnr ON_ANY Số hiệu của OB đã đang được thực thi khi lỗi xuất hiện
Không có OB 80 ngắt lỗi thời gian nào hiện diện khi ta tạo ra một đề án mới.
Nếu muốn, ta thêm một OB 80 ngắt lỗi thời gian vào đề án bằng cách nhấp đôi chuột
vào “Add new block” phía dưới “Program blocks”, sau đó chọn “Organization block”
và “Time error interrupt”.
Một vài thiết bị có khả năng phát hiện và báo cáo lại các lỗi chẩn đoán. Sự xuất
hiện hay việc gỡ bỏ của bất kỳ trong một số các điều kiện lỗi chẩn đoán khác nhau sẽ
gây ra một sự kiện lỗi chẩn đoán. Các lỗi chẩn đoán sau đây là được hỗ trợ:
Tất cả các sự kiện lỗi chẩn đoán sẽ kích hoạt sự thực thi của OB 82 nếu nó tồn
tại. Nếu OB 82 không tồn tại, CPU sau đó sẽ bỏ qua lỗi. Không có OB 82 ngắt lỗi
chẩn đoán nào hiện diện khi ta tạo ra một đề án. Nếu muốn, ta thêm một OB 82 ngắt
lỗi chẩn đoán vào đề án bằng cách nhấp đôi chuột vào “Add new block” phía dưới
“Program blocks”, sau đó chọn “Organization block” và “Diagnostic error interrupt”.
OB 82 bao gồm các thông tin khởi động giúp ta xác định khi nào sự kiện là dựa
vào sự xuất hiện hay sự gỡ bỏ một lỗi, và thiết bị cùng với kênh mà báo cáo lại lỗi đó.
Ta có thể lập trình tập lệnh bên trong OB 82 để kiểm tra các giá trị khởi động này và
để thực hiện thao tác thích hợp. Các vùng khởi động sau đây được hỗ trợ bởi OB 82:
Nhận dạng phần cứng của thiết bị hay của hàm cho đến
laddr HW_ANY
khi nó báo cáo lại lỗi
multierror BOOL Nhận giá trị TRUE nếu có nhiều hơn một lỗi hiện diện
Bit 4 của IO_state biểu thị khi nào sự kiện là do bởi sự xuất hiện hay sự gỡ bỏ
của một lỗi. Bit 4 sẽ bằng 1 nếu một lỗi hiện diện (ví dụ: đứt dây nối) và bằng 0 nếu lỗi
không hiện diện.
Ngõ vào ladder chứa bộ định danh phần cứng (HW ID) của thiết bị hay các đơn
vị chức năng trả về lỗi. HW ID được gán một cách tự động khi các thành phần được
lắp vào thiết bị hay kiểu xem mạng và xuất hiện trong thẻ Constants của các thẻ ghi
PLC. Một tên gọi còn được gán một cách tự động cho HW ID. Các mục nhập này
trong thẻ Constants của các thẻ ghi PLC là không thể thay đổi.
Số hiệu kênh bắt đầu tại giá trị 0 đối với điểm ngõ vào đầu tiên (kiểu tương tự
hay kiểu số) và bắt đầu tại gia trị 64 đối với điểm ngõ ra đầu tiên (kiểu tương tự hay
kiểu số). Những sự dịch chỉnh khác nhau là cần thiết để phân biệt các ngõ vào với các
ngõ ra trong sự kiện mà thiết bị chứa cả hai. Nếu một lỗi ảnh hưởng đến thiết bị hoàn
chỉnh và đơn vị chức năng, ví dụ như không có nguồn, thì bit có trọng số lớn nhất của
ký tự số hiệu kênh sẽ được đặt (số hiệu kênh 32768).
Thời gian chu trình là thời gian mà hệ điều hành CPU cần thiết để thực thi pha
theo chu kỳ của chế độ RUN. CPU cung cấp cả hai phương pháp giám sát thời gian
chu trình:
Việc giám sát chu trình quét bắt đầu sau khi sự kiện khởi động hoàn tất. Sự cấu
hình cho chức năng này xuất hiện dưới mục “Device Configuration” của CPU trong
“Cycle time”.
CPU luôn luôn giám sát chu kỳ quét và phản ứng lại nếu thời gian chu trình
quét tối đa bị vượt quá. Nếu thời gian chu trình quét tối đa bị vượt quá, một lỗi được
sinh ra và được xử lý theo một trong hai cách sau:
Nếu không có OB 80 ngắt lỗi thời gian hiện diện, CPU sẽ sinh ra một lỗi và tiếp
tục thực thi chương trình người dùng.
Nếu một OB 80 ngắt lỗi thời gian hiện diện, CPU sẽ thực hiện OB 80.
Lệnh RE_TRIGR (kích hoạt lại việc giám sát thời gian chu trình) cho phép ta
đặt lại bộ định thì đo thời gian chu trình. Tuy nhiên lệnh này chỉ có tác dụng nếu nó
được thực thi trong một OB chu kỳ chương trình; lệnh RE_TRIGR sẽ bị bỏ qua nếu
được thực thi trong OB 80. Nếu thời gian chu trình quét tối đa bị vượt quá hai lần
trong cùng một chu kỳ chương trình mà không có sự thực thi lệnh RE_TRIGR giữa cả
hai lần, CPU sau đó sẽ chuyển về STOP ngay lập tức. Việc sử dụng các sự thực thi lặp
lại của lệnh RE_TRIGR có thể tạo ra một vòng lặp vô tận hay một chu trình quét rất
dài.
Thông thường, chu trình quét thực thi nhanh nhất có thể và chu trình quét kế
tiếp bắt đầu ngay khi chu trình quét hiện thời hoàn tất. Phụ thuộc theo chương trình
người dùng và các tác vụ truyền thông, thời gian chu trình của mỗi chu trình quét có
thể khác nhau giữa các chu trình quét. Để loại bỏ sự khác nhau này, CPU hỗ trợ một
thời gian chu trình quét tối thiểu cố định (còn được gọi là chu trình quét cố định) tùy
chọn. Khi chức năng tùy chọn này được kích hoạt và một thời gian chu trình quét tối
thiểu cố định được cung cấp theo mili giây, CPU sẽ duy trì thời gian chu trình tối thiểu
trong khoảng ± 1 ms đối với sự hoàn thành của mỗi chu trình quét CPU.
Trong một sự kiện mà CPU hoàn tất chu trình quét bình thường trong khoảng
thời gian nhỏ hơn thời gian chu trình quét tối thiểu được định trước, CPU sẽ sử dụng
thời gian bổ sung của chu trình quét để thực hiện các chẩn đoán thời gian vận hành
và/hoặc để xử lý các yêu cầu truyền thông. Theo cách này CPU luôn luôn mất một
lượng thời gian cố định để hoàn tất một chu trình quét.
Trong một sự kiện mà CPU không thể hoàn tất chu trình quét trong khoảng thời
gian chu trình tối thiểu được xác định, CPU sẽ hoàn tất chu trình quét một cách bình
thường (bao gồm cả việc xử lý truyền thông) và không tạo ra bất kỳ phản ưng hệ thống
nào như là kết quả của việc vượt quá thời gian quét tối thiểu. Bảng sau đây xác định
phạm vi và các mặc định đối với các chức năng giám sát thời gian chu trình:
Thời gian chu trình quét tối thiểu cố định 1 đến thời gian chu trình quét tối
2
Bị vô hiệu
đa
1
Thời gian chu trình quét tối đa luôn luôn được kích hoạt. Ta cấu hình một thời gian
chu trình giữa 1 ms đến 6000 ms. Mặc định là 150 ms.
2
Thời gian chu trình quét tối thiểu là tùy chọn, và theo mặc định nó bị vô hiệu hóa.
Nếu cần thiết ta cấu hình một thời gian chu trình giữa 1 ms và thời gian chu trình quét
tối đa.
Ta sử dụng các thuộc tính của CPU trong Device Configuration để cấu hình các
thông số sau đây:
Thời gian chu trình: ta nhập vào một thời gian chu trình quét tối đa. Cũng có thể
nhập vào một thời gian chu trình quét tối thiểu cố định.
Nạp truyền thông: ta có thể cấu hình một giá trị phần trăm của thời gian chuyên
dụng cho các tác vụ truyền thông.
Sự quản lý bộ nhớ
CPU cung cấp các vùng nhớ sau đây để lưu trữ chương trình người dùng, dữ
liệu và cấu hình:
Bộ nhớ nạp là một vùng lưu trữ không biến đổi dành cho chương trình người
dùng, dữ liệu và cấu hình. Khi một đề án được tải xuống vào CPU, trước tiên nó
được lưu trữ trong vùng bộ nhớ nạp. Vùng này được đặt trong cả trong một thẻ
nhớ (nếu có) hay trong CPU. Vùng nhớ không biến đổi này vẫn được duy trì
khi mất nguồn điện. Thẻ nhớ hỗ trợ một không gian lưu trữ lớn hơn vùng lưu
trữ được tích hợp trong CPU.
Bộ nhớ làm việc là một vùng lưu trữ dành cho một vài phần tử của đề án người
dùng trong khi đang thực thi chương trình người dùng. CPU sao chép một số
phần tử trong đề án từ bộ nhớ nạp vào trong bộ nhớ làm việc. Bộ nhớ biến đổi
này bị mất đi khi mất nguồn, và nó được lưu trữ bởi CPU khi nguồn được khôi
phục lại.
Bộ nhớ giữ lại là một vùng lưu trữ không biến đổi dành cho một số lượng giới
hạn các giá trị bộ nhớ làm việc. Vùng bộ nhớ giữ lại được sử dụng để lưu trữ
các giá trị của các vị trí nhớ dành cho người dùng được chọn trong suốt thời
gian không có nguồn. Khi nguồn được bật trở lại, CPU có đủ thời gian giữ lại
để duy trì các giá trị của một số lượng giới hạn các vị trí nhớ đặc biệt. Các giá
trị giữ lại này sau đó được khôi phục lại khi nguồn được bật.
Để hiển thị việ sử dụng bộ nhớ đối với đề án hiện thời, nhấp chuột phải vào
CPU (hay một trong các khối của CPU) và lựa chọn “Resources” từ ngữ cảnh. Để hiển
thị việc sử dụng của CPU hiện thời, nhấp đôi chuột lên “Online and diagnostics”, mở
rộng phần “Diagnostics” và lựa chọn “Memory”.
Việc mất đi dữ liệu sau khi nguồn gặp sự cố có thể được tránh bằng cách thao tác các
dữ liệu chắc chắn theo dạng lưu giữ. Các dữ liệu sau đây có thể được cấu hình để được
lưu giữ:
Bộ nhớ bit (M): ta có thể xác định độ rộng chính xác của bộ nhớ đối với mỗi bộ
nhớ bit trong bảng thẻ ghi PLC hay trong danh sách gán. Bộ nhớ bit lưu giữ
luôn luôn khởi đầu tại MB0 và chạy lên liên tiếp đến một số lượng xác định các
byte. Ta xác định giá trị này từ bảng thẻ ghi PLC hay trong danh sách gán bằng
cách nhấp chuột lên biểu tượng “Retain”. Nhập vào số lượng các byte M để giữ
lại khởi đầu tại MB0.
Các thẻ ghi trong một khối hàm (FB): nếu một khối hàm được tạo ra với hộp
“Symbolic access only” được chọn, giao diện trình soạn thảo cho FB này sau đó
sẽ chứa một cột “Retain”. Trong cột này, ta có thể lựa chọn cả “Retain” hay
“Non-retain” một cách riêng biệt cho mỗi thẻ ghi. Một DB tức thời đã được tạo
ra khi FB này được đặt trong trình soạn thảo sẽ cho thấy cột giữ lại này, nhưng
chỉ cho mục đích hiển thị; ta không thể thay đổi trạng thái lưu giữ từ trong trình
soạn thảo giao diện DB tức thời cho một FB mà FB đó đã được cấu hình là
“Symbolic access only”.
Nếu một FB đã được tạo ra với hộp “Symbolic access only” được hủy lựa chọn,
trình soạn thảo giao diện cho FB này sẽ không bao gồm cột “Retain”. Một DB tức thời
đã được tạo ra khi FB này được chèn vào trong trình soạn thảo chương trình sẽ cho
thấy một cột “Retain” có thể chỉnh sửa. Trong trường hợp này, việc lựa chọn tùy chọn
“Retain” cho bất kỳ mỗi thẻ ghi sẽ đưa đến kết quả là tất cả các thẻ ghi được lựa chọn.
Tương tự, việc hủy lựa chọn tùy chọn đối với bất kỳ mỗi thẻ ghi sẽ đưa đến kết quả là
tất cả các thẻ ghi được hủy lựa chọn. Đối với một FB đã được cấu hình không phải là
“Symbolic access only”, ta có thể thay đổi trạng thái lưu giữ từ trong phạm vi trình
soạn thảo DB tức thời, nhưng tất cả các thẻ ghi sẽ được thiết lập đến trạng thái lưu giữ
cùng với nhau.
Sau khi tạo ra FB, ta không thể thay đổi tùy chọn đối với “Symbolic access
only”. Tùy chọn này chỉ có thể được lựa chọn khi FB được tạo ra. Để xác định khi nào
một FB có sẵn đã được cấu hình cho “Symbolic access only”, nhấp chuột phải lên FB
trong cây Project, lựa chọn “Properties”, và sau đó lựa chọn “Attributes”.
Các thẻ ghi của một khối dữ liệu tổng thể: trạng thái của một DB tổng thể liên
quan đến việc gán trạng thái lưu giữ thì giống với trạng thái đó của một FB. Phụ
thuộc vào việc thiết lập đối với việc ghi địa chỉ biểu tượng, ta có thể xác định
trạng thái lưu giữ cả đối với một thẻ ghi riêng lẻ hay đối với toàn bộ thẻ ghi của
một khối dữ liệu tổng thể.
- Nếu thuộc tính “Symbolic access only” của DB được đánh dấu chọn, trạng thái
lưu giữ có thể được thiết lập cho mỗi thẻ ghi riêng lẻ.
- Nếu thuộc tính “Symbolic access only” của DB không được đánh dấu chọn,
trạng thái lưu giữ được áp dụng đến tất cả các thẻ ghi của DB, tức là hoặc tất cả
thẻ ghi là lưu giữ hoặc không có thẻ ghi nào là lưu giữ.
Tổng cộng 2048 byte dữ liệu có thể là lưu giữ. Để xem có bao nhiêu byte, từ
bảng thẻ ghi PLC hay từ danh sách gán, ta nhấp chuột lên biểu tượng thanh công cụ
“Retain”. Dòng thứ hai sẽ chỉ ra tổng bộ nhớ còn lại được kết hợp cho M và DB, mặc
dù đây là nơi mà các phạm vi lưu giữ được xác định cho bộ nhớ M.
CPU hỗ trợ một bộ đệm chẩn đoán chứa một mục nhập vào cho mỗi sự kiện
chẩn đoán. Mỗi mục nhập vào bao gồm ngày và giờ mà sự kiện đã xuất hiện, một danh
mục sự kiện và một phần miêu tả sự kiện. Các mục nhập vào được hiển thị theo thứ tự
thời gian với sự kiện gần nhất ở trên cùng. Trong khi CPU duy trì nguồn điện, có tối
đa 50 sự kiện gần nhất nằm trong nhật ký này. Khi nhật ký đầy, một sự kiện mới sẽ
thay thể sự kiện xảy ra lâu nhất trong nhật ký. Khi nguồn bị mất, 10 sự kiện gần đây
nhất sẽ được lưu lại.
Các kiểu sự kiện sau đây được ghi lại trong bộ đệm chẩn đoán:
Mỗi sự kiện chẩn đoán hệ thống, ví dụ các lỗi CPU và các lỗi module
Mỗi sự thay đổi trạng thái của CPU (mỗi khi bật nguồn, mỗi sự chuyển đổi sang
STOP, mỗi sự chuyển đổi sang RUN)
Để truy xuất bộ đệm chẩn đoán, ta phải đang trực tuyến. Ta đặt nhật ký ở dưới mục
“Online & Diagnostics/ Diagnostics/ Diagnostics buffer”.
CPU hỗ trợ một đồng hồ giờ trong ngày. Một tụ điện cỡ lớn cung cấp năng
lượng cần thiết để giữ đồng hồ chạy trong suốt thời gian mà CPU được tắt nguồn. Tụ
điện này được nạp trong lúc CPU được cấp nguồn. Đến ít nhất là 2 giờ sau khi CPU đã
được tắt nguồn, tụ điện cỡ lớn này sẽ được nạp đầy để giữ cho đồng hồ vận hành trong
khoảng thường là 10 ngày.
Đồng hồ giờ trong ngày (Time of Day Clock) được đặt theo giờ hệ thống là giờ
quốc tế phối hợp (Coordinate Universal Time – UTC). Có các lệnh đê đọc giờ hệ
thống (RD_SYS_T) hay giờ cục bộ (RD_LOC_T). Giờ cục bộ được tính toán bằng
cách sử dụng múi giờ và độ dịch chỉnh tiết kiệm ánh sáng ngày mà ta thiết lập trong
mục Device configuration phần CPU Clock.
Ta cấu hình đồng hồ giờ trong ngày dành cho CPU dưới thuộc tính “Time of
day”. Ta còn có thể kích hoạt thời gian tiết kiệm ánh sáng ngày và xác định các thời
điểm khởi động và dừng đối với thời gian tiết kiệm ánh sáng ngày. Để thiết lập đồng
hồ giờ trong ngày, ta phải đang trực tuyến và ở trong kiểu xem “Online &
Diagnostics” của CPU. Sử dụng chức năng “Set time of day”.
Ta sử dụng các thuộc tính CPU để kích hoạt các byte dành cho “system
memory” và “clock memory”. Logic chương trình có thể tham chiếu các bit riêng lẻ
của các hàm này.
Ta có thể gán một byte trong bộ nhớ M cho bộ nhớ hệ thống. Byte của bộ nhớ
hệ thống cung cấp 4 bit sau đây có thể được tham chiếu bởi chương trình người
dùng:
- Bit “Always 0 (low)” luôn luôn được đặt về 0.
- Bit “Always 1 (high)” luôn luôn được đặt lên 1.
- “Diagnostic graph changed” được đặt lên 1 đối với một chu kỳ quét sau khi
CPU ghi một sự kiện chẩn đoán. Vì CPU không đặt bit “diagnostic graph
changed” cho đến kết thúc của lần thực thi đầu tiên của các OB chu kỳ chương
trình, chương trình người dùng không thể phát hiện có một thay đổi chẩn đoán
cả trong suốt sự thực thi của các OB khởi động hay trong lần thực thi đầu tiên
của các OB chu kỳ chương trình.
- Bit “First scan” được đặt lên 1 đối với khoảng thời gian của lần quét đầu tiên
sau khi OB khởi động hoàn tất. (Sau sự thực thi của lần quét đầu tiên, bit “First
scan” được đặt về 0)
Ta có thể gán một byte trong bộ nhớ M cho bộ nhớ đếm thời gian. Mỗi bit của
byte được cấu hình đóng vai trò như bộ nhớ đếm thời gian sẽ sinh ra một xung
dạng sóng vuông. Byte của bộ nhớ đếm thời gian cung cấp 8 tần số khác nhau,
từ 0,5 Hz (chậm) đến 10 Hz (nhanh). Ta có thể sử dụng các bit này như các bit
điều khiển, đặc biệt khi kết hợp với các lệnh sườn, để kích hoạt các hoạt động
trong chương trình người dùng trên một nền tảng theo chu trình.
CPU khởi chạy các byte này trên sự chuyển đổi từ chế độ STOP sang chế độ
STARTUP. Các bit của bộ nhớ đếm thời gian thay đổi một cách đồng bộ đến đồng hồ
CPU xuyên suốt các chế độ STARTUP và RUN.
CHÚ Ý
Việc ghi đè lên các bit của bộ nhớ hệ thống hay bộ nhớ đếm thời gian có thể làm sai lạc dữ
liệu trong các chức năng này và làm cho chương trình người dùng vận hành không chính
xác, điều này có thể gây phá hủy thiết bị và gây thương tích cho con người.
Bởi vì cả bộ nhớ đếm thời gian và bộ nhớ hệ thống đều không được dự trữ trong bộ nhớ M,
các lệnh hay truyền thông có thể ghi đến các vị trí này và làm sai lạc dữ liệu.
Tránh việc ghi dữ liệu đến các vị trí này để đảm bảo sự vận hành riêng của các chức năng
này, và luôn luôn lắp đặt một mạch dừng khẩn cấp dành cho quy trình hay bộ máy.
Cấu hình trạng thái của các giá trị ngõ ra khi CPU ở trong chế độ STOP
Ta có thể cấu hình trạng thái của các ngõ ra kiểu số và kiểu tương tự khi CPU
đang trong chế độ STOP. Đối với bất kỳ ngõ ra nào của một CPU, SB hay SM, ta có
thể thiết lập các ngõ ra hoặc gắn chặt giá trị hoặc sử dụng một giá trị thay thế:
Thay thế một giá trị ngõ ra được định trước (mặc định): ta nhập vào một giá trị
thay thế cho mỗi ngõ ra (mỗi kênh) của thiết bị CPU, SB hay SM đó.
Giá trị thay thế mặc định cho các kênh ngõ ra kiểu số là OFF, và giá trị thay thế
mặc định cho các kênh ngõ ra kiểu tương tự là 0.
Gắn chặt các ngõ ta để duy trì trạng thái cuối cùng: các ngõ ra giữ lại giá trị
hiện thời của chúng tại thời điểm của sự chuyển tiếp từ RUN sang STOP. Sau
khi bật nguồn, các ngõ ra được đặt đến giá trị thay thế mặc định.
Ta cấu hình trạng thái của các ngõ ra trong Device Configuration. Lựa chọn các
thiết bị riêng lẻ và sử dụng thẻ “Properties” để cấu hình các ngõ ra cho mỗi thiết bị.
Khi CPU chuyển từ RUN sang STOP, CPU giữ lại ảnh tiến trình và ghi các giá
trị tương ứng cho cả các ngõ ra kiểu số và kiểu tương tự, dựa vào sự cấu hình.
CPU cung cấp 3 cấp độ bảo mật để hạn chế sự truy cập đến một số chức năng
riêng biệt. Khi cấu hình cấp độ bảo mật và mật khẩu cho một CPU, ta giới hạn các
chức năng và các vùng nhớ mà có thể truy cập không cần nhập vào mật khẩu.
Mỗi cấp độ cho phép các chức năng đã biết để có thể truy cập mà không cần
một mật khẩu. Điều kiện mặc định cho CPU là phải không có sự hạn chế nào và không
có một sự bảo vệ bằng mật khẩu nào. Để hạn chế việc truy xuất đến một CPU, ta cấu
hình các thuộc tính của CPU và nhập vào mật khẩu.
Việc nhập vào mật khẩu thông qua một mạng sẽ không làm giảm giá trị của sự
bảo vệ bằng mật khẩu cho CPU. Một CPU được bảo vệ bằng mật khẩu chỉ cho phép
một người dùng không bị hạn chế truy xuất tại một thời điểm. Sự bảo vệ bằng mật
khẩu không áp dụng đến sự thực thi của tập lệnh chương trình người dùng bao gồm
các hàm truyền thông. Việc nhập vào mật khẩu chính xác sẽ cung cấp truy xuất đến tất
cả các chức năng.
Truyền thông PLC đến PLC (sử dụng tập lệnh truyền thông trong các khối mã)
là không bị hạn chế bởi cấp độ bảo mật trong CPU. Chức năng HMI cũng không bị
hạn chế.
No protection Cho phép truy xuất toàn diện mà không cần bảo vệ bằng mật khẩu.
Cho phép truy xuất HMI và tất cả các hình thức truyền thông PLC đến
PLC mà không cần bảo vệ bằng mật khẩu.
Write protection
Mật khẩu được yêu cầu dành cho việc chỉnh sửa (ghi đến) CPU và cho
việc thay đổi chế độ CPU (RUN/STOP).
Cho phép truy xuất HMI và tất cả các hình thức truyền thông PLC đến
Read/write PLC mà không cần bảo vệ bằng mật khẩu.
protection Mật khẩu được yêu cầu dành cho việc đọc dữ liệu trong CPU, cho việc
chỉnh sửa (ghi đến) và cho việc thay đổi chế độ CPU (RUN/STOP).
Nếu đã đánh mất mật khẩu của một CPU được bảo vệ bằng mật khẩu, ta sử
dụng một thẻ chuyển trống để xóa đi chương trình được bảo vệ bằng mật khẩu. Thẻ
chuyển trống sẽ xóa bộ nhớ nạp bên trong của CPU. Sau đó ta có thể tải xuống một
chương trình người dùng mới từ phần mềm STEP 7 Basic đến CPU.
CHÚ Ý
Nếu ta lắp một thẻ chuyển vào trong một CPU đang chạy, CPU sẽ chuyển sang chế độ
STOP. Các thiết bị điều khiển có thể rơi vào một điều kiện không an toàn, kết quả là sự vận
hành không mong muốn của thiết bị được điều khiển. Một số các vận hành không mong
muốn có thể gây hậu quả tử vong hay tổn thương nghiêm trọng đến con người, và/hoặc phá
hủy thiết bị.
Ta phải lấy thẻ chuyển ra trước khi thiết lập CPU sang chế độ RUN.
2.2. Lƣu trữ dữ liệu, các vùng nhớ và việc ghi địa chỉ.
CPU cung cấp một số các tùy chọn dành cho việc lưu trữ dữ liệu trong suốt sự
thực thi chương trình người dùng:
Global memory (bộ nhớ toàn cục): CPU cung cấp nhiều vùng nhớ chuyên môn
hóa, bao gồm các ngõ vào (I), các ngõ ra (Q) và bộ nhớ bit (M). Bộ nhớ này là
có thể truy xuất bởi tất cả các khối mã mà không có sự hạn chế nào.
Data block (DB – khối dữ liệu): ta có thể bao gồm các DB trong chương trình
người dùng để lưu trữ dữ liệu cho các khối mã. Dữ liệu được lưu trữ vẫn duy trì
khi sự thực thi của một khối mã có liên quan dần kết thúc.
Temp memory (bộ nhớ tạm thời): khi một khối mã được gọi, hệ điều hành của
CPU phân bổ bộ nhớ tạm thời hay cục bộ (L) để sử dụng trong suốt sự thực thi
của khối. Khi sự thực thi của khối hoàn thành, CPU sẽ phân bổ lại bộ nhớ cục
bộ dành cho việc thực thi các khối mã khác.
Mỗi vị trí bộ nhớ khác nhau có một địa chỉ đơn nhất. Chương trình người dùng
sử dụng các địa chỉ này để truy xuất thông tin trong vị trí bộ nhớ.
Mỗi vùng nhớ khác nhau có một địa chỉ đơn nhất. Chương trình người dùng sử
dụng các địa chỉ này để truy xuất thông tin trong vị trí bộ nhớ. Hình dưới đây thể hiện
cách thức truy xuất một bit (còn được gọi là ghi địa chỉ “byte.bit”). Trong ví dụ này,
vùng bộ nhớ và địa chỉ byte (I = ngõ vào và 3 = byte 3) được theo sau bởi một dấu
chấm (“.”) để ngăn cách địa chỉ bit (bit 4).
Ta có thể truy xuất dữ liệu trong hầu hết các vùng bộ nhớ (I, Q, M, DB và L)
gồm các kiểu Byte, Word, hay Double Word bằng cách sử dụng định dạng “byte
address”. Để truy xuất một dữ liệu Byte, Word, hay Double Word trong bộ nhớ, ta
phải xác định địa chỉ theo cách giống như xác định địa chỉ cho một bit. Điều này bao
gồm một bộ định danh vùng, ký hiệu kích thước dữ liệu, và địa chỉ byte bắt đầu của
giá trị Byte, Word, hay Double Word. Các ký hiệu kích thước là B (Byte), W (Word)
và D (Double Word), ví dụ IB0, MW20 hay QD8. Các tham chiếu như là I0.3 và Q1.7
sẽ truy xuất ảnh tiến trình. Để truy xuất ngõ vào hay ngõ ra vật lý, ta cộng thêm tham
chiếu với ký tự “:P” (như là I0.3:P, Q1.7:P hay “Stop:P”).
Phần mềm STEP 7 Basic tạo điều kiện cho việc lập trình ký hiệu. Thông
thường, các thẻ ghi được tạo ra cả trong thẻ ghi PLC, trong một khối dữ liệu hay trong
giao diện tại phía trên của một OB, FC hay FB. Các thẻ ghi này bao gồm tên, kiểu dữ
liệu, độ dịch chỉnh và chú giải. Ngoài ra, trong môt khối dữ liệu, một giá trị ban đầu có
thể được xác lập. Ta có thể sử dụng các thẻ ghi này khi lập trình bằng cách nhập vào
tên thẻ ghi tại thông số của lệnh. Một cách tùy chọn, ta cũng có thể nhập vào toán hạng
độc lập (bộ nhớ, vùng nhớ, kích cỡ và độ dịch chỉnh) tại thông số lệnh. Các ví dụ trong
phần sau đây cho thấy cách thức để nhập vào các toán hạng tuyệt đối. Ký tự % được tự
động chèn vào trước toán hạng tuyệt đối bởi trình soạn thảo chương trình. Ta có thể lật
chuyển kiểu xem trong trình soạn thảo chương trình đến một trong các kiểu sau: biểu
tượng (Symbolic), biểu tượng và tuyệt đối (Symbolic and absolute) hay tuyệt đối
(Absolute).
I (ngõ vào ảnh tiến trình): CPU tiến hành lấy mẫu các điểm ngõ vào vật lý
ngoại vi vừa trước khi thực thi OB chu trình của mỗi chu trình quét và ghi các giá trị
này đến ảnh tiến trình ngõ vào. Ta có thể truy xuất đến ảnh tiến trình ngõ vào theo bit,
byte, word hay double word. Cả truy xuất đọc và ghi đều được cho phép, nhưng thông
thường, các ngõ vào ảnh tiến trình là chỉ đọc.
Byte, Word hay Double Word I [kích thước].[địa chỉ byte khởi đầu] IB4, IW5 hay ID12
Bằng cách cộng thêm “:P” đến một địa chỉ, ta có thể đọc ngay lập tức các ngõ
vào kiểu số hay kiểu tương tự của CPU, SB hay SM. Sự khác biệt giữa một truy xuất
sử dụng I_:P thay vì sử dụng I là ở chỗ dữ liệu sẽ đến một cách trực tiếp từ các điểm
đang được truy xuất hơn là từ ảnh tiến trình ngõ vào. Truy xuất I_:P được tham chiếu
đến một truy xuất “immediate read” vì dữ liệu được truy tìm ngay tức khắc từ nguồn
thay vì từ một bản sao chép đã được tạo ra trong lần cuối mà ảnh tiến trình ngõ vào
được cập nhật.
Vì các điểm ngõ vào vật lý nhận các dữ liệu của chúng một cách trực tiếp từ các
thiết bị trường được kết nối đến các điểm này, việc ghi đến các điểm này là bị cấm.
Điều đó có nghĩa là, các truy xuất I_:P là chỉ đọc, trái với các truy xuất I có thể được
đọc hay ghi.
Các truy xuất I_:P còn có thể bị hạn chế theo kích thước của các ngõ vào được
hỗ trợ bởi một CPU, SB hay SM đơn lẻ, được làm tròn lên đến byte gần nhất. Ví dụ,
nếu các ngõ vào của một SB có 2 DI/ 2DQ được cấu hình để khởi động tại I4.0, khi đó
các điểm ngõ vào có thể được truy xuất theo địa chỉ I4.0:P và I4.1:P hay theo IB4:P.
Các truy xuất đến địa chỉ tính từ I4.2:P cho tới I4.7:P là không bị từ chối, nhưng không
được nhận biết, vì các điểm này không được sử dụng. Các truy xuất đến địa chỉ IW4:P
và ID4:P bị cấm bởi chúng vượt quá độ dịch chỉnh byte có liên quan với SB.
Các truy xuất sử dụng I_:P không ảnh hưởng đến giá trị tương ứng được lưu trữ
trong ảnh tiến trình ngõ vào.
Byte, Word hay Double Word I [kích thước].[địa chỉ byte khởi đầu]:P IB4:P, IW5:P hay ID12:P
Q (ngõ ra ảnh tiến trình): CPU sao chép các giá trị được lưu trữ trong ảnh tiến
trình ngõ ra đến các điểm ngõ ra vật lý. Ta có thể truy xuất ảnh tiến trình ngõ ra theo
bit, byte, word hay double word. Cả truy xuất đọc và ghi đều được cho phép đối với
các ngõ ra ảnh tiến trình.
Byte, Word hay Double Word Q [kích thước].[địa chỉ byte khởi đầu] QB5, QW10 hay QB40
Bằng cách cộng thêm “:P” đến một địa chỉ, ta có thể ghi ngay lập tức đến các
ngõ ra kiểu số hay kiểu tương tự của CPU, SB hay SM. Sự khác biệt giữa một truy
xuất sử dụng Q_:P thay vì sử dụng Q là ở chỗ dữ liệu sẽ di chuyển một cách trực tiếp
đến các điểm đang được truy xuất bên cạnh đến ảnh tiến trình ngõ ra (ghi đến cả hai
nơi). Truy xuất Q_:P đôi khi được tham chiếu đến như một truy xuất “immediate
write” vì dữ liệu được gửi ngay tức khắc đến điểm đích; điểm đích không phải chờ tới
lần cập nhật kế tiếp từ ảnh tiến trình ngõ ra.
Vì các điểm ngõ ra vật lý điều khiển trực tiếp các thiết bị trường được kết nối
đến các điểm này, việc đọc từ các điểm này là bị cấm. Điều đó có nghĩa là, các truy
xuất Q_:P là chỉ ghi, trái với các truy xuất Q có thể được đọc hay ghi.
Các truy xuất Q_:P còn có thể bị hạn chế theo kích thước của các ngõ ra được
hỗ trợ bởi một CPU, SB hay SM đơn lẻ, được làm tròn lên đến byte gần nhất. Ví dụ,
nếu các ngõ ra của một SB có 2 DI/ 2DQ được cấu hình để khởi động tại Q4.0, khi đó
các điểm ngõ ra có thể được truy xuất theo địa chỉ Q4.0:P và Q4.1:P hay theo QB4:P.
Các truy xuất đến địa chỉ tính từ Q4.2:P cho tới Q4.7:P là không bị từ chối, nhưng
không được nhận biết, vì các điểm này không được sử dụng. Các truy xuất đến địa chỉ
QW4:P và QD4:P bị cấm bởi chúng vượt quá độ dịch chỉnh byte có liên quan với SB.
Các truy xuất sử dụng Q_:P ảnh hưởng đến cả ngõ ra vật lý cũng như giá trị
tương ứng được lưu trữ trong ảnh tiến trình ngõ ra.
M (vùng nhớ bit): ta sử dụng vùng nhớ bit (bộ nhớ M) dành cho cả các relay
điều khiển và dữ liệu dùng để lưu trữ trạng thái tức thời của một sự vận hành hay của
các thông tin điều khiển khác. Ta có thể truy xuất vùng bộ nhớ bit theo bit, byte, word
hay double word. Cả vtruy xuất đọc và ghi đều được cho phép đối với bộ nhớ M.
Byte, Word hay Double Word M [kích thước].[địa chỉ byte khởi đầu] MB20, MW30, MD50
Temp (bộ nhớ tạm): CPU phân bổ bộ nhớ tạm thời trên một nền tảng theo yêu
cầu. CPU phân bổ bộ nhớ tạm thời cho khối mã tại thời điểm khi khối mã được bắt đầu
(đối với một OB) hay được gọi (đối với một FC hay một FB). Sự phân bổ bộ nhớ tạm
thời cho một khối mã có thể sử dụng lại cùng một vị trí bộ nhớ Temp được sử dụng
trước đó bởi một OB, FC hay FB khác. CPU không thiết lập giá trị ban đầu cho bộ nhớ
tạm thời tại thời điểm phân bổ và do đó bộ nhớ tạm thời có thể chứa bất kỳ giá trị nào.
Bộ nhớ tạm thời giống với bộ nhớ M ngoại trừ một điểm chính: bộ nhớ M có
một dải hợp lệ là “global” (tổng thể) còn bộ nhớ tạm thời có dải hợp lệ là “local” (cục
bộ).
Bộ nhớ M: bất kỳ các OB, FC hay FB nào cũng có thể truy xuất dữ liệu trong
bộ nhớ M, nghĩa là các dữ liệu trong bộ nhớ M là sẵn sàng một cách toàn diện
cho tất cả các phần tử của chương trình người dùng.
Bộ nhớ Temp: truy xuất đến dữ liệu trong bộ nhớ tạm bị hạn chế đến OB, FC
hay FB mà đã tạo ra hay khai báo vùng bộ nhớ tạm. Các vị trí bộ nhớ tạm giữ
nguyên cục bộ và không được chia sẻ bởi các khối mã khác, ngay cả khi khối
mã gọi một khối mã khác. Ví dụ: khi một OB gọi một FC, FC đó không thể truy
xuất bộ nhớ tạm của OB đã gọi nó.
CPU cung cấp bộ nhớ tạm (cục bộ) cho mỗi nhóm trong số 3 nhóm ưu tiên:
16 kB dành cho khởi động cà chu kỳ chương trình, bao gồm cả các FB và FC có
liên quan.
4 kB cho các sự kiện ngắt tiêu chuẩn bao gồm cả các FB và các FC.
4 kB cho các sự kiện ngắt chẩn đoán bao gồm cả các FB và các FC.
Ta chỉ truy xuất bộ nhớ tạm bằng cách ghi địa chỉ ký hiệu.
DB (khối dữ liệu): ta sử dụng bộ nhớ DB dành cho việc lưu trữ các kiểu dữ
liệu khác nhau, bao gồm trạng thái trung gian của một hoạt động hay các thông số về
thông tin điều khiển khác cho các FB, và các cấu trúc dữ liệu cần thiết cho nhiều lệnh
như các bộ định thì hay các bộ đếm. Ta có thể xác định một khối dữ liệu để được
đọc/ghi hay là chỉ đọc. Ta có thể truy xuất bộ nhớ khối dữ liệu theo bit, byte, word hay
double word. Cả truy xuất đọc và truy xuất ghi đều được cho phép đối với các khối dữ
liệu đọc/ghi. Chỉ truy xuất đọc là được cho phép đối với các khối dữ liệu chỉ đọc.
Các kiểu dữ liệu được sử dụng để xác định cả kích thước của một phần tử dữ
liệu cũng như cách thức mà dữ liệu được diễn dịch. Mỗi thông số lệnh hỗ trợ ít nhất
một kiểu dữ liệu, và một số thông số còn hỗ trợ nhiều kiểu dữ liệu. Ta giữ con trỏ qua
trường thông số của một lệnh để xem kiểu dữ liệu nào được hỗ trợ đối với một thông
số đã cho.
Một thông số chính thức là bộ định danh trên một lệnh đánh dấu vị trí của dữ
liệu được sử dụng bởi lệnh đó (ví dụ: ngõ vào IN1 của một lệnh ADD). Thông số thực
tế là vị trí bộ nhớ hay hằng số chứa dữ liệu dùng cho lệnh (ví dụ %MD400
“Number_of_Widgets”). Kiểu dữ liệu của thông số thực tế được chỉ định bởi người
dùng phải phù hợp với một trong các kiểu dữ liệu được hỗ trợ của thông số chính thức
được chỉ định bởi lệnh.
Khi chỉ định một thông số thực tế, ta phải chỉ định cả một thẻ ghi (ký hiệu) hay
một địa chỉ nhớ tuyệt đối. Các thẻ ghi có liên quan đến một tên ký hiệu (tên thẻ ghi)
với một kiểu dữ liệu, một vùng nhớ, độ dịch chỉnh bộ nhớ, và dòng chú giải, và có thể
được tạo ra cả trong trình soạn thảo thẻ ghi PLC hay trong trình soạn thảo Interface
cho một khối (OB, FC, FB ay DB). Nếu nhập vào một địa chỉ tuyệt đối mà không có
thẻ ghi liên quan, ta phải sử dụng một kích thước thích hợp phù hợp với kiểu dữ liệu
được hỗ trợ, và một thẻ ghi mặc định sẽ được tạo ra dưới mục nhập vào.
Ta còn có thể nhập vào giá trị hằng số cho nhiều thông số ngõ vào. Bảng sau
đây miêu tả các kiểu dữ liệu cơ bản được hỗ trợ, gồm các ví dụ của mục nhập cố định.
Tất cả các kiểu ngoại trừ kiểu String đều có sẵn trong trình soạn thảo các thẻ ghi PLC
và trong trình soạn thảo Interface của khối. Kiểu String chỉ có sẵn trong trình soạn
thảo Interface của khối. Bảng sau đây xác định các kiểu dữ liệu cơ bản.
Kích
Kiểu dữ Các ví dụ mục nhập vào
thƣớc Phạm vi
liệu cố định
(bit)
Mặc dù không có sẵn như một kiểu dữ liệu, định dạng số BCD sau đây được hỗ trợ bởi
các lệnh chuyển đổi.
Các ví dụ mục
Định dạng Kích thƣớc (bit) Phạm vi số
nhập cố định
Các số thực (hay số có dấu chấm động) được hiển thị đưới dạng số với độ chính
xác đơn 32 bit (Real) hay số độ chính xác kép 64 bit (LReal) như được miêu tả trong
tiêu chuẩn ANSI/IEEE 754-1985. Các số dấu chấm động với độ chính xác đơn là
chính xác đến tối đa 6 chữ số có nghĩa và các số dấu chấm động với độ chính xác kép
là chính xác đến tối đa 15 chữ số có nghĩa. Ta có thể chỉ định tối đa 6 chữ số có nghĩa
(kiểu Real) hay 15 chữ số có nghĩa (LReal) khi nhập vào một hằng số dấu chấm động
để duy trì độ chính xác.
Các tính toán có liên quan đến một chuỗi dài các giá trị gồm các số rất lớn hay
rất nhỏ có thể tạo ra các kết quả không chính xác. Điều này có thể xuất hiện nếu các số
hơn kém nhau đến 10 lũy thừa x, trong đó x > 6 (kiểu Real) hay x > 15(kiểu LReal).
Ví dụ đối với kiểu Real: 100 000 000 + 1 = 100 000 000.
CPU hỗ trợ kiểu dữ liệu String dành để lưu trữ một tuần tự các ký tự byte đơn
lẻ. Kiểu dữ liệu String chứa một bộ đếm ký tự tổng (số lượng các ký tự trong chuỗi) và
bộ đếm ký tự hiện thời. Kiểu String cung cấp tối đa 256 byte cho việc lưu trữ kết quả
đếm ký tự tổng tối đa (chiếm 1 byte), kết quả đếm ký tự hiện thời (chiếm 1 byte) và tối
đa 254 ký tự, trong đó mỗi ký tự được lưu trữ trong 1 byte.
Ta có thể sử dụng các chuỗi trực kiện (hằng số) cho các thông số lệnh của kiểu
IN bằng cách sử dụng các dấu nháy đơn. Ví dụ, một chuỗi gồm 3 ký tự „ABC‟ có thể
được sử dụng như là ngõ vào cho thông số IN của lệnh S_CONV. Ta còn có thể tạo ra
các biến chuỗi bằng cách lựa chọn kiểu dữ liệu “String” trong trình soạn thảo giao diện
khối cho OB, FC, FB và DB. Ta không thể tạo ra một chuỗi trong trình soạn thảo thẻ
ghi của PLC. Ta có thể xác định kích thước chuỗi tối đa tính theo byte khi khai báo
chuỗi, ví dụ, “MyString[10]” sẽ xác định kích thước tối đa là 10 byte cho MyString.
Nếu không bao gồm dấu ngoặc vuông với bộ chỉ thị kích thước lớn nhất, giá trị 254 sẽ
được cho.
Ví dụ sau đây xác định một chuỗi với giá trị đếm ký tự tối đa bằng 10 và giá trị
đếm ký tự hiện thời bằng 3. Điều này có nghĩa là hiện thời chuỗi chứa 3 ký tự 1 byte,
nhưng có thể được mở rộng để chứa tối đa 10 ký tự 1 byte.
Bộ đếm ký tự Bộ đếm ký tự
Ký tự 1 Ký tự 2 Ký tự 3 … Ký tự 10
tổng hiện thời
„C‟ „A‟ „T‟
10 3 … -
(16#43) (16#41) (16#54)
Các mảng
Ta có thể tạo ra một mảng chứa nhiều phần tử của một kiểu cơ bản. Các mảng
có thể được tạo ra trong trình soạn thảo gian diện khối dành cho OB, FC, FB và DB.
Ta không thể tạo ra một mảng trong trình soạn thảo thẻ ghi PLC.
Để tạo ra một mảng từ trình soạn thảo giao diện khối, ta chọn kiểu dữ liệu
“Array [lo…hi] of type”, sau đó chỉnh sửa “lo”, “hi” và “type” như sau:
Các chỉ số âm đều được hỗ trợ. Ta có thể đặt tên mảng trong cột Name của trình
soạn thảo giao diện khối. Bảng sau đây cho thấy các ví dụ của các mảng như chúng có
thể xuất hiện trong trình soạn thảo giao diện khối.
My_Bits Array [1 .. 10] đối với kiểu Bool Mảng này chứa 10 giá trị Boolean
Ta tham chiếu các phần tử của mảng trong chương trình bằng cách sử dụng cú
pháp sau:
Các ví dụ có thể xuất hiện trong trình soạn thảo chương trình như một ngõ vào
thông số:
Ký hiệu # được chèn vào một cách tự động bởi trình soạn thảo chương trình.
Kiểu dữ liệu DTL là một cấu trúc gồm 12 byte lưu trữ thông tin trên ngày và
giờ trong một cấu trúc được xác định trước. Ta xác có thể xác định một DTL cả trong
bộ nhớ tạm Temp của khối hay trong một DB.
Độ dài Ví dụ về ngõ
Định dạng Phạm vi giá trị
(byte) vào giá trị
Tối thiểu: DTL#1970-01-01-
Đếm thời gian và lịch (Year- DTL#2008-12-
:00:00:00.0
12 Month:Hour:Minute:Second 16-
Tối đa: DTL#2554-12-31-
.Nanosecond) 20:30:20.250
:23:59:59.999999999
Mỗi phần của DTL chứa một kiểu dữ liệu khác nhau và phạm vi của các giá trị.
Kiểu dữ liệu của một giá trị được định trước phải phù hợp với kiểu dữ liệu của các
thành phần tương ứng.
10
11
GHI CHÚ
CPU chỉ hỗ trợ thẻ nhớ SIMATIC được định dạng trước. Nếu ta sử dụng một phần mềm
định dạng của Windows để định dạng lại thẻ nhớ SIMATIC, CPU không thể sử dụng thẻ
nhớ đã được định dạng lại này.
Trước khi sao chép bất kỳ chương trình nào đến thẻ nhớ đã được định dạng, ta phải xóa tất
cả chương trình đã được lưu trước đó khỏi thẻ nhớ.
Ta sử dụng thẻ nhớ đóng vai trò vừa là thẻ chuyển vừa là thẻ chương trình. Bất
kỳ chương trình nào mà ta sao chép đến thẻ nhớ đều chứa tất cả các khối hàm và khối
dữ liệu, các đối tượng công nghệ và cấu hình thiết bị. Chương trình không chứa các
giá trị ép buộc.
Ta sử dụng một thẻ chuyển để sao chép một chương trình đến bộ nhớ nạp bên
trong của CPU mà không cần sử dụng phần mềm STEP 7 Basic. Sau khi lắp thẻ
chuyển vào, CPU trước tiên sẽ xóa chương trình người dùng và xóa mọi giá trị
ép buộc khỏi bộ nhớ nạp bên trong, và sau đó sao chép chương trình từ thẻ
chuyển đến bộ nhớ nạp bên trong. Khi quá trình chuyển đổi hoàn tất, ta phải lấy
thẻ chuyển ra.
Ta có thể sử dụng một thẻ chuyển trống để truy xuất một CPU được bảo vệ
bằng mật khẩu khi ta đánh mất hay quên mật khẩu này. Khi lắp một thẻ chuyển còn
trống, chương trình được bảo vệ bằng mật khẩu trong bộ nhớ nạp bên trong của CPU
sẽ bị xóa đi. Sau đó ta có thể tải xuống một chương trình mới vào CPU.
Ta sử dụng một thẻ chương trình đóng vai trò là bộ nhớ nạp ngoại vi cho CPU.
Việc lắp thẻ chương trình vào CPU sẽ xóa đi toàn bộ bộ nhớ nạp bên trong của
CPU (bao gồm chương trình người dùng và các giá trị ép buộc). Sau đó CPU sẽ
thực thi chương trình người dùng trong bộ nhớ nạp ngoại vi (tức là trong thẻ
chương trình). Việc tải xuống đến một CPU mà CPU đó có một thẻ chương
trình sẽ chỉ cập nhật bộ nhớ nạp ngoại vi (thẻ chương trình).
Vì bộ nhớ nạp bên trong của CPU đã được xóa khi ta lắp thẻ chương trình vào,
nên thẻ chương trình phải được giữ nguyên trong CPU. Nếu lấy thẻ chương trình ra,
CPU sẽ chuyển sang chế độ STOP. (Đèn LED báo lỗi nhấp nháy để chỉ thị rằng thẻ
chương trình đã bị lấy ra.)
Chương trình trên một thẻ nhớ bao gồm các khối mã, các khối dữ liệu, các đối
tượng công nghệ và cấu hình thiết bị. Thẻ nhớ không chứa bất kỳ các giá trị ép buộc
nào. Các giá trị ép buộc không phải là một phần của chương trình, nhưng được lưu trữ
trong bộ nhớ nạp, hoặc là trong bộ nhớ nạp bên trong của CPU, hoặc là trong bộ nhớ
nạp ngoại vi (một thẻ chương trình). Nếu một thẻ chương trình được lắp vào trong
CPU, phần mềm STEP 7 Basic sẽ chỉ áp dụng các giá trị ép buộc đến bộ nhớ nạp
ngoại vi trên thẻ chương trình.
KHUYẾN CÁO
Nếu ta lắp một thẻ nhớ (thẻ nhớ được cấu hình như một thẻ chương trình hay một thẻ
chuyển) vào trong một CPU đang chạy, CPU chuyển sang chế độ STOP ngay lập tức. Các
thiết bị điều khiển có thể rơi vào một điều kiện không an toàn, gây nên sự vận hành không
mong muốn của thiết bị được điều khiển. Các vận hành không mong muốn có thể gây tử
vong hay tổn thương nghiêm trọng đến con người, và/hoặc gây phá hủy thiết bị. Luôn luôn
lắp đặt mạch dừng khẩn cấp cho ứng dụng hay quy trình.
CHÚ Ý
Hiện tượng nạp tĩnh điện có thể phá hủy thẻ nhớ hay nơi cắm trên CPU.
Thực hiện việc tiếp xúc với một tấm đế được nối đất và/hoặc đeo một vòng dây cổ tay được
nối đất khi ta cầm thẻ nhớ. Cất thẻ nhớ trong một hộp chứa có tính dẫn điện.
Để lắp một thẻ nhớ, ta mở tấm che phía trên của CPU và lắp thẻ nhớ vào trong
rãnh. Kiểu kết nối nhấn – nhấn cho phép ta lắp vào và lấy ra một cách dễ dàng. Thẻ
nhớ được khóa lại nếu ta lắp vào đúng cách.
Cần kiểm tra rằng thẻ nhớ không được bảo vệ ghi. Trượt công tắc bảo vệ ra
khỏi vị trí “Lock”.
Chú ý
Nếu ta lắp vào thẻ nhớ khi CPU ở trong chế độ STOP, bộ đệm chẩn đoán sẽ
hiển thị một thông điệp mà sự định trị thẻ nhớ đã được khởi chạy. Hãy đừng lưu tâm
đến thông điệp này. Sự định trị thẻ nhớ sẽ không khởi động cho đến khi ta chuyển
CPU sang chế độ RUN, hoặc đặt lại bộ nhớ CPU bằng một lệnh MRES, hay đến chu
trình cấp nguồn cho CPU.
2.4.2. Cấu hình các thông số khởi động cho CPU trước khi sao chép đề án đến thẻ
nhớ.
Khi ta sao chép một chương trình đến thẻ chuyển hay thẻ chương trình, chương
trình sẽ bao gồm các thông số khởi động cho CPU. Trước khi sao chép chương trình
vào thẻ nhớ, luôn luôn chắc chắn rằng ta đã cấu hình chế độ vận hành cho CPU theo
một chu trình cấp nguồn. Lựa chọn khi nào CPU khởi động trong chế độ STOP, chế độ
RUN hay trong chế độ trước đó (trước chu trình cấp nguồn).
CHÚ Ý
Hiện tượng nạp tĩnh điện có thể phá hủy thẻ nhớ hay nơi cắm trên CPU.
Thực hiện việc tiếp xúc với một tấm đế được nối đất và/hoặc đeo một vòng dây cổ tay được
nối đất khi ta cầm thẻ nhớ. Cất thẻ nhớ trong một hộp chứa có tính dẫn điện.
Luôn luôn nhớ cấu hình thông số khởi động của CPU trước khi sao chép một
chương trình đến thẻ chuyển. Để tạo ra một thẻ chuyển, làm theo các bước sau đây:
1. Lắp một thẻ nhớ trống vào trong bộ đọc/bộ ghi thẻ được gắn kèm với thiết bị lập
trình.
(Nếu không phải là thẻ nhớ trống, ta xóa thư mục “SIMATIC.S7S” và tập tin
“S7_JOB.S7S” trên thẻ nhớ bằng cách sử dụng một ứng dụng ví dụ như Windows
Explorer.)
2. Trong Project tree (kiểu xem Project), mở rộng thư mục “SIMATIC Card Reader”
và lựa chọn thẻ nhớ.
3. Hiển thị hộp thoại “Memory card” bằng cách nhấp chuột phải lên thẻ nhớ trong bộ
đọc thẻ và lựa chọn “Properties” từ trình đơn ngữ cảnh.
4. Trong hộp thoại “Memory card”, lựa chọn “Transfer” từ trình đơn thả xuống.
Tại đây, phần mềm STEP 7 Basic tạo ra một thẻ chuyển trống. Nếu ta tạo ra
một thẻ chuyển trống, ví dụ như để khôi phục từ một mật khẩu CPU bị mất, hãy lấy
thẻ chuyển ra khỏi bộ đọc thẻ.
5. Thêm chương trình bằng cách lựa chọn thiết bị CPU (ví dụ như PLC_1 [CPU 1214
DC/DC/DC]) trong Project tree và kéo thiết bị CPU đến thẻ nhớ. (Một phương pháp
khác là sao chép thiết bị CPU và dán vào thẻ nhớ). Việc sao chép thiết bị CPU đến thẻ
nhớ sẽ mở ra hộp thoại “Load preview”.
6. Trong hộp thoại “Load preview”, nhấp vào nút “Load” để sao chép thiết bị CPU đến
thẻ nhớ.
7. Khi hộp thoại hiển thị một thông điệp rằng thiết bị CPU (chương trình) đã được nạp
mà không xảy ra lỗi, ta nhấp vào nút “Finish”.
Để chuyển chương trình đến một CPU, ta làm theo các bước sau:
1. Lắp thẻ chuyển vào trong CPU. Nếu CPU đang ở chế độ RUN, CPU sẽ chuyển sang
chế độ STOP. (LED bảo dưỡng nhấp nháy để chỉ thị rằng thẻ nhớ cần được định trị.)
2. Sử dụng một trong các tùy chọn sau để định trị cho thẻ nhớ:
3. Sau khi khởi động lại và định trị thẻ nhớ, CPU sẽ sao chép chương trình vào bộ nhớ
nạp bên trong của CPU. Khi hoạt động sao chép hoàn tất, CPU nhấp nháy LED bảo
dưỡng để chỉ thị rằng thẻ chuyển có thể được lấy ra.
5. Sử dụng một trong số các tùy chọn sau để định trị chương trình mới được chuyển
đến bộ nhớ nạp bên trong:
CPU sau đó sẽ chuyển sang chế độ khởi động (RUN hay STOP) mà ta đã cấu
hình cho đề án.
Lƣu ý
Ta phải lấy thẻ chuyển ra trước khi thiết lập CPU sang chế độ RUN.
CHÚ Ý
Hiện tượng nạp tĩnh điện có thể phá hủy thẻ nhớ hay nơi cắm trên CPU.
Thực hiện việc tiếp xúc với một tấm đế được nối đất và/hoặc đeo một vòng dây cổ tay được
nối đất khi ta cầm thẻ nhớ. Cất thẻ nhớ trong một hộp chứa có tính dẫn điện.
Kiểm tra rằng thẻ nhớ không được bảo vệ ghi. Trượt
công tắc bảo vệ ra khỏi vị trí “Lock”.
Khi được sử dụng với vai trò là một thẻ chương tình, thẻ nhớ trở thành bộ nhớ nạp
ngoại vi của CPU. Nếu ta lấy thẻ chương trình ra, bộ nhớ nạp bên trong của CPU sẽ
trống rỗng.
Lƣu ý
Nếu ta lắp một thẻ nhớ trống vào trong CPU và thực hiện định trị thẻ nhớ bằng
chu trình cấp nguồn cho CPU, bằng việc thực hiện một chuyển đổi từ STOP sang
RUN, hay thực hiện một sự đặt lại bộ nhớ (MRES), chương trình và các giá trị ép buộc
trong bộ nhớ nạp bên trong của CPU sẽ được sao chép đến thẻ nhớ. (Thẻ nhớ bây giờ
là một thẻ chương trình.) Sau khi việc sao chép đã hoàn tất, chương trình trong bộ nhớ
nạp bên trong của CPU sẽ bị xóa. CPU sẽ chuyển sang chế độ khởi động được cấu
hình (RUN hay STOP).
Luôn luôn nhớ cấu hình thông số khởi động của CPU trước khi sao chép một
chương trình đến thẻ chương trình. Để tạo ra một thẻ chương trình với STEP 7 Basic,
làm theo các bước sau đây:
1. Lắp một thẻ nhớ trống vào trong bộ đọc/bộ ghi thẻ được gắn kèm với thiết bị lập
trình.
(Nếu không phải là thẻ nhớ trống, ta xóa thư mục “SIMATIC.S7S” và tập tin
“S7_JOB.S7S” trên thẻ nhớ bằng cách sử dụng một ứng dụng ví dụ như Windows
Explorer.)
2. Trong Project tree (kiểu xem Project), mở rộng thư mục “SIMATIC Card Reader”
và lựa chọn thẻ nhớ.
3. Hiển thị hộp thoại “Memory card” bằng cách nhấp chuột phải lên thẻ nhớ trong bộ
đọc thẻ và lựa chọn “Properties” từ trình đơn ngữ cảnh.
4. Trong hộp thoại “Memory card”, lựa chọn “Program” từ trình đơn thả xuống.
Tại đây, phần mềm STEP 7 Basic tạo ra một thẻ chuyển trống. Nếu ta tạo ra
một thẻ chuyển trống, ví dụ như để khôi phục từ một mật khẩu CPU bị mất, hãy lấy
thẻ chuyển ra khỏi bộ đọc thẻ.
5. Thêm chương trình bằng cách lựa chọn thiết bị CPU (ví dụ như PLC_1 [CPU 1214
DC/DC/DC]) trong Project tree và kéo thiết bị CPU đến thẻ nhớ. (Một phương pháp
khác là sao chép thiết bị CPU và dán vào thẻ nhớ). Việc sao chép thiết bị CPU đến thẻ
nhớ sẽ mở ra hộp thoại “Load preview”.
6. Trong hộp thoại “Load preview”, nhấp vào nút “Load” để sao chép thiết bị CPU đến
thẻ nhớ.
7. Khi hộp thoại hiển thị một thông điệp rằng thiết bị CPU (chương trình) đã được nạp
mà không xảy ra lỗi, ta nhấp vào nút “Finish”.
Sử dụng một thẻ chƣơng trình nhƣ bộ nhớ nạp cho CPU
CHÚ Ý
Nếu ta lắp một thẻ nhớ vào trong một CPU, CPU sẽ chuyển sang chế độ STOP. Nếu ta thực
hiện chu trình cấp nguồn cho CPU, thay đổi CPU từ chế độ STOP sang RUN, hay đặt lại bộ
nhớ CPU (MRES), CPU sẽ sao chép bộ nhớ nạp bên trong đến thẻ nhớ (cấu hình thẻ nhớ
như là một thẻ chương trình) và xóa đi chương trình khỏi bộ nhớ nạp bên trong. Nếu ta lấy
thẻ chương trình ra, CPU sẽ không có chương trình trong bộ nhớ nạp bên trong.
Để sử dụng một thẻ chương trình với CPU, ta làm theo các bước sau:
1. Lắp thẻ chương trình vào trong CPU. Nếu CPU đang ở chế độ RUN, CPU sẽ
chuyển sang chế độ STOP. LED bảo dưỡng nhấp nháy để chỉ thị rằng thẻ nhớ cần
được định trị.
2. Sử dụng một trong các tùy chọn sau để định trị cho thẻ nhớ:
3. CPU sẽ tự động khởi động lại. Sau khi khởi động lại và định trị thẻ chương trình,
CPU xóa đi bộ nhớ nạp bên trong.
CPU sau đó sẽ chuyển sang chế độ khởi động (RUN hay STOP) mà ta đã cấu
hình.
Thẻ chương trình phải giữ nguyên trong CPU. Việc lấy thẻ chương trình ra sẽ
không để lại trong bộ nhớ nạp bên trong CPU một chương trình nào.
KHUYẾN CÁO
Nếu ta lấy thẻ chương trình ra, CPU sẽ mất đi bộ nhớ nạp ngoại vi của nó và sinh ra một
lỗi. CPU chuyển sang chế độ STOP và làm nhấp nháy LED báo lỗi.
Các thiết bị điều khiển có thể rơi vào một điều kiện không an toàn, gây nên sự vận hành
không mong muốn của thiết bị được điều khiển. Các vận hành không mong muốn có thể
gây tử vong hay tổn thương nghiêm trọng đến con người, và/hoặc gây phá hủy thiết bị.
Chƣơng 3
Ta tạo ra cấu hình thiết bị cho PLC bằng cách thêm một CPU và các module bổ sung
vào đề án.
Module truyền thông (CM): tối đa là 3, được chèn vào các khe số 101, 102 và 103
CPU: khe số 1
Module tín hiệu (SM) dành cho I/O tương tự hay số: tối đa là 8, được chèn vào
trong các khe từ 2 đến 9 (CPU 1214C khởi động 8 SM, CPU 1212C khởi động 2 SM
còn CPU 1211C không khởi động CM nào)
Để tạo ra cấu hình của thiết bị, thêm một thiết bị vào đề án.
Trong kiểu xem Project, dưới cây đề án nhấp đôi chuột vào “Add new device”.
Người dùng tạo ra cấu hình cho thiết bị bằng cách chèn một CPU vào đề án.
Việc lựa chọn CPU từ hộp thoại “Add new device” sẽ tạo ra thanh đỡ (rack) và CPU.
Việc lựa chọn CPU trong mục Device view sẽ hiển thị các thuộc tính của CPU
trong cửa sổ kiểm tra.
Lƣu ý
CPU không có một địa chỉ IP được cấu hình trước. Một cách thủ công, người
dùng phải gán giá trị địa chỉ IP cho CPU trong suốt việc cấu hình thiết bị. Nếu CPU
được kết nối đến một bộ định tuyến (router) trong mạng, người dùng còn phải nhập
vào địa chỉ IP cho router đó.
3.2. Nhận biết cấu hình của một CPU chƣa xác định.
Tải lên dễ dàng một cấu hình phần cứng đƣợc tạo sẵn
Nếu được kết nối đến một CPU, người dùng có thể tải
lên cấu hình của CPU đó đến đề án, bao gồm bất kỳ các
module nào. Thường là tạo ra một đề án mới và lựa
chọn “Unspecified CPU” thay vì lựa chọn một CPU
xác định. Người dùng hoàn toàn có thể bỏ qua việc cấu
hình thiết bị bằng cách lựa chọn mục “Create a PLC
program” từ “First Steps”. Phần mềm STEP 7 Basic
sau đó sẽ tự động tạo ra một CPU chưa được xác định.
Từ trình soạn thảo chương trình, lựa chọn lệnh “Hardware detection” trong trình đơn
“Online”.
Từ trình soạn thảo cấu hình thiết bị, lựa chọn tùy chọn cho việc phát hiện cấu
hình của thiết bị được kết nối.
Sau khi người dùng lựa chọn CPU từ hộp thoại trực tuyến, STEP 7 Basic tải lên
cấu hình phần cứng từ CPU, bao gồm bất kỳ module nào (SM, SB hay CM). Người
dùng sau đó có thể cấu hình các thông số của CPU và các module.
Để cấu hình các thông số vận hành của CPU, lựa chọn CPU trong phần Device
view (viền xanh dương quanh CPU đó), và sử dụng thẻ “Properties” của cửa sổ kiểm
tra.
Chỉnh sửa các thuốc tính để cấu hình các thông số sau đây:
Giao diện PROFINET: thiết lập địa chỉ IP cho CPU và sự đồng bộ hóa thời gian
DI, DO và AI: cấu hình cách xử lý của I/O kiểu số và kiểu tương tự cục bộ (tích
hợp)
Các bộ đếm tốc độ cao và các máy phát xung: khởi động và cấu hình các bộ
đếm tốc độ cao (HSC) và các máy phát xung được sử dụng cho các vận hành
chuỗi xung (PTO) và bộ điều chế độ rộng xung (PWM).
Khi người dùng cấu hình các ngõ ra của CPU hay của bảng tín hiệu như các
máy phát xung (để sử dụng với PWM hay các lệnh điều khiển chuyển động cơ bản),
các địa chỉ ngõ ra tương ứng (Q0.0, Q0.1, Q4.0 và Q4.1) được di chuyển khỏi bộ nhớ
Q và không thể được sử dụng cho các mục đích khác trong chương trình người dùng.
Nếu chương trình người dùng ghi một giá trị đến một ngõ ra được dùng như một máy
phát xung, CPU sẽ không ghi giá trị đó đến ngõ ra vật lý.
Startup: lựa chọn cách xử lý của CPU theo một sự chuyển đổi từ OFF sang ON,
ví dụ như khởi động trong chế độ STOP hay chuyển sang chế độ RUN sau một
sự khởi động lại nóng.
Time of delay: thiết lập thời gian, múi giờ và thời gian tiết kiệm ánh sáng ngày.
Protection: thiết lập bảo vệ đọc/ghi và mật khẩu cho việc truy xuất CPU.
System and clock memory: khởi động một byte của các hàm “system memory”
(đối với bit “first scan”, bit “always on” và bit “always off”) và khởi động một
byte của các chức năng “clock memory” (ở đó mỗi bit đảo chiều ON và OFF tại
một tần số được xác định trước).
Cycle time: xác định thời gian chu kỳ tối đa hay một thời gian chu kỳ tối thiểu
không đổi.
Communication load: định vị một tỷ lệ phần trăm của thời gian CPU để chuyên
dụng cho các nhiệm vụ truyền thông.
Sử dụng danh mục phần cứng để thêm các module vào CPU. Có 3 kiểu module:
Các module tín hiệu (SM): cung cấp các điểm I/O bổ sung kiểu số hay kiểu
tương tự. Các module này được kết nối bên phải CPU.
Bảng tín hiệu (SB): cung cấp chỉ một vài điểm I/O bổ sung cho CPU. SB được
lắp đặt ở mặt trước của CPU.
Các module truyền thông (CM): cung cấp một cổng truyền thông bổ sung
(RS232 hay RS485) cho CPU. Các module này được kết nối bên trái CPU.
Để chèn một module vào trong cấu hình phần cứng, lựa chọn module trong
danh mục phần cứng và nhấp đôi chuột hay kéo module đó đến khe được tô sáng.
Tên
Lựa chọn module Chèn module Kết quả
module
SM
SB
CM
Để cấu hình các thông số vận hành cho các module, lựa chọn module trong
Device view và sử dụng thẻ “Properties” của cửa sổ kiểm tra để cấu hình các thông số
cho module.
Cấu hình một module tín hiệu (SM) hay một bảng tín hiệu (SB)
I/O kiểu số: các ngõ vào có thể được cấu hình cho việc phát hiện ngưỡng tăng
hay ngưỡng giảm (mỗi ngưỡng liên quan với một sự kiện và ngắt phần cứng) và
còn cho việc “bắt giữ xung” (để lưu lại sau một xung tức thời) cho đến cập nhật
kế tiếp của ảnh tiến trình ngõ vào. Các ngõ ra có thể sử dụng một giá trị ngừng
phát triển hay một giá trị thay thế.
I/O kiểu tương tự: đối với các ngõ vào riêng lẻ, cấu hình các thông số, như là
kiểu đại lượng đo (điện áp hay dòng điện), phạm vi và sự làm trơn, và để khởi
động các chẩn đoán tràn dưới hay tràn ra. Các ngõ ra cung cấp các thông số như
là kiểu ngõ ra (điện áp hay dòng điện) và dành cho các chẩn đoán, ví dụ như
ngắn mạch (đối với ngõ ra điện áp) hay các chẩn đoán giới hạn dưới/trên.
Các địa chỉ chẩn đoán I/O: cấu hình địa chỉ khởi đầu dành cho thiết lập của các
ngõ vào và ngõ ra của module.
Cấu hình cổng: cấu hình các thông số truyền thông, như tốc độ baud, tính chẵn
lẻ, các bit dữ liệu, các bit dừng, điều khiển dòng, các ký tự XON và XOFF, và
thời gian chờ.
Cấu hình thông điệp truyền phát: khởi động và cấu hình các tùy chọn có liên
quan đến truyền phát.
Cấu hình thông điệp thu nhận: khởi động và cấu hình các thông số khởi đầu
thông điệp và kết thúc thông điệp.
Các thông số cấu hình này có thể được thay đổi bởi chương trình.
Người dùng sử dụng “Network view” trong Device Configuration để tạo ra các
kết nối mạng giữa các thiết bị trong đề án. Sau khi tạo ra kết nối mạng, sử dụng thẻ
“Properties” của cửa sổ kiểm tra để cấu hình các thông số của mạng.
Sau khi cấu hình CPU trên thanh đỡ, người dùng có thể cấu hình các thông số
cho giao diện PROFINET. Để làm điều này, nhấp vào hộp PROFINET màu xanh lá
cây trên CPU để lựa chọn cổng PROFINET. Thẻ “Properties” trong cửa sổ kiểm tra sẽ
hiển thị cổng PROFINET.
Cổng PROFINET
Địa chỉ Ethernet (MAC): trong một mạng PROFINET, mỗi thiết bị được gán
một địa chỉ MAC (Media Access Control: điều khiển truy xuất truyền thông) bởi nhà
sản xuất nhằm nhận dạng. Một địa chỉ MAC bao gồm 6 nhóm gồm 2 ký chữ số thập
lục phân, được ngăn cách bằng các dấu gạch nối (-) hay các dấu hai chấm (:), theo thứ
tự truyền phát, ví dụ 01-23-45-67-89-AB hay 01:23:45:67:89:AB.
Địa chỉ IP: mỗi thiết bị còn cần phải có một địa chỉ IP (Internet Protocol: giao
thức mạng quốc tế). Địa chỉ này cho phép thiết bị chuyển giao dữ liệu trên một mạng
phức hợp hơn và được định tuyến.
Mỗi địa chỉ IP được chia thành 4 đoạn 8 bit và được thể hiện theo định dạng
thập phân có dấu chấm, ví dụ 211.154.184.16. Phần đầu tiên của địa chỉ IP được dùng
cho Network ID (loại mạng đang sử dụng), và phần thứ hai là cho Host ID (đơn nhất
đối với mỗi thiết bị trên mạng). Một địa chỉ IP dưới dạng 192.168.x.y là một ký hiệu
tiêu chuẩn được nhận biết như một phần của mạng riêng mà không được định tuyến
trên Internet.
Màn chắn mạng con: mạng con là một sự kết nhóm theo logic gồm các thiết bị
mạng được kết nối. Các điểm nút trên một mạng con có khuynh hướng được định vị
với một khoảng cách vật lý gần với nhau trên một mạng cục bộ (LAN: Local Area
Network). Một màn chắn (đóng vai trò là màn chắn mạng con hay màn chắn mạng) sẽ
xác định các vùng biên của một mạng con IP.
Một màn chắn mạng con 255.255.255.0 thông thường thích hợp cho một mạng
cục bộ loại nhỏ. Điều này có nghĩa là tất cả các địa chỉ IP trên mạng này đều có 3
trường 8 bit đầu tiên là giống nhau, và các thiết bị khác nhau trên mạng sẽ được định
danh bằng 8 bit cuối cùng. Ví dụ minh họa cho điều này là để gán một màn chắn mạng
con 255.255.255.0 và một địa chỉ IP nằm từ 192.168.2.0 đến 182.169.2.255 đến các
thiết bị trên một mạnh cục bộ loại nhỏ.
Chỉ kết nối giữa các mạng con khác nhau là thông qua một bộ định tuyến. Nếu
các mạng con được sử dụng, một bộ định tuyến IP phải được dùng.
Bộ định tuyến IP: các bộ định tuyến là liên kết giữa các mạng LAN. Việc sử
dụng một bộ định tuyến, một máy tính trong mạng LAN có thể gửi đi các thông điệp
đến bất kỳ các mạng nào khác mà có thể có các mạng LAN khác theo sau chúng. Nếu
đích đến của dữ liệu không nằm trong mạng LAN, bộ định tuyến sẽ chuyển tiếp dữ
liệu đến một mạng khác hay một nhóm các mạng mà dữ liệu có thể được chuyển giao
đến.
Các bộ định tuyến dựa vào các địa chỉ IP để chuyển giao và thu nhận các gói dữ
liệu.
Các thuộc tính địa chỉ IP: trong cửa sổ Properties, lựa chọn mục nhập cấu hình
“Ethernet address”. TIA Portal sẽ hiển thị hộp thoại cấu hình địa chỉ Ethernet, có liên
quan đến đề án phần mềm với địa chỉ IP của CPU sẽ nhận đề án đó.
Lƣu ý
CPU không có địa chỉ IP được cấu hình trước. Người dùng phải gán một địa chỉ
IP cho CPU một cách thủ công. Nếu CPU được kết nối đến một bộ định tuyến trên một
mạng, người dùng còn phải nhập vào địa chỉ IP của bộ định tuyến này. Tất cả các địa
chỉ IP được cấu hình khi người dùng tải xuống đề án.
Bảng sau đây xác định các thông số của địa chỉ IP:
Thông số Miêu tả
Tên của mạng con mà thiết bị được kết nối đến. Nhấp vào nút “Add new
subnet” để tạo ra một mạng con mới. Mặc định là “Not connected”.
Mạng con Hai kiểu kết nối có thể dùng:
Mặc định “Not connected” cung cấp một kết nối cục bộ
Một mạng con được yêu cầu khi mạng có nhiều hơn từ hai thiết bị
Màn chắn mạng con Màn chắn mạng con được gán
Giao thức
Nhấp vào hộp chọn để chỉ ra mục đích của
IP Mục đích của bộ định tuyến IP
một bộ định tuyến IP
Địa chỉ IP được gán cho bộ định tuyến, nếu
Địa chỉ bộ định tuyến
áp dụng được
Chƣơng 4
Khi thiết kế một hệ thống PLC, ta có thể chọn từ nhiều phương pháp và chỉ tiêu
khác nhau. Các hướng dẫn chung sau đây có thể áp dụng đến nhiều đề án thiết kế. Tất
nhiên, ta phải theo các lệnh dẫn của các thủ tục của riêng công ty và các áp dụng được
chấp nhận đối với việc huấn luyện cũng như khu vực của mình.
Các bƣớc
Các nhiệm vụ
đề nghị
Phân chia tiến trình hay bộ máy thành các khâu có mức độ phụ thuộc vào
Phân vùng
nhau. Các phân vùng này xác định các vùng biên giữa các bộ điều khiển, sự
tiến trình
ảnh hưởng các đặc tính kỹ thuật miêu tả chức năng, và sự phân nhiệm của
hay bộ máy
các tài nguyên.
Ghi các miêu tả vận hành đối với mỗi công đoạn trong chu trình hay bộ máy,
như các điểm I/O, miêu tả chức năng của việc vận hành, các trạng thái phải
Tạo ra các
được đạt đến trước khi cho phép sự hoạt động đối với mỗi cơ cấu (như một
đặc tính
cuộn dây nam châm, động cơ hay một bộ điều khiển), một sự miêu tả giao
chức năng
diện điều khiển, và bất kỳ các giao diện nào với các công đoạn khác của tiến
trình hay bộ máy.
Nhận dạng bất kỳ thiết bị nào có thể yêu cầu logic gắn cứng để an toàn. Hãy
nhớ rằng các thiết bị điều khiển có thể hư hỏng khi phương pháp không an
toàn, điều này có thể sinh ra sự khởi động hay sự thay đổi không mong muốn
trong quá trình hoạt động của máy móc. Tại nơi mà sự vận hành không chính
xác hay không được mong muốn của thiết bị có thể gây ra hậu quả về mặt
tổn thương vật lý đến con người hay sự hủy hoại tài sản đáng kể, cần cân
Thiết kế các
nhắc đến việc thực thi của việc khống chế bằng điện cơ. Các nhiệm vụ sau
mạch an
đây nên được cài đặt sẵn trong thiết kế của các mạch an toàn:
toàn
Nhận dạng bất kỳ sự vận hành không bình thường hay không mong
muốn của các cơ cấu mà có thể nguy hiểm.
Nhận dạng các điều kiện sẽ bảo đảm sự vận hành không nguy hiểm,
và xác định làm cách nào để phát hiện các điều kiện này một cách
độc lập với PLC.
Nhận dạng bằng cách nào mà PLC tác động đến tiến trình khi đặt vào
hay gỡ bỏ nguồn điện, và còn nhận dạng bằng cách nào và khi nào
mà các lỗi được phát hiện. Chỉ sử dụng thông tin này dành cho việc
thiết kế sự vận hành bình thường hay bất bình thường theo mong
muốn. Ta không nên phụ thuộc vào viễn cảnh của tình huống tốt nhất
này đối với các mục đích an toàn.
Thiết kế việc khống chế an toàn bằng tay hay bằng điện cơ mà ngăn
chặn sự vận hành nguy hiểm một cách độc lập với PLC.
Cung cấp thông tin trạng thái thích hợp từ các mạch độc lập đến PLC
để mà chương trình và bất kỳ các giao diện điều khiển khác có được
thông tin cần thiết.
Nhận dạng bất kỳ các yêu cầu có liên quan đến an toàn khác dành
cho sự hoạt động an toàn của tiến trình.
Dựa trên những yêu cầu của các thông số kỹ thuật chức năng, tạo ra các bản
vẽ sau của các trạm điều hành:
Xác định Bản vẽ tổng quan thể hiện vị trí của mỗi trạm điều hành theo quan hệ
các trạm đến tiến trình hay bộ máy.
điều hành Bản vẽ bố trí máy móc của các thiết bị dành cho trạm điều hành, như
bộ hiển thị, các chuyển mạch và đèn.
Bản vẽ điện với I/O có liên quan của PLC và các module tín hiệu.
Dựa trên những yêu cầu của các thông số kỹ thuật chức năng, tạo ra các bản
vẽ cấu hình của thiết bị điều khiển:
Bản vẽ tổng quan thể hiện vị trí của mỗi PLC theo quan hệ đến tiến
Tạo ra các
trình hay bộ máy.
bản vẽ về
Bản vẽ bố trí máy móc của mỗi PLC và bất kỳ các module I/O, bao
cấu hình
gồm các tủ máy và thiết bị khác.
Bản vẽ điện cho mỗi PLC và bất kỳ các module I/O, bao gồm các số
hiệu mẫu của thiết bị, các địa chỉ truyền thông và các địa chỉ I/O.
Tạo ra một
Tạo ra một danh sách các tên gọi ký hiệu cho các địa chỉ tuyệt đối. Bao gồm
danh sách
không chỉ các tín hiệu I/O vật lý mà còn các phần tử khác (như các tên thẻ
các tên gọi
ghi) để được sử dụng trong chương trình.
ký hiệu
Khi tạo ra một chương trình người dùng cho các nhiệm vụ về tự động, ta chèn
các lệnh của chương trình vào trong các khối mã:
Khối tổ chức (OB), đáp ứng một sự kiện xác định trong CPU và có thể ngắt sự
thực thi của chương trình. Mặc định đối với thực thi theo chu trình của chương
trình người dùng (OB 1) cung cấp cấu trúc cơ bản dành cho chương trình và chỉ
là khối mã được yêu cầu đối với chương trình. Nếu ta bao hàm các OB khác
trong chương trình, các OB này sẽ ngắt sự thực thi của OB 1. Các OB khác thực
hiện các hàm đặc trưng, ví dụ như cho các tác vụ khởi động, cho việc xử lý các
ngắt và lỗi, hay cho việc thực thi mã chương trình đặc trưng tại các khoảng thời
gian dừng riêng biệt.
Khối chức năng (FB), là một đoạn chương trình con được thực thi khi nó được
gọi từ khối mã khác (OB, FB hay FC). Khối đang gọi chuyển tiếp các thông số
đến FB và còn nhận dạng một khối dữ liệu đặc trưng mà khối dữ liệu đó lưu trữ
dữ liệu cho lần gọi riêng hay cho giá trị mẫu của FB đó. Việc thay đổi DB mẫu
cho phép một FB chung điều khiển sự hoạt động của một tổ hợp các thiết bị. Ví
dụ, một FB có thể điều khiển một vài máy bơm hay van, với các DB mẫu chứa
các thông số vận hành riêng biệt của mỗi máy bơm hay van.
Mã chức năng (FC), là một chương trình con mà được thực thi khi nó được gọi
từ một khối mã khác (OB, FB hay FC). FC không có một DB mẫu có liên quan.
Khối đang gọi chuyển tiếp các thông số đến FC. Các giá trị ngõ ra từ FC phải
được ghi đến một địa chỉ nhớ hay đến một DB toàn cục.
Việc chọn kiểu cấu trúc cho chƣơng trình ngƣời dùng
Dựa trên các yêu cầu của ứng dụng, ta có thể chọn cấu trúc thẳng hay cấu trúc
kiểu khối kết cấu để tạo ra chương trình.
Chương trình thẳng thực thi tất cả các lệnh của tác vụ về tự động theo tuần tự,
lệnh này theo sau lệnh kia. Thông thường, chương trình thẳng đặt tất cả các
lệnh chương trình vào trong OB dành cho việc thực thi theo chu trình của
chương trình (OB 1).
Chương trình khối kết cấu sẽ gọi các khối mã đặc trưng mà khối mã đó thực
hiện các tác vụ riêng biệt. Để tạo ra một cấu trúc theo khối kết cấu, ta chia tác
vụ thành nhiều tác vụ phụ nhỏ hơn phù hợp với các chức năng về mặt kỹ thuật
của tiến trình. Mỗi khối mã cung cấp đoạn chương trình cho mỗi tác vụ phụ. Ta
cấu trúc chương trình bằng cách gọi một trong số các khối mã từ một khối khác.
Bằng cách tạo ra các khối mã chung có thể được tái sử dụng trong chương trình người
dùng, ta có thể đơn giản hóa thiết kế và sự thực thi chương trình. Việc sử dụng các
khối mã chung có một số các lợi ích sau:
Ta có thể tạo ra các khối hàm sử dụng lại được dành cho các tác vụ tiêu chuẩn,
như dành cho điều khiển một máy bơm hay một động cơ. Ta còn có thể lưu trữ
các khối hàm chung này trong một thư viện có thể được sử dụng bởi các ứng
dụng hay các giải pháp khác.
Khi ta cấu trúc chương trình vào trong các thành phần kiểu kết cấu có liên quan
đến các tác vụ chức năng, thiết kế của chương trình có thể hiểu và quản lý dễ
dàng hơn. Các thành phần kiểu kết cấu không chỉ giúp tiêu chuẩn hóa thiết kế
chương trình mà còn giúp thực hiện việc cập nhật hay chỉnh sửa mã chương
trình nhanh hơn và dễ dàng hơn.
Việc tạo ra các thành phần kiểu kết cấu làm đơn giản việc gỡ rối chương trình.
Bằng cách cấu trúc chương trình hoàn chỉnh như một tổ hợp các bộ phận của
chương trình kiểu kết cấu, ta có thể kiểm tra chức năng của mỗi khối mã hàm
khi nó được phát triển.
Việc tạo ra các thành phần kiểu kết cấu có liên quan đến các chức năng về công
nghệ đặc trưng có thể giúp làm đơn giản và rút gọn thời gian dành cho thực
hiện một ứng dụng hoàn chỉnh.
Bằng cách thiết kế các FB và FC để thực hiện các tác vụ chung, ta tạo ra các
khối mã kiểu kết cấu. Sau đó cấu trúc chương trình bằng cách làm cho các khối mã
khác gọi những module có thể sử dụng lại này. Khối đang gọi sẽ chuyển tiếp các thông
số đặc trưng của thiết bị đến khối được gọi.
Khi một khối mã gọi khối mã khác, CPU thực thi mã chương trình trong khối
được gọi. Sau khi sự thực thi của khối được gọi đã hoàn thành, CPU khôi phục lại sự
thực thi của khối đang gọi.
Việc xử lý tiếp tục với sự thực thi của lệnh theo sau việc gọi khối. Ta có thể xếp
các việc gọi khối lồng vào nhau đối với cấu trúc kiểu kết cấu phức tạp hơn.
Các khối tổ chức cung cấp cấu trúc cho chương trình. Chúng đóng vai trò như
một giao diện giữa hệ điều hành và chương trình người dùng. Các OB được điều khiển
theo sự kiện. Một sự kiện, ví dụ như một ngắt chẩn đoán hay một khoảng thời gian
dừng, sẽ làm cho CPU thực hiện một OB. Một vài OB có các sự kiện khởi động cách
hoạt động được định trước.
OB chu kỳ chương trình chứa chương trình chính của người dùng. Ta có thể
bao gồm nhiều hơn một OB chu kỳ chương trình trong chương trình. Trong suốt chế
độ RUN, các OB chu kỳ chương trình thực thi tại mức ưu tiên thấp nhất và có thể bị
ngắt bởi tất cả các việc xử lý chương trình khác. OB khởi động không ngắt OB chu kỳ
chương trình bởi vì CPU thực thi OB khởi động trước khi đi vào chế độ RUN.
Sau khi hoàn thành việc xử lý các OB chu kỳ chương trình, CPU ngay lập tức
thực thi một lần nữa các OB chu kỳ chương trình. Việc xử lý theo chu kỳ này là dạng
“bình thường” của kiểu xử lý được sử dụng cho các bộ điều khiển logic khả trình. Đối
với nhiều ứng dụng, chương trình người dùng toàn bộ được định vị trong OB chu kỳ
chương trình đơn lẻ.
Ta có thể tạo ra các OB khác để thực hiện các hàm đặc trưng, ví dụ như các tác
vụ khởi động, dành cho việc xử ký các ngắt và các lỗi, hay dành cho thực thi mã
chương trình đặc trưng tại các khoảng thời gian dừng riêng biệt. Các OB này ngắt việc
thực thi các OB chu kỳ chương trình.
Sử dụng hộp thoại “Add new block” để tạo ra các OB mới trong chương trình.
CPU xác định mệnh lệnh dành cho việc xử lý các sự kiện ngắt bằng một mức
ưu tiên được gán đến mỗi OB. Mỗi sự kiện ngắt có một mức ưu tiên phục vụ riêng
biệt. Một vài sự kiện ngắt có thể được tổ hợp vào trong các lớp ưu tiên.
Ta có thể tạo ra nhiều OB dành cho chương trình, cả cho chu kỳ chương trình
và các lớp OB khởi động. Sử dụng hộp thoại “Add new block” để tạo ra một OB.
Nhập vào tên cho OB và nhập vào một số hiệu OB lớn hơn 200.
Nếu ta tạo ra nhiều OB chu kỳ chương trình dành cho chương trình, COU thực
thi mỗi OB chu kỳ chương trình theo trình tự bằng số, bắt đầu với OB chu kỳ chương
trình chính (mặc định: OB 1). Ví dụ: sau khi OB chu kỳ chương trình đầu tiên (OB 1)
hoàn thành, CPU thực thi OB chu kỳ chương trình thứ hai (ví dụ OB 200).
Một hàm (FC) là một khối mã mà thông thường nó thực hiện một sự vận hành
đặc trưng trên một hệ thống các giá trị ngõ vào. FC lưu trữ các kết quả của hoạt động
này trong các vùng nhớ.
Để thực hiện các hoạt động tiêu chuẩn và có thể tái sử dụng, ví dụ như dành cho
các phép toán.
Để thực hiện các hàm về công nghệ, ví dụ như dành cho điều khiển cá thể sử
dụng phép logic về bit.
Một FC có thể được gọi nhiều lần tại các điểm khác nhau trong chương trình.
Việc sử dụng lại này làm đơn giản hóa sự lập trình các tác vụ lặp lại một cách thường
xuyên.
Một FC không có khối dữ liệu (DB) mẫu liên quan. FC sử dụng nhóm dữ liệu
cục bộ dành cho các dữ liệu tạm thời được sử dụng để tính toán. Dữ liệu tạm thời
không được lưu lại. Để lưu trữ dữ liệu lâu dài, gán giá trị ngõ ra đến một khu vực nhớ
toàn cục, như bộ nhớ M hay đến một DB toàn cục.
Khối hàm là một khối mã sử dụng một khối dữ liệu mẫu cho các thông số và dữ
liệu tĩnh của nó. Các FB có bộ nhớ biến được đặt trong một khối dữ liệu (DB), hay DB
“mẫu”. DB mẫu cung cấp một khối bộ nhớ có liên quan đến giá trị mẫu (hay lần gọi)
của FB đó và lưu trữ dữ liệu sau khi FB hoàn thành. Ta có thể kết hợp các DB mẫu
khác nhau với những lần gọi FB khác nhau. Các DB mẫu cho phép ta sử dụng một FB
chung để điều khiển nhiều các thiết bị. Ta cấu trúc chương trình bằng cách cho một
khối mã thực hiện một việc gọi đến một FB và một DB mẫu. CPU sau đó sẽ thực thi
mã chương trình trong FB đó, và lưu trữ các thông số khối và dữ liệu cục bộ tĩnh trong
DB mẫu. Khi sự thực thi của FB hoàn thành, CPU trả về khối mã đã gọi FB. DB mẫu
giữ lại các giá trị cho giá trị mẫu đó của FB. Các giá trị này có sẵn cho các lần gọi theo
tuần tự đến khối hàm cả trong cùng chu kỳ quét hay trong các chu kỳ quét khác nhau.
Thông thường ta sử dụng một FB để điều khiển sự vận hành của các tác vụ mà
chúng không hoàn thành việc vận hành chỉ trong một chu kỳ quét. Để lưu trữ các
thông số vận hành để từ đó chúng có thể được truy xuất một cách dễ dàng từ một lần
quét đến lần quét tiếp theo, mỗi FB trong chương trình người dùng có một hay nhiều
hơn các DB mẫu. Khi gọi một FB, ta còn chỉ rõ một DB mẫu chứa các thông số khối
và dữ liệu cục bộ tĩnh cho việc gọi đó hay cho “mẫu” của FB. DB mẫu vẫn duy trì các
dữ liệu này sau khi FB hoàn tất sự thực thi.
Bằng cách thiết kế FB cho các tác vụ điều khiển chung, ta có thể sử dụng lại FB
cho nhiều thiết bị bằng cách lựa chọn các DB mẫu khác nhau đối với các lần gọi FB
khác nhau.
Một FB lưu trữ các thông số ngõ vào (IN), thông số ngõ ra (OUT) và thông số
vào/ra (IN_OUT) trong một DB mẫu.
Nếu các thông số ngõ vào, ngõ ra hay vào/ra của một khối hàm (FB) không
được gán các giá trị, khi đó các giá trị được lưu trữ trong khối dữ liệu (DB) mẫu sẽ
được sử dụng. Trong một vài trường hợp, ta phải gán giá trị các thông số.
CHƢƠNG 4: KHÁI NIỆM LẬP TRÌNH Trang 4 - 11
www.TuDongHoaVietNam.net
Ta có thể gán các giá trị ban đầu vào các thông số trong giao diện FB. Các giá
trị này được truyền đi đến DB mẫu có liên quan. Nếu ta không gán giá trị các thông số,
các giá trị hiện thời được lưu trữ trong DB mẫu sẽ được sử dụng.
Hình sau đây thể hiện một OB mà OB đó gọi một FB 3 lần, bằng cách sử dụng
một khối dữ liệu khác nhau cho mỗi lần gọi. Cấu trúc này cho phép một FB chung
điều khiển nhiều thiết bị giống nhau, ví dụ như các động cơ, bằng cách gán mỗi khối
dữ liệu mẫu khác nhau cho mỗi lần gọi các thiết bị khác nhau. Mỗi DB mẫu lưu trữ
các dữ liệu (như tốc độ, thời gian tăng lên, và tổng thời gian hoạt động) cho mỗi thiết
bị riêng lẻ. Trong ví dụ này, FB 22 điều khiển 3 thiết bị riêng biệt, với DB 201 lưu trữ
dữ liệu hoạt động cho thiết bị đầu tiên, DB 202 lưu trữ dữ liệu hoạt động cho thiết bị
thứ hai, và DB 202 lưu trữ dữ liệu hoạt động cho thiết bị thứ ba.
Ta tạo ra các khối dữ liệu (DB) trong chương trình người dùng để lưu trữ dữ
liệu cho các khối mã. Tất cả các khối chương trình đều có thể truy xuất dữ liệu trong
một DB toàn cục, nhưng một DB mẫu thì chỉ lưu trữ dữ liệu cho một khối hàm (FB)
đặc trưng. Ta có thể xác định một DB đóng vai trò chỉ đọc.
Các dữ liệu được lưu trữ trong một DB sẽ không bị xóa khi sự thực thi của khối
mã có liên quan kết thúc. Có hai kiểu DB:
DB toàn cục lưu trữ dữ liệu cho các khối mã trong chương trình. Bất kỳ OB, FB
hay FC đều có thể truy xuất dữ liệu trong một DB toàn cục.
DB mẫu lưu trữ dữ liệu cho một FB đặc trưng. Cấu trúc của dữ liệu trong một
DB mẫu phản ánh các thông số (IN, OUT và IN_OUT) và dữ liệu tĩnh của FB.
(Bộ nhớ Temp cho FB thì không được lưu trữ trong DB mẫu).
Lƣu ý
Mặc dù DB mẫu phản ánh các dữ liệu cho một FB đặc trưng, tuy nhiên bất kỳ
mã hàm nào cũng có thể truy xuất dữ liệu trong một DB mẫu.
CPU duy trì các dữ liệu một cách thống nhất cho tất cả các kiểu dữ liệu cơ bản
(ví dụ như kiểu Word hay DWord) và tất cả các cấu trúc được xác định trong hệ thống
(ví dụ IEC_TIMERS hay DTL). Việc đọc hay ghi giá trị không thể bị ngắt. (Ví dụ,
CPU bảo vệ việc truy xuất đến một giá trị DWord cho đến khi 4 byte DWord đã vừa
được đọc hay ghi). Để đảm bảo rằng các OB chu kỳ chương trình và các OB ngắt
không thể ghi vào cùng một vị trí nhớ tại cùng thời điểm, CPU sẽ không thực thi một
OB ngắt cho đến khi hoạt động đọc hay ghi ở trong OB chu kỳ chương trình đã hoàn
thành.
Nếu chương trình chia sẻ nhiều dữ liệu trong bộ nhớ giữa một OB chu kỳ
chương trình và một OB ngắt, chương trình phải còn đảm bảo rằng các dữ liệu này
được chỉnh sửa hay được đọc một cách thống nhất. Ta có thể sử dụng các lệnh
DIS_AIRT và EN_AIRT trong OB chu kỳ chương trình để bảo vệ bất kỳ truy xuất nào
đến các dữ liệu được chia sẻ.
Chèn vào một lệnh DIS_AIRT trong khối mã để đảm bảo rằng một OB ngắt
không thể được thực thi trong suốt quá trình hoạt động đọc hay ghi.
Chèn vào các lệnh đọc hay ghi các giá trị mà có thể được thay đổi bởi một OB
ngắt.
Chèn vào một lệnh EN_AIRT tại điểm kết thúc của dãy tuần tự để bỏ qua lệnh
DIS_AIRT và cho phép sự thực thi của OB ngắt.
Một yêu cầu truyền thông từ một thiết bị HMI hay CPU khác còn có thể ngắt sự
thực thi của OB chu kỳ chương trình. Các yêu cầu truyền thông còn có thể gây ra các
ban hành dữ liệu nhất quán. CPU đảm bảo rằng các kiểu dữ liệu cơ bản luôn luôn được
đọc và được ghi một cách nhất quán bởi các lệnh chương trình người dùng. Vì chương
trình được ngắt một cách định kỳ bằng việc truyền thông, nó không thể bảo đảm rằng
tất cả các giá trị trong CPU sẽ được cập nhật tại cùng thời điểm bởi HMI. Ví dụ, các
giá trị được hiển thị trên một màn hình HMI đã cho có thể là từ các chu kỳ quét khác
của CPU.
Các lệnh PtP, và các lệnh PROFINET (như TSEND_C và TRCV_C) truyền các
bộ đệm dữ liệu mà có thể bị ngắt. Đảm bảo dữ liệu nhất quán cho các bộ đệm dữ liệu
bằng cách tránh bất kỳ hoạt động đọc hay ghi đến các bộ đệm trong cả OB chu kỳ
chương trình và OB ngắt. Nếu cần thiết chỉnh sửa các giá trị đệm cho các lệnh này
trong một OB ngắt, sử dụng lệnh DIS_AIRT để trì hoãn bất kỳ sự ngắt nào (một OB
ngắt hay một ngắt truyền thông từ một HMI hay một CPU khác) cho đến khi một lệnh
EN_AIRT được thực thi.
Lƣu ý
Việc sử dụng lệnh DIS_AIRT trì hoãn sự xử lý của các OB ngắt cho đến khi lệnh
EN_AIRT được thực thi, ảnh hưởng đến độ trễ ngắt (thời điểm tính từ sự kiện đến thời
điểm khi OB ngắt được thực thi) của chương trình người dùng.
Ta có tùy chọn trong việc lựa chọn cả ngôn ngữ lập trình LAD (ladder logic)
hay FBD (Function Block Diagram).
LAD là một ngôn ngữ lập trình kiểu đồ họa. Sự hiển thị được dựa trên các sơ đồ
mạch điện.
Cần chú ý đến các quy tắc sau đây khi tạo ra một mạng LAD:
Mỗi mạng LAD phải kết thúc bằng một cuộn dây hay một lệnh dạng hộp.
Không được kết thúc một mạng với cả lệnh so sánh (Compare) hay lệnh phát
hiện ngưỡng (ngưỡng dương hay ngưỡng âm).
Ta không thể tạo ra một nhánh mà có thể đưa lại kết quả là một dòng tín hiệu
theo chiều ngược lại.
Ta không thể tạo ra một nhánh mà có thể gây nên ngắn mạch.
Giống như ngôn ngữ LAD, ngôn ngữ FBD cũng là một ngôn ngữ lập trình kiểu
đồ họa. Sự hiển thị của mạch logic được dựa trên các biểu tượng logic đồ họa sử dụng
trong đại số Boolean.
Cả ngôn ngữ LAD và FBD đều sử dụng “dòng tín hiệu” (EN và ENO) đối với
một vài lệnh “hộp”. Các lệnh cố định (như lệnh toán học và lệnh di chuyển) hiển thị
các thông số cho EN và ENO. Các thông số này liên quan đến dòng tín hiệu và xác
định khi nào lệnh được thực thi trong suốt lần quét đó.
EN (Enable In) là một ngõ vào Boolean cho các hộp trong ngôn ngữ LAD và
FBD. Dòng tín hiệu (EN = 1) phải được hiện diện tại ngõ vào này để cho lệnh
hộp được thực thi. Nếu ngõ vào EN của một hộp LAD được kết nối trực tiếp
đến thanh dẫn tín hiệu bên trái, hộp sẽ luôn luôn được thực thi.
ENO (Enable Out) là một ngõ ra Boolean cho các hộp trong ngôn ngữ LAD và
FBD. Nếu hộp có dòng tín hiệu tại ngõ vào EN và hộp thực thi các chức năng
của nó mà không có lỗi, khi đó ngõ ra ENO sẽ cho dòng tín hiệu (ENO = 1) đi
qua đến phần tử kế tiếp. Nếu một lỗi được phát hiện trong quá trình thực thi của
lệnh hộp, dòng tín hiệu sau đó sẽ bị ngắt (ENO = 0) tại hộp lệnh đã sinh ra lỗi.
Để bảo vệ chống sao chép một khối, lựa chọn lệnh “Know how protection” từ
trình đơn “Edit”. Sau đó ta nhập vào một mật khẩu cho phép truy xuất đến khối.
Sự bảo vệ bằng mật khẩu sẽ ngăn chặn việc đọc hay chỉnh sửa không được cho
phép một khối hàm. Nếu không có mật khẩu, ta chỉ có thể đọc các thông tin sau đây về
khối mã:
Tiêu đề khối, chú giải khối và các thuộc tính của khối.
Các thông số truyền (IN, OUT, IN_OUT, Return)
Cấu trúc gọi của chương trình
Các thẻ ghi tổng thể trong các tham chiếu chéo (không có thông tin trên điểm
sử dụng), nhưng các thẻ ghi cục bộ bị ẩn.
Ta có thể tải xuống các phần tử của đề án từ các thiết bị lập trình đến CPU. Khi
ta tải xuống một đề án, CPU sẽ lưu trữ chương trình người dùng (các OB, FC, FB và
DB) trong bộ nhớ thường trực.
Ta có thể tải xuống đề án từ một thiết bị lập trình đến CPU từ bất kỳ trong các
khu vực sau:
Ta có thể tải lên tất cả các khối chương trình và bảng thẻ ghi từ một CPU trực
tuyến (online) đến một đề án ngoại tuyến (offline), nhưng không thể tải lên cấu hình
thiết bị hay các bảng quan sát. Ta không thể tải lên vào trong một đề án trống, mà phải
có một CPU ngoại tuyến có thể tải lên. Ta không thể tải lên một khối đơn lẻ, mà chỉ có
thể tải lên toàn bộ chương trình. Nếu một việc tải lên được thực hiện, CPU ngoại tuyến
sẽ “bị xóa” (tất cả các khối và bảng thẻ ghi sẽ bị xóa) trước việc tải lên sau một câu hỏi
kiểm tra. Ta không thể chỉnh sửa một khối trong vùng trực tuyến, mà trước tiên phải
tải lên nó đến một vùng ngoại tuyến, sau đó chỉnh sửa tại đó và cuối cùng tải lại trở về
PLC.
Có hai cách để thực hiện việc tải lên: kéo và thả vào cây Project, hay đồng bộ
hóa trong trình soạn thảo Compare.
Ta còn có thể kéo từ vùng trực tuyến đến vùng “Program blocks” của một
chương trình được tạo sẵn. Điều đó có nghĩa là, vùng ngoại tuyến “Program blocks”
không bắt buộc phải trống. Trong trường hợp này, chương trình được tạo sẵn sẽ bị xóa
và được thay thế bởi chương trình trực tuyến.
1. Mở đề án.
2. Trong cây Project, lựa chọn CPU ngoại tuyến để so sánh.
3. Mở trình soạn thảo “Compare” bằng cách nhấp chuột phải lên CPU ngoại
tuyến, hay bằng cách lựa chọn lệnh “Compare offline/online” từ trình đơn
“Menu”.
4. Trình soạn thảo Compare liệt kê các khác biệt ở dưới thư mục “Program
blocks”. Nhấp vào biểu tượng trong cột thao tác. Để tải lên đề án, lựa chọn
“Upload from device”.
5. Nhấp vào nút “Synchronize online and offline” để sao chép đề án từ CPU trực
tuyến đến CPU ngoại tuyến.
Ta sử dụng “các bảng quan sát” để giám sát và chỉnh sửa các giá trị của một
chương trình người dùng đang được thực thi bởi CPU trực tuyến. Ta có thể tạo ra và
lưu các bảng quan sát khác nhau trong đề án để hỗ trợ một loạt các môi trường kiểm
tra. Điều này cho phép tái thực hiện các kiểm tra trong suốt việc thử nghiệm hay cho
các mục đích phục vụ và bảo trì.
Với một bảng quan sát, ta có thể giám sát và tương tác với CPU khi nó thực thi
chương trình người dùng. Ta có thể hiển thị hay thay đổi các giá trị không chỉ đối với
các thẻ ghi của khối hàm và khối dữ liệu, mà còn đối với các vùng nhớ của CPU, bao
gồm các ngõ vào và ngõ ra (I và Q), các ngõ vào và ngõ ra ngoại vi (I:P và Q:P), bộ
nhớ bit (M) và các khối dữ liệu (DB).
Với bảng quan sát, ta có thể kích hoạt các ngõ ra vật lý (Q:P) của một CPU
trong chế độ STOP. Ví dụ, ta có thể gán các giá trị đặc trưng đến các ngõ ra khi kiểm
tra việc nối dây đối với CPU.
Bảng quan sát còn cho phép ta “bắt buộc” hay thiết lập một thẻ ghi đến một giá
trị đặc trưng.
Chƣơng 5.
Ta có thể kết nối các tiếp điểm với nhau và tạo ra mạch logic kết nối. Nếu bit
ngõ vào mà ta chỉ rõ sử dụng bộ định danh I (ngõ vào) hay Q (ngõ ra), giá trị bit sẽ
được đọc từ một thanh ghi ảnh tiến trình. Các tín hiệu tiếp điểm vật lý trong tiến trình
điều khiển được nối đến các đầu cực I trên PLC. CPU quét các tín hiệu ngõ vào được
nối và cập nhật liên tục các giá trị tương ứng trong thanh ghi ngõ vào ảnh tiến trình.
Ta có thể ghi rõ một kết quả tức thời của một ngõ vào vật lý bằng cách sử dụng
“:P” theo sau sự dịch chỉnh I (ví dụ: “%I3.4:P”). Đối với một kết quả tức thời, các giá
trị dữ liệu bit được đọc một cách trực tiếp từ ngõ vào vật lý thay vì từ ảnh tiến trình.
Một kết quả tức thời thì không cập nhật ảnh tiến trình.
Tiếp điểm thường hở NO (Normally Open) được đóng lại (ON) khi giá trị bit
được gán bằng 1.
Tiếp điểm thường đóng NC (Normally Closed) được đóng lại (ON) khi giá trị
bit được gán bằng 0.
Các tiếp điểm được nối nối tiếp sẽ tạo ra mạch logic AND.
Các tiếp điểm được nối song song sẽ tạo ra mạch logic OR.
Trong lập trình FBD, các mạng tiếp điểm LAD được chuyển đổi thành các
mạng dùng các khối logic AND (&), OR (> = 1) và OR loại trừ (XOR) mà ta có thể
chỉ rõ các giá trị bit cho các ngõ vào và ngõ ra của hộp. Ta còn có thể kết nối đến các
hộp logic khác và tạo ra một tổ hợp liên hợp logic riêng. Sau khi hộp được đặt trong
mạng, ta có thể kéo công cụ “Insert binary input” từ thanh công cụ “Favorites” hay từ
cây lệnh và sau đó thả nó lên trên phía đầu vào của hộp để thêm nhiều ngõ vào. Ta còn
có thể nhấp chuột phải lên bộ kết nối ngõ vào của hộp và chọn “Insert input”.
Các ngõ vào và ngõ ra của hộp có thể được kết nối đến một hộp logic khác, hay
ta có thể nhập vào một địa chỉ bit hay tên ký hiệu bit đối với một ngõ vào chưa được
kết nối. Khi lệnh trong hộp được thực thi, trạng thái ngõ vào hiện tại được áp dụng cho
mạch logic hộp nhị phân và nếu đúng thì ngõ ra của hộp sẽ là đúng.
Tất cả các ngõ vào của hộp AND phải là “TRUE” để ngõ ra là “TRUE”.
Bất kỳ ngõ vào nào của hộp OR phải là “TRUE” để ngõ ra là “TRUE”.
Một số lẻ các ngõ vào của hộp XOR phải là “TRUE” để ngõ ra là “TRUE”.
Đối với lập tình FBD, ta có thể kéo công cụ “Negate binary input” từ thanh
công cụ “Favorites” hay từ cây lệnh và sau đó thả nó lên một ngõ vào hay ngõ ra để
tạo ra một bộ đảo logic trên bộ kết nối của hộp đó.
Tiếp điểm NOT (LAD) chuyển đổi trạng thái logic của đầu vào dòng tín hiệu.
Nếu không có dòng tín hiệu vào trong tiếp điểm NOT, sẽ có dòng tín hiệu đi ra.
Nếu có dòng tín hiệu vào trong tiếp điểm NOT, sẽ không có dòng tín hiệu đi ra.
Lệnh xuất cuộn dây sẽ ghi một giá trị cho một bit ngõ ra. Nếu bit ngõ ra ta chỉ
ra sử dụng định danh bộ nhớ Q, thì sau đó CPU sẽ chuyển bit ngõ ra trong thanh ghi
ảnh tiến trình về on hoặc off, thiết lập giá trị bit được gán bằng với trạng thái luồng tín
hiệu. Các tín hiệu ngõ ra cho cơ cấu điều khiển được nối đến các đầu cực Q của S7 –
1200. Trong chế độ RUN, hệ thống CPU quét một cách liên tục các tín hiệu ngõ vào,
xử lý các trạng thái ngõ vào theo chương trình logic, và sau đó tác động trở lại bằng
cách thiết lập các giá trị trạng thái ngõ ra mới trong thanh ghi ngõ ra ảnh tiến trình.
Sau mỗi chu trình thực thi chương trình, hệ thống CPU chuyển phản ứng trạng thái
ngõ ra mới được lưu trữ trong thanh ghi ảnh tiến trình đến các đầu cực nối dây ngõ ra.
Ta có thể xác định một kết quả ghi tức thời của một ngõ ra vật lý bằng cách sử
dụng “:P” theo sau độ dịch chuyển Q (ví dụ “%Q3.4:P”). Đối với một kết quả ghi tức
thời, các giá trị dữ liệu bit được ghi đến ngõ ra ảnh tiến trình và trực tiếp đến ngõ ra
vật lý.
Nếu có luồng tín hiệu chạy qua một cuộn dây ngõ ra, bit ngõ ra được đặt lên 1.
Nếu không có luồng tín hiệu chạy qua một cuộn dây ngõ ra, bit ngõ ra được đặt
về 0.
Nếu có luồng tín hiệu chạy qua một cuộn dây ngõ ra đảo, bit ngõ ra được đặt về
0.
Nếu không có luồng tín hiệu chạy qua một cuộn dây ngõ ra đảo, bit ngõ ra được
đặt lên 1.
Trong lập trình FBD, các cuộn dây LAD được chuyển đổi thành các hộp gán (=
và /=) mà ta có thể định rõ một địa chỉ bit cho hộp ngõ ra. Các ngõ vào và ngõ ra của
hộp có thể được kết nối với khối logic khác hay ta có thể nhập vào một địa chỉ bit.
Nếu tín hiệu vào của hộp ngõ ra là 1, bit OUT được đặt lên 1.
Nếu tín hiệu vào của hộp ngõ ra là 0, bit OUT được đặt về 0.
Nếu tín hiệu vào của hộp ngõ ra đảo là 1, bit OUT được đặt về 0.
Nếu tín hiệu vào của hộp ngõ ra đảo là 0, bit OUT được đặt lên 1.
Khi lệnh S (Set) được kích hoạt, giá trị dữ liệu ở địa chỉ OUT được đặt lên 1.
Khi lệnh S không được kích hoạt, ngõ ra OUT không bị thay đổi.
Khi lệnh R (Reset) được kích hoạt, giá trị dữ liệu ở địa chỉ OUT được đặt về 0.
Khi lệnh R không được kích hoạt, ngõ ra OUT không bị thay đổi.
Những lệnh này có thể được đặt tại bất cứ vị trí nào trong mạch.
Khi SET_BF được kích hoạt, một giá trị dữ liệu bằng 1 được gán cho “n” bit
bắt đầu tại địa chỉ OUT. Khi SET_BF không được kích hoạt, địa chỉ OUT
không bị thay đổi.
RESET_BF ghi một giá trị dữ liệu bằng 0 đến “n” bit bắt đầu tại địa chỉ OUT.
Khi RESET_BF không được kích hoạt, địa chỉ OUT không bị thay đổi.
Những lệnh này phải là lệnh nằm về bên phải trong một nhánh.
RS và SR: các mạch chốt của bit set trội và reset trội
RS là một mạch chốt set trội mà set chiếm ưu thế. Nếu tín hiệu set (S1) và reset
(R) đều là đúng, địa chỉ ngõ ra OUT sẽ bằng 1.
SR là một mạch chốt reset trội mà reset chiếm ưu thế. Nếu tín hiệu set (S) và
reset (R1) đều là đúng thì địa chỉ ngõ ra OUT sẽ là 0.
Thông số OUT định rõ địa chỉ bit được set hay reset. Ngõ ra OUT tùy chọn (Q )
phản ánh trạng thái tín hiệu của địa chỉ OUT.
0 1 0
RS
1 0 1
1 1 1
S R1 Bit “OUT”
0 1 0
SR
1 0 1
1 1 0
M_BIT Bool Bit nhớ trong đó trạng thái kề trước của ngõ vào được lưu trữ
IN Bool Bit ngõ vào mà ngưỡng quá độ của nó là dùng để phát hiện
OUT Bool Bit ngõ ra, cho biết một ngưỡng quá độ đã được phát hiện
Luồng tín hiệu hay bit ngõ vào mà ngưỡng quá độ của chúng là
CLK Bool
dùng để phát hiện
Tiếp điểm P (LAD): trạng thái của tiếp điểm này là “TRUE” khi một sự quá độ
dương (từ OFF sang ON) được phát hiện trên bit “IN” được gán. Trạng thái logic của
tiếp điểm sau đó được kết hợp với dòng tín hiệu trong mạch để thiết lập trạng thái ngõ
ra của dòng tín hiệu. Tiếp điểm P có thể được định vị tại bất kỳ vị trí nào trong mạch,
ngoại trừ vị trí kết thúc của một nhánh.
Tiếp điểm N (LAD): trạng thái của tiếp điểm này là “TRUE” khi một sự quá độ
âm (từ ON sang OFF) được phát hiện trên bit được gán. Trạng thái logic của tiếp điểm
sau đó được kết hợp với dòng tín hiệu trong mạch để thiết lập trạng thái ngõ ra của
dòng tín hiệu. Tiếp điểm N có thể được định vị tại bất kỳ vị trí nào trong mạch, ngoại
trừ vị trí kết thúc của một nhánh.
Hộp P (FBD): trạng thái logic ngõ ra là “TRUE” khi một sự quá độ dương (từ
OFF sang ON) được phát hiện trên bit ngõ vào được gán. Hộp P chỉ có thể được định
vị tại vị trí bắt đầu của một nhánh.
Hộp N (FBD): trạng thái logic ngõ ra là “TRUE” một sự quá độ âm (từ ON
sang OFF) được phát hiện trên bit ngõ vào được gán. Hộp N chỉ có thể được định vị tại
vị trí bắt đầu của một nhánh.
Cuộn dây P (LAD): bit được gán “OUT” là “TRUE” khi một sự quá độ dương
(từ OFF sang ON) được phát hiện trên dòng tín hiệu đi vào cuộn dây. Dòng tín hiệu
trong mạch luôn chạy xuyên qua cuộn dây, đóng vai trò như trạng thái ngõ ra dòng tín
hiệu. Cuộn dây P có thể được định vị tại bât kỳ vị trí nào trong mạch.
Cuộn dây N (LAD): bit được gán “OUT” là “TRUE” khi một sự quá độ âm (từ
ON sang OFF) được phát hiện trên dòng tín hiệu đi vào cuộn dây. Dòng tín hiệu trong
mạch luôn chạy xuyên qua cuộn dây, đóng vai trò như trạng thái ngõ ra dòng tín hiệu.
Cuộn dây N có thể được định vị tại bât kỳ vị trí nào trong mạch.
Hộp P= (FBD): bit được gán “OUT” là “TRUE” khi một sự quá độ dương (từ
OFF sang ON) được phát hiện trên trạng thái logic tại kết nối ngõ vào của hộp hoặc
trên sự gán bit ngõ vào, nếu hộp này được định vị tại điểm khởi đầu của một nhánh.
Trạng thái logic ngõ vào luôn chạy xuyên qua hộp giống như trạng thái logic ngõ ra.
Hộp P= có thể được định vị tại bất kỳ vị trí nào trong nhánh.
Hộp N= (FBD): bit được gán “OUT” là “TRUE” khi một sự quá độ âm (từ ON
sang OFF) được phát hiện trên trạng thái logic tại kết nối ngõ vào của hộp hoặc trên sự
gán bit ngõ vào, nếu hộp này được định vị tại điểm khởi đầu của một nhánh. Trạng
thái logic ngõ vào luôn chạy xuyên qua hộp giống như trạng thái logic ngõ ra. Hộp N=
có thể được định vị tại bất kỳ vị trí nào trong nhánh.
P_TRIG (LAD/FBD): dòng tín hiệu ngõ ra Q hoặc trạng thái logic là “TRUE”
khi một sự quá độ dương (từ OFF sang ON) được phát hiện trên trạng thái ngõ vào
CLK (FBD) hay trên dòng tín hiệu CLK (LAD). Trong ngôn ngữ LAD, lệnh P_TRIG
không thể được định vị tại vị trí khởi đầu hay kết thúc của một mạch. Trong ngôn ngữ
FBD, lệnh P_TRIG có thể được định vị tại bất kỳ vị trí nào, ngoại trừ vị trí cuối của
một nhánh.
N_TRIG (LAD/FBD): dòng tín hiệu ngõ ra Q hoặc trạng thái logic là “TRUE”
khi một sự quá độ âm (từ ON sang OFF) được phát hiện trên trạng thái ngõ vào CLK
(FBD) hay trên dòng tín hiệu CLK (LAD). Trong ngôn ngữ LAD, lệnh N_TRIG
không thể được định vị tại vị trí khởi đầu hay kết thúc của một mạch. Trong ngôn ngữ
FBD, lệnh N_TRIG có thể được định vị tại bất kỳ vị trí nào, ngoại trừ vị trí cuối của
một nhánh.
Tất cả các lệnh ngưỡng sử dụng một bit nhớ (M_BIT) để lưu trữ trạng thái kề
trước của tín hiệu ngõ vào đang được giám sát. Một ngưỡng được phát hiện bằng cách
so sánh trạng thái của tín hiệu ngõ vào với trạng thái của bit nhớ. Nếu các trạng thái
cho biết rằng một sự thay đổi của tín hiệu theo hướng cần quan tâm thì sau đó một
CHƢƠNG 5: TẬP LỆNH LẬP TRÌNH Trang 5-10
www.TuDongHoaVietNam.net
ngưỡng được thuật lại bằng việc ghi giá trị ngõ ra “TRUE”. Nếu không, ngõ ra được
ghi là “FALSE”.
Lƣu ý
Các lệnh ngưỡng sẽ đánh giá các giá trị của ngõ vào và bit nhớ trong mỗi lần
chúng được thực thi, kể cả lần thực thi đầu tiên. Ta phải tính đến các trạng thái ban
đầu của ngõ vào và bit nhớ trong thiết kế chương trình để cho phép hay để tránh sự
phát hiện ngưỡng trên lần quét đầu tiên.
Do bit nhớ phải được duy trì từ một lần thực thi đến lần thực thi tiếp theo, ta
nên dùng một bit đơn nhất cho mỗi lệnh ngưỡng, và không nên dùng bit này tại bất kỳ
vị trí nào khác trong chương trình. Ngoài ra ta còn nên tránh bộ nhớ tạm thời và bộ
nhớ mà có thể bị tác động đến bởi những hàm hệ thống khác, ví dụ như một cập nhật
I/O. Chỉ sử dụng bộ nhớ M, bộ nhớ DB tổng thể hay bộ nhớ Static (trong DB mẫu) cho
việc gán vùng nhớ M_BIT.
Ta sử dụng các lệnh định thì để tạo ra các trì hoãn thời gian được lập trình.
TP : bộ định thì xung phát ra một xung với bề rộng xung được đặt trước.
TON : ngõ ra của bộ định thì ON – delay Q được đặt lên ON sau một sự trì
hoãn thời gian đặt trước.
TOF : ngõ ra Q của bộ định thì OFF – delay được đặt lại về OFF sau một sự
trì hoãn thời gian đặt trước.
TONR : ngõ ra bộ định thì có khả năng nhớ ON – delay được đặt lên ON sau
một trì hoãn thời gian đặt trước. Thời gian trôi qua được tích lũy qua nhiều giai
đoạn định thì cho đến khi ngõ vào R được sử dụng để đặt lại thời gian trôi qua.
RT : đặt lại một bộ định thì bằng cách xóa dữ liệu thời gian được lưu trữ
trong khối dữ liệu tức thời của bộ định thì xác định.
Mỗi bộ định thì sử dụng một cấu trúc được lưu trữ trong một khối dữ liệu nhằm
duy trì dữ liệu định thì. Ta gán giá trị khối dữ liệu khi lệnh định thì được đặt trong
trình soạn thảo.
Khi ta đặt các lệnh định thì trong một khối hàm, ta có thể lựa chọn tùy chọn
khối dữ liệu Multi – instance, các tên cấu trúc định thì có thể khác nhau với những cấu
trúc dữ liệu riêng biệt, nhưng dữ liệu định thì được chứa trong một khối dữ liệu đơn và
không cần một khối dữ liệu riêng biệt cho mỗi bộ định thì. Điều này làm giảm thời
gian xử lý và nơi lưu trữ cần thiết cho việc xử lý các bộ định thì. Không có mối tương
tác giữa những cấu trúc dữ liệu định thì trong khối dữ liệu Multi – instance được chia
sẻ.
Lệnh RT đặt lại dữ liệu định thì cho bộ định thì được
chỉ định.
Khối dữ liệu định thì DB Chỉ ra bộ định thì nào để đặt lại với lệnh RT
Sự quá độ từ 0 lên 1 của thông số IN làm khởi động các bộ định thì TP, TON và
TONR.
Sự quá độ từ 1 về 0 của thông số IN làm khởi động bộ định thì TOF.
Bảng dưới đây thể hiện tác động của những sự thay đổi giá trị trong các thông
số PT và IN.
Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành.
TP
Thay đổi IN không có ảnh hưởng trong khi bộ định thì vận hành.
Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành.
TON Thay đổi IN sang “FALSE”, trong khi bộ định thì vận hành, sẽ đặt lại
và dừng bộ định thì.
Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành.
TOF Thay đổi IN sang “TRUE”, trong khi bộ định thì vận hành, sẽ đặt lại
và dừng bộ định thì.
Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành,
nhưng có ảnh hưởng khi định thì khôi phục lại.
Thay đổi IN sang “FALSE”, trong khi bộ định thì vận hành, sẽ dừng
TONR
bộ định thì nhưng không đặt lại bộ định thì. Thay đổi IN trở lại sang
“TRUE” sẽ làm bộ định thì bắt đầu tính toán thời gian từ giá trị thời
gian được tích lũy.
Các giá trị PT (preset time – thời gian đặt trước) và ET (elapsed time – thời
gian đã trôi qua) được lưu trữ trong bộ nhớ như các số nguyên double có dấu, tượng
trưng cho những mili giây thời gian. Dữ liệu TIME sử dụng bộ định danh T# và có thể
được nhập vào như một đơn vị thời gian thuần túy “T#200ms” hay như các đơn vị thời
gian phức hợp “T#2s_200ms”.
T#-24d_20h_31m_23s_648ms đến
TIME 32 bit T#24d_20h_31m_23s_647ms
– 2.147.483.648 ms đến + 2.147.483.647 ms
Lƣu ý
Vùng giá trị âm của kiểu dữ liệu TIME được thể hiện ở trên không thể được sử
dụng với các lệnh định thì. Các giá trị PT (thời gian đặt trước) âm được đặt về 0 khi
lệnh định thì được thực thi. ET (thời gian đã trôi qua) luôn luôn là một giá trị dương.
Ta sử dụng các lệnh bộ đếm để đếm các sự kiện chương trình bên trong và các
sự kiện xử lý bên ngoài:
Mỗi bộ đếm sử dụng một cấu trúc được lưu trữ trong một khối dữ liệu nhằm
duy trì dữ liệu đếm. Ta gán giá trị khối dữ liệu khi lệnh đếm được đặt trong trình soạn
thảo. Các lệnh này sử dụng các bộ đếm phần mềm với tốc độ đếm cực đại bị giới hạn
bởi tốc độ sự thực thi của OB mà nó được chứa trong đó. OB mà các lệnh được đặt
trong nó phải được thực thi thường xuyên đủ để phát hiện tất cả các chuyển đổi của
các ngõ vào CU hay CD.
Khi đặt các lệnh bộ đếm vào trong một khối hàm, ta có thể lựa chọn tùy chọn
khối dữ liệu Multi – instance, các tên gọi cấu trúc bộ đếm có thể khác với các cấu trúc
dữ liệu riêng biệt, nhưng dữ liệu bộ đếm thì được chứa trong một khối dữ liệu đơn và
không cần một khối dữ liệu riêng biệt cho mỗi bộ đếm. Điều này làm giảm thời gian
xử lý và giảm nơi lưu trữ dữ liệu cần cho các bộ đếm. Không có mối tương tác nào
giữa những cấu trúc dữ liệu bộ đếm trong khối dữ liệu Multi – instance được chia sẻ.
Lựa chọn kiểu dữ liệu giá trị đếm từ danh sách thả
xuống dưới tên hộp.
CU, CD Bool Đếm lên hay đếm xuống, bởi một lần đếm
LOAD (CTD, CTUD) Bool Nạp điều khiển cho giá trị đặt trước
Phạm vi số của các giá trị đếm bằng số phụ thuộc vào kiểu dữ liệu mà ta lựa
chọn. Nếu giá trị đếm là một kiểu số nguyên không dấu, ta có thể đếm xuống về 0
hoặc đếm lên đến giới hạn của phạm vi. Nếu giá trị đếm là một số nguyên có dấu, ta có
thể đếm xuống đến giới hạn số nguyên âm và đếm lên đến giới hạn số nguyên dương.
CTU: CTU đếm lên 1 đơn vị khi giá trị của thông số CU thay đổi từ 0 lên 1.
Nếu giá trị của thông số CV (Current count value – giá trị đếm hiện thời) lớn hơn hoặc
bằng giá trị thông số PV (Preset count value – giá trị đếm đặt trước) thì thông số ngõ
ra của bộ đếm Q = 1. Nếu giá trị của thông số đặt lại R thay đổi từ 0 lên 1, giá trị đếm
hiện thời được xóa về 0. Hình dưới đây thể hiện một giản đồ định thì CTU với một giá
trị đếm là số nguyên không dấu (với PV = 3).
CTD: CTD đếm xuống 1 đơn vị khi giá trị của thông số CD thay đổi từ 0 lên 1.
Nếu giá trị của thông số CV (Current count value – giá trị đếm hiện thời) nhỏ hơn
hoặc bằng 0 thì thông số ngõ ra của bộ đếm Q = 1. Nếu giá trị của thông số LOAD
thay đổi từ 0 lên 1, giá trị tại thông số PV (Preset count value – giá trị đặt trước) được
nạp đến bộ đếm như một giá trị CV mới. Hình dưới đây thể hiện một giản đồ định thì
CTD với một giá trị đếm là số nguyên không dấu (với PV = 3).
CTUD: CTUD đếm lên hay xuống 1 đơn vị theo sự quá độ từ 0 lên 1 của ngõ
vào đếm lên (Count up – CU) hay đếm xuống (Count down – CD). Nếu giá trị của
thông số CV (giá trị đếm hiện thời) lớn hơn hoặc bằng giá trị thông số PV (giá trị đếm
đặt trước) thì thông số ngõ ra của bộ đếm QU = 1. Nếu giá trị của thông số CV nhỏ
hơn hay bằng 0, thông số ngõ ra của bộ đếm QD = 1. Nếu giá trị của thông số LOAD
thay đổi từ 0 lên 1, giá trị tại thông số PV được nạp đến bộ đếm như một giá trị CV
mới. Nếu giá trị của thông số đặt lại R thay đổi từ 0 lên 1, giá trị đếm hiện thời sẽ được
xóa về 0. Hình dưới đây cho thấy một biểu đồ đếm thời gian CTUD với một giá trị
đếm số nguyên không dấu (với PV = 4).
CHƢƠNG 5: TẬP LỆNH LẬP TRÌNH Trang 5-19
www.TuDongHoaVietNam.net
Lệnh CTRL_HSC điều khiển các bộ đếm tốc độ cao được sử dụng để đếm các
sự kiện xuất hiện nhanh hơn tốc độ thực thi OB. Tốc độ đếm của các lệnh bộ đếm
CTU, CTD và CTUD bị giới hạn bởi tốc độ thực thi của OB mà chúng được chứa
trong đó.
Một ứng dụng thông dụng của các bộ đếm tốc độ cao là đếm các xung được
sinh ra bởi một máy phát xung có trục điều khiển chuyển động.
Kiểu Kiểu dữ
Thông số Miêu tả
thông số liệu
RV IN Bool 1 = yêu cầu đặt một giá trị tham chiếu mới
Ta phải cấu hình các bộ đếm tốc độ cao trong thiết lập sự cấu hình thiết bị PLC
cho đề án trước khi có thể sử dụng các bộ đếm tốc độ cao trong chương trình. Việc
thiết lập cấu hình thiết bị HSC lựa chọn các chế độ đếm, các kết nối I/O, phân vùng
ngắt, và sự vận hành như một bộ đếm tốc độ cao hoặc như một thiết bị dùng đo tần số
xung. Ta có thể vận hành bộ đếm tốc độ cao với có hay không có điều khiển chương
trình.
Nhiều thông số cấu hình bộ đếm tốc độ cao chỉ được thiết lập trong cấu hình
thiết bị cho đề án. Một vài thông số bộ đếm tốc độ cao được khởi chạy trong cấu hình
thiết bị đề án, nhưng không thể được chỉnh sửa về sau dưới sự điều khiển chương
trình.
Các thông số của lệnh CTRL_HSC cung cấp sự điều khiển chương trình của
tiến trình đếm:
CHƢƠNG 5: TẬP LỆNH LẬP TRÌNH Trang 5-21
www.TuDongHoaVietNam.net
Nếu các giá trị cờ boolean sau đây được đặt lên 1 khi lệnh CTRL_HSC được
thực thi, giá trị NEW_xxx tương ứng được nạp đến bộ đếm. Nhiều yêu cầu (tức là có
nhiều hơn một cờ được đặt tại cùng một thời điểm) được xử lý trong một sự thực thi
đơn thuần của lệnh CTRL_HSC.
DIR = 1: yêu cầu nạp một giá trị NEW_DIR; DIR = 0: không thay đổi.
CV = 1: yêu cầu nạp một giá trị NEW_CV; CV = 0: không thay đổi.
RV = 1: yêu cầu nạp một giá trị NEW_RV; RV = 0: không thay đổi.
PERIOD = 1: yêu cầu nạp một giá trị NEW_PERIOD; PERIOD = 0: không
thay đổi.
Lệnh CTRL_HSC thường được đặt trong một OB ngắt phần cứng, OB này
được thực hiện khi sự kiện ngắt phần cứng bộ đếm được kích hoạt. Lấy ví dụ, nếu một
sự kiện CV = RV kích hoạt việc ngắt bộ đếm, một khối mã OB ngắt phần cứng sau đó
sẽ thực thi lệnh CTRL_HSC và có thể thay đổi giá trị tham chiếu bằng cách nạp một
giá trị NEW_RV.
Giá trị đếm hiện thời thì không có sẵn trong các thông số của CTRL_HSC. Địa
chỉ ảnh tiến trình lưu trữ giá trị đếm hiện thời được gán giá trị trong suốt sự cấu hình
phần cứng bộ đếm tốc độ cao. Ta có thể sử dụng chương trình logic để đọc trực tiếp
giá trị đếm và giá trị được trả lại chương trình sẽ là một số đếm đúng trong lúcmà bộ
đếm đã được đọc. Bộ đếm sẽ tiếp tục đếm các sự kiện tốc độ cao. Vì vậy, giá trị đếm
thực tế có thể thay đổi trước khi chương trình hoàn thành một chu trình sử dụng một
giá trị đếm cũ.
Nếu một cập nhật của một giá trị thông số không được yêu cầu, các giá trị ngõ
vào tương ứng sẽ bị bỏ qua.
Thông số DIR chỉ có hợp lệ nếu mệnh lệnh đếm đã cấu hình được đặt về “User
program (internal direction control)”. Ta xác định sử dụng thông số này trên
cấu hình thiết bị HSC như thế nào.
Đối với một HSC S7 – 1200 trên CPU hay trên Signal Board, thông số BUSY
luôn luôn mang giá trị là 0.
Các mã điều kiện: trong trường hợp có lỗi, ENO được đặt về 0 và ngõ ra STATUS
chứa một mã điều kiện.
0 Không có lỗi
Một bộ đếm tốc độ cao (HSC) có thể được sử dụng như một ngõ vào cho một
bộ mã hóa trục tăng. Bộ mã hóa trục cung cấp một số lượng xác định sự đếm trên mỗi
vòng quay và một xung đặt lại xuất hiện chỉ một lần cho mỗi vòng. Xung đồng hồ và
xung đặt lại từ bộ mã hóa trục cung cấp các ngõ vào đến HSC.
Một HSC được nạp với thiết lập trước đầu tiên trong số các thiết lập trước
(preset), và các ngõ ra được kích hoạt cho chu trình thời gian mà ở đó giá trị đếm hiện
thời nhỏ hơn thiết lập trước hiện thời. HSC mang lại một sự ngắt khi giá trị đếm hiện
thời bằng với giá trị thiết lập trước, khi sự đặt lại xuất hiện, và còn khi có một thay đổi
định hướng.
Vì mỗi sự kiện ngắt với giá trị đếm hiện thời bằng với giá trị đặt trước xuất
hiện, một sự đặt lại mới được nạp và trạng thái kế tiếp của các ngõ ra được thiết lập.
Khi sự kiện ngắt đặt lại xuất hiện, sự đặt lại đầu tiên và các trạng thái ngõ ra đầu tiên
được thiết lập, và chu trình được lặp lại.
Do các ngắt xuất hiện với một tốc độ thấp hơn nhiều so với tốc độ đếm của
HSC, việc điều khiển chính xác của các vận hành với tốc độ cao có thể được thực thi
với ảnh hưởng nhỏ một cách tương đối đến chu trình quét của CPU. Phương pháp với
phần ngắt kèm theo cho phép mỗi lần nạp một thiết lập trước được thực hiện trong một
đoạn chương trình ngắt riêng để điều khiển trạng thái dễ dàng. (Như một sự lựa chọn,
tất cả các sự kiện ngắt có thể được thực thi trong một đoạn chương trình ngắt đơn
thuần.)
Tất cả các HSC hoạt động theo cách thức giống nhau đối với một chế độ bộ
đếm tương ứng trong vận hành. Có 4 kiểu cơ bản của HSC:
Bộ đếm một pha với điều khiển định hướng bên trong
Bộ đếm một pha với điều khiển định hướng bên ngoài
Bộ đếm hai pha với 2 ngõ vào đồng hồ đếm (clock)
Bộ đếm trạng thái vuông pha A/B
Ta có thể sử dụng mỗi kiểu HSC với có/không có ngõ vào đặt lại. Khi ta kích
hoạt ngõ vào đặt lại (với một vài hạn chế, xem ở bảng dưới đây), giá trị hiện thời được
xóa và được giữ trống cho đến khi ta giải hoạt ngõ vào đặt lại.
Chức năng tần số: một chế độ HSC cho phép HSC được cấu hình (kiểu đếm) để
báo cáo lại tần số thay vì giá trị đếm hiện tại các xung. Có sẵn 3 thời kỳ đo tần
số khác nhau: 0,01, 0,1 và 1,0 giây.
Thời kỳ đo tần số xác định mức độ HSC thường xuyên tính toán và báo cáo một
giá trị tần số mới. Tần số được báo cáo là một giá trị trung bình được xác định bởi tổng
số lượng sự đếm trong thời kỳ đo cuối cùng. Nếu tần số thay đổi một cách nhanh
chóng, giá trị được báo cáo sẽ là một trung gian giữa tần số cao nhất và thấp nhất xuất
hiện trong suốt thời kỳ đo. Tần số luôn được xác định theo Hertz (số lượng xung trong
mỗi giây) bất chấp sự thiết lập thời kỳ đo tần số.
Các chế độ và các ngõ vào của bộ đếm: bảng dưới đây thể hiện các ngõ vào
được sử dụng cho đồng hồ, điều khiển định hướng và các chức năng đặt lại liên
quan đến HSC.
Một ngõ vào giống nhau không thể được sử dụng cho hai chức năng khác nhau,
nhưng bất kỳ ngõ vào nào mà đang không được sử dụng bởi chế độ hiện thời HSC của
nó thì có thể được sử dụng cho một mục đích khác. Ví dụ, nếu HSC1 ở trong chế độ sử
dụng các ngõ vào gắn liền nhưng không sử dụng đặt lại bên ngoài (I0.3) thì I0.3 có thể
được sử dụng cho các ngắt ở ngưỡng hoặc cho HSC2.
I0.0 I0.1
Tích hợp hay I0.3
I4.0 I4.1
HSC1 Signal Board hay I4.3
1
Xung PTO Mệnh lệnh
màn hình PTO 0 _
0 PTO 0
I0.2 I0.3
Tích hợp hay I0.1
I4.2 I4.3
HSC: Signal Board hay I4.1
1
Xung PTO Mệnh lệnh
màn hình PTO 1 _
1 PTO 1
HSC
HSC32 Tích hợp I0.4 I0.5 I0.7
Bộ đếm một pha với điều Đồng hồ Mệnh lệnh _ Đếm hay tần số
Bộ đếm trạng thái vuông pha Pha A Pha B _ Đếm hay tần số
A/B Pha Z Đếm
Giám sát các tín hiệu ra Đồng hồ
Mệnh lệnh _ Đếm
chuỗi xung (PTO)1 đếm
1
Việc giám sát các ngõ ra chuỗi xung luôn luôn sử dụng đồng hồ đếm và mệnh lệnh.
Nếu ngõ ra PTO tương ứng chỉ được cấu hình cho xung, ngõ ra của lệnh thông thường
được thiết lập cho việc đếm giá trị dương.
2
HSC3 với một ngõ vào đặt lại thì không dùng được cho CPU 1211C vốn chỉ hỗ trợ 6
ngõ vào tích hợp.
3
HSC4 không dùng được cho CPU 1211C vốn chỉ hỗ trợ 6 ngõ vào tích hợp.
4
HSC5 và HSC6 chỉ được hỗ trợ bởi CPU 1211C và CPU 1212C khi một bảng mạch
tín hiệu được lắp đặt.
CPU lưu trữ giá trị hiện thời của mỗi HSC trong một địa chỉ ngõ vào (I). Bảng
dưới đây thể hiện các địa chỉ mặc định được gán cho giá trị hiện hành của mỗi HSC.
Ta có thể thay đổi địa chỉ I của giá trị hiện thời bằng cách chỉnh sửa các thuộc tính của
CPU trong mục Device Configuration.
Các điểm I/O số đƣợc gán đến các thiết bị HSC không thể bị tác động.
Các điểm I/O số được sử dụng bởi các thiết bị đếm tốc độ cao được gán giá trị
trong suốt sự cấu hình thiết bị. Khi các địa chỉ điểm I/O được gán đến những thiết bị
này, giá trị của các địa chỉ điểm I/O đó không thể được chỉnh sửa bởi hàm tác động
bảng Watch.
CPU cho phép ta cấu hình đến 6 bộ đếm tốc độ cao. Để cấu hình các thông số
cho mỗi HSC riêng biệt, ta chỉnh sửa phần “Properties” của CPU.
5.1.4. So sánh.
Ta sử dụng các lệnh so sánh để so sánh hai giá trị của cùng một kiểu dữ liệu.
Khi việc so sánh tiếp điểm LAD là “TRUE”, tiếp điểm này được kích hoạt. Khi việc so
sánh hộp FBD là “TRUE”, ngõ ra của hộp sẽ là “TRUE”.
Sau khi nhấp chuột lên lệnh trong trình soạn thảo chương trình, ta có thể lựa
chọn kiểu so sánh và kiểu dữ liệu từ các trình đơn thả xuống.
Các thông số ngõ vào MIN, VAL và MAX phải có cùng kiểu dữ liệu.
Sau khi nhấp chuột lên lệnh trong trình soạn thảo chương trình, ta có thể lựa
chọn kiểu dữ liệu từ các trình đơn thả xuống.
Ta sử dụng các lệnh OK và NOT_OK để kiểm tra xem một sự tham chiếu dữ
liệu ngõ vào có phải là một số thực hợp lệ hay không theo tiêu chuẩn IEE 754. Khi
tiếp điểm LAD là “TRUE”, tiếp điểm được kích hoạt và cho dòng tín hiệu đi qua. Khi
hộp FBD là “TRUE”, ngõ ra của hộp nhận giá trị “TRUE”.
Một giá trị Real hay LReal là không hợp lệ nếu nó là +/– INF (infinity: vô
cùng), NaN (not a number: không phải một số), hay nếu nó là một giá trị không được
chuẩn hóa. Giá trị không được chuẩn hóa ở đây là một con số rất gần với 0. CPU thay
thế bằng số 0 đối với một con số không được chuẩn hóa trong tính toán.
NOT_OK Giá trị ngõ vào không phải là một số thực hợp lệ
Ta sử dụng một lệnh hộp phép toán để lập trình các vận hành phép toán cơ bản:
Một hoạt động chia số nguyên sẽ cắt bỏ phần phân số của thương số để tạo ra
một tín hiệu ra số nguyên. Ta nhấp vào phía dưới tên hộp và lựa chọn một kiểu dữ liệu
từ trình đơn thả xuống.
Lƣu ý
Các thông số lệnh phép toán cơ bản IN1, IN2 và OUT phải có kiểu dữ liệu
giống nhau.
IN1, IN2 SInt, Int, DInt, UInt, UDInt, Real, LReal, Constant Các ngõ vào phép toán
OUT SInt, Int, DInt, UInt, UDInt, Real, LReal Ngõ ra phép toán
Khi được cho phép (EN = 1), lệnh phép toán thực hiện hoạt động được định rõ
trên các giá trị ngõ vào (IN1 và IN2) và lưu trữ kết quả trong địa chỉ nhớ được xác
định bởi thông số ngõ ra (OUT). Sau một sự hoàn tất thành công phép toán, lệnh sẽ đặt
ENO = 1.
Trạng
Miêu tả
thái ENO
1 Không có lỗi
Giá trị kết quả tính toán có thể đã vượt quá phạm vi hợp lệ của kiểu dữ liệu
0 được chọn. Phần trọng số thấp nhất trong kết quả mà vừa với kích thước nơi
đến thì được trả về.
0 Phép chia cho 0 (IN2 = 0): kết quả không được xác định và số 0 được trả lại.
Real/LReal: nếu một trong các giá trị ngõ vào là NaN (không phải một số) thì
0
NaN được trả lại.
ADD Real/LReal: nếu cả hai giá trị IN đều là INF với dấu khác nhau, đây là
0
một phép toán không hợp lệ và NaN được trả lại.
SUB Real/LReal: nếu cả hai giá trị IN đều là INF và cùng dấu, đây là một
0
phép toán không hợp lệ và NaN được trả lại.
MUL Real/LReal: nếu một giá trị IN là 0 còn giá trị kia là INF, đây là một
0
phép toán không hợp lệ và NaN được trả lại.
DIV Real/LReal: nếu cả hai giá trị IN là 0 hoặc là INF, đây là một phép toán
0
không hợp lệ và NaN được trả lại.
Ta sử dụng lệnh MOD (modulo) cho phép toán IN1 modulo IN2. Phép toán IN1
MOD IN2 = IN1 – (IN1/IN2) = thông số OUT. Ta nhấp vào phía dưới tên hộp và chọn
một kiểu dữ liệu từ trình đơn thả xuống.
Lƣu ý
Các thông số IN1, IN2 và OUT phải có kiểu dữ liệu giống nhau.
IN1 và IN2 Int, DInt, USInt, UInt, UDInt, Constant Các ngõ vào modulo
1 Không có lỗi
Lệnh NEG
Ta sử dụng lệnh NEG (phép đảo) để đảo ngược dấu số học của giá trị tại thông
số IN và lưu trữ kết quả trong thông số OUT. Ta nhấp vào phía dưới tên hộp và chọn
một kiểu dữ liệu từ trình đơn thả xuống.
Lƣu ý
IN SInt, Int, DInt, Real, LReal, Constant Ngõ vào phép toán
Trạng
Miêu tả
thái ENO
1 Không có lỗi
Giá trị kết quả vượt quá phạm vi hợp lệ của kiểu dữ liệu được chọn. Ví dụ đối
0 với SInt: NEG (– 128) cho kết quả + 128 vượt quá giá trị tối đa của kiểu dữ
liệu này.
Ta nhấp vào phía dưới tên hộp và chọn một kiểu dữ liệu từ trình đơn thả xuống.
IN/OUT SInt, Int, DInt, USInt, UDInt Ngõ vào và ngõ ra phép toán
Trạng
Miêu tả
thái ENO
1 Không có lỗi
Giá trị kết quả vượt quá phạm vi hợp lệ của kiểu dữ liệu được chọn. Ví dụ đối
0 với SInt: INC (127) cho kết quả + 128 vượt quá giá trị tối đa của kiểu dữ liệu
này.
Ta sử dụng lệnh ABS để nhận được giá trị tuyệt đối của một số nguyên có dấu
hoặc một số thực tại thông số IN và lưu trữ kết quả trong thông số OUT. Ta nhấp vào
phía dưới tên hộp và chọn một kiểu dữ liệu từ trình đơn thả xuống.
Lƣu ý
Trạng thái
Miêu tả
ENO
1 Không có lỗi
Giá trị kết quả phép toán vượt quá phạm vi hợp lệ của kiểu dữ liệu được
0 chọn. Ví dụ đối với SInt: ABS (– 128) cho kết quả + 128 vượt quá giá trị tối
đa của kiểu dữ liệu này.
Ta nhấp vào phía dưới tên hộp và chọn một kiểu dữ liệu từ trình đơn thả xuống.
Lƣu ý
IN1, IN2 SInt, Int, DInt, USInt, UDInt, Real, Constant Các ngõ vào phép toán
OUT SInt, Int, DInt, USInt, UDInt, Real Ngõ ra phép toán
Trạng thái
Miêu tả
ENO
1 Không có lỗi
Nếu giá trị thông số IN nằm trong phạm vi xác định, giá trị IN được lưu trữ
trong thông số OUT.
Nếu giá trị thông số IN nằm ngoài phạm vi xác định, giá trị OUT sẽ là giá trị
của thông số MIN (nếu IN nhỏ hơn MIN) hoặc sẽ là giá trị của thông số MAX
(nếu IN lớn hơn MAX).
Ta nhấp vào phía dưới tên hộp và chọn một kiểu dữ liệu từ trình đơn thả xuống.
Lƣu ý
Các thông số MIN, IN, MAX và OUT phải có kiểu giá trị giống nhau.
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real Ngõ ra phép toán
Trạng thái
Miêu tả
ENO
1 Không có lỗi
Real: nếu một hay nhiều hơn các giá trị của MIN, IN và MAX là NaN
0
(không phải một số) thì NaN sẽ được trả về.
0 Nếu MIN lớn hơn MAX, giá trị IN được gán đến OUT.
Ta sử dụng các lệnh dấu phẩy động để lập trình việc vận hành toán học sử dụng
kiểu dữ liệu Real hay LReal:
Trạng
Lệnh Điều kiện Kết quả (OUT)
thái ENO
IN âm – NaN
SQRT
IN là +/– INF hay +/– NaN +/– INF hay +/– NaN
SIN, COS, TAN IN là +/– INF hay +/– NaN +/– INF hay +/– NaN
5.1.6. Di chuyển.
Ta sử dụng các lệnh di chuyển để sao chép các phần tử dữ liệu đến một địa chỉ
nhớ mới và chuyển đổi từ một kiểu dữ liệu này sang kiểu khác. Dữ liệu nguồn không
bị thay đổi trong quá trình di chuyển.
MOVE: sao chép một phần tử dữ liệu được lưu trữ tại một địa chỉ xác định đến
một địa chỉ mới.
MOVE_BLK: di chuyển có thể ngắt mà sao chép một khối các phần tử dữ liệu
đến một địa chỉ mới.
UMOVE_BLK: di chuyển không ngắt được mà sao chép một khối các phần tử
dữ liệu đến một địa chỉ mới.
MOVE
Thông số Kiểu dữ liệu Miêu tả
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte,
IN Địa chỉ nguồn
Word, DWord, Char, Array, Struct, DTL, Time
SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte,
OUT Địa chỉ đích
Word, DWord, Char, Array, Struct, DTL, Time
MOVE_BLK, UMOVE_BLK
Thông số Kiểu dữ liệu Miêu tả
SInt, Int, DInt, USInt, UInt, UDInt, Real, Byte, Địa chỉ bắt đầu
IN
Word, DWord nguồn
Số lượng phần tử dữ
COUNT UInt
liệu để sao chép
SInt, Int, DInt, USInt, UInt, UDInt, Real, Byte,
OUT Địa chỉ bắt đầu đích
Word, DWord
Lƣu ý
Các quy tắc đối với hoạt động sao chép dữ liệu:
Để sao chép kiểu dữ liệu Bool, sử dụng SET_BF, RESET_BF, R, S hoặc cuộn
dây ngõ ra (LAD).
Để sao chép một kiểu dữ liệu cơ bản đơn lẻ, sử dụng MOVE.
Để sao chép một mảng kiểu dữ liệu cơ bản, sử dụng MOVE_BLK hay
UMOVE_BLK.
Để sao chép một cấu trúc, sử dụng MOVE.
Để sao chép một chuỗi, sử dụng S_CONV.
Để sao chép một ký tự đơn lẻ trong một chuỗi, sử dụng MOVE
Lệnh MOVE_BLK và UMOVE_BLK không thể được dùng để sao chép các
mảng hay cấu trúc đến các vùng nhớ I, Q hay M.
Lệnh MOVE sao chép một phần tử dữ liệu đơn lẻ từ một địa chỉ nguồn được
xác định bởi thông số IN đến địa chỉ đích được xác định bởi thông số OUT.
Các lệnh MOVE_BLK và UMOVE_BLK khác nhau ở cách thức mà các ngắt
được thực hiện:
Các sự kiện ngắt đƣợc xếp hàng và đƣợc xử lý trong suốt việc thực thi
MOVE_BLK. Sử dụng lệnh MOVE_BLK khi dữ liệu tại địa chỉ di chuyển đích
không được sử dụng bên trong một chương trình con OB ngắt, hoặc nếu nó
được sử dụng thì dữ liệu đích không bắt buộc phải là nhất quán. Nếu một hoạt
động MOVE_BLK bị ngắt, phần tử dữ liệu sau cùng được di chuyển sẽ hoàn tất
và nhất quán tại địa chỉ đích. Hoạt động MOVE_BLK được khôi phục lại sau
khi thực thi OB ngắt hoàn tất.
Các sự kiện ngắt đƣợc xếp hàng nhưng không đƣợc xử lý cho đến khi thực thi
UMOVE_BLK hoàn tất. Sử dụng lệnh MOVE_BLK khi hoạt động di chuyển
phải được hoàn tất và dữ liệu đích nhất quán, trước sự thực thi của một chương
trình con OB ngắt.
ENO luôn luôn đúng theo sự thực thi của lệnh MOVE.
Lƣu ý:
Các quy tắc đối với việc thực thi lắp đầy
Để lấp đầy với kiểu dữ liệu Bool, sử dụng SET_BF, RESET, R, S, hay cuộn
dây ngõ ra (LAD).
Để lấp đầy với kiểu dữ liệu cơ bản đơn lẻ, sử dụng MOVE.
Để lấp đầy với một mảng kiểu dữ liệu cơ bản, sử dụng FILL_BLK hay
UFILL_BLK.
Để lấp đầy một ký tự đơn lẻ trong một chuỗi, sử dụng MOVE.
Các lệnh FILL_BLK và UFILL_BLK không thể được sử dụng để lấp đầy các
mảng trong các vùng nhớ I, Q, hay M.
Các lệnh FIll_BLK và UFILL_BLK sao chép phần tử dữ liệu nguồn IN đến
đích tại đó địa chỉ ban đầu được xác định bởi thông số OUT. Tiến trình sao chép lặp
lại và một khối các địa chỉ kế cận nhau được lấp đầy cho đến khi số lượng các bản sao
bằng với thông số COUNT.
Các lệnh FILL_BLK và UFILL_BLK khác nhau ở cách thức mà các ngắt được
thực hiện:
Các sự kiện ngắt đƣợc xếp hàng và đƣợc xử lý trong suốt việc thực thi
FILL_BLK. Sử dụng lệnh FILL_BLK khi dữ liệu tại địa chỉ đích di chuyển thì
không được sử dụng bên trong một chương trình con OB ngắt, hoặc nếu nó
được sử dụng thì dữ liệu đích không buộc phải nhất quán.
Các sự kiện ngắt đƣợc xếp hàng nhưng không đƣợc xử lý cho đến khi thực thi
UFILL_BLK hoàn tất. Sử dụng lệnh UFILL_BLK khi hoạt động di chuyển phải
được hoàn tất và dữ liệu đích nhất quán, trước sự thực thi của một chương trình
con OB ngắt.
ENO luôn luôn nhận giá trị “TRUE” theo sự thực thi của lệnh SWAP.
Ta nhấp vào phía dưới tên hộp và chọn một kiểu dữ liệu từ trình đơn thả xuống.
OUT Word, DWord Đảo ngược các byte dữ liệu được sắp xếp OUT
W#16#1234 12 34 34 12
DW#16#12345678 12 34 56 78 78 56 34 12
Sau khi ta lựa chọn kiểu dữ liệu để chuyển đổi, một danh sách những sự chuyển
đổi có khả năng sẽ được cho thấy trong danh sách thả xuống chuyển đổi đến. Những
sự chuyển đổi từ/đến BCD16 bị hạn chế đối với kiểu dữ liệu Int. Những sự chuyển đổi
từ/đến BCD32 bị hạn chế đối với kiểu dữ liệu DInt.
Ta nhấp vào phía dưới tên hộp và chọn các kiểu dữ liệu từ trình đơn thả xuống.
Trạng thái
Miêu tả Kết quả OUT
ENO
0 IN là +/– INF hay +/– NaN +/– INF hay +/– NaN
Kết quả vượt quá phạm vi hợp lệ OUT được đặt về các byte có trọng
0
của kiểu dữ liệu OUT số thấp nhất của IN
Lệnh TRUNC chuyển đổi một số thực thành một số nguyên. Phần phân số của
số thực được cắt bỏ thành 0 (IEEE – làm tròn thành 0).
0 IN là +/– INF hay +/– NaN +/– INF hay +/– NaN
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Ngõ ra được chuyển đổi
0 IN là +/– INF hay +/– NaN +/– INF hay +/– NaN
SCALE_X: Real
Giá trị ngõ vào để định tỷ
VALUE NORM_X: SInt, Int, DInt, USInt, UInt, UDInt,
lệ hay chuẩn hóa
Real
SCALE_X: Real
Giá trị ngõ ra đã được định
OUT NORM_X: SInt, Int, DInt, USInt, UInt, UDInt,
tỷ lệ hay được chuẩn hóa
Real
Lƣu ý
Thông số VALUE trong lệnh SCALE_X nên đƣợc hạn chế trong khoảng
(0,0 <= VALUE <= 1,0)
Nếu thông số VALUE nhỏ hơn 0,0 hay lớn hơn 1,0 thì:
Hoạt động chia tỷ lệ tuyến tính có thể sinh ra các giá trị OUT nhỏ hơn giá trị
thông số MIN, hay nằm trên giá trị thông số MAX đối với các giá trị OUT nằm
vừa trong phạm vi kiểu dữ liệu OUT. Sự thực thi SCALE_X đặt ENO = TRUE
trong các trường hợp này.
Có khả năng tạo ra các số được định tỷ lệ mà không nằm trong phạm vi của
kiểu dữ liệu OUT. Trong những trường hợp này, giá trị thông số OUT được đặt
đến một giá trị trung gian, bằng với phần có trọng số nhỏ nhất của số thực được
tỷ lệ ưu tiên cho sự chuyển đổi cuối cùng sang kiểu dữ liệu OUT. Sự thực thi
SCALE_X đặt ENO = FALSE trong trường hợp này.
Thông số VALUE trong NORM_X nên đƣợc hạn chế trong khoảng (MIN
<= VALUE <= MAX)
Nếu thông số VALUE nhỏ hơn MIN hay lớn hơn MAX, sự hoạt động chia tỷ lệ
tuyến tính có thể tạo ra các giá trị OUT được chuẩn hóa nhỏ hơn 0 hay lớn hơn 1.
Trong trường hợp này sự thực thi NORM_X đặt ENO = TRUE.
Trạng
Điều kiện Kết quả OUT
thái ENO
Ta sử dụng các lệnh điều khiển chương trình cho các điều khiển điều kiện trong
chuỗi thực thi:
Lệnh Label: nhãn nơi đến cho lệnh nhảy JMP hay JMPN.
Bộ định danh cho các lệnh nhảy và nhãn lập trình nơi
Label_name Bộ định danh nhãn
đến của lệnh nhảy tương ứng
Ta tạo ra các tên nhãn bằng cách gõ trực tiếp trong lệnh LABEL. Các tên nhãn
sẵn có cho trường tên nhãn JMP và JMPN có thể được chọn bằng cách sử dụng biểu
tượng trợ giúp thông số. Ta còn có thể gõ một tên nhãn trực tiếp bên trong lệnh JMP
hay JMPN.
Ta sử dụng lệnh RET để kết thúc sự thực thi của khối hiện thời.
Lệnh tùy chọn RET được sử dụng để kết thúc sự thực thi của khối hiện thời.
Nếu và chỉ nếu có dòng tín hiệu đi đến cuộn dây RET (LAD) hay nếu tín hiệu vào của
hộp RET là đúng (FBD) thì sau đó sự thực thi chương trình của khối hiện thời sẽ kết
thúc tại điểm đó và các lệnh nằm sau lệnh RET sẽ không được thực thi. Nếu khối hiện
thời là một OB, thông số “Return_Value” được bỏ qua. Nếu khối hiện thời là một FC
hay FB, giá trị thông số “Return_Value” được đi qua trở về đến đoạn chương trình
đang gọi như giá trị ENO của hộp được gọi.
Ta không được yêu cầu sử dụng lệnh RET là câu lệnh cuối cùng trong một khối
vì điều này được thực hiện một cách tự động cho ta. Ta có thể có nhiều lệnh RET bên
trong một khối đơn lẻ.
Các bước mẫu để sử dụng lệnh RET bên trong một khối mã FC: