Professional Documents
Culture Documents
CHƯƠNG I:
TỔNG QUAN VỀ PLC S7-1200.............................................................................3
1.1. Giới thiệu PLC S7-1200..................................................................................3
1.2. Khả năng mở rộng của CPU............................................................................3
1.3. Các loại module của S7-1200..........................................................................3
1.3.1. Các board tín hiệu.....................................................................................3
1.3.2. Các module tín hiệu (SM).........................................................................3
1.3.3. Các module truyền thông (CM)................................................................3
1.3.4. Card bộ nhớ SIMATIC.............................................................................3
1.4. Các bảng hiển thị.............................................................................................3
1.5. Chế độ vận hành của PLC...............................................................................3
1.6. STEP 7 Basic..................................................................................................3
1.6.1. Các kiểu xem khác nhau giúp công việc dễ dàng hơn...............................3
1.6.2.1. Trợ giúp kiểu mở ra và các thủ thuật về công cụ xếp tầng................3
1.6.2.2. Hệ thống thông tin............................................................................3
1.6.2.3. Việc in ấn các chủ đề từ hệ thống thông tin......................................3
1.7. Kết nối phần cứng...........................................................................................3
1.7.1. Chèn bộ mô phỏng tín hiệu vào các đầu vào inputs..................................3
1.7.2. Kết nối nguồn tới CPU..............................................................................3
1.7.3. Kết nối cáp PROFINET............................................................................3
CHƯƠNG II: XÂY DỰNG DỰ ÁN VỚI TIA PORTAL V11..............................3
2.1. Tạo một dự án.................................................................................................3
2.2. Cấu hình thiết bị..............................................................................................3
2.2.1. Cấu hình CPU và các module...................................................................3
2.2.1.1. Cấu hình CPU...................................................................................3
2.2.1.2.Cấu hình các module..........................................................................3
2.2.2. Cấu hình hiển thị trên HMI.......................................................................3
2.2.2.1. Cấu hình các đối tượng màn hình trong TIA portal..........................3
2.2.2.2. Cấu hình HMI tags............................................................................3
2.3. Lập trình cho PLC...........................................................................................3
2.3.1. Tạo các Tag cho các I/O của CPU............................................................3
2.3.2. Tạo một mạch đơn giản trong chương trình..............................................3
2.3.3. Sử dụng PLC tag trong bảng tag để địa chỉ hóa các lệnh.........................3
2.3.4. Thêm vào một hộp lệnh............................................................................3
2.3.5. Sử dụng lệnh CALCULATE cho các phương trình toán phức tạp............3
2.3.6. Thêm vào dự án thiết bị HMI....................................................................3
2.3.7. Tạo một kết nối mạng giữa HMI và CPU.................................................3
2.3.8. Tạo một kết nối HMI để chia sẻ các tag....................................................3
2.3.9. Xây dựng màn hình HMI..........................................................................3
2.3.10. Chọn một PLC tag gán cho phần tử HMI................................................3
2.4. Tải dữ liệu dự án tới thiết bị............................................................................3
2.4.1. Phạm vi dữ liệu dự án được tải xuống.......................................................3
2.4.2. Các tùy chọn tải........................................................................................3
2.4.3. Các yêu cầu...............................................................................................3
2.4.4. Kết quả......................................................................................................3
2.5. Sử dụng các chức năng online.........................................................................3
2.5.1. Tổng quan về các chức năng online..........................................................3
2.5.1.1. Chế độ online....................................................................................3
2.5.1.2. Hiển thị thiết bị truy cập...................................................................3
2.5.1.3. Going online.....................................................................................3
2.5.1.4. Hiển thị thông tin chuẩn đoán...........................................................3
2.5.2. Kiểm tra chương trình người dùng............................................................3
2.5.3. Các chức năng chuẩn đoán phần cứng và mạng........................................3
CHƯƠNG III: CÁC KHÁI NIỆM LẬP TRÌNH..................................................3
3.1. Các hướng dẫn để thiết kế một hệ thống PLC.................................................3
3.2. Cấu trúc bộ nhớ S7-1200.................................................................................3
3.2.1. Bộ nhớ nạp (load memory).......................................................................3
3.2.2. Bộ nhớ làm việc (work memory)..............................................................3
3.2.3. Bộ nhớ hệ thống (system memory)...........................................................3
3.2.4. Các kiểu dữ liệu được hỗ trợ bởi S7-1200................................................3
3.3. Cấu trúc chương trình......................................................................................3
3.4. Sử dụng các khối để cấu trúc chương trình.....................................................3
3.4.1. Khối tổ chức (OB)....................................................................................3
3.4.2. Hàm số (FC).............................................................................................3
3.4.3. Khối hàm (FB)..........................................................................................3
3.4.4. Khối dữ liệu (DB).....................................................................................3
3.5. Hiểu dữ liệu một cách thống nhất....................................................................3
3.6. Ngôn ngữ lập trình..........................................................................................3
3.6.1. Ngôn ngữ lập trình LAD...........................................................................3
3.6.2. Ngôn ngữ lập trình FBD...........................................................................3
3.6.3. Ngôn ngữ lập trình SCL............................................................................3
3.6.4. EN và ENO cho LAD, FBD và SCL.........................................................3
3.7. Chức năng bảo vệ............................................................................................3
3.7.1. Bảo vệ chống truy cập CPU......................................................................3
3.7.2. Bí quyết bảo vệ (know-how protection)....................................................3
3.7.3. Bảo vệ chống sao chép..............................................................................3
3.8. Tải xuống các phần tử của chương trình.........................................................3
3.9. Tải lên từ CPU................................................................................................3
3.9.1. Sao chép các phần tử từ dự án...................................................................3
3.9.2. Sử dụng chức năng so sánh.......................................................................3
3.10. Gỡ rối và kiểm tra chương trình....................................................................3
3.10.1. Giám sát và sửa đổi dữ liệu trong CPU..................................................3
3.10.2. Các bảng watch table và force table........................................................3
3.10.3. Tham chiếu chéo chỉ ra cách sử dụng.....................................................3
3.10.4. Cấu trúc gọi để kiểm tra trật tự gọi.........................................................3
CHƯƠNG IV: CÁCH SỬ DỤNG BỘ ĐIỀU KHIỂN PID_COMPACT
TRONG PLC S7-1200.............................................................................................3
4.1. Tìm hiểu khối hàm PID_compact PLC S7-1200.............................................3
4.2. Sự hoạt động của bộ điều khiển PID_Compact...............................................3
4.3. Cách cấu hình và sử dụng bộ PID_Compact...................................................3
CHƯƠNG V: ỨNG DỤNG BỘ ĐIỀU KHIỂN PID_COMPACT TRONG PLC
S7-1200 CPU1214C AC/DC/Rly ĐIỀU KHIỂN NHIỆT ĐỘ LÒ SẤY................3
5.1. Giới thiệu........................................................................................................3
5.2. Sơ đồ khối.......................................................................................................3
5.3. Giới thiê ̣u các thiết bị liên quan trong ứng dụng.............................................3
5.3.1. Cảm biến nhiệt độ.....................................................................................3
5.3.2. Lò sấy.......................................................................................................3
5.3.3. HMI..........................................................................................................3
5.4. Sơ đồ đấu dây các thiết bị................................................................................3
5.5. Lưu đồ giải thuật và chương trình..................................................................3
5.5.1. Lưu đồ giải thuật.......................................................................................3
5.5.2. Chương trình.............................................................................................3
5.5.2.1. Các bước lập trình.............................................................................3
5.5.2.2. Chương trình.....................................................................................3
5.6. Kết quả............................................................................................................3
PHỤ LỤC: TẬP LỆNH LẬP TRÌNH....................................................................3
A. Tập lệnh cơ bản.................................................................................................3
A.1. Bit logic......................................................................................................3
A.1.1. Các tiếp điểm và cuộn dây bit logic....................................................3
A.1.1.1. Các tiếp điểm ladder (LAD)...........................................................3
A.1.1.2. Các hộp lệnh AND, OR và XOR trong FBD..................................3
A.1.1.3. Bộ đảo logic NOT..........................................................................3
A.1.1.4. Ngõ ra cuộn dây và hộp lệnh gán...................................................3
A.1.2. Các lệnh set và reset............................................................................3
A.1.2.1. Set và reset 1 bit.............................................................................3
A.1.2.2. Set và Reset bit trường...................................................................3
A.1.2.3. Set-dominant và Reset-dominant bit chốt.......................................3
A.1.3. Các lệnh sườn dương và âm................................................................3
A.2. Các bộ định thì............................................................................................3
A.3. Các bộ đếm.................................................................................................3
A.4. Các lệnh so sánh..........................................................................................3
A.4.1 Lệnh so sánh........................................................................................3
A.4.2. Các lệnh In-rang và Out-rang..............................................................3
A.4.3. Các lệnh OK và Not OK.....................................................................3
A.5. Lệnh toán số học.........................................................................................3
A.5.1. Lệnh CALCULATE...........................................................................3
A.5.2. Các lệnh cộng, trừ, nhân và chia.........................................................3
A.5.3. Lệnh Modulo......................................................................................3
A.5.4. Lệnh đảo.............................................................................................3
A.5.5. Các lệnh tăng và giảm.........................................................................3
A.5.6. Lệnh giá trị tuyệt đối...........................................................................3
A.5.7. Các lệnh cực đại và cực tiểu...............................................................3
A.5.8. Lệnh giới hạn......................................................................................3
A.5.9. Các lệnh toán học dấu phẩy động.......................................................3
A.6. Lệnh di chuyển............................................................................................3
A.6.1 Lệnh di chuyển....................................................................................3
A.6.2. Các lệnh FieldRead và FieldWrite......................................................3
A.6.3. Các lệnh điền đầy................................................................................3
A.6.4. Lệnh tráo đổi.......................................................................................3
A.7. Các lê ̣nh chuyển đổi....................................................................................3
A.7.1. Lệnh chuyển đổi..................................................................................3
A.7.2. Các lệnh chuyển đổi cho SCL.............................................................3
A.7.3. Các lệnh làm tròn (ROUND) và bỏ bớt (TRUNC)..............................3
A.7.4. Các lệnh Ceiling và floor....................................................................3
A.7.5. Các lệnh định tỷ lệ và chuẩn hóa........................................................3
A.8. Các lê ̣nh điều khiển chương trình...............................................................3
A.8.1. Lệnh nhảy và ghi nhãn........................................................................3
A.8.2. Lệnh JMP_LIST.................................................................................3
A.8.3. Lệnh SWITCH....................................................................................3
A.8.4. Lệnh điều khiển thực thi trả về giá trị (RET)......................................3
A.9. Các phép toán logic.....................................................................................3
A.9.1. Các lệnh AND, OR và XOR...............................................................3
A.9.2. Lệnh lấy bù.........................................................................................3
A.9.3. Các lệnh mã hóa và giải mã................................................................3
A.9.4. Các lệnh lựa chọn (SEL), dồn kênh (MUX) và phân kênh (DEMUX)3
A.10. Dịch chuyển và Xoay................................................................................3
A.10.1. Các lệnh dịch chuyển........................................................................3
A.10.2. Các lệnh xoay...................................................................................3
B. Tâ ̣p lệnh mở rộng..............................................................................................3
B.1. Các lê ̣nh Ngày và thời gian trong ngày.......................................................3
B.1.1. Các lệnh ngày và giờ...........................................................................3
B.1.2. Thiết lập và đọc đồng hồ hệ thống......................................................3
B.2. Các lệnh chuỗi và ký tự...............................................................................3
B.2.1. S_CONV (đổi chuỗi thành giá trị)......................................................3
B.2.2. S_CONV (đổi giá trị thành chuỗi)......................................................3
B.2.3. Lệnh STRG_VAL...............................................................................3
B.2.4. Lệnh VAL_STRG...............................................................................3
C. Tâ ̣p lệnh công nghệ...........................................................................................3
C.1. Bộ đếm tốc độ cao.......................................................................................3
C.1.1. Sự vận hành bộ đếm tốc độ cao...........................................................3
C.1.2. Cấu hình của bộ đếm tốc độ cao..........................................................3
C.2. Bộ đều khiển PID........................................................................................3
C.2.1. Chèn lệnh PID và đối tượng công nghệ...............................................3
C.2.2. Lệnh PID_Compact.............................................................................3
C.2.3. Các tham số ErrorBit lệnh PID_Compact...........................................3
C.2.4. Lệnh PID_3STEP................................................................................3
C.2.5. Các tham số ErrorBit lệnh PID_3STEP..............................................3
C.2.6. Cấu hình cho bộ điều khiển PID.........................................................3
C.2.7. Chạy thử nghiệm bộ điều khiển PID...................................................3
TÀI LIỆU THAM KHẢO.......................................................................................3
MỤC LỤC HÌNH
Bộ điều khiển 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 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.
Họ S7-1200 cung cấp một số lượng lớn các module tín hiệu và board 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.
Board tín hiệu (SB) là một dạng module mở rộng tín hiệu vào/ra với số
lượng tín hiệu ít, giúp tiết kiệm chi phí cho các ứng dụng yêu cầu mở rộng số lượng
tín hiệu ít.
Gồm các board:
1 cổng tín hiệu ra analog 12 bit (±10VDC, 0-20mA)
2 cổng tín hiệu vào + 2 cổng tín hiệu ra số, 0.5A
Các LED trạng thái trên SB
Các module mở rộng tín hiệu vào/ra được gắn trực tiếp vào phía bên phải của
CPU. Với dải rộng các loại module tín hiệu vào/ra số và analog, giúp linh hoạt trong
sử dụng PLC S7-1200. Tính đa dạng của các module tín hiệu vào/ra sẽ được tiếp tục
phát triển.
Các LED trạng thái dành cho I/O của
module tín hiệu
Bộ phận kết nối đường dẫn
Bộ phận kết nối dây của người dùng có
thể tháo lấp
Bên cạnh tuyền thông ethernet được tích hợp sẵn, CPU S7-1200 có thể mở
rộng được 3 moulde truyền thông khác nhau, giúp cho việc kết nối được linh hoạt.
Tại thời điểm giới thiệu S7-200 ra thị trường, có các module RS232 va RS485, hỗ
trợ các protocol truyền thông như modbus, USS…
Mỗi CM kết nối vào phía bên trái của CPU (hay về phía bên trái của một CM
khác).
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.
Bảng 1.7. Các bảng hiển thị HMI
Basic HMI Panel Mô tả Số liệu kỹ thuật
KP 300 Basic PN Bàn phím màng 3.6 inch 250 nhãn
với 10 phím tiếp xúc cấu 50 màn hình xử lý
hình tự do 200 cảnh báo
Đơn sắc (STN, dải màu 25 biểu đồ
xám) 40 KB bộ nhớ nhận
87 mm x 31 mm (3.6") 5 bộ nhận, 20 bảng
Độ phân giải: 240 x 80 ghi dữ liệu, 20 mục
Màu nền lập trình (trắng, nhập
xanh, vàng hoặc đỏ
KTP 400 Basic PN Màn hình cảm ứng 4 inch 250 nhãn
với 4 phím tiếp xúc 50 màn hình xử lý
Đơn sắc (STN, dải màu 200 cảnh báo
xám) 25 biểu đồ
76.79 mm x 57.59 mm 40 KB bộ nhớ nhận
(3.8") thẳng đứng hoặc 5 bộ nhận, 20 bảng
nằm ngang ghi dữ liệu, 20 mục
Độ phân giải: 320 x 240 nhập
KTP 600 Basic PN Màn hình cảm ứng 6 inch 500 nhãn
với 6 phím tiếp xúc 50 màn hình xử lý
Kiểu màu (TFT, 256 200 cảnh báo
màu) hay kiểu đơn sắc 25 biểu đồ
(STN, dải màu xám) 40 KB bộ nhớ nhận
115.2 mm x 86.4 mm 5 bộ nhận, 20 bảng
(5.7") thẳng đứng hoặc ghi dữ liệu, 20 mục
nằm ngang nhập
Độ phân giải: 320 x 240
Sử dụng các nút trên bảng vận hành để thay đổi chế độ
vận hành của CPU (RUN hoặc STOP). Bảng vận hành
cũng cung cấp một nút MRES để cài đặt lại bộ nhớ.
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 dự án, như các thiết bị PLC hay HMI. STEP 7 Basic cung cấp ba ngôn ngữ
lập trình (LAD, FBD và SCL) để 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ụ để xây
dựng và cấu hình các thiết bị HMI trong dự án 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.
Để 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 XP hay Windows 7, người dùng cần phải đăng nhập với quyền hạn
Administrator. Và hệ thống phải thỏa mãn các yêu cầu sau đây để cài đặt phần
mềm.
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 dự án bao
gồm các phần tử bên trong dự á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.
Kiểu xem Portal cung cấp một kiểu xem theo chức năng đối với các nhiệm
vụ và tổ chức các công cụ theo sau để hoàn thành dự án, như là tạo cấu hình các
thành phần và các mạng phần cứng.
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.
Kiểu xem Project cung cấp việc truy xuất đến tất cả các thành phần nằm
trong một dự án. Với tất cả các thành phần này nằm trong một vị trí, người dùng có
thể truy xuất dễ dàng đến mỗi khía cạnh của dự án. Dự án chứa tất cả các các phần
tử đang được tạo ra hay đã hoàn thành.
Kiểu xem Portal cung cấp chức năng hiển
thị các nhiệm vụ dự án và tổ chức các công
cụ theo sau để hoàn thành nhiệm vụ. Ta sẽ
dễ dàng xác định làm thế nào để tiến hành
và chọn nhiệm vụ.
Portals cho các nhiệm vụ khác nhau
Nhiệm vụ cho portal đã chọn
Bảng lựa chọn cho sự kích hoạt
Thay đổi chế độ hiển thị dự án
1.6.2.1. Trợ giúp kiểu mở ra và các thủ thuật về công cụ xếp tầng
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.
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.
1.7.1. Chèn bộ mô phỏng tín hiệu vào các đầu vào inputs
Kết nối bộ mô phỏng với nguồn 24 VDC và các cực tín hiệu vào. Chắc chắn
là tất cả công tắc trên bộ mô phỏng đang ở vị trí “off”.
Chèn bộ mô phỏng.
1. Nới lỏng các
ốc vít ở các điện cực
2. Chèn bộ mô
phỏng vào
3. Xiết chặt các
ốc vít trên các điện cực lại.
Cáp PROFINET là một cáp CAT5 Ethernet chuẩn với các bộ kết nối RJ45 sẽ
kết nối CPU với máy tính hoặc thiết bị khả trình.
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 dự á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
Cổng Ethernet của CPU
Board tín hiệu (SB): tối đa là 1, được chèn vào CPU
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 dự án.
Trong kiểu xem Portal, chọn “Device & Networks” và nhấp vào “Add
device”.
Trong kiểu xem Project, dưới cây dự án nhấp đôi chuột vào “Add new
device”.
2.2.1.1. Cấu hình CPU
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 dự á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.
b. 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, ta có thể tải lên cấu hình
của CPU đó đến dự án, bao gồm bất kỳ các module nào.
Thường là tạo ra một dự án mới và lựa chọn “Unspecified
CPU” thay vì lựa chọn một CPU xác định. Ta 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 ta 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). Sau đó có
thể cấu hình các thông số của CPU và các module.
c. Cấu hình sự hoạt động của CPU
Để 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.
Hình 2.11. Thuộc tính DI của CPU trong 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 board tín hiệu như là
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.
2.2.1.2.Cấu hình các module
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.
Để 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.
Một hệ thống HMI thể hiện giao diện giữa người thao tác và quá trình xử lý.
PLC thực thi sự điều khiển thông qua quá trình xử lý. Chính vì thế ở đó có một giao
diện giữa người thao tác và bản HMI và giao diện giữa HMI và PLC.
Ta có thể sử dụng TIA portal để xây dựng các màn hình để vận hành, giám
sát máy và các thiết bị kỹ thuật. Và có sẳn các đối tượng đã được định nghĩa để giúp
ta tạo ra các màn hình này; ta có thể sử dụng các đối tượng này để mô phỏng thiết bị
của mình, hiển thị các quá trình và định nghĩa các giá trị xử lý.
HMI screen
2.2.2.1. Cấu hình các đối tượng màn hình trong TIA portal
Các chức năng của thiết bị HMI tìm thấy dự án hiển thị trong WinCC và
phạm vi chức năng của các đối tượng màn hình.
Đơn giản là kéo các đối tượng màn hình từ card nhiệm vụ “Tools” vào trong
màn hình. Ta chỉ rõ các cài đặt cho đối tượng mà chúng được chọn trong
“Properties” của cửa xổ kiểm tra.
Hình 2.12. Màn hình Biên tập HMI
Ta sử dụng trình biên tập HMI tag để cấu hình các external tag và internal
tag.
a. External tag
Các external tag cho phép sự truyền thông (chuyển tiếp dữ liệu) giữa các
phần tử của một quá trình tự động, chẳng hạn giữa thiết bị HMI và PLC.
Một external tag là ảnh của bộ nhớ cục bộ được định nghĩa trong PLC. Ta có
thể truy cập đọc và viết tới bộ nhớ cục bộ này cả trong thiết bị HMI và PLC.
b. Internal tag
Các internal tag không có một kết nối tới PLC. Các internal tag được lưu trữ
trong bộ nhớ của thiết bị HMI. Vì thế, chỉ có thiết bị HMI mới có thể truy cập đọc
và viết tới các internal tag. Ta có thể tạo ra các internal tag từ việc thực hiện các
phép tính cục bộ.
Tất cả các HMI tags cho sự hiển thị dự án thì được tạo ra trong trình biên tập
“HMI tags”. Phụ thuộc vào thể loại, ta thay đổi thuộc tính một tag trong Property
view. Ta cũng có một tùy chọn cho việc thay đổi thuộc tính trực tiếp trong Table
view. Table view có thể được điều chỉnh tùy theo các yêu cầu cấu hình.
Hình 2.13. Bảng HMI tags và cửa sổ thuộc tính
Nếu ta muốn cấu hình các PLC tags đã được cấu hình sẵn sàng trên màn hình
HMI thì thực hiện theo các bước sau:
1. Mở màn hình HMI
2. Trong cây dự án , chọn trình biên tập “PLC tags”. Tất cả các external
tag được thể hiện bên dưới “Detail view”.
3. Kéo và thả external tag lên màn hình HMI. Một trường I/O với các
PLC tags đã liên kết được tạo ra trên màn hình HMI.
Các recipe là một tập hợp các dữ liệu trình bày phụ thuộc lẫn nhau, như một
tỉ số hỗn hợp. Một tỉ số hỗn hợp có thể được truyền tải từ panel tới PLC trong một
bước làm việc. Ví dụ, để thay đổi các kiểu trình bày.
Một recipe chứa một vài phần tử: một tag được gán cho mỗi phần tử. Dữ liệu
thu thập của một recipe là các tỉ số hỗn hợp khác nhau của các phần tử recipe riêng
lẻ.
Gán các external tag tới các phần tử recipe:
1. Mở trình biên tập “Recipe”
2. Trong cây dự án , chọn trình biên tập “PLC tags”. Tất cả các external
tag được thể hiện bên dưới “Details view”.
3. Kéo và thả external tag lên miền “…”
Phần tử recipe bây giờ đã được liên kết tới external tag.
“PLC tags” là tên tượng trưng cho I/O và địa chỉ. Sau khi tạo PLC tag,
STEP7 lưu trữ tag trong bảng tag. Tất cả trình biên tập trong dự án (như là trình
biên tập chương trình, trình biên tập thiết bị, trình biên tập hiển thị và trình biên tập
bảng xem) đều có thể truy cập trong bảng tag.
Mở trình biên tập thiết bị, mở bảng tag. Ta có thể thấy các
trình biên tập được hiển thị trên thanh biên tập.
Trên thanh công cụ tool bar, click vào nút “Split editor space
horizontally”.
STEP 7 hiển thị đồng thời cả bảng tag và trình biên tập thiết bị.
Với các tag đã được đặt trong bảng “PLC tags”, ta có thể dùng nó cho việc
lập trình của mình.
Mã chương trình sẽ bao gồm các hướng dẫn để PLC thực thi trong sự nối
tiếp. Ví dụ, sử dụng logic bậc thang (LAD) để xây dựng mã chương trình. Chương
trình LAD là một mạch trình tự tương tự như các thanh ngang của cái thang.
Sử dụng các nút trên “Favorites” để chèn các tiếp điểm và cuộn dây vào
trong mạng.
1. Click vào nút “Nomally
open contact” trên “Favorites” để thêm
một tiếp điểm vào trong mạng.
2. Ở ví dụ này, tiếp điểm thứ
hai được thêm vào.
3. Click vào nút “Output coil”
để chèn vào một cuộn dây.
Để lưu dự án, click vào nút “Save project” trên thanh công cụ toolbar. Chú ý
rằng ta không thể hoàn thành việc kết thúc biên tập trước khi lưu. Bây giờ ta có thể
kết hợp các tên tag với các lệnh này.
2.3.3. Sử dụng PLC tag trong bảng tag để địa chỉ hóa các lệnh
Sử dụng bảng tag, ta có thể nhanh chóng nhập vào các PLC tags để định địa
chỉ các tiếp điểm và cuộn dây.
Trình biên tập có một hộp lệnh chung. Sau khi chèn hộp lệnh này, ta chọn
kiểu lệnh như là: lệnh ADD, lệnh OR, … từ một danh sách thả.
Click vào hộp lệnh chung trên
thanh công cụ “Favorites”.
2.3.5. Sử dụng lệnh CALCULATE cho các phương trình toán phức tạp
Lệnh CALCULATE cho phép ta xây dựng một chức năng toán học xử lý
nhiều thông số cổng vào để cho ra kết quả theo phương trình mà ta đã định nghĩa.
Trong cây lệnh cơ bản, mở thư mục các chức năng toán
học “Math functions”. Double-click vào lệnh
CALCULATE để chèn lệnh vào trong chương trình.
Click vào “???” và chọn các kiểu dữ liệu cho tham số đầu vào và
ra (Tất cả thông số vào và ra phải cùng một kiểu dữ liệu).
Đối với ví dụ này, ta chọn kiểu dữ liệu là “Real”.
Click vào biểu tượng “Edit equation” để nhập vào phương trình.
Đối với ví dụ này, ta nhập vào phương trình sau đây cho việc tỷ lệ hóa một
giá trị tương tự (analog) chưa được xử lý (Ở “In” và “Out” chỉ rõ các tham số tương
ứng của lê ̣nh CALCULATE).
Outvalue = ((Outhigh - Outlow) / (Inhigh - Inlow)) * (Invalue - Inlow) + Outlow
Out = ((in4 - in5) / (in2 - in3)) * (in1 - in3) + in5
Trong đó:
Outvalue (Out) Giá trị đầu ra đã được tỷ lệ hóa
Invalue (in1) Giá trị tương tự đầu vào
Inhigh (in2) Giới hạn trên cho việc tỷ lệ hóa giá trị đầu vào
Inlow (in3) Giới hạn dưới cho việc tỷ lệ hóa giá trị đầu vào
Outhigh (in4) Giới hạn trên cho việc tỷ lệ hóa giá trị đầu ra
Outlow (in5) Giới hạn dưới cho việc tỷ lệ hóa giá trị đầu ra
Trong hộp “Edit “Calculate” instruction” (hình 2.25), nhập tên các tham số
vào phương trình:
Hình 2.29. Liên kết mạng HMI và PLC trong “Network view”
Bằng cách tạo một kết nối HMI giữa hai thiết bị, ta sẽ dễ dàng chia sẽ các tag
giữa hai thiết bị.
Với mạng kết nối được chọn,
Click vào nút “Connections”
và chọn “HMI connection” từ
danh sách thả.
Ta có thể sử dụng một tùy chọn khác để xây dựng một kết nối HMI.
Kéo một PLC tag từ bảng PLC tag, trình biên tập hoặc thiết bị.
Sử dụng trình thuật sĩ HMI để duyệt tự động cho PLC để tạo kết nối
HMI.
Thậm chí nếu ta không dùng trình thuật sĩ HMI thì việc cấu hình màn hình
HMI cũng rất dễ dàng.
Để thêm vào một phần tử, đơn giản là kéo và thả phần tử lên màn hình.
Chúng ta cũng có thể xây dựng các phần tử trên màn hình bằng cách kéo và
thả mỗi PLC tags từ cây dự án đến màn hình HMI. Sau đó, sử dụng thuộc tính để
thay đổi thông số cho phần tử này.
Sử dụng thuộc tính properties của phần tử (trong cửa sổ kiểm tra) để cấu
hình dạng và trạng thái của phần tử (Hình 2. 32).
Sau khi xây dựng phần tử cho màn hình, ta sử dụng thuộc tính của phần tử để
gán một PLC tag cho phần tử. Click vào nút chọn lựa bởi trường tag để hiển thị các
PLC tags của CPU.
Ta cũng có thể kéo và thả các PLC tags từ cây dự án đến màn hình HMI
bằng cách cho hiển thị PLC tags trong “Details view” của cây dự án và sau đó kéo
tag đến màn hình HMI.
Dữ liệu dự án được tải trên thiết bị được phân phối vào trong dữ liệu dự án
phần cứng và phần mềm:
Dữ liệu dự án phần cứng là kết quả từ việc cấu hình phần cứng, các network
và các kết nối.
Dữ liệu dự án phần mềm liên quan tới các khối của chương trình.
Phụ thuộc trên thiết bị, có các tùy chọn sẳn có sau đây:
Việc cấu hình phần cứng.
Phần mềm.
Phần mềm (tất cả các khối).
Tất cả quá trình xử lý tải chung cho cả dữ liệu dự án phần cứng và
phần mềm.
2.4.2. Các tùy chọn tải
Ta có thể tải riêng lẻ các đối tượng, thư mục hoặc thiết bị hoàn chỉnh phụ
thuộc trên phạm vi cài đặt. Các tùy chọn sau đây là sẳn có cho việc tải:
Tải một dữ liệu dự án trong cây dự án
Ta có thể kéo và thả một dữ liệu dự án để tải nó tới thiết bị có thể truy
cập.
Thực hiện kéo và thả dữ liệu dự án để tải nó tới một card nhớ.
Dữ liệu dự án đã tải tới thiết bị đã chọn. Bây giờ, ta có thể thực hiện kiểm tra
và thực thi các chức năng chuẩn đoán trên thiết bị.
Trong chế độ online, ở đó có một kết nối online giữa thiết bị lập trình/PC với
một hay nhiều thiết bị. Một kết nối online giữa thiết bị lập trình/PC và thiết bị được
yêu cầu cho việc tải chương trình và cấu hình dữ liệu tới thiết bị cũng như cho việc
kích hoạt các hoạt động sau:
Kiểm tra chương trình người dùng
Hiển thị và thay đổi chế độ vận hành của CPU
Hiển thị và cài đặt ngày và thời gian trong ngày của CPU
Hiển thị thông tin module
So sánh các khối online và offline
Chuẩn đoán phần cứng
Thiết bị truy cập là tất cả các thiết bị đã được kết nối tới giao diện thiết bị lập
trình/PC và ở đó nó được bật on.
Để hiển thị thiết bị truy cập, thực hiện theo các bước sau:
1. Chọn “Online & Diagnostics” trong Portal view.
2. Click vào “Accessible device”.
Hộp thoại “Accessible device” hiển thị danh sách tất cả các thiết bị và địa chỉ
của chúng trong một bảng. Ta có thể lựa chọn PG/PC interface cho kết nối online và
LED sẽ sáng nhấp nháy trên thiết bị đã chọn.
Một kết nối online tới thiết bị có thể được thiết lập cả trong hiển thị Portal
view và Project view.
Ta có thể sử dụng hiển thị “Online & Diagnostics” hoặc card tác vụ “Onlne
tools” để truy cập tới dữ liệu thiết bị. Trạng thái online hiện hành của thiết bị được
hiển thị dưới dạng biểu tượng trong các hiển thị khác nhau.
Ta có tùy chọn kiểm tra chế độ running của chương trình người dùng trên
thiết bị. Sau đó, có thể giám sát các trạng thái tín hiệu, giá trị các tag và có thể gán
giá trị cho các tag để mô phỏng các tình huống nhất định trong chế độ running của
chương trình.
Yêu cầu
Các tùy chọn kiểm tra sau đây là sẳn có cho chúng ta thực hiện:
Kiểm tra với chương trình trạng thái
Chương trình trạng thái cho phép ta giám sát chương trình đang chạy.
Và có thể hiển thị giá trị và kết quả logic các toán hạn của các
Network sao cho ta thể nhận ra và cố định sai số logic trong chương
trình.
Kiểm tra với watch table
Với watch table, ta có thể giám sát, thay đổi hoặc cưỡng bức các giá trị hiện
hành của các tag riêng lẻ trong chương trình hoặc trên CPU. Ta có thể gán các giá
trị cho các tag riêng lẻ cho việc kiểm tra và chạy chương trình trong một biến của
các tình huống khác nhau. Và ta cũng có thể gán các giá trị cố định cho các I/O
cổng ra của một CPU trong chế độ STOP, ví dụ cho việc kiểm tra nối dây chẳng
hạn.
Hiển thị trạng thái chương trình được cập nhật theo chu kỳ. Nó bất đầu ở
mạng được chọn.
Hình 2.37. Hiển thị trạng thái chương trình trong LAD
Ví dụ: Kiểm tra với watch table
Một watch table chứa các tag mà ta đã định nghĩa nhập vào CPU. Thư mục
“Watch tables” tự động được tạo ra cho mỗi CPU trong dự án. Ta có thể tạo một
watch table mới trong thư mục này bằng cách chọn lệnh “Add new watch table”
Hình 2.38. Watch table trong chế độ cơ bản với cột “control” và “Force”
Các miền làm việc và các hiền thị sau đây là sằn có cho các chức năng chuẩn
đoán phần cứng và mạng:
Hiển thị Online và chuẩn đoán cung cấp cho ta thông tin toàn diện,
cũng như dạng đồ họa, trạng thái của thiết bị và có thể truyền tải các
lệnh tới thiết bị, thay đổi chế độ vận hành.
Đối với các module với chế độ vận hành của chính chúng, card nhiệm
vụ “Online tools”cho phép ta hỏi và chuyển thông tin chuẩn đoán hiện
hành và các lệnh tới module, thay đổi chế độ vận hành.
Trong miền “Diagnostics -> Device Info” của cửa sổ kiểm tra, ta sẽ
thấy được một cái nhìn tổng quan về các lỗi của thiết bị đã được kết
nối online.
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 dự án thiết
kế. Tất nhiên, ta phải tuân theo các thủ tục hướng dẫn của công ty chúng ta và được
chấp nhận thực hành luyện tập cho bản thân cũng như cho khu vực mình làm.
Bộ nhớ trong PLC S7-1200 được chia thành những miền nhớ: bộ nhớ nạp
(load memory), bộ nhớ làm việc (work memory) và bộ nhớ hệ thống (system
memory) với những đặc tính và chức năng riêng của từng miền.
Là vùng nhớ chứa chương trình ứng dụng (do người dùng viết) bao gồm tất
cả các khối chương trình ứng dụng OB, FC, FB và các khối dữ liệu DB. Có kích
thước phụ thuộc vào loại CPU sử dụng. Ngoài ra, bộ nhớ nạp còn có thể được thay
thế bởi card nhớ bên ngoài khi card nhớ được lắp vào trong CPU, CPU sẽ sử dụng
card nhớ như là một bộ nhớ nạp.
Là vùng nhớ chứa các khối DB đang được mở, khối chương trình (OB, FC,
FB) đang được thực thi và phần bộ nhớ cấp phát cho những tham số hình thức để
các khối chương trình này trao đổi tham trị với hệ điều hành và các khối chương
trình khác (local block). Tại một thời điểm nhất định vùng nhớ Work memory chỉ
chứa một khối chương trình. Sau khi khối chương trình đó thực thi xong thì hệ điều
hành sẽ xóa khỏi Work memory và nạp vào khối đó chương trình kế tiếp đến lượt
được thực hiện.
Là miền nhớ chứa các bộ đệm vào/ra số (Q, I), bit nhớ cờ (M), khối dữ liệu
(DB) và miền nhớ địa phương (L). Chương trình người dùng có thể truy cập (đọc và
viết) dữ liệu được lưu trữ trong các miền nhớ này. Mỗi vị trí nhớ được phân biệt bởi
một địa chỉ và địa chỉ này là duy nhất. Chương trình sử dụng các địa chỉ này để truy
cập thông tin trong vị trí nhớ.
Khi tạo một chương trình phục vụ cho các nhiệm vụ về tự động hóa, 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à 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 nhiệm vụ khởi động, xử lý các ngắt và
lỗi, hay 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 hàm (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 tham số đến FB và nhận dạng một khối dữ liệu (DB) đặ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
tham số vận hành riêng biệt của mỗi máy bơm hay van.
Hàm số (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 tham 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.
Chương trình cho S7-1200 được lưu trong bộ nhớ của PLC ở vùng dành
riêng cho chương trình. Ta có thể lập trình với hai dạng cấu trúc khác nhau: cấu trúc
tuyến tính và cấu trúc module.
Dựa trên các yêu cầu của ứng dụng, ta có thể chọn cấu trúc tuyến tính hay
cấu trúc module để tạo ra chương trình:
Lập trình tuyến tính: toàn bộ chương trình điều khiển nằm trong một
khối trong bộ nhớ. Loại lập trình cấu trúc chỉ thích hợp chọ những bài
toán tự động nhỏ, không phức tạp. Khối dược chọn là khối OB1, là
khối mà PLC luôn quét và thực hiện lệnh trong nó thường xuyên, từ
lệnh đầu tiên đến lệnh cuối cùng và quay lại lệnh đầu tiên.
Lập trình module: chương trình được chia thành những phần nhỏ với
những nhiệm vụ riêng biệt và các phần này nằm trong những khối
chương trình khác nhau. 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. Loại lập trình module phù hợp
với những bài toán điều khiển nhiều nhiệm vụ và phức tạp.
Hình 3.1.Cấu trúc tuyến tính
Hình 3.2. Cấu trúc module
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ố lợi ích sau:
Tạo ra các khối hàm có thể sử dụng lại 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 từ các thành phần kiểu module có liên
quan đến các nhiệm vụ chức năng, chương trình có thể được hiểu và
quản lý dễ dàng hơn. Các thành phần kiểu module không chỉ giúp
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 module sẽ làm đơn giản hóa 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 từ một
tổ hợp các khối chương trình và ta có thể dễ dàng thể kiểm tra chức
năng của từng khối trong cấu trúc.
Việc tạo ra các thành phần kiểu module có liên quan đến các chức
năng về công nghệ đặc trưng có thể làm đơn giản hóa và rút gọn thời
gian để 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 module. Sau đó cấu trúc chương trình bằng cách 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 tham 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 sẽ 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.
Các khối tổ chức (OB) 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 và chạy đượ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ể
chứa 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 loại chương trình xử lý 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 “normal” 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, toàn bộ chương trình người dùng được đặt trong một OB
chu kỳ chương trình duy nhất.
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ư xử lý
các ngắt và các lỗi, hay 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.
Tùy thuộc vào các mức độ ưu tiên
tương ứng, một OB có thể ngắt một
OB khác. Việc xử lý ngắt luôn luôn
được điều khiển theo sự kiện. Khi một
sự kiện xuất hiện, CPU ngắt sự thực
thi của chương trình người dùng và
gọi OB đã được cấu hình để thực thi
sự kiện đó. Sau khi hoàn thành sự
thực thi của OB đang ngắt, CPU khôi
phục sự thực thi chương trình người
dùng tại điểm ngắt.
CPU xác định thứ tự 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. 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 cho chương trình người dùng,
CPU 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ớ.
Sử dụng các FC để thực hiện các tác vụ sau đây:
Để 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 số học.
Để 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 việc lập trình cho các nhiệm vụ lặp lại một
cách thường xuyên.
Một FC không có một liên kết nào đến khối dữ liệu (DB) mẫu. 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 (FB) 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 khác nhau của FB. Các DB mẫu cho
phép ta sử dụng một FB chung để điều khiển nhiều 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 tham 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 sau trong cùng một chu kỳ quét hay trong các chu
kỳ quét khác.
Thông thường ta sử dụng một FB để điều khiển sự vận hành của các nhiệm
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 DB mẫu. Khi gọi một FB, ta còn phải chỉ rõ DB mẫu (có chứa các tham
số và dữ liệu cục bộ tĩnh) cho lệnh gọi đó. 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 nhiệm 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 chỉ rõ một DB mẫu tương ứng 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ị cho các thông số.
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 trong chương trình người dùng
đề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 đặc trưng cho một khối hàm (FB).
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 (global DB) 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 (instance DB) lưu trữ dữ liệu đặc trưng cho một FB. 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ớ tạm thờitrong DB
mẫucủamột FB thì không lưu trữ dữ liệu).
Lưu ý, mặc dù DB mẫu phản ánh các dữ liệu đặc trưng cho một FB, tuy
nhiên bất kỳ khối mã nào cũng có thể truy xuất dữ liệu trong một DB mẫu.
Ta có thể cấu hình cho một DB như là chỉ đọc:
1. Right-click vào DB trong hướng dự án và chọn “Properties” từ menu
ngữ cảnh.
2. Trong hộp thoại “Properties”, chọn “Attributes”.
3. Chọn tùy chọn “Khối dữ liệu được bảo vệ ghi trong thiết bị” và click
“OK”.
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 thì chương trình cũng phải đả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 đọ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à 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 (Point-to-Point), các lệnh PROFINET (như TSEND_C và
TRCV_C), các lệnh PROFINET phân phối I/O và các lệnh PROFIBUS phân phối
I/O 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.
STEP 7 cung cấp các chuẩn ngôn ngữ lập trình sau đây cho S7-1200:
LAD (ladder logic) là một ngôn ngữ lập trình đồ họa. Trình bày dựa
trên sơ đồ mạch.
FBD (sơ đồ khối hàm) là một ngôn ngữ lập trình dựa trên các ký hiệu
logic đồ họa được sử dụng trong đại số Boolean.
SCL (ngôn ngữ điều khiển được cấu trúc) dựa trên văn bản, là ngôn
ngữ lập trình bậc cao.
Khi ta tạo một khối mã, ta chọn ngôn ngữ lập trình được sử dụng bởi khối
đó.
Chương trình người dùng có thể sử dụng các khối mã được tạo ra trong bất
kỳ hoặc tất cả các ngôn ngữ lập trình.
Các phần tử của một sơ đồ mạch điện, như các tiếp điểm thường đóng hay
thường mở và các cuộn dây được nối với nhau để tạo thành các mạng.
Để tạo ra sơ đồ logic cho các hoạt động phức tạp, ta có thể chèn vào các
nhánh để tạo ra các mạch logic song song. Các nhánh song song được mở theo
hướng xuống hay được kết nối trực tiếp đến thanh dẫn tín hiệu. Ta kết thúc các
nhánh theo hướng lên trên.
LAD cung cấp các “box” lệnh cho các hàm khác nhau, như là: math, timer,
counter và move.
Lưu ý, mỗi mạng LAD phải kết thúc bằng một cuộn dây hoặc một hộp lệnh.
Cần chú ý đến các quy tắc sau đây khi tạo ra một mạng LAD:
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 đi 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ác hàm toán học và các hàm phức tạp khác có thể được thể hiện một cách
trực tiếp trong sự kết hợp các hộp logic.
STEP 7 không giới hạn số lệnh (các hàng và các cột) trong mạng FBD.
3.6.3. Ngôn ngữ lập trình SCL
Ngôn ngữ điều khiển được cấu trúc (SCL) là một ngôn ngữ bậc cao, dựa trên
ngôn ngữ lập trình PASCAL cho các SIMATIC S7 CPU. SCL hỗ trợ cho khối cấu
trúc của STEP 7. Ta cũng có thể chứa các khối chương trình được viết trong SCL
với các khối chương trình được viết trong LAD và FBD.
Các lệnh SCL sử dụng các toán hạng lập trình chuẩn, như là lệnh gán(:=),
các hàm số học (+ cộng, - trừ, * nhân và / chia). SCL cũng sử dụng các toán hạng
lập trình điều khiển chuẩn PASCAL, như là IF-THEN-ELSE, CASE, REPEAT-
UNTIL, GOTO và RETURN. Ta có thể sử dụng bất kỳ tham chiếu PASCAL nào
cho các phần tử cú pháp của ngôn ngữ lập trình SCL. Nhiều lệnh trong số các lệnh
SCL, như là các lệnh định thì và đếm phù hợp với các lệnh trong LAD và FBD.Để
biết thêm nhiều thông tin về các lệnh cụ thể, hãy tham khảo các lệnh trong phụ lục
tập lệnh lập trình cho các tập lệnh cơ bản và tập lệnh mở rộng.
Ta có thể thiết kế bất kỳ kiểu khối nào (OB, FB hoặc FC) để sử dụng ngôn
ngữ lập trình SCL tại thời điểm ta tạo ra các khối. STEP 7 cung cấp trình biên tập
SCL bao gồm các yếu tố sau:
Phần giao diện cho việc định nghĩa các tham số của khối mã
Phần mã cho mã chương trình
Cây lệnh chứa các lệnh SCL được hỗ trợ bởi CPU
Ta nhập vào mã SCL trực tiếp cho lệnh trong phần mã. Đối với nhiều lệnh
phức tạp hơn, chỉ cần kéo các lệnh SCL từ cây lệnh và thả chúng vào chương trình
của mình. Ta cũng có thể sử dụng bất kỳ trình soạn thảo văn bản để tạo ra một
chương trình SCL và sau đó nạp tập tin vào trong STEP 7.
Trong phần của khối mã SCL ta có thể khai báo các kiểu tham số sau đây:
Input, Output, InOut và Ret_Val: các tham số này định nghĩa các tag
cổng vào, các tag cổng ra và giá trị trả về cho khối mã. Tên tag mà ta
nhập vào đây được sử dụng cục bộ trong quá trình thực thi của khối
mã. Ta thường sẽ không sử dụng tên tag toàn cục trong bảng tag.
Static (chỉ với các FB; hình minh họa ở trên là cho một FC): các tag
tĩnh được sử dụng cho việc lưu trữ các kết quả trung gian tĩnh trong
khối dữ liệu mẫu. Dữ liệu tĩnh được giữ lại cho đến khi ghi đè lên, có
thể là sau vài chu kỳ. Các tên của các khối mà nó được gọi trong khối
mã này như multi-instance, cũng được lưu trong dữ liệu địa phương
tĩnh.
Temp: các tham số này là các tag tạm thời được sử dụng trong quá
trình thực thi khối mã.
Nếu ta gọi khối mã SCL từ khối mã khác, các tham số của khối mã SCL xuất
hiện như là các cổng vào và ra.
Trong ví dụ này, các tag “Start” và “On” (từ bảng tag dự án) tương ứng tới
“StartStopSwitch” và “RunYesNo” trong bảng khai báo của lập trình SCL.
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 số 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 đó. SCL cũng cho phép ta
set tham số ENO cho một khối mã.
EN (Enable In) là một ngõ vào Boolean cho các hộp lê ̣nh 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 hộp lê ̣nh đượ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 lê ̣nh
sẽ luôn luôn được thực thi.
ENO (Enable Out) là một ngõ ra Boolean cho các hộp lê ̣nh 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ảng 3.5.1. Các toán hạng cho EN và ENO
Trình soạn Các ngõ vào/ngõ ra Toán hạng Kiểu dữ
thảo chương liệu
trình
LAD EN, ENO Power Flow Bool
FBD EN I, I:P, Q, M, DB, Temp, Bool
Power Flow
ENO Power Flow Bool
1
SCL EN TRUE, FALSE Bool
2
ENO TRUE, FALSE Bool
1
Việc sử dụng của EN chỉ có sẳn cho các FB
2
Việc sử dụng của ENO với khối mã SCL là tùy ý. Ta phải cấu hình trình biên
dịch SCL để set ENO khi khối mã kết thúc.
Để cấu hình trình biên dịch SCL cho việc thiết lập ENO, thực hiện theo các
bước sau:
1. Chọn lệnh “Settings” từ menu “Options”.
2. Mở rộng các thuộc tính “PLC programming” và chọn
“SCL(Structured Control Language)”.
3. Chọn tùy chọn “Set ENO automatical”.
Ảnh hưởng của các tham số Ret_Val hoặc Status trên ENO
Một số lệnh, như là các lệnh truyền thông hoặc các lệnh chuyển đổi chuỗi,
cung cấp một tham số cổng ra chứa các thông tin về việc xử lý lệnh. Ví dụ, một số
lệnh cung cấp một tham số Ret_Val (giá trị trả về), mà thường là kiểu dữ liệu Int
chứa thông tin trạng thái trong phạm vi từ -32768 tới +32767. Các lệnh khác cung
cấp một tham số trạng thái, mà thường là kiểu dữ liệu Word lưu trữ thông tin trạng
thái trong một phạm vi của các giá trị thập lục phân từ 16#0000 tới 16#FFFF. Giá
trị bằng số được lưu trữ trong một tham số Ret_Val hoặc Status xác định trạng thái
của ENO cho lệnh đó.
Ret_Val: một giá trị từ 0 tới 32767 thường set ENO =1 (hoặc TRUE).
Một giá trị từ -32768 tới -1 thường set ENO = 0 (hoặc FALSE). Để
ước lượng Ret_Val, thay đổi sự trình bày tới hệ thập lục phân.
Status: một giá trị từ 16#0000 tới 16#7FFF thường set ENO = 1 (hoặc
TRUE). Một giá trị từ 16#8000 tới 16#FFFF thường set ENO = 0
(hoặc FALSE).
Các lệnh mà phải mất nhiều hơn một lần quét (scan) để thực thi, cung cấp
một tham số Busy (Bool) để báo hiệu rằng lệnh được kích hoạt nhưng chưa hoàn tất
thực thi. Các lệnh này thường cũng cung cấp một tham số Done (Bool) và một tham
số Error (Bool). Done báo hiệu rằng lệnh đã hoàn thành mà không có lỗi và Error
báo hiệu rằng lệnh đã hoàn thành với một điều kiện lỗi.
Khi Busy = 1 (or TRUE), ENO = 1 (or TRUE).
Khi Done = 1 (or TRUE), ENO = 1 (or TRUE).
Khi Error = 1 (or TRUE), ENO = 0 (or FALSE).
CPU cung cấp ba mức bảo mật để hạn chế truy cập vào các chức năng riêng.
Khi ta cấu hình mức độ bảo mật và mật khẩu cho một CPU, ta giới hạng các chức
năng và các khu vực bộ nhớ mà có thể được truy cập không cần mật khẩu.
Mật khẩu có phân biệt chữ hoa chữ thường.
Mỗi mức cho phép một số chức năng nhất định để có thể truy cập mà không
cần mật khẩu. Điều kiện mặc định cho CPU là không có hạn chế và không có mật
khẩu bảo vệ. Để hạn chế quyền truy cập vào 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.
Nhập vào mật khẩu qua một mạng không ảnh hưởng tới mật khẩu bảo vệ cho
CPU. Mật khẩu bảo vệ không áp dụng cho việc thực thi các lệnh chương trình
người dùng bao gồm các hàm truyền thông. Nhập chính xác mật khẩu sẽ cung cấp
quyền truy cập vào tất cả các hàm.
Truyền thông PLC-to-PLC (sử dụng các lệnh truyền thông trong các khối
mã) không bị giới hạn bởi mức độ bảo vệ trong CPU. Chức năng HMI cũng không
bị giới hạn.
Bí quyết bảo vệ cho phép ta ngăn chặn các truy cập trái phép từ một hoặc
nhiều hơn các khối mã (OB, FB, FC hoặc DB) trong chương trình của mình. Ta có
thể tạo một mật khẩu để giới hạn quyền truy cập tới khối mã. Mật khẩu bảo vệ ngăn
không cho đọc hoặc sửa đổi trái phép khối mã. Nếu không có mật khẩu thì ta chỉ có
thể đọc các thông tin sau đây về khối mã:
Tiêu đề, chú thích và thuộc tính khối
Các tham số chuyển tiếp (IN, OUT, IN_OUT, Return)
Cấu trúc gọi của chương trình
Các tag toàn cục trong tham chiếu chéo (mà không có thông tin về các
điểm sử dụng) nhưng các tag địa phương thì được ẩn
Khi ta cấu hình một khối cho “know-how” bảo vệ, các mã trong khối không
thể được truy cập ngoại trừ sau khi nhập mật khẩu.
Sử dụng “Properties” card tác vụ của khối mã để cấu hình “know-how
protection” cho khối đó. Sau khi mở khối mã, chọn “Protection” từ các thuộc tính.
Một số tính năng bổ sung cho phép ta nối kết các khối chương trình hoặc
khối mã để sử dụng với một card nhớ hoặc CPU riêng. Tính năng này đặt biệt hữu
ích cho việc bảo vệ tài sản trí tuệ cá nhân. Khi ta nối kết một chương trình hoặc
khối tới một thiết bị riêng, ta hạn chế chương trình hoặc khối mã cho việc sử dụng
chỉ với một card nhớ hoặc CPU riêng. Tính năng này cho phép ta phân phối một
chương trình hoặc một khối mã điện tử (chẳng hạn như qua internet hoặc email)
hoặc bằng cách gửi một hộp nhớ.
Sử dụng “Properties” card tác vụ của khối mã để nối kết khối tới một CPU
hoặc card nhớ riêng.
Ta có thể tải xuống các phần tử của dự án từ thiết bị lập trình tới CPU. Khi ta
tải xuống một dự án, CPU lưu trữ chương trình người dùng (các OB, FC, FB và
DB) trong bộ nhớ vĩnh viễn.
Ta có thể tải xuống dự án từ thiết bị lập trình tới CPU từ bất kỳ vị trí nào sau
đây:
“Project tree”: Right-click vào phần tử lập trình và sau đó click theo
ngữ cảnh chọn “Download”.
“Online” menu: Click vào lựa chọn “Download to device”.
Toolbar: Click vào biểu tượng “Download to device”.
Ta cũng có thể sao chép các khối chương trình từ một CPU online hoặc một
card nhớ được gắn tới thiết bị lập trình.
Chuẩn bị dự án offline cho các khối chương
trình được sao chép:
1. Thêm vào một thiết bị CPU phù hợp
với CPU online.
2. Mở rộng nút CPU một lần để có thể
thấy thư mục “Program blocks”.
Tải lên các khối chương trình từ CPU online
tới dự án offline theo các bước sau đây:
1. Click vào thư mục “Program blocks” trong dự án offline.
2. Click vào nút “Go online” .
3. Click vào nút “Upload” .
4. Xác nhận quyết định của mình từ hộp
thoại Upload.
Ngoài ra ta cũng có thể thực hiện theo các
bước sau:
1. Từ đường dẫn dự án, mở rộng nút
“Online access” để chọn các khối
chương trình trong CPU online.
2. Mở rộng nút cho network và double
click vào “Update accessible
devices”.
3. Mở rộng nút cho CPU.
4. Kéo thư mục “Program blocks” từ
Hình 3.19. Thuộc tính
online CPU và thả thư mục vào trong
“online access” trên cây
thư mục “Program blocks” của dự án
dự án
offline.
5. Trong hộp thoại “Upload preview”, chọn hộp cho “Continue” và sau
đó click vào nút “Upload from device”.
Lưu ý, ta có thể sao chép các khối chương trình từ CPU online tới một
chương trình đang tồn tại. Và thư mục “Program-blocks” của dự án offline không
được để chống. Tuy nhiên, chương trình đang tồn tại sẽ được xóa và thay thế bằng
chương trình trong CPU online.
Ta có thể sử dụng trình biên tập “Compare” trong STEP 7 để tìm sự khác
nhau giữa các dự án online và offline. Điều này sẽ hữu ích trước khi ta tải lên từ
CPU.
Việc giám sát và sửa đổi các giá trị trong CPU online được thể hiện trong
bảng sau.
Ta sử dụng “watch tables” cho việc giám sát và sửa đổi các giá trị của
chương trình được thực thi bởi CPU online. Có thể tạo và lưu các watch table khác
nhau trong dự ánđể hỗ trợ cho các môi trường kiểm tra khác nhau. Và ở đây, cho
phép ta tạo bản sao các bài kiểm tra trong quá trình chạy thử hoặc cho các mục đích
phục vụ và bảo trì.
Với một watch table, ta có thể giám sát và tương tác với CPU như việc nó
thực thi chương trình. Hiển thị hoặc thay đổi các giá trị không chỉ đối với các tag
của khối mã và khối dữ liệu, mà còn cho các miền nhớ của CPU, bao gồm các cổng
vào và các cổng ra (I và Q), các cổng vào ngoại vi (I:P), bit nhớ (M) và các khối dữ
liệu (DB).
Với watch table, ta có thể kích hoạt cá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ụ thể cho các cổng ra khi thử
nghiệm dây nối cho CPU.
STEP 7 cũng cung cấp một force table để “cưỡng bức” một tag tới một giá trị
cụ thể.
Lưu ý, các giá trị cưỡng bức được lưu trong CPU và không có trong watch
table. Ta không thể cưỡng bức một cổng vào (hoặc địa chỉ “I”). Tuy nhiên, ta có thể
cưỡng bức một cổng vào ngoại vi. Để cưỡng bức một cổng vào ngoại vi, nối thêm
“:P” tới địa chỉ (ví dụ: “On:P”).
Cửa xổ kiểm tra hiển thị thông tin tham chiếu chéo về một đối tượng được sử
dụng như thế nào trong quá trình hoàn thành dự án, như là chương trình, các thiết bị
CPU và HMI. Nhãn “Cross-reference” hiển thị vị trí đối tượng được sử dụng và các
đối tượng khác sử dụng nó. Cửa xổ kiểm tra cũng bao gồm các khối chương trình
mà nó chỉ có sẳn trực tuyến trong tham chiếu chéo. Để hiển thị thông tin tham chiếu
chéo, chọn lệnh “Show cross-reference”. (Trong Project view, tìm các tham chiếu
chéo trong danh sách “Tools”)
Ta không cần phải đóng trình biên tập để xem thông tin tham chiếu chéo.
Ta có thể sắp xếp các mục trong tham chiếu chéo. Danh sách tham chiếu
chéo cung cấp một cái nhìn tổng quát về việc sử dụng các địa chỉ bộ nhớ và các tag
trong chương trình.
Khi tạo và thay đổi một chương trình, ta giữ lại một cái nhìn tổng
quan về các toán hạng, các tag và các khối gọi mà ta có sử dụng.
Từ các tham chiếu chéo, ta có thể nhảy trực tiếp tới điểm sử dụng của
các toán hạng và các tag.
Trong quá trình thử nghiệm hoặc khi xử lý sự cố, ta sẽ được thông báo
về vị trí bộ nhớ đang được xử lý bởi lệnh trong khối đó, các tag được
sử dụng trong màn hình và khối được gọi bởi các khối khác.
Cấu trúc gọi mô tả trật tự gọi khối trong chương trình người dùng. Nó cung
cấp một cái nhìn tổng thể các khối được dùng, các lần gọi tới các khối khác, mối
quan hệ giữa các khối, các yêu cầu dữ liệu cho mỗi khối và trạng thái các khối. Ta
có thể mở trình biên tập và biên tập các khối từ cấu trúc gọi.
Hiển thị cấu trúc gọi cung cấp cho ta một danh sách các khối được sử dụng
trong chương trình người dùng. STEP 7 nhấn mạnh bậc đầu tiên của cấu trúc gọi và
hiển thị bất kỳ khối nào không được gọi bởi khối khác trong chương trình. Bật đầu
tiên của cấu trúc gọi hiển thị các OB và bất kỳ FC, FB và DB nào không được gọi
bởi một OB. Nếu một khối mã gọi một khối, khối được gọi được thể hiện thụt đầu
dòng dưới khối đang gọi. Cấu trúc gọi chỉ hiển thị các khối được gọi bởi một khối
mã.
Ta có thể lựa chọn chỉ hiển thị các khối gây mâu thuẫn trong cấu trúc gọi.
Các điều kiện sau đây sẽ gây ra mâu thuẫn:
Các khối thực thi bất kỳ lần gọi nào với mã dấu hiệu thời gian cũ hơn
hoặc mới hơn.
Các khối gọi một khối với giao diện được sửa đổi.
Các khối sử dụng một tag với địa chỉ và/hoặc kiểu dữ liệu được sửa
đổi.
Các khối được gọi là không trực tiếp hoặc gián tiếp bởi một OB.
Các khối gọi một khối không tồn tại hoặc thất lạc.
Ta có thể nhóm một số khối gọi và các khối dữ liệu thành một nhóm. Ta sử
dụng một danh sách thả để thấy các liên kết tới các vị trí gọi khác nhau.
Ta cũng có thể cho phép một sự kiểm tra nhất quán để thể hiện các mâu
thuẫn dấu hiệu thời gian. Thay đổi dấu hiệu thời gian của một khối trong hoặc sau
khi chương trình được tạo ra có thể dẫn tới các mâu thuẫn dấu hiệu thời gian, mà
lần lượt là các mâu thuẫn trong số các khối đang được gọi và được gọi.
Hầu hết các mâu thuẫn dấu hiệu thời gian và giao diện có thể được
sửa chữa bằng cách biên dịch lại các khối mã.
Nếu sự biên dịch gặp lỗi để loại bỏ các mâu thuẫn, sử dụng liên kết
trong cột “Details” để đi tới nguồn gốc của vấn đề trong trình biên
tập. Sau đó ta có thể tự loại bỏ bất kỳ mâu thuẫn nào.
Bất kỳ khối nào được đánh dấu màu đỏ phải được biên dịch lại.
CHƯƠNG IV
Bộ điều khiển PID sử dụng công thức sau đậy để tính toán giá trị cổng ra cho
lệnh PID_Compact.
Công dụng: PID_Compact cung cấp 1 bộ điều khiển PID với chức năng tự
điều chỉnh cho chế độ tự động hoặc bằng tay.
Bảng 4.1. Các kiểu dữ liệu của các tham số lê ̣nh PID_Compact
Tham số và kiểu Kiểu dữ liệu Mô tả
Setpoint IN Real Điểm đặt của bộ điều khiển PID trong
chế độ tự động. Giá trị mặc định: 0.0
Input IN Real Giá trị xử lý. Giá trị mặc định: 0.0
Ta cũng có thể đặt
sPid_Cmpt.b_Input_PER_On =
FALSE.
Input_PER IN Word Giá trịxử lý analog (tùy chọn). Giá trị
mặc định là: W#16#0.
Ta cũng có thể đặt
sPid_Cmpt.b_Input_PER_On =
TRUE.
ManualEnable IN Bool Cho phép hoặc không cho phép chế độ
vận hành bằng tay. Giá trị mặc định là
FALSE:
PID_Compact V1.0 và V1.2:
khi CPU chuyển sang chế độ
RUN, nếu ManualEnable =
TRUE thì PID_Compact bất
đầu trong chế độ bằng tay. Nó
không cần một sự chuyển đổi
từ FALSE sang TRUE để đặt
PID_Compact vào trong chế độ
bằng tay.
PID_Compact V1.1: khi CPU
chuyển sang chế độ RUN và
ManualEnable = TRUE thì
PID_Compact bất đầu trong
trạng thái cuối cùng. Một sự
chuyển đổi từ TRUE sang
FALSE sang TRUE được yêu
cầu để đặt PID_Compact vào
chế độ bằng tay.
ManualValue IN Real Giá trị xử lý cho việc vận hành bằng
tay. Giá trị mặc định là: 0.0
Reset IN Bool Tham số Reset sẽ khởi động lại bộ
điều khiển. Giá trị mặc định là:
FALSE
Xem phần “Response to Reset” bên
dưới các sơ đồ đáp ứng Reset
PID_Compact V1.0 và V1.1
ScaledInput OUT Real Giá trị xử lý đã được tỷ lê ̣ hóa. Giá trị
mặc định là: 0.0
Output1 OUT Real Giá trị cổng ra. Giá trị mặc định là:
0.0
Output_PER1 OUT Word Giá trị analog cổng ra. Giá trị mặc
định là: W#16#0
Output_PWM1 OUT Bool Giá trị cổng ra điều chế độ rộng xung.
Giá trị mặc định là: FALSE
SetpointLimit_H OUT Bool Giới hạn trên setpoint. Giá trị mặc
định là: FALSE
Nếu SetpointLimit_H = TRUE thì
setpoint sẽ đạt đến giới hạn trên tuyệt
đối. Giá trị mặc định là: FALSE
SetpointLimit_L OUT Bool Giới hạn dưới setpoint. Giá trị mặc
định là: FALSE
Nếu SetpointLimit_L = TRUE thì
setpoint sẽ đạt đến giới hạn dưới tuyệt
đối. Giá trị mặc định là: FALSE
InputWarning_H OUT Bool Nếu InputWarning_H = TRUE thì giá
trị xử lý (PV) đạt đến hay vượt mức
giới hạn trên. Giá trị mặc định là:
FALSE
InputWarning_L OUT Bool Nếu InputWarning_L = TRUE thì giá
trị xử lý (PV) đạt đến hay vượt mức
giới hạn dưới. Giá trị mặc định là:
FALSE
State OUT Int Chế độ hoạt động hiện hành của bộ
điều khiển PID. Giá trị mặc định là: 0
Sử dụng sRet.i_Mode để thay đổi chế
độ.
State = 0: không hoạt động
State = 1: điều chỉnh sơ bộ
State = 2: tinh chỉnh bằng tay
State = 3: chế độ tự đô ̣ng
State = 4: chế độ bằng tay
ErrorBits OUT DWord Bảng các tham số ErrorBit lệnh
PID_Compact định nghĩa các thông
báo lỗi. Giá trị mặc định là:
DW#16#0000 (không có lỗi)
1
Các tham số Output, Output_PER và Output_PWM của các cổng ra có thể
được sử dụng song song.
4.2. Sự hoạt động của bộ điều khiển PID_Compact
Hình 4.2. Sự hoạt động của bộ điều khiển PID_Compact như là một bộ điều khiển
PIDT1 với anti-windup
4.3. Cách cấu hình và sử dụng bộ PID_Compact
Đầu tiên phải tạo một khối hàm ngắt chu kỳ OB30 đối với CPU 1212C vì bộ
PID cần thời gian để thực thi, một chú ý ở đây là không nên để khối PID_Compact
trong chương trình chính OB1 sẽ khiến chu kỳ quét của PLC tăng lên nhiều làm cho
ứng dụng có nhiều bộ PID thì OB1 càng chậm đồng thời làm đáp ứng của PLC bị
chậm theo.
Trong khối OB30 nhập vào các biến khai báo (tùy thuộc vào ứng dụng để nhập
đúng thông số) vào khối hàm PID theo nhu cầu sử dụng. Sau đó ấn vào biểu tượng
Trong phần Input Scaling >> nhập các thông số theo trình tự sau → Scaled
high value (ví dụ 1000.0 L) → high limit (ví dụ 1000.0 L) → Low limit (ví dụ 0.0
L) → Scaled low value(ví dụ 0.0 L). Ở đây tùy từng ứng dụng bài toán mà nhập các
giá trị thích hợp, giá trị trong hình ví dụ cho hệ thống ổn định mức
Trong phần Advance settings chỉ cần quan tâm tới PID parameter → PID
parameters : với mỗi một hệ thống sẽ có những thông số để hệ thống ổn định, ở đây
chúng ta chỉ đưa ra thông số gần đúng để chức năng auto turning hoạt động nhanh
hơn, chúng ta cũng có thể để thông số mặc định. Thực hiện xong nhấn Save project.
Hình 4.9. Cửa sổ cấu hình PID
Khi CPU khởi động ban đầu, bộ điều khiển PID_Compact chưa được kích
hoạt. Để kích hoạt nó, chúng ta bắt đầu lệnh bằng cách click vào biểu tượng
Chọn Start measurement để mở chức năng giám sát hệ thống bằng đồ thị.
Hình 4.11. Cửa sổ “commissioning”
Tiếp tục chọn Start fine turning để bắt đầu dò thông số cho hệ thống. Bây giờ
Self optimization bắt đầu hoạt động. Trong vùng “Status” những bước hoạt động và
lỗi xảy ra sẽ được hiển thị. Thanh vận hành cho thấy quá trình của các bước vận
hành.
CHƯƠNG V
Trong các thiết bị sử dụng nhiệt, việc điều khiển chính xác nhiệt độ nhất định
là một việc hết sức phức tạp. Trong điều khiển hiện đại, có nhiều phương pháp điều
khiển để đạt được độ chính xác cao. Một trong những phương pháp điều khiển
chính xác nhất là điều khiển PID, PLC S7-1200 có hỗ trợ 16 vòng lặp PID cho phép
tự động điều chỉnh. Mạch đo và điều chỉnh nhiệt độ ứng dụng trong: nhà kho, lò
nhiệt, lò ấp trứng, vườn ươm thông minh,…
5.2. Sơ đồ khối
HMI
Hình 5.1. Sơ đồ hoạt động của bộ điều khiển
Giải thích:
Tín hiệu điều khiển từ HMI được chuyển xuống PLC qua dây cáp mạng
RJ45 để điều khiển và giám sát nhiệt độ.
Ngõ ra của cảm biến nhiệt độ là ngõ ra analog (điện thế). Giá trị điện thế sẽ
thay đổi theo nhiệt độ. Giá trị này được đưa vào PLC qua ngõ vào analog của PLC
và được chuyển đổi thành giá trị nhiệt độ. PLC sẽ so sánh nhiệt độ đo được với
nhiệt độ đặt trước để điều khiển thiết bị gia nhiệt.
5.3. Giới thiêụ các thiết bị liên quan trong ứng dụng
5.3.2. Lò sấy
Lò sấy là mô ̣t trong những ứng dụng của lò nhiệt với cấu tạo gồm 3 phần
chính: vỏ lò, lớp lò, dây nung. Xem hình 5.3.
Trong ứng dụng này, ta sử dụng lò sấy có các thông số kỹ thuâ ̣t sau:
Ta sử dụng panel HMI KTP600 Basic color PN cho viê ̣c giám sát và điều
khiển nhiê ̣t đô ̣. Có các thông số kỹ thuâ ̣t cho trong bảng 5.2.
Bảng 5.2. Thông số kỹ thuâ ̣t panel HMI KTP600 Basic color PN
Basic HMI Panel Mô tả Số liệu kỹ thuật
Màn hình cảm ứng 6 inch 500 nhãn
với 6 phím tiếp xúc 50 màn hình xử lý
Kiểu màu (TFT, 256 màu) 200 cảnh báo
hay kiểu đơn sắc (STN, 25 biểu đồ
dải màu xám) 40 KB bộ nhớ
115.2 mm x 86.4 mm nhận
KTP 600 Basic PN (5.7") thẳng đứng hoặc 5 bộ nhận, 20
nằm ngang bảng ghi dữ liệu,
Độ phân giải: 320 x 240 20 mục nhập
Hình 5.2. Kết nối truyền thông PC, HMI và PLC S7-1200
220 VAC Cảm biến
- +
220 VAC
BEGIN
SETPOINT
SET PID
PID
CONTROL
SENSOR
TEMPERATURE
DIVICE
Hình 5.4. Lưu đồ giải thuật
5.5.2. Chương trình
Việc tạo dự án thì đã được đề cặp ở chương II nên ta sẽ đi vào các bước lặp
trình chính sau đây:
1. Bắt đầu biên tập các tag bằng cách double-click “PLC tags”
2. Tạo các tên tag
Lưu ý
Các tín hiệu analog đầu vào được chuyển đổi bởi module
tới một giá trị trong phạm vi từ 0 tới 32767 hoặc -32768 tới
+32767.
“Phạm vi định mức” cho tín hiệu là từ 0 tới +27648 hoặc
-27648 tới +27648.
Phạm vi vượt mức cho phép của module ở trong phạm vi
từ 27649 tới 32511.
Ở một giá trị ≥ 32512 hoặc ≤ -32513 nó sẽ báo hiệu một
tràn -> Gọi OB ngắt chuẩn đoán OB82.
Bước 6: Tải xuống toàn bộ dự án
1. Lưu dự án
2. Right-click vào bộ điều khiển trong cây dự án và tải dự án tới bộ điều
khiển sử dụng menu thuô ̣c tính
Hình 5.11. Cửa sổ cấu hình bộ điều khiển PID
1. Bắt đầu công cụ chạy thử nghiệm thông qua cây dự án, click vào
“commissioning”.
2. Bắt đầu dao động bằng cách chọn “Start Measurement”
3. Chọn tùy chọn “Tuning in run” và bắt điều chỉnh sử dụng nút “Start
tuning”
4. Sau khi điều chỉnh thành công, các tham số PID có thể được tải lên tới
dự án bằng cách click vào nút “Upload PID parameters to project”
Hình 5.13. Các tham số bộ điều khiển PID
Bước 8: Hiển thị giá trị thực “scaled_input” và giá trị đặt “setpoint” của
bộ điều khiển PID trên HMI
1. Hiển thị tất cả các tham số khối “PID_Compact” bằng cách mở rộng
hiển thị khối với dấu tam giác nhỏ bên dưới hộp lệnh.
2. Tham số hóa đầu vào “setpoint” với tag “setpoint” (MD 100)
3. Tham số hóa đầu ra “scaled_input” với tag “scaled_input” (MD 104)
4. Tải xuống các thay đổi này tới bộ điều khiển
Hình 5.15. Biểu đồ trên màn hình HMI
5. Chèn vào một đường công chuyển động trên màn hình
Hình 5.17. Thuộc tính trend trong “properties” cửa sổ kiểm tra
Hình 5.18. Hộp thoại các HMI tag và PLC tags
Từ đồ thị ta thấy
o Độ vọt lố:
POT = =6%
Kết luâ ̣n: bô ̣ điều khiển hoạt đô ̣ng tốt. Đô ̣ vọt lố và sai số thấp, đảm bảo các yêu
cầu thực tế.
PHỤ LỤC
LAD và FBD rất có hiệu quả để xử lý logic Boolean.Trong khi SCL thì đặt
biệt có hiệu quả trong tính toán toán học phức tạp và cấu trúc điều khiển dự án, ta
có thể sử dụng SCL cho logic Boolean.
A.1.1.1. Các tiếp điểm ladder (LAD)
Bảng A. 2. Các kiểu dữ liệu cho các tham số(tiếp điểm NO và NC)
Các tham số Kiểu dữ liệu Mô tả
IN Bool Gán bởi bit
Tiếp điểm thường mở sẽ đóng (ON) khi giá trị bit được gán là 1.
Tiếp điểm thường đóng sẽ đóng (ON) khi giá trị bit được gán là 0.
Các tiếp điểm được kết nối nối tiếp sẽ tạo nên mạch logic AND.
Các tiếp điểm được kết nối song song sẽ tạo nên mạch logic OR.
Trong lập trình FBD, tiếp điểm trong các mạng của LAD thì được biểu diễn
bằng các hộp mạng AND (&), OR (>=1) và XOR (x) nơi mà ta phải chỉ rõ giá trị bit
cho các cổng vào và ra của hộp. Ta cũng có thể kết nối tới các hộp logic khác và tạo
ra mạch logic kết nối của mình. Sau khi đặt hộp trong mạng, ta có thể kéo công cụ
“Insert binary input” từ thanh công cụ “Favorites” hoặc cây lệnh và sau đó thả
chúng lên cạnh cổng vào hộp để thêm nhiều cổng vào hơn. Chúng ta cũng có thể
right-click trên các kết nối cổng vào của hộp và chọn “Insert input”.
Các cổng vào và ra của hộp có thể được kết nối với một hộp logic khác, hoặc
ta có thể nhập vào một địa chỉ bit hoặc biểu tượng tên bit cho cổng vào đã ngắt kết
nối. Khi mà hộp lệnh được thực thi, trạng thái hiện tại của cổng vào được áp dụng
tới hộp logic nhị phân “and”, và nếu “true” thì cổng ra của hộp sẽ là “true”.
Bảng A. 3. Các hộp lệnh AND, OR và XOR
FBD SCL1 Mô tả
out := in1 AND Tất cả các ngõ vào của hộp AND phải là
in2; “TRUE” để ngõ ra là “TRUE”.
out := in1 XOR Một số lẻ các ngõ vào của hộp XOR
in2; phải là “TRUE” để ngõ ra là “TRUE”.
1
Đối với SCL: Ta phải gán kết quả hoạt động cho một biến được sử dụng cho
các lệnh khác.
Bảng A. 4. Các kiểu dữ liệu cho các tham sốhộp lệnh AND, OR và XOR
Tham số Kiểu dữ liệu Mô tả
IN1, IN2 Bool Input bit
Lệnh ngõ ra cuộn dây sẽ ghi một giá trị vào bit ngõ ra. Nếu như bit ngõ ra
được chỉ rõ nằm trong bộ nhớ danh định Q thì sau đó CPU sẽ biến bit ngõ ra trong
thanh ghi bộ đệm về on hoặc off, thiết lặp bit được gán thành trạng thái dòng tín
hiệu. Các ngõ ra tín hiệu cho việc điều khiển cơ cấu tác động được kết nối đến các
đầu cực ngõ ra trên PLC. Trong chế độ RUN, hệ thống CPU sẽ quét các tín hiệu
cổng vào, sau đó xử lý trạng thái cổng vào theo chương trình logic của bạn và cho
ra đáp ứng bằng giá trị mới của trạng thái cổng ra chứa trong thanh ghi bộ đệm cổng
ra. Sau mỗi chu kỳ chương trình được thực thi, CPU chuyển đáp ứng mới của trạng
thái cổng ra trong thanh ghi bộ đệm đến các đầu cực cổng ra.
Bảng A. 6. Ngõ ra cuộn dây (LAD) và ngõ ra hộp lệnh gán (FBD)
LAD FBD SCL Mô tả
out := <Boolean Trong lập trình FBD, các cuộn
expression>; dây LAD thì được chuyển vào
trong hộp lệnh gán (= and /=)
out := NOT nơi mà ta chỉ rõ một địa chỉ bit
<Boolean cho cổng ra hộp. Các cổng vào
expression>; và cổng ra hộp có thể được kết
nối tới các hộp logic khác hoặc
ta có thể nhập vào một địa chỉ
bit.
Ta có thể ghi tức thời một ngõ
ra vật lý bằng cách sử dụng
“:P” theo sau tag cổng ra (ví
dụ: “Motor_On:P” hoặc
“%Q3.4:P”). Đối với việc ghi
tức thời, các giá trị dữ liệu bit
được ghi tới bộ đệm cổng ra và
ghi trực tiếp tới cổng ra vật lý.
Bảng A. 7. Các kiểu dữ liệu cho các tham số (ngõ ra cuộn dây)
Tham số Kiểu dữ liệu Mô tả
OUT Bool Được gán bit
Nếu như có dòng công suất qua ngõ ra dạng cuộn dây hoặc một hộp
“=” FBD được kích hoạt thì Output sẽ có giá trị là 1.
Nếu như không có dòng công suất qua cuộn dây hoặc hộp lệnh gán
“=” FBD không được kích thì Output sẽ có giá trị là 0.
Nếu như có dòng công suất qua ngõ ra đảo dạng cuộn dây một hộp
“=” FBD thì Output sẽ có giá trị là 1.
Nếu như có dòng công suất qua ngõ ra đảo dạng cuộn dây một hộp
“=” FBD thì Output sẽ có giá trị là 0.
Bảng A. 11. Các kiểu dữ liệu cho các tham sốlệnh SET_BF và RESET_BF
Tham số Kiểu dữ liệu Mô tả
OUT Bool Phần tử bất đầu của một bit trường để được set hoặc
reset (Ví dụ: #MyArray[3])
n Hằng số (Uint) Số bit để viết
Không có sẳn SR là một chốt ưu tiên set nơi set ưu tiên. Nếu
các tín hiệu set (S) và reset (R1) đều “true” thì
địa chỉ cổng ra OUT sẽ là 0.
1
Đối với LAD và FBD: Các lệnh này phải được đặt ở ngoài cùng bên phải
lệnh trong một nhánh.
2
Đối SCL: Ta phải viết code để tái tạo chức năng này trong ứng dụng của
mình.
Tham số OUT xác định bit địa chỉ mà sẽ set hoặc reset. Tùy chọn OUT cổng
ra Q phản ánh trạng thái tính hiệu của địa chỉ “OUT”.
Bảng A. 16. Các kiểu dữ liệu cho các tham số (các tiếp điểm/cuộn dây P và N, P=,
N=, P_TRIG, N_TRIG)
Tham số Kiểu dữ liệu Mô tả
M_BIT Bool Bit nhớ trong trạng thái trước đó của input được lưu
IN Bool Bit input nơi mà sự chuyển đổi cạnh được phát hiện
OUT Bool Bit output nơi mà nó báo hiệu một sự chuyển đổi cạnh
được phát hiện
CLK Bool Dòng điện hoặc bit input nơi mà sự chuyển đồi cạnh
được phát hiện
Q Bool Output chỉ báo một cạnh đã được phát hiện
Tất cả các lệnh sử dụng một bit nhớ (M_BIT) nhằm lưu trạng thái trước đó
của tín hiệu input được giám sát. Một cạnh được phát hiện bằng việc so sánh trạng
thái của input với trạng thái của bit nhớ. Nếu một sự báo hiệu thay đổi trạng thái của
input trong theo hướng quan tâm thì sau đó một cạnh được báo cáo bằng cách viết
cổng ra TRUE. Nếu không, cổng ra được viết FALSE.
Lưu ý
Các lệnh cạnh sẽ đánh giá cổng vào và các giá trị bit nhớ mỗi thời gian
chúng được thực thi, bao gồm cả lần đầu thực thi. Ta phải tính đến trạng thái ban
đầu của bit nhớ và cổng vào trong thiêt kế chương trình của mình hoặc cho phép
hoặc để tránh bị phát hiện cạnh trên lần quét đầu tiên.
Vì bit nhớ phải được duy trì từ một trong những lần thực thi, ta nên sử dụng
một bit duy nhất cho mỗi lệnh cạnh và không nên sử dụng bit này ở bất cứ nơi nào
khác trong chương trình của mình. Ta cũng nên tránh sử dụng bộ nhớ và bộ nhớ tạm
thời, điều này có thể bị ảnh hưởng bởi các chức năng khác của hệ thống, như việc
cập nhật một I/O. Chỉ sử dụng bộ nhớ M, global DB hoặc bộ nhớ tĩnh (trong một
DB mẫu) cho các lệnh gán bộ nhớ M_BIT.
Ta sử dụng các lệnh bộ định thì để tạo ra thời gian trễ được lập trình. Số bộ
định thì mà ta có thể sử dụng trong chương trình của mình chỉ bị giới hạn bởi dung
lượng bộ nhớ trong CPU. Mỗi bộ định thì sử dụng 16 byte cấu trúc IEC_Timer data
type DB tới lưu trữ dữ liệu bộ định thì mà được xác định ở đầu của hộp lệnh hoặc
cuộn dây. STEP 7 tự động tạo một DB khi ta chèn lệnh.
Bảng A. 18. Các kiểu dữ liệu cho các tham sốlệnh bộ định thì
Tham số Kiểu dữ liệu Mô tả
Box: IN Bool TP, TON và TONR:
Coil: Power flow Box: 0 = Ngưng Timer,
1 = Kích hoạt Timer
Coil: Không có dòng = Ngưng Timer,
Có dòng = Kích hoạt Timer
TOF:
Box: 0 = Kích hoạt Timer,
1 = Ngưng Timer
Coil: Có dòng = Kích hoạt Timer,
Không có dòng = Ngưng Timer
R Bool Chỉ có box TONR:
0 = Không reset
1 = Reset thời gian đã trôi qua và bit Q sẽ
về 0
Box: PT Time Box hoặc coil định thì: Đầu vào có thời
Coil: "PRESET_Tag" gian đặt trước
Box: Q Bool Box định thì: Ngõ ra box Q hoặc bit Q
Coil: DBdata.Q trong timer DB data
Coil định thì: ta chỉ có thể định địa chỉ bit
Q trong timer DB data
Box: ET Time Box định thì: ET (thời gian trôi qua) ngõ
Coil: DBdata.ET vào box hoặc ET giá trị thời gian trong
timer DB data
Coil định thì: ta chỉ có thể định địa chỉ ET
giá trị thời gian trong timer DB data
Bảng A. 19. Ảnh hưởng của việc thay đổi giá trị các tham số PT và IN
Timer Thay đổi trong các tham số box PT và IN và tương ứng với các tham
số coil
TP Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành.
Thay đổi IN không có ảnh hưởng trong khi bộ định thì vận hành.
TON Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành.
Thay đổi IN sang “FALSE”, trong khi bộ định thì vận hành, sẽ đặt lại và
dừng bộ định thì.
TOF Thay đổi PT không có ảnh hưởng trong khi bộ định thì vận hành.
Thay đổi IN sang “TRUE”, trong khi bộ định thì vận hành, sẽ đặt lại và
dừng bộ định thì.
TONR 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 bộ
định thì nhưng reset bộ định thì. Thay đổi IN trở về “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”.
Bảng A. 20. Kích thước và phạm vi của kiểu dữ liệu TIME
Kiểu dữ Kích thước Phạm vi số hợp lệ
liệu
TIME 32 bit, được Từ T#-24d_20h_31m_23s_648ms tới
lưu trữ như T#24d_20h_31m_23s_647ms
dữ liệu Dlnt Được lưu trữ như -2,147,483,648 ms tới
+2,147,483,647 ms
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.
Các bộ định thì cuộn dây -(TP)-, -(TON)-, -(TOF)-, and -(TONR)- phải là
lệnh cuối cùng trong một mạng LAD. Được thể hiện như trong ví dụ bộ định thì,
một lệnh tiếp điểm trong một mạng tiếp theo đánh giá bit Q trong một cuộn dây bộ
định thì IEC_Timer data. Hơn nữa, ta phải định địa chỉ phần tử ELAPSED trong
IEC_Timer DB data nếu ta muốn sử dụng giá trị thời gian trôi qua trong chương
trình của mình.
Xung thời gian được bất đầu ON một chuyển đổi từ 0 tới 1 của giá trị bit
Tag_Input. Bộ định thì chạy cho thời gian xác định bởi giá trị thời gian Tag_Time.
Các lệnh cuộn dây này có thể được sử dụng với hộp định thì hoặc cuộn dây
định thì và có thể được đặt ở giữa dòng.Trạng thái dòng cổng ra cuộn dây thì luôn
luôn giống với trạng thái cổng vào cuộn dây. Khi cuộn -(RT)- được tác động, phần
tử thời gian ELAPSED của IEC_Timer DB data xác định được đặt lại 0. Khi cuộn -
(PT)- được tác động, phần tử thời gian PRESET của IEC_Timer DB data xác định
được đặt lại 0.
Lưu ý
Khi ta đặt các lệnh bộ định thì trong một FB, ta có thể chọn tùy chọn “Multi-
instance data block”.Cấu trúc tên bộ định thì có thể khác nhau với các cấu trúc dữ
liệu riêng biệt, nhưng dữ liệu bộ định thì thì được chứa trong một khối dữ liệu đơn
và không yêu cầu 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à dữ liệu lưu trữ cần thiết cho thao tác các bộ định thì.Không
có sự tương tác giữa các cấu trúc dữ liệu bộ định thì trong multi-instance DB được
chia sẻ.
Lưu ý
Trong CPU, không có tài nguyên chuyên dụng được phân bổ cho bất kỳ lệnh
bộ định thì cụ thể. Thay vào đó, mỗi bộ định thì sử dụng cấu trúc bộ định thì riêng
trong bộ nhớ DB và một bộ định thì bên trong CPU chạy liên tục để thực hiện thời
gian.
Khi một bộ định thì được bất đầu do một thay đổi cạnh trên cổng vào của
một lệnh TP, TON, TOF hoặc TONR, giá trị của chạy liên tục bộ định thì bên trong
CPU sẽ được sao chép vào phần tử START của cấu trúc DB được phân bổ lệnh bộ
định thì này. Giá trị bất đầu này vẫn không thay đổi trong khi bộ định thì tiếp tục
chạy và được sử dụng sau này mỗi khi bộ định thì được cập nhật.Mỗi khi bộ định
thì được bắt đầu, một giá trị bắt đầu mới được nạp vào trong cấu trúc bộ định thì từ
bộ định thì bên trong CPU.
Khi một bộ định thì được cập nhật, giá trị bắt đầu được mô tả ở trên được
loại trừ từ giá trị hiện hành của bộ định thì bên trong CPU để tìm thời gian trôi qua.
Thời gian trôi qua thì sau khi được so sánh với trị đặt trước để tìm trạng thái của bit
Q bộ định thì. Các phần tử ELAPSED và Q thì sau khi được cập nhật trong cấu trúc
DB được phân bổ cho bộ định thì này. Lưu ý thời gian trôi qua được kẹp ở giá trị
đặt trước (bộ định thì sẽ không tiếp tục tích trữ thời gian trôi qua sau khi trị đặt
trước được đạt tới).
Một sự cập nhật bộ định thì được thực hiện khi và chỉ khi:
Một lệnh định thì (TP, TON, TOF hoặc TONR) được thực thi
Thành phần “ELAPSED” của cấu trúc bộ định thì trong DB được
tham chiếu trực tiếp bởi một lệnh
Thành phần “Q” của cấu trúc bộ định thì trong DB được tham chiếu
trực tiếp bởi một lệnh
Bảng A. 23. Các kiểu dữ liệu cho các tham sốlệnh bộ đếm
Tham số Kiểu dữ liệu Miêu tả
CU, CD Bool Đếm lên hay đếm xuống,
bởi một lần đếm
R (CTU, CTUD) Bool Đặt lại giá trị đếm về 0
LOAD (CTD, Bool Nạp điều khiển cho giá
CTUD) trị đặt trước
PV SInt, Int, DInt, USInt, UInt, Giá trị đếm đặt trước
UDInt
Q, QU Bool Đúng nếu CV >= PV
QD Bool Đúng nếu CV <= 0
CV SInt, Int, DInt, USInt, UInt, Giá trị đếm hiện thời
UDInt
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.
Bảng A. 25. Các kiểu dữ liệu cho các tham sốlệnh so sánh
Tham số Kiểu dữ liệu Miêu tả
IN1, IN2 SInt, Int, DInt, USInt, UInt, UDInt, Real, Các giá trị để so sánh
LReal, String, Char, Time, DTL, Constant
1
Đối với LAD và FBD: Click vào “???” và chọn kiểu dữ liệu từ danh sách thả.
Bảng A. 28. Các kiểu dữ liệu cho các tham sốlệnh In-rang và Out-rang
Tham số Kiểu dữ liệu Mô tả
MIN, VAL, MAX SInt, Int, DInt, USInt, UInt, UDInt, Các cổng vào so sánh
Real, LReal, Constant
Các tham số cổng vào MIN, VAL và MAX phải cùng một kiểu dữ liệu.
Sự so sánh IN_RANG là true nếu: MIN <= VAL <=MAX
Sự so sánh OUT_RANG là true nếu: VAL < MIN hoặc VAL > MAX
Bảng A. 30. Các kiểu dữ liệu cho các tham sốlệnh OK và Not OK
Tham số Kiểu dữ liệu Mô tả
IN Real, LReal Dữ liệu cổng vào
Bảng A. 33. Các kiểu dữ liệu cho các tham sốlệnh CALCULATE
Tham số Kiểu dữ liệu
IN1, IN2, …INn SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word,
DWord
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word,
DWord
Các tham số IN và OUT phải cùng một kiểu dữ liệu (với các chuyển đổi
ngầm các tham số cổng vào). Ví dụ: giá trị A SINT cho một cổng vào sẽ được
chuyển đổi sang giá trị INT hoặc REAL nếu giá trị OUT là INT hoặc REAL
Click vào biểu tượng calculator để mở hộp thoại và định nghĩa hàm toán học.
Ta nhập vào phương trình các cổng vào (như là IN1 và IN2) và cho hoạt động. Khi
ta click vào “OK” để lưu hàm, hộp thoại sẽ tự động xây dựng các cổng vào cho lệnh
CALCULATE.
Một ví dụ và một danh sách các phép toán có thể thực hiện thì được trình bày
bên dưới khung biên tập.
Lưu ý
Ta cũng có thể xây dựng một cổng vào input cho bất kỳ hằng số nào trên
hàm. Giá trị hằng số sau đó sẽ được nhập vào trong cổng vào được liên kết cho lệnh
CALCULATE.
Bằng việc nhập các hằng số vào các cổng vào, ta có thể sao chép lệnh
CACULATE đến các vị trí khác trong chương trình mà không phải thay đổi hàm.
Sau đó ta có thể thay đổi các giá trị hoặc các tag của các cổng vào cho lệnh mà
không phải sửa đổi hàm.
Khi CALCULATE được thực thi và tất cả sự hoạt động riêng rẽ trong sự tính
toán được hoàn thành, thì sau đó ENO = 1. Nếu không ENO = 0.
Bảng A. 35. Các kiểu dữ liệu cho các tham số lệnh cộng, trừ, nhân và chia (LAD và
FBD)
Tham số Kiểu dữ liệu 1 Mô tả
IN1, IN2 SInt, Int, DInt, USInt, UInt, UDInt, Các đầu vào phép toán
Real, LReal, Constant
OUT SInt, Int, DInt, USInt, UInt, UDInt, Đầu ra phép toán
Real, LReal
1
Các tham số IN1, IN2 và OUT phải cùng một kiểu dữ liệu.
Để thêm một cổng vào ADD hoặc MUL, click vào biểu tượng
“Creat” hoặc right-click trên chân một cổng vào cho một tham
số IN đang tồn tại và chọn lệnh “Insert input”.
Để loại bỏ một cổng vào, right-click trên chân một cổng vào cho một trong
các tham số IN đang tồn tại (khi ban đầu có nhiều hơn hai cổng vào) và chọn lệnh
“Delete”.
Khi được kích hoạt (EN = 1), lệnh toán số học thực hiện phép tính được xác
định trên các giá trị cổng vào (IN1 và IN2) và lưu kết quả trong địa chỉ bộ nhớ được
xác định bởi tham số cổng ra (OUT). Sau khi phép tính hoàn thành thành công, lệnh
sẽ set ENO = 1.
Bảng A. 36. Các trạng thái ENOlệnh cộng, trừ, nhân và chia
ENO Mô tả
1 Không có lỗi
0 Kết quả giá trị của quá trình tính toán sẽ nằm bên ngoài phạm vi số hợp
lệ của kiểu dữ liệu được chọn. Phần kết quả quan trọng nhất phù hợp với
kích cỡ đích được trả về.
0 Sự chia cho 0 (IN2 = 0): kết quả là không xác định và số 0 được trả về.
0 Real/LReal: nếu một trong các giá trị cổng vào là NaN (không là một số)
thì NaN được trả về.
0 ADD Real/LReal: nếu cả hai giá trị IN là INF khác dấu thì đây là một
phép tính sai và NaN được trả về.
0 SUB Real/LReal: nếu cả hai giá trị IN là INF cùng dấu thì đây là một
phép tính sai và NaN được trả về.
0 MUL Real/LReal: nếu một giá trị IN là 0 và giá trị khác là INF thì đây là
một phép tính sai và NaN được trả về.
0 DIV Real/LReal: nếu cả hai giá trị IN là 0 hoặc INF thì đây là một phép
tính sai và NaN được trả về.
1
Đối với LAD và FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh
sách thả.
Bảng A. 38. Các kiểu dữ liệu cho các tham sốlệnh MOD
Tham số Kiểu dữ liệu Mô tả
IN1 and SInt, Int, DInt, USInt, UInt, UDInt, Các cổng vào
IN2 Constant Modulo
OUT SInt, Int, DInt, USInt, UInt, UDInt Cổng ra Modulo
1
Đối với LAD và FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh
sách thả.
Bảng A. 41. Các kiểu dữ liệu cho các tham sốlệnh NEG
Tham số Kiểu dữ liệu Mô tả
IN SInt, Int, DInt, Real, LReal, Constant Cổng vào phép toán
OUT SInt, Int, DInt, Real, LReal Cổng ra phép toán
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Bảng A. 44. Các kiểu dữ liệu cho các tham sốlệnh INC và DEC
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Bảng A. 47. Các kiểu dữ liệu cho các tham sốlệnh ABS
Tham số Kiểu dữ liệu Mô tả
IN SInt, Int, DInt, Real, LReal, Constant Cổng vào phép toán
OUT SInt, Int, DInt, Real, LReal Cổng ra phép toán
Bảng A. 50. Các kiểu dữ liệu cho các tham sốlệnh MIN và MAX
Tham số Kiểu dữ liệu 1 Mô tả
IN1, IN2 SInt, Int, DInt, USInt, UInt, UDInt, Các ngõ vào phép toán (lên
[...IN32] Real, LReal, Constant tới 32 ngõ ra)
OUT SInt, Int, DInt, USInt, UInt, UDInt, Ngõ ra phép toán
Real, LReal
1
Các tham số IN1, IN2 và OUT phải cùng một kiểu dữ liệu.
Để thêm một cổng vào, click vào biểu tượng “Creat” hoặc right-click
trên chân một cổng vào cho một tham số IN đang tồn tại và chọn lệnh
“Insert input”.
Để loại bỏ một cổng vào, right-click trên chân một cổng vào cho một trong
các tham số IN đang tồn tại (khi có nhiều hơn hai cổng vào ban đầu) và chọn lệnh
“Delete”.
Bảng A. 53. Các kiểu dữ liệu cho các tham sốlệnh LIMIT
Tham số Kiểu dữ liệu 1 Mô tả
MN, IN, SInt, Int, DInt, USInt, UInt, UDInt, Các ngõ vào phép toán
and MX Real, LReal, Constant
OUT SInt, Int, DInt, USInt, UInt, UDInt, Ngõ ra phép toán
Real, LReal
1
Các tham số MIN, IN, MX và OUT phải cùng một kiểu dữ liệu.
Nếu giá trị của tham số IN trong phạm vi chỉ định thì giá trị của IN được lưu
trong tham số OUT. Nếu giá trị của tham số IN ở bên ngoài của phạm vi chỉ định thì
giá trị OUT sẽ là giá trị của tham số MIN (nếu giá trị IN nhỏ hơn giá trị MIN) hoặc
là giá trị của tham số MAX (nếu giá trị IN lớn hơn giá trị MAX).
SCL ví dụ:
MyVal := LIMIT(MN:=10,IN:=53, MX:=40); //Result: MyVal = 40
MyVal := LIMIT(MN:=10,IN:=37, MX:=40); //Result: MyVal = 37
MyVal := LIMIT(MN:=10,IN:=8, MX:=40); //Result: MyVal = 10
Ta sử dụng các lệnh dấu phẩy động để lập trình các phép toán số học sử dụng
kiểu dữ liệu Real hay LReal:
SQR: bình phương (IN2 = OUT)
SQRT: căn bậc hai ( = OUT)
LN: logarite tự nhiên (LN(IN) = OUT)
EXP: lũy thừa tự nhiên (eIN = OUT) với cơ số e =
2,71828182845904523536
EXPT: lũy thừa tổng quát (IN1IN2 = OUT)
EXPT các tham số IN1 và OUT luôn luôn cùng một kiểu dữ liệu, cho nên ta
phải chọn Real hoặc LReal.Tuy nhiên, ta có thể chọn kiểu dữ liệu cho tham số mũ
IN2 từ một trong số nhiều kiểu dữ liệu.
FRAC: phân số (phần phân số của số có dấu phẩy động IN = OUT)
TAN: hàm tan (tan(IN radian) = OUT)
SIN: hàm sin (sin(IN radian) = OUT)
ASIN: sin ngược (arcsin(IN) = OUT)
COS: hàm cos (cos(IN radian) = OUT)
ACOS: cos ngược (arccos(IN) = OUT)
ATAN: tan ngược (arctan(IN) = OUT)
Bảng A. 55. Ví dụ về các lệnh toán học dấu phẩy động
LAD/FBD SCL Mô tả
out := SQR(in); Bình phương: IN2 = OUT
or Ví dụ: Nếu IN = 9 thì OUT = 81.
out := in * in;
1
Đối với LAD và FBD: Click vào “???” (bởi tên lệnh) và chọn một kiểu dữ
liệu từ danh sách thả.
2
Đối với SCL: ta cũng có thể sử dụng các phép toán số học SCL cơ bản để tạo
ra các biểu thức toán học.
Bảng A. 56. Các kiểu dữ liệu cho các tham sốcác lệnh toán học dấu phẩy động
Tham Kiểu dữ liệu Mô tả
số
IN, IN1 Real, LReal, Constant Các ngõ vào
IN2 SInt, Int, DInt, USInt, UInt,UDInt, Real, Ngõ vào số mũ EXPT
LReal, Constant
OUT Real, LReal Các ngõ ra
Bảng A. 57. Các trạng thái ENOcác lệnh toán học dấu phẩy động
ENO Lệnh Điều kiện Kết quả (OUT)
1 Tất cả Không có lỗi Kết quả hợp lệ
0 SQR Kết quả vượt quá phạm vi Real/LReal hợp lệ +INF
IN là +/– NaN (không phải số) + NaN
SQRT IN âm – NaN
IN là +/– INF hay +/– NaN +/– INF hay +/–
NaN
LN IN bằng 0, số âm, – INF hay – NaN – NaN
IN là + INF hay + NaN + INF hay +
NaN
EXP Kết quả vượt quá phạm vi Real/LReal hợp lệ + INF
IN là +/– NaN +/– NaN
SIN, IN là +/– INF hay +/– NaN +/– INF hay +/–
COS, NaN
TAN
ASIN, IN nằm ngoài phạm vi hợp lệ từ – 1 đến + 1 + NaN
ACOS IN là +/– NaN +/– NaN
Các lệnh di chuyển sẽ sao chép các phần tử dữ liệu tới một địa chỉ bộ nhớ
mới và có thể chuyển đổi từ một kiểu dữ liệu tới kiểu dữ liệu khác.Dữ liệu nguồn sẽ
không thay đổi bởi xử lý di chuyển.
MOVE sao chép một phần tử dữ liệu đã lưu trữ từ một địa chỉ xác
định tới một địa chỉ mới. Để thêm các cổng ra khác, click vào biểu
tượng bên cạnh tham số OUT1.
MOVE_BLK (di chuyển có ngắt) và UMOVE_BLK (di chuyển
không ngắt) sẽ sao chép một khối của các phần tử dữ liệu tới một địa
chỉ mới. Các lệnh MOVE_BLK và UMOVE_BLK đều có thêm bộ
đếm tham số. Bộ đếm này sẽ chỉ rõ có bao nhiêu phần tử dữ liệu được
sao chép. Số byte trên phần tử được sao chép phụ thuộc vào loại dữ
liệu được gán tới tham số tên tag IN và OUT trong bảng PLC tag.
Lệnh MOVE: Để thêm cổng ra khác trong LAD hoặc FBD, click vào biểu
tượng cạnh tham số output. Còn đối với SCL, thì ta sử dụng nhiều lệnh gán.Ngoài
ra, ta cũng có thể sử dụng một trong các cấu trúc vòng lập.
Để thêm các cổng ra MOVE, click vào biểu tượng “Create” hoặc
right-click trên chân một cổng ra co một trong những tham số cổng
ra đang tồn tại và chọn lệnh “Insert output”.
Để loại bỏ một cổng ra, right-click trên chân một cổng ra cho một trong
những tham số cổng ra đang tồn tại (Khi ở đó có nhiều hơn hai cổng ra ban đầu) và
chọn lệnh “Delete”.
Bảng A. 60. Các kiểu dữ liệu cho các lệnh MOVE_BLK và UMOVE_BLK
Tham số Kiểu dữ liệu Mô tả
IN SInt, Int, DInt, USInt, UInt, UDInt, Real, Địa chỉ bắt đầu nguồn
LReal Byte, Word, DWord
COUNT UInt Số lượng phần tử dữ
liệu để sao chép
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, Địa chỉ bắt đầu đích
LReal, Byte, 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 đượ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.
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 sự thực thi UMOVE_BLK hoàn tất. Sử dụng lệnh UMOVE_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.
STEP 7 V10.5 không hỗ trợ một biến tham chiếu như mảng chỉ mục (array
index) hoặc các mảng đa chiều (multi-dimensional arrays). Các lệnh FieldRead và
FieldWrite được sử dụng để cung cấp các thao tác với biến mảng chỉ mục cho mảng
một chiều. STEP 7 V11 không hỗ trợ một biến như một mảng chỉ mục và các mảng
đa chiều. FieldRead và FieldWrite được chứa trong STEP 7 V11 để tương thích với
các chương trình sử dụng các lệnh này.
Bảng A. 63. Các tham số của các phần tửlệnh FieldRead và FieldWrite
Tham số và kiểu Kiểu dữ liệu Mô tả
Index Input DInt Số chỉ mục của phần tử mảng được
đọc hoặc viết cho
Member Input Các kiểu phần tử Vị trí của phần tử đầu tiên trong một
mảng: kích thước mảng được định nghĩa
Bool, Byte, Word, trong một khối data block tổng quát
DWord, Char, SInt, hoặc khối giao diện.
Int, Dint, USInt, Ví dụ: nếu mảng chỉ số được xác
UInt, UDInt, Real, định cụ thể như [-2..4] thì sau đó chỉ
LReal số của phần tử đầu tiên là -2 và
không phải 0.
Value Out Bool, Byte, Word, Vị trí mà phần tử mảng xác định
DWord, Char, SInt, được sao chép (FieldRead).
Int, Dint, USInt, Vị trí của giá trị được sao chép vào
UInt, UDInt, Real, các phần tử mảng xác định
LReal (FieldWrite)
Kiểu dữ liệu của phần tử mảng được xác định bởi tham số MEMBER và
tham số VALUE phải có cùng kiểu dữ liệu.
Việc cho phép ngõ ra ENO = 0, nếu một trong các điều kiện sau đây được áp
dụng:
Ngõ vào EN có trạng thái tín hiệu là “0”
Phần tử mảng được xác định tại tham số INDEX thì không được định
nghĩa trong mảng được tham chiếu ở tham số MEMBER.
Các lỗi như là xảy ra một tràn trong quá trình xử lý.
Để truy cập các phần tử của một mảng với một biến, chỉ cần sử dụng biến
như là một mảng chỉ mục trong chương trình logic của mình. Ví dụ, mạng dưới đây
thiết lập một ngõ ra dựa trên giá trị Boolean của một mảng các Boolean trong
“Data_block_1” được tham chiếu bởi PLC tag “Index”.
Logic với biến mảng chỉ mục là tương đương với phương pháp sử dụng lệnh
FieldRead phía trước:
Các lệnh FieldRead và FieldWrite có thể được thay thế với biến mảng lập chỉ
số logic.
SCL không có các lệnh FieldRead và FieldWrite, nhưng hỗ trợ định địa chỉ
gián tiếp của một mảng với một biến:
#Tag_1 := "Data_block_1".Bool_Array[#Index];
Bảng A. 65. Các kiểu dữ liệu cho các tham sốlệnh FILL_BLK và UFILL_BLK
Tham số Kiểu dữ liệu Mô tả
IN SInt, Int, DIntT, USInt, UInt, UDInt, Địa chỉ nguồn dữ liệu
Real, LReal, Byte, Word, DWord
COUNT USInt, UInt Số lượng các phần tử
dữ liệu để sao chép
OUT SInt, Int, DIntT, USInt, UInt, UDInt, Địa chỉ đích dữ liệu
Real, LReal, Byte, Word, DWord
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.
Bảng A. 68. Các kiểu dữ liệu cho các tham sốlệnh SWAP
Tham số Kiểu dữ liệu Mô tả
IN Word, DWord Các byte dữ liệu được sắp xếp IN
OUT Word, DWord Đảo ngược các byte dữ liệu được sắp xếp OUT
Lệnh không cho phép ta chọn chuỗi Bit (Byte, Word, DWord). Để nhập một
toán hạng của kiểu dữ liệu Byte, Word, DWord cho một tham số của lệnh, chọn một
số nguyên không dấu với cùng một độ dài bit. Ví dụ, chọn USInt cho một Byte,
UInt cho một Word hoặc UDInt cho một DWord.
Sau khi ta chọn kiểu dữ liệu (convert from), một danh sách có thể chuyển đổi
được hiển thị trong danh sách thả (convert to). Việc chuyển đổi từ and tới BCD16 bị
hạn chế trong kiểu dữ liệu Int. Và chuyển đổi từ and tới BCD32 bị hạn chế trong
kiểu dữ liệu Dint.
Bảng A. 73. Sự chuyển đổi từ một số nguyên ngắn (SInt hoặc USInt)
Kiểu Lệnh Kết quả
dữ
liệu
SInt SINT_TO_BOOL Bit thấp nhất được
chuyển vào trong kiểu
dữ liệu đích.
SINT_TO_BYTE Giá trị này được
chuyển tới kiểu dữ liệu
đích.
SINT_TO_WORD, SINT_TO_DWORD, Giá trị này được
SINT_TO_INT, SINT_TO_DINT chuyển tới byte thấp
của kiểu dữ liệu đích.
SINT_TO_USINT, SINT_TO_UINT, Giá trị được chuyển
SINT_TO_UDINT, SINT_TO_REAL, đổi.
SINT_TO_LREAL, SINT_TO_CHAR,
SINT_TO_STRING
USInt USINT_TO_BOOL Bit thấp nhất được
chuyển vào trong kiểu
dữ liệu đích.
USINT_TO_BYTE Giá trị này được
chuyển tới kiểu dữ liệu
đích.
USINT_TO_WORD, USINT_TO_DWORD, Giá trị này được
USINT_TO_INT, USINT_TO_UINT, chuyển tới byte thấp
USINT_TO_DINT, USINT_TO_UDINT của kiểu dữ liệu đích.
USINT_TO_SINT, USINT_TO_REAL, Giá trị được chuyển
USINT_TO_LREAL, USINT_TO_CHAR, đổi.
USINT_TO_STRING
Bảng A. 75. Sự chuyển đổi từ một cặp số nguyên (DInt hoặc UDInt)
Kiểu Lệnh Kết quả
dữ
liệu
Dint DINT_TO_BOOL Bit thấp nhất được
chuyển vào trong kiểu
dữ liệu đích.
DINT_TO_BYTE, DINT_TO_WORD, Giá trị được chuyển đổi.
DINT_TO_SINT, DINT_TO_USINT,
DINT_TO_INT, DINT_TO_UINT,
DINT_TO_UDINT, DINT_TO_REAL,
DINT_TO_LREAL, DINT_TO_CHAR,
DINT_TO_STRING
DINT_TO_DWORD, DINT_TO_TIME Giá trị này được chuyển
tới kiểu dữ liệu đích.
UDInt UDINT_TO_BOOL Bit thấp nhất được
chuyển vào trong kiểu
dữ liệu đích.
UDINT_TO_BYTE, UDINT_TO_WORD, Giá trị được chuyển đổi.
UDINT_TO_SINT, UDINT_TO_USINT,
UDINT_TO_INT, UDINT_TO_UINT,
UDINT_TO_DINT, UDINT_TO_REAL,
UDINT_TO_LREAL, UDINT_TO_CHAR,
UDINT_TO_STRING
UDINT_TO_DWORD, UDINT_TO_TOD Giá trị này được chuyển
tới kiểu dữ liệu đích.
1
Đối với LAD và FBD: Click vào “???” (bởi tên lệnh) và chọn một kiểu dữ
liệu từ danh sách thả.
Bảng A. 80. Các kiểu dữ liệu cho các tham sốlệnh ROUND và TRUNC
Tham số Kiểu dữ liệu Mô tả
IN Real, LReal Ngõ vào dấu phẩy động
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, Ngõ ra được làm tròn
LReal hoặc được cắt xén.
1
Đối với LAD và FBD: Click vào “???” (bởi tên lệnh) và chọn một kiểu dữ
liệu từ danh sách thả.
Bảng A. 83. Các kiểu dữ liệu cho các tham số lê ̣nh CEIL và FLOOR
Tham số Kiểu dữ liệu Mô tả
IN Real, LReal Ngõ vào dấu phẩy động
OUT SInt, Int, DInt, USInt, UInt, UDInt, Ngõ ra được chuyển đổi.
Real, LReal
Bảng A. 84. Các trạng thái ENOlê ̣nh CEIL và FLOOR
ENO Mô tả Kết quả OUT
1 Không có lỗi Kết quả hợp lệ
0 IN là +/- INF hoặc là +/- NaN +/- INF hoặc +/- NaN
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Bảng A. 86. Các kiểu dữ liệu cho các tham sốlệnh SCALE_X và NORM_X
Tham số Kiểu dữ liệu Mô tả
MIN SInt, Int, DInt, USInt, UInt, UDInt, Real, Giá trị cực tiểu ngõ vào
LReal của phạm vi
VALUE SCALE_X: Real, LReal Giá trị ngõ vào để định
NORM_X: SInt, Int, DInt, USInt, UInt, tỷ lệ hay chuẩn hóa
UDInt, Real, LReal
MAX SInt, Int, DInt, USInt, UInt, UDInt, Real, Giá trị cực đại ngõ vào
LReal của phạm vi
OUT SCALE_X: SInt, Int, DInt, USInt, UInt, Giá trị ngõ ra đã được
UDInt, Real, LReal định tỷ lệ hay được
NORM_X: Real, LReal chuẩn hóa
1
Đối với SCALE_X: Các tham số MIN, MAX và OUT phải cùng một kiểu dữ
liệu.
Đối với NORM_X: Các tham số MIN, VALUE và MAX phải cùng một kiểu
dữ liệu.
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 = FALSE.
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 tham 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.
Bảng A. 89. Các kiểu dữ liệu cho các tham sốlệnh JMP, JMPN và LABEL
Tham số Kiểu dữ liệu Mô tả
Label_name Bộ định danh nhãn Bộ định danh cho các lệnh nhảy và nhãn lập
trình nơi đến của lệnh nhảy tương ứng
Bảng A. 91. Các kiểu dữ liệu cho các tham sốlệnh JMP_LIST
Tham số Kiểu dữ liệu Mô tả
K UInt Bộ phân phối nhảy điều khiển giá
trị.
DEST0, DEST1, .., Các nhãn chương trình Nhảy các nhãn đích tương ứng tới
DESTn. các giá trị tham số K xác định:
nếu giá trị của K bằng 0 thì sau đó
một nhảy xảy ra tới các nhãn
chương trình được gán tới ngõ ra
DEST0. Nếu giá trị K bằng 1, thì
sau đó một nhảy xảy ra tới chương
trình nhãn được gán tới ngõ ra
DEST1 và v.v… . Nếu giá trị ngõ
vào K vượt quá (số nhãn – 1) thì
không xảy ra nhảy và tiếp tục xử
lý mạng chương trình tiếp theo.
Đối với LAD và FBD: hộp JMP_LIST đầu tiên được đặt trong chương trình,
ở đó có hai ngõ ra nhảy nhãn. Ta có thể thêm hoặc xóa các đích nhảy.
Click vào biểu tượng create bên trong hộp (trên bên trái của tham số
DEST cuối cùng) để thêm các ngõ ra mới cho các nhảy nhãn.
Bảng A. 93. Các kiểu dữ liệu cho các tham sốlệnh SWITCH
Tham số Kiểu dữ liệu1 Mô tả
K SInt, Int, DInt, USInt, Chung cho so sánh giá trị ngõ
UInt, UDInt, Real, vào.
LReal, Byte, Word,
DWord, Time, TOD,
Date
==, <>, <, <=, >, >= SInt, Int, DInt, USInt, Riêng cho so sánh các giá trị
UInt, UDInt, Real, cổng vào theo các kiểu so sánh
LReal, Byte, Word, cụ thể.
DWord, Time, TOD,
Date
DEST0, DEST1, .., Các nhãn chương trình Nhảy tới các nhãn đích tương
DESTn. ELSE ứng theo các so sánh cụ thể:
Cổng vào so sánh bên dưới và
cạnh cổng vào K được xử lý đầu
tiên và tạo ra một bước nhảy tới
nhãn được gán cho DEST0, nếu
sự so sánh giữa giá trị K và cổng
vào này là true.
1
Cổng vào K và các cổng vào so sánh (==, <>, <, <=, >, >=) phải cùng một
kiểu dữ liệu.
Thêm các cổng vào, xóa các cổng vào và xác định các kiểu so sánh
Khi LAD hoặc hộp FBD SWITCH đầu tiên được đặt trong chương trình
người dùng thì ở đó có hai cổng vào so sánh. Ta có thể gán kiểu so sánh và thêm
các cổng vào/các đích nhảy, như trình bày dưới đây.
Click vào bộ hoạt động so sánh bên trong hộp và chọn một bộ hoạt
động mới từ danh sách thả.
Click vào biểu tượng create bên trong hộp (phía bên trái của tham số
DEST cuối cùng) để thêm các tham số so sánh-đích mới.
Bảng A. 94. Kiểu dữ liệu và các hoạt động so sánh của hộp SWITCH
Kiểu dữ liệu So sánh Cú pháp hoạt động
Byte, Word, DWord Bằng ==
Không bằng <>
SInt, Int, DInt, USInt, UInt, Bằng ==
UDInt, Real, LReal, Time, Không bằng <>
TOD, Date Lớn hơn hoặc bằng >=
Bé hơn hoặc bằng <=
Lớn hơn >
Bé hơn <
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ẻ.
Bảng A. 95. Lệnh điều khiển thực thi trả về giá trị (RET)
LAD FBD SCL Mô tả
RETURN; Chấm dứt thực thi khối hiện hành.
Bảng A. 96. Các kiểu dữ liệu cho các tham số lê ̣nh RET
Tham số Kiểu dữ liệu Mô tả
Return_Value Bool Thông số “Return_Value” của lệnh RET được
gán cho ngõ ra ENO của khối gọi hộp trong khối
đang gọi.
Các bước mẫu để sử dụng lệnh RET bên trong một khối mã FC:
1. Tạo một đề án mới và thêm một FC.
2. Chỉnh sửa FC:
o Thêm vào các lệnh từ cây lệnh.
o Thêm vào lệnh RET, bao gồm một trong các đối tượng sau đây
cho tham số “Return_Value”: TRUE, FALSE hay một vị trí bộ
nhớ mà định rõ giá trị trả lại được yêu cầu.
o Thêm vào các lệnh khác.
3. Gọi FC từ MAIN[OB1]
Ngõ vào EN trên hộp FC trong khối mã MAIN phải là true để bắt đầu sự
thực thi của FC.
Giá trị được xác định bởi lệnh RET trong FC sẽ hiện diện trên ngõ ra ENO
của hộp FC trong khối mã MAIN, theo sau sự thực thi của FC mà dòng tín hiệu đến
lệnh RET của nó là true.
Để thêm một cổng vào, click vào biểu tượng “Create” hoặc right-
click trên chân một cổng vào cho một trong những tham số IN đang
tồn tại và chọn lệnh “Insert input”.
Để loại bỏ một cổng vào, right-click trên chân một cổng vào cho một trong
những tham số cổng vào đang tồn tại (Khi ở đó có nhiều hơn hai cổng vào ban đầu)
và chọn lệnh “Delete”.
Bảng A. 98. Các kiểu dữ liệu cho các tham sốlệnh AND, OR và XOR
Tham số Kiểu dữ liệu Mô tả
IN1, IN2 Byte, Word, DWord Các ngõ vào logic
OUT Byte, Word, DWord Ngõ ra logic
Kiểu dữ liệu lựa chọn thiết lập cho các tham số IN1, IN2 và OUT phải cùng
một kiểu dữ liệu.
Các giá trị bit tương ứng của IN1 và IN2 được kết nối để tạo ra một kết quả
logic nhị phân tại thông số OUT. ENO luôn luôn là TRUE theo sự thực thi của các
lệnh này.
Bảng A. 100. Các kiểu dữ liệu cho các tham sốlệnh INV
Tham số Kiểu dữ liệu Mô tả
IN SInt, Int, DInt, USInt, UInt, UDInt, Byte, Phần tử dữ liệu để lấy bù
Word, DWord
OUT SInt, Int, DInt, USInt, UInt, UDInt, Byte, Ngõ ra được lấy bù
Word, DWord
Bảng A. 102. Các kiểu dữ liệu cho các tham sốlệnh ENCO và DECO
Tham số Kiểu dữ liệu Mô tả
IN ENCO: Byte, Word, DWord ENCO: mẫu bit để mã hóa
DECO: UInt DECO: giá trị để giải mã
OUT ENCO: Int ENCO: giá trị được mã hóa
DECO: Byte, Word, DWord DECO: mẫu bit được giải mã
A.9.4. Các lệnh lựa chọn (SEL), dồn kênh (MUX) và phân kênh (DEMUX)
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Bảng A. 111. Các trạng thái ENO cho các lệnh MUX và DEMUX
ENO Điều kiện Kết quả (OUT)
1 Không có lỗi. MUX: Giá trị IN được chọn được
sao chép đến OUT.
DEMUX: Giá trị IN được sao chép
đến OUT được chọn.
0 MUX: K lớn hơn hoặc bằng số Không có ELSE được cho: OUT
lượng của các tham số IN-1. không bị thay đổi.
Có ELSE được cho: giá trị ELSE
được gán đến OUT.
DEMUX: K lớn hơn hoặc bằng số Không có ELSE được cho: Các
lượng của các tham số OUT-1. OUT không bị thay đổi.
Có ELSE được cho: giá trị IN được
sao chép đến ELSE.
Bảng A. 113. Các kiểu dữ liệu cho các tham sốlệnh SHR và SHL
Tham số Kiểu dữ liệu Mô tả
IN Byte, Word, DWord Mẫu bit để dịch chuyển
N UInt Số vị trí bit để dịch chuyển
OUT Byte, Word, DWord Mẫu bit sau hoạt động dịch chuyển
Với N = 0, không có dịch chuyển xuất hiện và giá trị IN được gán đến
OUT.
Các số 0 được dịch chuyển vào trong các vị trí bit được xóa rỗng bởi
phép dịch chuyển.
Nếu số lượng các vị trí để dịch chuyển (N) vượt quá số lượng các bit
trong giá trị gốc (8 đối với Byte, 16 đối với Word và 32 đối với
DWord), tất cả các giá trị bit ban đầu sau đó sẽ được dịch chuyển ra
ngoài và được thay thế bằng những số 0 (tức là số 0 được gán đến
OUT).
ENO luôn luôn là TRUE đối với các phép dịch chuyển
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Bảng A. 116. Các kiểu dữ liệu cho các tham sốlệnh ROR và ROL
Tham số Kiểu dữ liệu Mô tả
IN Byte, Word, DWord Mẫu bit để xoay
N UInt Số vị trí bit để xoay
OUT Byte, Word, DWord Mẫu bit sau hoạt động xoay
Với N = 0, không có phép xoay này xuất hiện và giá trị IN được gán
đến OUT.
Dữ liệu bit được xoay ra ngoài một bên của giá trị gốc sẽ được xoay
vào trong phía bên kia của giá trị gốc đó, vì vậy không có các giá trị
bit nào bị mất đi.
Nếu số lượng của các vị trí bit để xoay (N) vượt quá số lượng của các
bit trong giá trị gốc (8 đối với Byte, 16 đối với Word và 32 đối với
DWord), phép xoay sau đó vẫn được thực hiện.
ENO luôn luôn là TRUE theo sự thực thi của các lệnh xoay.
Bảng A. 117. Ví dụ về ROR cho dữ liệu Word
Xoay bit nằm ngoài bên phải vào trong bên trái (N = 1)
IN 0100 0000 0000 0001 Giá trị OUT trước lần xoay 0100 0000 0000 0001
đầu tiên:
Sau lần xoay đầu tiên: 1010 0000 0000 0000
Sau lần xoay thứ hai: 0101 0000 0000 0000
B. Tâ ̣p lệnh mở rộng
Ta sử dụng các lệnh ngày và giờ để lập trình những tính toán về lịch và thời
gian.
T_CONV chuyển đổi kiểu dữ liệu của một giá trị thời gian: (Time
sang DInt) hay (DInt sang Time)
T_ADD cộng các giá trị Time và DTL: (Time + Time = Time) hay
(DTL + DTL = DTL)
T_SUB trừ các giá trị Time và DTL: (Time – Time = Time) hay (DTL
– Time = DTL)
T_DIFF đưa ra sự khác nhau giữa hai giá trị DTL như một giá trị
Time: DTL – DTL = Time
T_COMBINE kết hợp một giá trị Date và một giá trị Time_and_Date
để tạo nên một giá trị DTL
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Các mã điều kiện: ENO = 1 nghĩa là không có lỗi xuất hiện. Các lỗi làm
cho ENO = 0 và thông số OUT = 0:
Giá trị DTL không hợp lệ.
Giá trị Time không hợp lệ.
Bảng B. 7. Lệnh T_COMBINE (kết hợp các giá trị thời gian)
LAD/FBD SCL Mô tả
out := T_COMBINE kết hợp
CONCAT_DATE_TOD( một giá trị Date và một
In1 := _date_in, giá trị Time_of_Date để
In2 := _tod_in); tạo nên một giá trị
DTL.
1
Lưu ý rằng lệnh T_COMBINE trong các lệnh mở rộng tương đương với các
chức năng CONCAT_DATE_TOD trong SCL.
Ta sử dụng các lệnh đếm thời gian để thiết lập và đọc đồng hồ hệ thống của
PLC. Kiểu dữ liệu DTL được sử dụng để mang lại các giá trị ngày và giờ.
Bảng B. 10. Các kiểu dữ liệu cho các tham số lê ̣nh về thời gian hệ thống
Tham số và kiểu Kiểu dữ liệu Mô tả
IN IN DTL Thời gian trong ngày để thiết lập trong
đồng hồ hệ thống PLC.
RET_VAL OUT Int Mã điều kiện thực thi
OUT OUT DTL RD_SYS_T: thời gian hệ thống hiện hành
của CPU.
RD_LOC_T: Thời gian địa phương hiện
hành bao gồm bất kỳ điều chỉnh nào cho
thời gian tiết kiệm ban ngày, nếu được cấu
hình.
Thời gian địa phương được tính toán bằng cách sử dụng múi giờ và độ
dịch chỉnh thời gian tiết kiệm ánh sáng ngày mà ta thiết lập trong phần
cấu hình thiết bị CPU Clock.
Việc cấu hình múi giờ là một sự bù đắp đối với thời gian hệ thống
UTC (Coordinated Universal Time).
Việc cấu hình thời gian tiết kiệm ánh sáng ngày xác định tháng, tuần,
ngày và giờ khi thời gian tiết kiệm ánh sáng ngày bắt đầu.
Việc cấu hình giờ tiêu chuẩn còn xác định tháng, tuần, ngày và giờ
khi giờ tiêu chuẩn bắt đầu.
Độ dịch chỉnh múi giờ luôn luôn được áp dụng đến giá trị thời gian hệ
thống. Độ dịch chỉnh thời gian tiết kiệm ánh sáng ngày chỉ được áp
dụng khi thời gian tiết kiệm ánh sáng ngày có hiệu lực.
Các mã điều kiện: ENO = 1 có nghĩa không có lỗi xuất hiện. ENO = 0
nghĩa là một lỗi thực thi đã xuất hiện, và một mã điều kiện được cung cấp tại ngõ ra
RET_VAL.
Bảng B. 11. Các mã điều kiệnlê ̣nh về thời gian hệ thống
RET_VAL (W#16#....) Miêu tả
0000 Không có lỗi
8080 Giờ địa phương không có sẵn
8081 Giá trị năm không hợp lệ
8082 Giá trị tháng không hợp lệ
8083 Giá trị ngày không hợp lệ
8084 Giá trị giờ không hợp lệ
8085 Giá trị phút không hợp lệ
8086 Giá trị giây không hợp lệ
8087 Giá trị nano giây không hợp lệ
80B0 Đồng hồ thời gian thực bị hỏng
Ta có thể chuyển đổi chuỗi ký tự số thành các giá trị số hay chuyển đổi các
giá trị số thành chuỗi ký tự số bằng những lệnh sau:
S_CONV chuyển đổi (chuỗi số sang một giá trị số) hay (giá trị số
sang một chuỗi số).
STRG_VAL chuyển đổi một chuỗi số sang một giá trị số với các tùy
chọn định dạng.
VAL_STRG chuyển đổi một giá trị số sang một chuỗi số với các tùy
chọn định dạng.
Việc chuyển đổi của thông số chuỗi IN bắt đầu tại ký tự đầu tiên và tiếp tục
cho đến vị trí cuối cùng của chuỗi, hay đến ký tự đầu tiên được bắt gặp mà không
phải là từ “0” đến “9”, “+”, “ – ” hay “.”. Giá trị kết quả được cung cấp tại vị trí
được xác định trong thông số OUT. Nếu giá trị số ngõ ra không nằm vừa trong
phạm vi của kiểu dữ liệu OUT, thông số OUT sau đó được đặt về 0 và ENO được
đặt là FALSE. Nếu không, thông số OUT sẽ chứa một kết quả hợp lệ và ENO được
đặt là TRUE.
Bảng B. 14. Các kiểu dữ liệu lê ̣nh S_CONV (chuỗi sang giá trị)
Tham số và Kiểu dữ liệu Mô tả
kiểu
IN IN String, SInt, Int, DInt, USInt, UInt, Giá trị số ngõ vào
UDInt, Real
OUT OUT String Chuỗi ký tự ngõ ra
Một giá trị số nguyên, giá trị số nguyên không dấu hay giá trị dấu chấm động
của IN được chuyển đổi sang chuỗi ký tự tương ứng tại OUT. Thông số OUT phải
tham chiếu một chuỗi hợp lệ trước khi sự chuyển đổi được thực thi.Một chuỗi hợp
lệ gồm có một độ dài chuỗi cực đại trong byte đầu tiên, độ dài chuỗi hiện thời trong
byte thứ hai và các ký tự chuỗi hiện thời trong các byte kế tiếp.Chuỗi được chuyển
đổi sẽ thay thế các ký tự trong chuỗi OUT bắt đầu tại ký tự đầu tiên và điều chỉnh
byte độ dài hiện thời của chuỗi OUT.Byte độ dài tối đa của chuỗi OUT thì không bị
thay đổi.
Có bao nhiêu các ký tự được thay thế là phụ thuộc vào kiểu dữ liệu thông số
IN và giá trị số.Số lượng của các ký tự được thay thế phải nằm vừa trong độ dài
chuỗi tại thông số OUT. Độ dài chuỗi tối đa (byte đầu tiên) của chuỗi OUT nên lớn
hơn hay bằng số lượng được mong đợi tối đa của các ký tự được chuyển đổi.
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Việc chuyển đổi bắt đầu trong chuỗi IN tại ký tự dịch chỉnh P và tiếp tục cho
đến vị trí cuối của chuỗi, hay đến ký tự đầu tiên được bắt gặp mà không phải là “+”,
“–”, “.”, “,”, “e”, “E” hay từ “0” đến “9”. Kết quả được đặt tại vị trí được xác định
bởi thông số OUT.
Thông số P còn được trả về như một giá trị đếm dịch chỉnh trong chuỗi ban
đầu tại vị trí mà sự chuyển đổi được chấm dứt. Dữ liệu chuỗi phải được khởi chạy
trước sự thực thi như một chuỗi hợp lệ trong bộ nhớ.
Thông số FORMAT đối với lệnh STRG_VAL được xác định dưới đây. Các
vị trí bit không được sử dụng phải được đặt về 0.
Bảng B. 20. Sự hoạt động đổi giá trị sang chuỗi (VAL_STRG)
LAD/FBD SCL Mô tả
"VAL_STRG"( Chuyển đổi một số nguyên, một số
in:=_variant_in, nguyên không dấu, hay một giá trị
size:=_usint_in, dấu chấm động thành một biểu
prec:=_usint_in, diễn chuỗi ký tự tương ứng. Giá trị
format:=_word_in, được biểu diễn bởi thông số IN
p:=uint_in, được chuyển đổi thành một chuỗi
out=>_string_out); được tham chiếu bởi thông số
OUT.
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
Thông số PREC xác định độ chính xác hay số lượng các con số cho phần
phân số của chuỗi. Nếu giá trị thông số IN là một số nguyên, PREC xác định vị trí
của dấu chấm thập phân. Ví dụ, nếu giá trị dữ liệu là 123 và PREC = 1 thì kết quả là
“12.3”. Độ chính xác được hỗ trợ tối đa đối với kiểu dữ liệu Real là 7 con số.
Nếu thông số P lớn hơn kích thước hiện thời của chuỗi OUT, khi đó các
khoảng trắng sẽ được thêm vào, cho đến vị trí P, và kết quả được nối thêm vào đến
vị trí cuối của chuỗi.Việc chuyển đổi kết thúc nếu chiều dài chuỗi OUT tối đa được
đạt đến.
Khi một lỗi bị bắt gặp trong suốt hoạt động chuyển đổi, các kết quả
sau đây sẽ được trả về:
ENO được đặt về 0.
OUT được đặt về 0, hay như được thể hiện trong các ví dụ về việc
chuyển đổi chuỗi sang giá trị.
OUT không bị thay đổi, hay như được thể hiện trong các ví dụ khi
OUT là một chuỗi.
Bảng B. 26. Các ví dụ về chuyển đổi giá trị thành chuỗi S_CONV
Kiểu dữ liệu Giá trị IN Chuỗi OUT ENO
UInt 123 “123” TRUE
UInt 0 “0” TRUE
UDInt 12345678 “12345678” TRUE
Real -INF “INF” FALSE
Real +INF “INF” FALSE
Real NaN “NaN” FALSE
Các ví dụ dựa trên một chuỗi OUT được khởi chạy như sau:
“Current Temp = xxxxxxxxxx C”
Ký tự “x” biểu thị các ký tự khoảng cách được phân bổ cho giá trị được
chuyển đổi.
Bộ đếm tốc độ cao (HSC) đếm các sự kiện xảy ra nhanh hơn tốc độ thực thi
của OB. Nếu các sự kiện được đếm xảy ra với tốc độ thực thi của OB thì ta có thể
sử dụng các lệnh bộ đếm CTU, CTD và CTUD.Nếu các sự kiện xảy ra nhanh hơn
tốc độ thực thi của OB thì sử dụng HSC.Lệnh CTRL_HSC cho phép chương trình
người dùng lập trình thay đổi một số tham số HSC.
Ví dụ, ta có thể sử dụng bộ đếm tốc độ cao (HSC) 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 bởi chương trình người dùng 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 CV = RV 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).
Bảng C. 4. Tần số cực đại (kHz) của các bô ̣ đếm tốc đô ̣ cao
HSC Đơn pha Hai pha và vuông
pha AB
HSC1 CPU 100 KHz 80 KHz
High-speed SB 200 KHz 160 KHz
SB 30 KHz 20 KHz
HSC2 CPU 100 KHz 80 KHz
High-speed SB 200 KHz 160 KHz
SB 30 KHz 20 KHz
HSC3 CPU 100 KHz 80 KHz
HSC4 CPU 30 KHz 20 KHz
HSC5 CPU 30 KHz 20 KHz
High-speed SB 200 KHz 160 KHz
SB 30 KHz 20 KHz
HSC6 CPU 30 KHz 20 KHz
High-speed SB 200 KHz 160 KHz
SB 30 KHz 20 KHz
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.
Lưu ý
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 quá trình 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
cưỡng bức trong bảng Watch.
Khi cấu hình CPU, ta có tùy chọn để kích hoạt và cấu hình mỗi HSC. CPU tự
động gán địa chỉ cổng vào cho mỗi HSC theo sự cấu hình của nó. (một số HSC cho
phép ta chọn xem có nên sử dụng các cổng vào on-broad của CPU hoặc SB hay
không).
Ví dụ, bảng sau đây thể hiện cổng vào HSC thiết lập cho cả I/O on-broad
của CPU 1214C và SB, nếu SB được cài đặt.
Đơn pha: C là xung đồng hồ cổng vào, [d] là tùy chọn cồng vào trực
tiếp và [R] là một tùy chọn reset cổng vào bên ngoài. (Reset chỉ có
sẵn cho chế độ “đếm”).
Hai pha: CU là xung đồng hồ lên cổng vào, CD là xung đồng hồ
xuống cổng vào và [R] là một tùy chọn reset cổng vào bên ngoài.
(Reset chỉ có sẵn cho chế độ “đếm”).
Vuông pha-AB: A là xung đồng hồ cổng vào A, B là xung đồng hồ
cổng vào B và [R] là một tùy chọn reset cổng vào bên ngoài. (Reset
chỉ có sẵn cho chế độ “đếm”).
Bảng C. 6. Cổng vào HSC thiết lập cho CPU 1214C và CPU 1215C
HSC Input0 số (mặc định: 0.x) Input1 số (mặc định: 1.x)
0 1 2 3 4 5 6 7 0 1 2 3 4 5
1
HSC1 1-pha C [d] [R]
2-pha CU CD [R]
AB- A B [R]
pha
HSC21 1-pha [R] C [d]
2-pha [R] CU CD
AB- [R] A B
pha
HSC3 1-pha C [d] [R]
2-pha CU CD [R]
AB- A B [R]
pha
HSC4 1-pha [R] C [d]
2-pha [R] CU CD
AB- [R] A B
pha
HSC51 1-pha C [d] [R]
2-pha CU CD [R]
AB- A B [R]
pha
HSC61 1-pha C [d] [R]
2-pha CU CD [R]
AB- A B [R]
pha
1
HSC 1, HSC 2, HSC 5 và HSC 6 có thể được cấu hình cho cổng vào on-
board hoặc một SB.
Bảng C. 7. Cổng vào HSC được gán cho các SB
HSC Các Input SB (mặc định: 4.x)2
0 1 2 3
1
HSC1 1-pha C [d] [R]
2-pha CU CD [R]
AB-pha A B [R]
1
HSC2 1-pha [R] C [d]
2-pha [R] CU CD
AB-pha [R] A B
1
HSC5 1-pha C [d] [R]
2-pha CU CD [R]
AB-pha A B [R]
HSC61 1-pha [R] C [d]
2-pha [R] CU CD
AB-pha [R] A B
1
HSC 1, HSC 2, HSC 5 và HSC 6 có thể được cấu hình cho cổng vào on-
board hoặc một SB.
2
Một SB chỉ có 2 cổng vào số thì cổng vào 4.0 và 4.1 là có sẵn.
Khi ta kích hoạt một bộ phát xung cho việc sử dụng như là một PTO, HSC
tương ứng được gán tới PTO.HSC1 được gán cho PTO1 và HSC2 được gán cho
PTO2.HSC được gán thuộc hoàn toàn vào kênh PTO và cổng ra thông thường của
HSC bị vô hiệu hóa.Giá trị HSC chỉ được sử dụng cho chức năng bên trong. Ta có
thể giám sát giá trị hiện hành (ví dụ, trong ID1000) khi xung xảy ra.
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.
Khi ta kích hoạt bộ đếm tốc độ cao và chọn các điểm ngõ vào cho nó, bộ lọc
ngõ vào sẽ thiết lập cho các điểm được cấu hình này tới 800ns. Mỗi điểm ngõ vào
có một bộ lọc cấu hình duy nhất áp dụng cho tất cả các sử dụng: xử lý các ngõ vào,
các ngắt, xung chốt và các ngõ vào HSC.
Sau khi kích hoạt HSC, cấu hình các tham số khác, chẳng hạn như chức năng
bộ đếm, các giá trị ban đầu, thiết lập lại các tùy chọn và các sự kiện ngắt.
STEP 7 cung cấp các lệnh PID sau đây dành cho CPU S7-1200:
Lệnh PID_Compact được sử dụng để điều khiển các quá trình công
nghệ với sự thay đổi liên tục các cổng vào và ra.
Lệnh PID_3Step được sử dụng để điều khiển các thiết bị động cơ - cơ
cấu được tác động, như là các valve mà nó yêu những cầu tín hiệu rời
rạt cho tác động đóng và mở.
Lưu ý
Các thay đổi mà ta thực hiện để cấu hình PID và tải xuống trong chế độ RUN
sẽ không có hiệu lực cho đến khi CPU chuyển đổi từ chế độ STOP sang RUN.
Cả hai lệnh PID (PID_3Step và PID_Compact) đều có thể tính toán các
thành phần P-, I- và D- trong quá trình khởi động (nếu được cấu hình cho
“pretuning”). Ta cung có thể cấu hình lệnh cho “fine tuning” để cho phép ta tối ưu
hóa các tham số. Ta không cần phải xác định bằng tay các tham số.
Lưu ý
Thực hiện lệnh PID trong khoảng thời gian không đổi của thời gian lấy
mẫu (Tốt hơn là trong một chu kỳ OB).
Bởi vì thời gian vòng lặp PID cần một thời gian nhất định để đáp ứng lại với
những thay đổi của giá trị điều khiển, không tính giá trị đầu ra trong mỗi chu kỳ.
Không thực thi lệnh PID trong OB chu kỳ chương trình chính (như là OB1).
Thời gian lấy mẫu của thuật toán PID thể hiện thời gian giữa hai lần tính
toán giá trị cổng ra (giá trị điều khiển). Giá trị cổng ra được tính toán trong quá
trình tự điều chỉnh và làm tròn đến một bội số của chu kỳ thời gian. Tất cả các chức
năng khác của lệnh PID được thực thi ở mỗi lần gọi.
STEP 7 cung cấp hai lệnh cho việc điều khiển PID:
Lệnh PID_Compact và đối tượng công nghệ liên quan của nó cung
cấp một bộ điều khiển PID vạn năng với sự điều chỉnh. Đối tượng
công nghệ chứa tất cả các cài đặt cho vòng lặp điều khiển.
Lệnh PID_3Step và đối tượng công nghệ liên quan của nó cung cấp
một bộ điều khiển PID với các cài đặt cụ thể cho các valve được kích
hoạt bằng động cơ. Đối tượng công nghệ chứa tất cả các cài đặt cho
vòng lặp điều khiển. Bộ điều khiển PID_3Step cung cấp thêm hai
cổng ra Boolean.
Sau khi tạo ra đối tượng công nghệ, ta phải thực hiện cấu hình các tham số.
Cũng như chỉnh các tham số tự động điều chỉnh (“pretuning” trong quá trình bất
đầu hoặc tinh chỉnh “fine tuning”) để chạy nghiệm thu sự hoạt động của bộ điều
khiển PID.
Bảng C. 9. Chèn lệnh PID và đối tượng công nghệ
Khi ta chèn một lệnh PID vào
trong chương trình người dùng
của mình, STEP 7 tự động tạo ra
một đối tượng công nghệ và một
DB mẫu cho lệnh. DB mẫu chứa
tất cả các tham số được sử dụng
bởi lệnh PID. Mỗi lệnh PID phải
có duy nhất một DB mẫu của
chính nó để hoạt động đúng.
Sau khi chèn lệnh PID, tạo đối
tượng công nghệ và DB mẫu, ta
cấu hình các tham số cho đối
tượng công nghệ này.
Bảng C. 10. (Tùy chọn) tạo một đối tượng công nghệ từ đường dẫn dự án
Ta cũng có thể tạo các đối tượng
công nghệ cho dự án của mình
trước khi chèn lệnh PID. Bằng
cách tạo một đối tượng công nghệ
trước khi chèn một lệnh PID vào
trong chương trình người dùng của
mình, sau đó ta có thể chọn các đối
tượng công nghệ khi ta chèn lệnh
PID.
Bảng C. 12. Các kiểu dữ liệu của các tham sốlệnh PID_Compact
Tham số và kiểu Kiểu dữ liệu Mô tả
Setpoint IN Real Điểm đặt của bộ điều khiển PID trong
chế độ tự động. Giá trị mặc định: 0.0
Input IN Real Giá trị xử lý. Giá trị mặc định: 0.0
Ta cũng có thể đặt
sPid_Cmpt.b_Input_PER_On =
FALSE.
Input_PER IN Word Giá trịxử lý analog (tùy chọn). Giá trị
mặc định là: W#16#0.
Ta cũng có thể đặt
sPid_Cmpt.b_Input_PER_On =
TRUE.
ManualEnable IN Bool Cho phép hoặc không cho phép chế
độ vận hành bằng tay. Giá trị mặc
định là FALSE:
PID_Compact V1.0 và V1.2:
khi CPU chuyển sang chế độ
RUN, nếu ManualEnable =
TRUE thì PID_Compact bất
đầu trong chế độ bằng tay. Nó
không cần một sự chuyển đổi
từ FALSE sang TRUE để đặt
PID_Compact vào trong chế
độ bằng tay.
PID_Compact V1.1: khi CPU
chuyển sang chế độ RUN và
ManualEnable = TRUE thì
PID_Compact bất đầu trong
trạng thái cuối cùng. Một sự
chuyển đổi từ TRUE sang
FALSE sang TRUE được yêu
cầu để đặt PID_Compact vào
chế độ bằng tay.
ManualValue IN Real Giá trị xử lý cho việc vận hành bằng
tay. Giá trị mặc định là: 0.0
Reset IN Bool Tham số Reset sẽ khởi động lại bộ
điều khiển. Giá trị mặc định là:
FALSE
Xem phần “Response to Reset” bên
dưới các sơ đồ đáp ứng Reset
PID_Compact V1.0 và V1.1
ScaledInput OUT Real Giá trị xử lý đã được tỷ lê ̣ hóa. Giá trị
mặc định là: 0.0
Output1 OUT Real Giá trị cổng ra. Giá trị mặc định là:
0.0
Output_PER1 OUT Word Giá trị analog cổng ra. Giá trị mặc
định là: W#16#0
Output_PWM1 OUT Bool Giá trị cổng ra điều chế độ rộng xung.
Giá trị mặc định là: FALSE
SetpointLimit_H OUT Bool Giới hạn trên setpoint. Giá trị mặc
định là: FALSE
Nếu SetpointLimit_H = TRUE thì
setpoint sẽ đạt đến giới hạn trên tuyệt
đối. Giá trị mặc định là: FALSE
SetpointLimit_L OUT Bool Giới hạn dưới setpoint. Giá trị mặc
định là: FALSE
Nếu SetpointLimit_L = TRUE thì
setpoint sẽ đạt đến giới hạn dưới
tuyệt đối. Giá trị mặc định là: FALSE
InputWarning_H OUT Bool Nếu InputWarning_H = TRUE thì giá
trị xử lý (PV) đạt đến hay vượt mức
giới hạn trên. Giá trị mặc định là:
FALSE
InputWarning_L OUT Bool Nếu InputWarning_L = TRUE thì giá
trị xử lý (PV) đạt đến hay vượt mức
giới hạn dưới. Giá trị mặc định là:
FALSE
State OUT Int Chế độ hoạt động hiện hành của bộ
điều khiển PID. Giá trị mặc định là: 0
Sử dụng sRet.i_Mode để thay đổi chế
độ.
State = 0: không hoạt động
State = 1: điều chỉnh sơ bộ
State = 2: tinh chỉnh bằng tay
State = 3: chế độ tự đô ̣ng
State = 4: chế độ bằng tay
ErrorBits OUT DWord Bảng các tham số ErrorBit lệnh
PID_Compact định nghĩa các thông
báo lỗi. Giá trị mặc định là:
DW#16#0000 (không có lỗi)
1
Các tham số Output, Output_PER và Output_PWM của các cổng ra có thể
được sử dụng song song.
Phản ứng để Reset = TRUE phụ thuộc vào phiên bản của lệnh
PID_Compact.
Kích hoạt
Lỗi
Reset
Một sự lên cao cạnh ở Reset sẽ thiết lập lại các lỗi và cảnh báo và xóa các tác
động lấy tích phân. Bộ điều khiển không được kích hoạt lại cho đến khi gặp cạnh
tiếp theo ở i_Mode.
Hình C. 6. Sự hoạt động của bộ điều khiển PID_Compact như là một bộ điều khiển
PIDT1 với anti-windup
C.2.3. Các tham số ErrorBit lệnh PID_Compact
Nếu một số lỗi đang chờ thì các giá trị của các mã lỗi được hiển thị bằng các
phương tiện nhị phân bổ sung. Sự hiển thị của mã lỗi 0003, ví dụ, chỉ ra rằng các lỗi
0001 và 0002 cũng đang chờ.
Bộ điều khiển PID sử dụng công thức sau đậy để tính toán giá trị cổng ra cho
lệnh PID_3step.
y Giá trị cổng ra x Giá trị xử lý
w Giá trị điểm đặt s Toán tử laplace
Kp Hằng số khuếch đại tỷ lệ a Hệ số vi phân trậm trễ
(thành phần P) (thành phần D)
TI Thời gian lấy tích phân b Trọng số tỷ lệ tích cực
(thành phần I) (thành phần P)
TD Thời gian lấy vi phân c Trọng số vi phân tích cực
(thành phần D) (thành phần D)
Bảng C. 15. Các kiểu dữ liệu cho các tham sốlệnh PID_3Step
Tham số và kiểu Kiểu Mô tả
dữ liệu
Setpoint IN Real Điểm đặt của bộ điều khiển PID trong chế độ
tự động. Giá trị mặc định: 0.0
Input IN Real Giá trị xử lý. Giá trị mặc định là: 0.0
Ta cũng có thể đặt
sPid_Cmpt.b_Input_PER_On = FALSE.
Input_PER IN Word Giá trị xử lý analog (tùy chọn). Giá trị mặc
định là: W#16#0.
Ta cũng có thể đặt
sPid_Cmpt.b_Input_PER_On = TRUE.
ManualEnable IN Bool Cho phép hoặc không cho phép chế độ vận
hành bằng tay. Giá trị mặc định là FALSE:
Một thay đổi trên cạnh từ FALSE sang
TRUE, bộ điều khiển chuyển sang chế
độ bằng tay, State = 4 và giữ lại ở đó.
Chế độ duy trì không thay đổi.
Một thay đổi trên cạnh từ TRUE sang
FALSE, bộ điều khiển chuyển sang chế
độ hoạt động tích cực cuối cùng và State
= Retain.Mode.
ManualUP IN Bool Trong chế độ bằng tay, mỗi lần cạnh tăng sẽ
mở valve 5% trong tổng phạm vi tác động hoặc
cho khoảng thời gian tối thiểu kích hoạt động
cơ. ManualUP chỉ được ước lượng nếu ta
không sử dụng Output_PER và không có hồi
tiếp vị trí. Giá trị mặc định là: FALSE
Nếu Output_PER là FALSE thì cổng
vào chỉnh bằng tay sẽ vặn Output_UP
trên khoảng thời gian tương ứng cho
một cử động 5% của thiết bị.
Nếu Config.ActuatorEndStopOn là
TRUE thì sau đó Output_UP sẽ không
bật nếu Actuator_H là TRUE.
ManualDN IN Bool Trong chế độ bằng tay, mỗi lần cạnh tăng sẽ
mở valve 5% trong tổng phạm vi tác động hoặc
cho khoảng thời gian tối thiểu kích hoạt động
cơ. ManualDN chỉ được ước lượng nếu ta
không sử dụng Output_PER và không có hồi
tiếp vị trí. Giá trị mặc định là: FALSE
Nếu Output_PER là FALSE thì cổng
vào chỉnh bằng tay sẽ vặn Output_DN
trong khoảng thời gian tương ứng cho
một cử động 5% của thiết bị.
Nếu Config.ActuatorEndStopOn là
TRUE thì sau đó Output_DN sẽ không
bật nếu Actuator_L là TRUE.
ManualValue IN Real Giá trị xử lý cho việc vận hành bằng tay. Giá
trị mặc định là: 0.0
Trong chế độ bằng tay, ta chỉ rõ vị trí tuyệt đối
của valve. ManualValue chỉ được ước lượng
nếu ta đang sử dụng OutputPer, hoặc nếu hồi
tiếp vị trí có sẳn. Giá trị mặc định là: 0.0
Feedback IN Real Hồi tiếp vị trí của valve. Giá trị mặc định là:
0.0
Để sử dụng Feeback, đặt
Config.FeedbackPerOn = FALSE
Feedback_PER IN Word Hồi tiếp giá trị analog về vị trí valve. Giá trị
mặc định là: W#16#0
Để sử dụng Feeback, đặt
Config.FeedbackPerOn = TRUE.
Feeback_PER được quét, sử dụng các tham số
sau đây:
Config.FeedbackScaling.LowerPointIn
Config.FeedbackScaling.UpperPointIn
Config.FeedbackScaling.LowerPointOu
t
Config.FeedbackScaling.UpperPointOut
Actuator_H IN Bool Nếu Actuator_H = TRUE thì valve ở điểm
dừng trên cùng và không thể di chuyển theo
hướng này được nữa. Giá trị mặc định là:
FALSE
Actuator_L IN Bool Nếu Actuator_L = TRUE thì valve ở điểm
dừng dưới cùng và không thể di chuyển theo
hướng này được nữa. Giá trị mặc định là:
FALSE
Reset IN Bool Khởi động lại bộ điều khiển PID. Giá trị mặc
định là: FALSE
Nếu cạnh chuyển từ FALSE sang TRUE thì:
“Inactive” hoạt động chế độ
Input value = 0
Các giá trị tạm thời của bộ điều khiển
được thiết lập lại. (Các tham số PID
được giữ lại)
ScaledInput OU Real Giá trị xử lý đã được tỷ lê ̣ hóa.
T
ScaledFeedback Real Vị trí valve được quét
Output_PER OU Word Giá trị cổng ra analog. Nếu
T Config.OutputPerOn = TRUE thì tham số
Output_PER được sử dụng.
Output_UP OU Bool Giá trị cổng ra digital để mở valve. Giá trị mặc
T định là: FALSE
Nếu Config.OutputPerOn = FALSE thì tham
số Output_UP được sử dụng.
Output_DN OU Bool Giá trị cổng ra digital để đóng valve. Giá trị
T mặc định là: FALSE
Nếu Config.OutputPerOn = FALSE thì tham
số Output_DN được sử dụng.
SetpointLimit_H OU Bool Giới hạn trên setpoint. Giá trị mặc định là:
T FALSE
Nếu SetpointLimit_H = TRUE thì setpoint sẽ
đạt đến giới hạn trên tuyệt đối. Trong CPU,
điểm đặt setpoint được giới hạn để cấu hình
giới hạn trên tuyệt đối của giá trị thực tế.
SetpointLimit_L OU Bool Giới hạn dưới setpoint. Giá trị mặc định là:
T FALSE
Nếu SetpointLimit_L = TRUE thì setpoint sẽ
đạt đến giới hạn dưới tuyệt đối. Trong CPU,
điểm đặt setpoint được giới hạn để cấu hình
giới hạn dưới tuyệt đối của giá trị thực tế.
InputWarning_ OU Bool Nếu InputWarning_H = TRUE thì giá trị xử lý
H T (PV) đạt đến hay vượt mức giới hạn trên. Giá
trị mặc định là: FALSE
InputWarning_L OU Bool Nếu InputWarning_L = TRUE thì giá trị xử lý
T (PV) đạt đến hay vượt mức giới hạn dưới. Giá
trị mặc định là: FALSE
State OU Int Chế độ hoạt động hiện hành của bộ điều khiển
T PID. Giá trị mặc định là: 0
State = 0: không hoạt động
State = 1: điều chỉnh sơ bộ
State = 2: điều chỉnh bằng tay
State = 3: chế độ tự đô ̣ng
State = 4: chế độ bằng tay
State = 5: tiếp cận giá trị cổng ra thay
thế
State = 6: thời gian chuyển tiếp đo
lường
State = 7: tiếp cận giá trị cổng ra thay
thế với giám sát lỗi
State = 8: giám sát lỗi
Error OU Bool Nếu Error = TRUE thì ít nhất một thông báo
T lỗi đang chờ. Giá trị mặc định là: FALSE
ErrorBits OU DWord Bảng các tham số ErrorBit lệnh PID_3Step
T định nghĩa các thông báo lỗi. Giá trị mặc định
là: DW#16#0000 (không có lỗi)
Hình C. 7. Sự hoạt động của bộ điều khiển PID_3Step như là một bộ điều khiển
PIDT1 với anti-windup
Hình C. 8. Hoạt động của bộ điều khiển PID_3Step mà không có hồi tiếp vị trí
Hình C. 9. Hoạt động của bộ điều khiển PID_3Step có hồi tiếp vị trí
Nếu một số lỗi đang chờ thì các giá trị của các mã lỗi được hiển thị bằng các
phương tiện nhị phân bổ sung. Sự hiển thị mã lỗi 0003, ví dụ, chỉ ra rằng các lỗi
0001 và 0002 cũng đang chờ.
Các tham số của đối tượng công nghệ xác định sự hoạt động của bộ điều
khiển PID.Sử dụng biểu tượng để mở trình soạn thảo cấu hình.
Hình C. 10. Trình soạn thảo cấu hình cho PID_Compact (các cài đặt cơ bản)
Bảng C. 17. Các cài đặt cấu hình mẫu cho lệnh PID_Compact
Các cài đặt Mô tả
Basic Kiểu bộ điều khiển Chọn đơn vị kỹ thuật
Điều khiển logic Cho phép chọn một vòng lặp PID tác dụng
đảo ngược.
Nếu không được chọn thì vòng lặp PID
ở trong chế độ tác dụng thuận và cổng
ra của vòng lặp PID tăng nếu giá trị
cổng vào < setpoint.
Nếu được chọn thì cổng ra của vòng lặp
PID tăng nếu giá trị cổng vào >
setpoint.
Kích hoạt chế độ Khởi động lại vòng lặp PID sau khi nó được
cuối sau khi khởi reset hoặc nếu vượt quá một giới hạn cổng vào
động lại CPU và được đưa về phạm vi hợp lệ.
Cổng vào Chọn một trong hai tham số Input hoặc
Input_PER (cho analog) cho giá trị xử lý.
Input_PER có thể đến trực tiếp từ một module
cổng vào analog.
Cổng ra Chọn một trong hai tham số Output hoặc
Output_PER (cho analog) cho giá trị xử lý.
Output_PER có thể đến trực tiếp từ một
module cổng ra analog.
Giá trị xử Định tỷ lệ cả phạm vi và các giới hạn cho giá trị xử lý. Nếu giá trị
lý xử lý đi dưới giới hạn dưới hoặc cao hơn giới hạn trên thì vòng lặp
PID đi vào chế độ không hoạt động và set giá trị cổng ra là 0.
Để sử dụng Input_PER, ta phải định tỷ lệ giá trị xử lý analog (giá trị
cổng vào).
Hình C. 11. Trình soạn thảo cấu hình cho PID_3Step (các cài đặt cơ bản)
Bảng C. 18. Các cài đặt cấu hình mẫu cho lệnh PID_Compact
Các cài đặt Mô tả
Basic Kiểu bộ điều khiển Chọn đơn vị kỹ thuật
Điều khiển logic Cho phép chọn một vòng lặp PID tác dụng
đảo ngược.
Nếu không được chọn thì vòng lặp PID
ở trong chế độ tác dụng thuận và cổng
ra của vòng lặp PID tăng nếu giá trị
cổng vào < setpoint.
Nếu được chọn thì cổng ra của vòng lặp
PID tăng nếu giá trị cổng vào >
setpoint.
Kích hoạt chế độ Khởi động lại vòng lặp PID sau khi nó được
cuối sau khi khởi reset hoặc nếu vượt quá một giới hạn cổng vào
động lại CPU và trở về phạm vi hợp lệ.
Cổng vào Chọn một trong hai tham số Input hoặc
Input_PER (cho analog) cho giá trị xử lý.
Input_PER có thể đến trực tiếp từ một module
cổng vào analog.
Cổng ra Chọn sử dụng cổng ra digital (Output_UP và
Output_DN) hoặc sử dụng cổng ra analog
(Output_PER) cho giá trị cổng ra.
Feedback Chọn kiểu trạng thái thiết bị trở về vòng lặp
PID:
No feedback (mặc định)
Feedback
Feedback_PER
Giá trị xử Định tỷ lệ cả phạm vi và các giới hạn cho giá trị xử lý. Nếu giá trị
lý xử lý đi dưới giới hạn dưới hoặc cao hơn giới hạn trên thì vòng lặp
PID đi vào chế độ không hoạt động và set giá trị cổng ra là 0.
Để sử dụng Input_PER, ta phải định tỷ lệ giá trị xử lý analog (giá trị
cổng vào).
Cơ cấu tác Thời gian chuyển Thiết lặp thời gian từ lúc mở tới đóng valve.
động tiếp động cơ (Vị trí giá trị này nằm trên data sheet hoặc mặt
bản của valve)
Thời gian ON tối Thiết lặp thời gian chuyển động tối thiểu cho
thiểu valve. (Vị trí giá trị này nằm trên data sheet
hoặc mặt bản của valve)
Thời gian OFF tối Thiết lặp thời gian chuyển động tối thiểu cho
thiểu valve. (Vị trí giá trị này nằm trên data sheet
hoặc mặt bản của valve)
Lỗi trạng thái Định nghĩa trạng thái của valve khi một lỗi
được phát hiện hoặc khi vòng lặp PID được
reset. Nếu ta chọn để sử dụng một vị trí thay
thế, nhập vào “Safety position”. Đối với hồi
tiếp analog hoặc cổng ra analog, chọn một giá
trị giữa giới hạn trên hoặc dưới cho cổng ra.
Đối với các cổng ra digital, ta chỉ có thể chọn
0% (off) hoặc 100% (on).
Định tỷ lệ hồi tiếp “High stop” và “Lower limit stop” xác
vị trí 1 định vị trí dương tối đa (full-open) và vị
trí âm tối đa (full-closed). “High stop”
phải lớn hơn “Lower limit stop”.
“High limit process value” và “Low
limit process value” xác định các vị trí
trên và dưới của valve trong quá trình
điều chỉnh và chế độ tự động.
“FeedbackPER” (“Low” và “High”)
xác định hồi tiếp analog của vị trí
valve. “FeedbackPER High” phải lớn
hơn “FeedbackPER Low”.
1
“Scale Position Feedback” chỉ có thể được chỉnh sửa nếu ta kích hoạt
“Feedback” trong các cài đặt “Basic”.
Sử dụng trình soạn thảo chạy thử nghiệm để cấu hình bộ điều khiển PID cho
tự động điều chỉnh lúc bất đầu và trong quá trình hoạt động.Để mở trình soạn thảo
chạy thử nghiệm, click vào biểu tượng trên lệnh hoặc biểu tượng từ đường
dẫn dự án.