You are on page 1of 201

MỤC LỤC

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

Hình 1.1. CPU PLC S7-1200.....................................................................................3


Hình 1.2. CPU, SB, CM và SM.................................................................................3
Hình 1.3. Board tín hiệu SB......................................................................................3
Hình 1.4. Module tín hiệu SM...................................................................................3
Hình 1.5. Module truyền thông CM..........................................................................3
Hình 1.6. Card nhớ SIMATIC...................................................................................3
Hình 1.7. Bảng vận hành...........................................................................................3
Hình 1.8. Các LED vận hành.....................................................................................3
Hình 1.9. Cửa sổ “Portal view”.................................................................................3
Hình 1.10. Cửa sổ “Project view”..............................................................................3
Hình 1.12. Chèn bộ mô phỏng tín hiệu vào CPU......................................................3
Hình 1.13. Kết nối nguồn cho CPU...........................................................................3
Hình 1.14. Kết nối cáp PROFINET......................................................................................................3
Hình 2.1. Cửa sổ hiển thị “Portal view”....................................................................3
Hình 2.2. Hộp thoại “Add new device”.....................................................................3
Hình 2.3. Cửa sổ “Device view” hiển thị CPU đã thêm vào......................................3
Hình 2.4. Cấu hình của CPU và các module..............................................................3
Hình 2.5. Hộp thoại “Add new device”.....................................................................3
Hình 2.6. Giao diện “Device view”...........................................................................3
Hình 2.7. Thuộc tính CPU trong cửa sổ kiểm tra.......................................................3
Hình 2.8. Trình đơn “Online”....................................................................................3
Hình 2.9. CPU chưa xác định....................................................................................3
Hình 2.10. Hộp thoại “Accessible device”................................................................3
Hình 2.11. Thuộc tính DI của CPU trong cửa sổ kiểm tra.........................................3
Hình 2.12. Màn hình Biên tập HMI...........................................................................3
Hình 2.13. Bảng HMI tags và cửa sổ thuộc tính........................................................3
Hình 2.14. Màn hình biên tập HMI...........................................................................3
Hình 2.15. Bảng recipes............................................................................................3
Hình 2.16. Cây dự án và thanh biên tập.....................................................................3
Hình 2.17. Cửa sổ“table tag” và “device view”.........................................................3
Hình 2.18. Cây dự án.................................................................................................3
Hình 2.19. Cửa sổ lập trình........................................................................................3
Hình 2.20. Cửa sổ lập trình........................................................................................3
Hình 2.21. Cửa sổ “device view” và cửa xổ lập trình................................................3
Hình 2.22. Hộp lệnh biên tập trên network................................................................3
Hình 2.23. Tập lệnh cơ bản.......................................................................................3
Hình 2.24. Hộp lệnh CALCULATE..........................................................................3
Hình 2.25. Hộp thoại “Edit “Calculate” instruction”.................................................3
Hình 2.26. Hộp lệnh CALCULATE được tham số hóa.............................................1
Hình 2.27. Hộp thoại “Add new device"...................................................................3
Hình 2.28. Màn hình biên tập HMI...........................................................................3
Hình 2.29. Liên kết mạng HMI và PLC trong “Network view”................................3
Hình 2.30. Kết nối “HMI connection” trong “Network view”...................................3
Hình 2.31. Màn hình biên tập HMI...........................................................................3
Hình 2.33. Màn hình biên tập HMI...........................................................................3
Hình 2.32.Thuộc tính các phần tử HMI trong cửa sổ kiểm tra..................................1
Hình 2.34. Cửa sổ các tag PLC..................................................................................3
Hình 2.35. Hộp thoại “Accessible device”................................................................3
Hình 2.36. Hộp thoại “Connect online”.....................................................................3
Hình 2.37. Hiển thị trạng thái chương trình trong LAD............................................3
Hình 2.38. Watch table trong chế độ cơ bản với cột “control” và “Force”................3
Hình 2.39. Thuộc tính “Diagnostics” trong cửa sổ kiểm tra...............................................................3
Hình 3.1.Cấu trúc tuyến tính.....................................................................................3
Hình 3.2. Cấu trúc module.........................................................................................3
Hình 3.3. Cấu trúc gọi khối.......................................................................................3
Hình 3.4. Cấu trúc gọi lồng nhau...............................................................................3
Hình 3.5. Hộp thoại “Add new block”.......................................................................3
Hình 3.6. Các thuộc tính OB.....................................................................................3
Hình 3.7. Cách gọi và sử dụng khối hàm FB.............................................................3
Hình 3.8. Dạng lệnh LAD.........................................................................................3
Hình 3.9. Dạng lệnh LAD không hợp lệ....................................................................3
Hình 3.10. Dạng lệnh LAD không hợp lệ..................................................................3
Hình 3.11. Dạng lệnh FBD........................................................................................3
Hình 3.12. Dạng lập trình SCL..................................................................................3
Hình 3.13. Khối mã SCL...........................................................................................3
Hình 3.14. Thuộc tính bảo vệ....................................................................................3
Hình 3.15. Thuộc tính bảo vệ....................................................................................3
Hình 3.16. Hộp thoại “Know-how protection”..........................................................3
Hình 3.17. Hộp thoại “Define Password”..................................................................3
Hình 3.18. Các thuộc tính bảo vệ..............................................................................3
Hình 3.19. Thuộc tính “online access” trên cây dự án...............................................1
Hình 3.20. Bảng giám sát Watch table......................................................................3
Hình 3.21. Giám sát với trình biên tập LAD.......................................................................................3
Hình 4.1. Sự hoạt động của bộ điều khiển PID_Compact.........................................3
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..............................................................................................3
Hình 4.3. Cây dự án...................................................................................................3
Hình 4.4. Hộp thoại “add new block”........................................................................3
Hình 4.5. Cửa sổ “portal view” và hộp thoại “call options”......................................3
Hình 4.6. Cửa sổ làm việc.........................................................................................3
Hình 4.7. Cửa sổ cấu hình PID..................................................................................3
Hình 4.8. Cửa sổ cấu hình PID..................................................................................3
Hình 4.9. Cửa sổ cấu hình PID..................................................................................3
Hình 4.10. Cửa sổ làm việc.......................................................................................3
Hình 4.11. Cửa sổ “commissioning”..................................................................................................3
Hình 5.1. Sơ đồ hoạt động của bộ điều khiển............................................................3
Hình 5.2. Cấu tạo cặp nhiệt điện................................................................................1
Hình 5.3. Cấu tạo lò nhiệt..........................................................................................1
Hình 5.4. Kết nối truyền thông PC, HMI và PLC S7-1200.......................................3
Hình 5.5. Sơ đồ đấu dây các thiết bị vào PLC...........................................................3
Hình 5.6. Lưu đồ giải thuật........................................................................................3
Hình 5.7. Cây dự án và bảng PLC tag.......................................................................3
Hình 5.8. Cây dự án và hộp thoại “Add new block”..................................................3
Hình 5.9. Cửa sổ lập trình và hộp thoại “call options”..............................................3
Hình 5.10. Thuô ̣c tính “Configuration” trong cửa sổ kiểm tra..................................3
Hình 5.11. Thuộc tính “Properties” trong cửa sổ kiểm tra.........................................3
Hình 5.12. Hộp thoại thuộc tính của thiết bị..............................................................3
Hình 5.13. Cửa sổ cấu hình bộ điều khiển PID..........................................................3
Hình 5.14. Cửa sổ “commissing”..............................................................................3
Hình 5.15. Các tham số bộ điều khiển PID................................................................3
Hình 5.16. Khối lệnh PID..........................................................................................3
Hình 5.17. Biểu đồ trên màn hình HMI.....................................................................3
Hình 5.18. Thuộc tính “properties” trong cửa sổ kiểm tra.........................................3
Hình 5.19. Thuộc tính trend trong “properties” cửa sổ kiểm tra................................3
Hình 5.20. Hộp thoại các HMI tag và PLC tags........................................................3
Hình 5.21. Màn hình biên tập HMI...........................................................................3
Hình 5.22. Mô phỏng trên màn hình HMI.................................................................3
Hình 5.23. Đặt nhiệt độ điều khiển............................................................................3
Hình 5.24. Đáp ứng của bộ điều khiển nhiệt độ.........................................................3
Hình 5.25. Đáp ứng ổn định..............................................................................................................3
Hình C. 1. Thuộc tính “HSC” của CPU.....................................................................3
Hình C. 2. Cấu hình HSC..........................................................................................3
Hình C. 3. Biểu đồ reset đáp ứng PID_Compact V1.1..............................................3
Hình C. 4. Biểu đồ reset đáp ứng PID_Compact V1.0..............................................3
Hình C. 5. Sự hoạt động của bộ điều khiển PID_Compact........................................3
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..............................................................................................3
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..............................................................................................3
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í.......3
Hình C. 9. Hoạt động của bộ điều khiển PID_3Step có hồi tiếp vị trí.......................3
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)..........3
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)...............3
MỤC LỤC BẢNG

Bảng 1. 1. So sánh giữa các model CPU...................................................................3


Bảng 1. 2. Các khối, bộ định thời và bộ đếm.............................................................3
Bảng 1. 3. Module tín hiệu và broad tín hiệu số........................................................3
Bảng 1. 4. Module tín hiệu và broad tín hiệu tương tự..............................................3
Bảng 1. 5. Các giao thức truyền thông.......................................................................3
Bảng 1. 6. Các broad khác.........................................................................................3
Bảng 1. 7. Các bảng hiển thị HMI.............................................................................3
Bảng 1. 8. Các yêu cầu hệ thống........................................................................................................3
Bảng 3. 1. Các hướng dẫn để thiết kế một hệ thống PLC..........................................3
Bảng 3. 2. Các miền toán hạng của system memory.................................................3
Bảng 3. 3. Các kiểu dữ liệu cho S7-1200..................................................................3
Bảng 3. 4. Cấp độ bảo mật cho CPU.........................................................................3
Bảng 3. 5. Giám sát và sửa đổi dữ liệu trong CPU....................................................3
Bảng 3. 6. Các phần tử tham chiếu chéo...........................................................................................3
Bảng 4. 1. Các kiểu dữ liệu của các tham số lê ̣nh PID_Compact..............................3
Bảng 5.1. Tầm đo của các loại că ̣p nhiệt điện............................................................1
Bảng A. 1. Các tiếp điểm thường mở và thường đóng..............................................3
Bảng A. 2. Các kiểu dữ liệu cho các tham số (tiếp điểm NO và NC)........................3
Bảng A. 3. Các hộp lệnh AND, OR và XOR.............................................................3
Bảng A. 4. Các kiểu dữ liệu cho các tham số hộp lệnh AND, OR và XOR...............3
Bảng A. 5. Bộ đảo logic NOT...................................................................................3
Bảng A. 6. Ngõ ra cuộn dây (LAD) và ngõ ra hộp lệnh gán (FBD)..........................3
Bảng A. 7. Các kiểu dữ liệu cho các tham số (ngõ ra cuộn dây)...............................3
Bảng A. 8. Các lệnh S và R.......................................................................................3
Bảng A. 9. Các kiểu dữ liệu cho các tham số lệnh S và R.........................................3
Bảng A. 10. Các lệnh SET_BF và RESET_BF.........................................................3
Bảng A. 11. Các kiểu dữ liệu cho các tham số lệnh SET_BF và RESET_BF...........3
Bảng A. 12. Các lệnh RS và SR................................................................................3
Bảng A. 13. Các kiểu dữ liệu cho các tham số lệnh RS và SR..................................3
Bảng A. 14. Lê ̣nh phát hiện chuyển đổi dương và âm...............................................3
Bảng A. 15. Các lệnh P_TRIG và N_TRIG...............................................................3
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).............................................................................................3
Bảng A. 17. Các lệnh bộ định thì...............................................................................3
Bảng A. 18. Các kiểu dữ liệu cho các tham số lệnh bộ định thì.................................3
Bảng A. 19. Ảnh hưởng của việc thay đổi giá trị các tham số PT và IN....................3
Bảng A. 20. Kích thước và phạm vi của kiểu dữ liệu TIME......................................3
Bảng A. 21. Các kiểu của các bộ định thì IEC...........................................................3
Bảng A. 22. Các lệnh bộ đếm....................................................................................3
Bảng A. 23. Các kiểu dữ liệu cho các tham số lệnh bộ đếm......................................3
Bảng A. 24. Các lệnh so sánh....................................................................................3
Bảng A. 25. Các kiểu dữ liệu cho các tham số lệnh so sánh......................................3
Bảng A. 26. Mô tả sự so sánh....................................................................................3
Bảng A. 27. Các lệnh In-rang và Out-rang................................................................3
Bảng A. 28. Các kiểu dữ liệu cho các tham số lệnh In-rang và Out-rang..................3
Bảng A. 29. Các lệnh OK và Not OK........................................................................3
Bảng A. 30. Các kiểu dữ liệu cho các tham số lệnh OK và Not OK..........................3
Bảng A. 31. Sự hoạt động lệnh OK và Not OK.........................................................3
Bảng A. 32. Lệnh CALCULATE..............................................................................3
Bảng A. 33. Các kiểu dữ liệu cho các tham số lệnh CALCULATE..........................3
Bảng A. 34. Các lệnh cộng, trừ, nhân và chia............................................................3
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).......................................................................................................................... 3
Bảng A. 36. Các trạng thái ENO lệnh cộng, trừ, nhân và chia...................................3
Bảng A. 37. Lệnh MOD............................................................................................3
Bảng A. 38. Các kiểu dữ liệu cho các tham số lệnh MOD........................................3
Bảng A. 39. Các giá trị ENO lệnh MOD...................................................................3
Bảng A. 40. Lệnh NEG.............................................................................................3
Bảng A. 41. Các kiểu dữ liệu cho các tham số lệnh NEG..........................................3
Bảng A. 42. Các trạng thái ENO lệnh NEG..............................................................3
Bảng A. 43. Các lệnh INC và DEC...........................................................................3
Bảng A. 44. Các kiểu dữ liệu cho các tham số lệnh INC và DEC.............................3
Bảng A. 45. Các trạng thái ENO lệnh INC và DEC..................................................3
Bảng A. 46. Lệnh ABS..............................................................................................3
Bảng A. 47. Các kiểu dữ liệu cho các tham số lệnh ABS..........................................3
Bảng A. 48. Các trạng thái ENO lệnh ABS...............................................................3
Bảng A. 49. Các lệnh MIN và MAX.........................................................................3
Bảng A. 50. Các kiểu dữ liệu cho các tham số lệnh MIN và MAX...........................3
Bảng A. 51. Các trạng thái ENO lệnh MIN và MAX................................................3
Bảng A. 52. Lệnh LIMIT..........................................................................................3
Bảng A. 53. Các kiểu dữ liệu cho các tham số lệnh LIMIT.......................................3
Bảng A. 54. Các trạng thái ENO lệnh LIMIT............................................................3
Bảng A. 55. Ví dụ về các lệnh toán học dấu phẩy động............................................3
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......3
Bảng A. 57. Các trạng thái ENO các lệnh toán học dấu phẩy động...........................3
Bảng A. 58. Các lệnh MOVE, MOVE_BLK và UMOVE_BLK...............................3
Bảng A. 59. Các kiểu dữ liệu cho lệnh MOVE..........................................................3
Bảng A. 60. Các kiểu dữ liệu cho các lệnh MOVE_BLK và UMOVE_BLK............3
Bảng A. 61. Các trạng thái ENO lệnh MOVE, MOVE_BLK và UMOVE_BLK......3
Bảng A. 62. Các lệnh FieldRead và FieldWrite.........................................................3
Bảng A. 63. Các tham số của các phần tử lệnh FieldRead và FieldWrite..................3
Bảng A. 64. Các lệnh FILL_BLK và UFILL_BLK...................................................3
Bảng A. 65. Các kiểu dữ liệu cho các tham số lệnh FILL_BLK và UFILL_BLK.....3
Bảng A. 66. Các trạng thái ENO lệnh FILL_BLK và UFILL_BLK..........................3
Bảng A. 67. Lệnh SWAP..........................................................................................3
Bảng A. 68. Các kiểu dữ liệu cho các tham số lệnh SWAP.......................................3
Bảng A. 69. Lệnh chuyển đổi (CONV).....................................................................3
Bảng A. 70. Các kiểu dữ liệu cho các tham số lệnh chuyển đổi (CONV).................3
Bảng A. 71. Các trang thái ENO lệnh chuyển đổi (CONV)......................................3
Bảng A. 72. Sự chuyển đổi từ Bool, Word hoặc DWord...........................................3
Bảng A. 73. Sự chuyển đổi từ một số nguyên ngắn (SInt hoặc USInt)......................3
Bảng A. 74. Sự chuyển đổi từ một số nguyên (Int hoặc UInt)...................................3
Bảng A. 75. Sự chuyển đổi từ một cặp số nguyên (DInt hoặc UDInt).......................3
Bảng A. 76. Chuyển đổi từ một số thực (Real hoặc LReal).......................................3
Bảng A. 77. Sự chuyển đổi từ Time, DTL, TOD hoặc Date......................................3
Bảng A. 78. Sự chuyển đổi từ một ký tự hoặc một chuỗi..........................................3
Bảng A. 79. Các lệnh làm tròn (ROUN) và bỏ bớt (TRUNC)...................................3
Bảng A. 80. Các kiểu dữ liệu cho các tham số lệnh ROUND và TRUNC.................3
Bảng A. 81. Các trạng thái ENO lệnh ROUND và TRUNC......................................3
Bảng A. 82. Các lệnh ceiling (CEIL) và (FLOOR)...................................................3
Bảng A. 83. Các kiểu dữ liệu cho các tham số lê ̣nh CEIL và FLOOR......................3
Bảng A. 84. Các trạng thái ENO lê ̣nh CEIL và FLOOR...........................................3
Bảng A. 85. Các lệnh SCALE_X và NORM_X........................................................3
Bảng A. 86. Các kiểu dữ liệu cho các tham số lệnh SCALE_X và NORM_X..........3
Bảng A. 87. Các trạng thái ENO lệnh SCALE_X và NORM_X...............................3
Bảng A. 88. Lệnh JMP, JMPN và LABEL................................................................3
Bảng A. 89. Các kiểu dữ liệu cho các tham số lệnh JMP, JMPN và LABEL............3
Bảng A. 90. Lệnh JMP_LIST....................................................................................3
Bảng A. 91. Các kiểu dữ liệu cho các tham số lệnh JMP_LIST................................3
Bảng A. 92. Lệnh SWITCH......................................................................................3
Bảng A. 93. Các kiểu dữ liệu cho các tham số lệnh SWITCH...................................3
Bảng A. 94. Kiểu dữ liệu và các hoạt động so sánh của hộp SWITCH.....................3
Bảng A. 95. Lệnh điều khiển thực thi trả về giá trị (RET).........................................3
Bảng A. 96. Các kiểu dữ liệu cho các tham số lê ̣nh RET..........................................3
Bảng A. 97. Các lệnh AND, OR và XOR..................................................................3
Bảng A. 98. Các kiểu dữ liệu cho các tham số lệnh AND, OR và XOR....................3
Bảng A. 99. Lệnh INV..............................................................................................3
Bảng A. 100. Các kiểu dữ liệu cho các tham số lệnh INV.........................................3
Bảng A. 101. Các lệnh ENCO và DECO...................................................................3
Bảng A. 102. Các kiểu dữ liệu cho các tham số lệnh ENCO và DECO.....................3
Bảng A. 103. Tham số OUT cho ENCO...................................................................3
Bảng A. 104. Các ví dụ lê ̣nh ENCODE và DECODE...............................................3
Bảng A. 105. Lệnh SEL (lựa chọn)...........................................................................3
Bảng A. 106. Các kiểu dữ liệu cho lệnh SEL............................................................3
Bảng A. 107. Lệnh MUX (dồn kênh)........................................................................3
Bảng A. 108. Các kiểu dữ liệu cho lệnh MUX..........................................................3
Bảng A. 109. Lệnh DEMUX (phân kênh).................................................................3
Bảng A. 110. Các kiểu dữ liệu cho lệnh DEMUX.....................................................3
Bảng A. 111. Các trạng thái ENO cho các lệnh MUX và DEMUX..........................3
Bảng A. 112. Các lệnh SHR và SHL........................................................................3
Bảng A. 113. Các kiểu dữ liệu cho các tham số lệnh SHR và SHL..........................3
Bảng A. 114. Ví dụ về SHL cho dữ liệu Word..........................................................3
Bảng A. 115. Các lệnh ROR và ROL........................................................................3
Bảng A. 116. Các kiểu dữ liệu cho các tham số lệnh ROR và ROL..........................3
Bảng A. 117. Ví dụ về ROR cho dữ liệu Word....................................................................................3
Bảng B. 1. Lệnh T_CONV (chuyển đổi thời gian)....................................................3
Bảng B. 2. Các kiểu dữ liệu cho các tham số T_CONV............................................3
Bảng B. 3. Các lệnh T_ADD (Time Add) và T_SUB (Time Subtract).....................3
Bảng B. 4. Các kiểu dữ liệu cho các tham số T_ADD và T_SUB.............................3
Bảng B. 5. Lệnh T_DIFF (Time Difference).............................................................3
Bảng B. 6. Các kiểu dữ liệu cho các tham số T_DIFF...............................................3
Bảng B. 7. Lệnh T_COMBINE (kết hợp các giá trị thời gian)..................................3
Bảng B. 8. Các kiểu dữ liệu cho các tham số T_COMBINE.....................................3
Bảng B. 9. Các lệnh về thời gian hệ thống................................................................3
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................3
Bảng B. 11. Các mã điều kiện lê ̣nh về thời gian hệ thống.........................................3
Bảng B. 12. Lệnh chuyển đổi chuỗi S_CONV..........................................................3
Bảng B. 13. Các kiểu dữ liệu lê ̣nh S_CONV (chuỗi sang giá trị)..............................3
Bảng B. 14. Các kiểu dữ liệu lê ̣nh S_CONV (chuỗi sang giá trị)..............................3
Bảng B. 15. Độ dài chuỗi tối đa của mỗi kiểu dữ liệu...............................................3
Bảng B. 16. Lệnh đổi chuỗi sang giá trị (STRG_VAL).............................................3
Bảng B. 17. Các kiểu dữ liệu cho lệnh STRG_VAL.................................................3
Bảng B. 18. Định dạng lệnh STRG_VAL.................................................................3
Bảng B. 19. Các giá trị của tham số FORMAT.........................................................3
Bảng B. 20. Sự hoạt động đổi giá trị sang chuỗi (VAL_STRG)................................3
Bảng B. 21. Các kiểu dữ liệu cho lệnh VAL_STRG.................................................3
Bảng B. 22. Định dạng lệnh STRG_VAL.................................................................3
Bảng B. 23. Các giá trị cho tham số FORMAT lệnh STRG_VAL............................3
Bảng B. 24. Các trạng thái ENO lệnh STRG_VAL...................................................3
Bảng B. 25. Các ví dụ về chuyển đổi chuỗi thành giá trị S_CONV..........................3
Bảng B. 26. Các ví dụ về chuyển đổi giá trị thành chuỗi S_CONV..........................3
Bảng B. 27. Các ví dụ về chuyển đổi STRG_VAL...................................................3
Bảng B. 28. Các ví dụ về chuyển đổi VAL_STRG.................................................................................3
Bảng C. 1. Lệnh CTRL_HSC....................................................................................3
Bảng C. 2. Các kiểu dữ liệu cho các tham số lệnh CTRL_HSC................................3
Bảng C. 3. Các giá trị STATUS (W#16#) lệnh CTRL_HSC.....................................3
Bảng C. 4. Tần số cực đại (kHz) của các bô ̣ đếm tốc đô ̣ cao.....................................3
Bảng C. 5. Các chế độ đếm của HSC........................................................................3
Bảng C. 6. Cổng vào HSC thiết lập cho CPU 1214C và CPU 1215C.......................3
Bảng C. 7. Cổng vào HSC được gán cho các SB.......................................................3
Bảng C. 8. Giá trị hiện hành của HSC.......................................................................3
Bảng C. 9. Chèn lệnh PID và đối tượng công nghệ...................................................3
Bảng C. 10. (Tùy chọn) tạo một đối tượng công nghệ từ đường dẫn dự án...............3
Bảng C. 11. Lệnh PID_Compact...............................................................................3
Bảng C. 12. Các kiểu dữ liệu của các tham số lệnh PID_Compact............................3
Bảng C. 13. Các tham số ErrorBit lệnh PID_Compact..............................................3
Bảng C. 14. Lệnh PID_3Step....................................................................................3
Bảng C. 15. Các kiểu dữ liệu cho các tham số lệnh PID_3Step.................................3
Bảng C. 16. Các tham số ErrorBit lệnh PID_3Step...................................................3
Bảng C. 17. Các cài đặt cấu hình mẫu cho lệnh PID_Compact.................................3
Bảng C. 18. Các cài đặt cấu hình mẫu cho lệnh PID_Compact.................................3
Bảng C. 19. Cấu hình mẫu cho màn hình (PID_3Step).............................................3
CHƯƠNG I

TỔNG QUAN VỀ PLC S7-1200

1.1. Giới thiệu PLC S7-1200

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.

 Bộ phận kết nối nguồn

 Các bộ phận kết nối dây của người dùng


có thể tháo được (phía sau các nắp che)

 Khe cắm thẻ nhớ nằm dưới cửa phía trên

 Các LED trang thái dành cho I/O tích hợp.


Hình 1.1. CPU PLC S7-1200
Các kiểu CPU khác nhau cung cấp một sự đa dạng các tính năng và dung
lượng giúp cho người dùng tạo ra các giải pháp có hiệu quả cho nhiều ứng dụng
khác nhau.

Bảng 1.1. So sánh giữa các model CPU


Tính năng CPU1211C CPU1212C CPU1214C CPU1215C
Kích thước vật lý 90 x 100 x 90 x 100 x 110 x 100 x 130 x 100 x
(mm) 75 75 75 75
Bộ nhớ Work 30 Kbytes 50 Kbytes 75 Kbytes 100 Kbytes
người Load 1 Mbyte 1 Mbyte 4 Mbyte 4 Mbyte
dùng Retentive 10 Kbytes 10 Kbytes 10 Kbytes 10 Kbytes
I/O tích 6 inputs/4 8 inputs/6 14 inputs/10 14 inputs/10
Kiểu số
hợp trên outputs outputs outputs outputs
CPU (on- Kiểu 2 inputs / 2
2 inputs 2 inputs 2 inputs
broad) tương tự outputs
Kích Inputs (I) 1024 bytes 1024 bytes 1024 bytes 1024 bytes
thước bộ Outputs
1024 bytes 1024 bytes 1024 bytes 1024 bytes
đệm (Q)
Bit nhớ (M) 4096 bytes 4096 bytes 4096 bytes 4096 bytes
Module mở rộng vào
None 2 8 8
ra (SM)
board tín hiệu (SB),
board pin
1 1 1 1
(BB) hoặc board
truyền thông (CB)
Module truyền thông
(CM)
3 3 3 3
(mở rộng về phía bên
trái)
3 built-in 4 built-in
Total I/O, 5 I/O, 6 6 6
with SB with SB
3 at 100 kHz 3 at 100 kHz 3 at 100 kHz 3 at 100 kHz
Bộ đếm Single SB: 2 at 30 1 at 30 kHz 3 at 30 kHz 3 at 30 kHz
tốc độ phase kHz SB: 2 at 30
cao kHz
3 at 80 kHz 3 at 80 kHz 3 at 80 kHz 3 at 80 kHz
Quadratur SB: 2 at 20 1 at 20 kHz 3 at 20 kHz 3 at 20 kHz
e phase kHz SB: 2 at 20
kHz
Ngõ ra xung 4 4 4 4
Card nhớ SIMATIC Memory card (optional)
Lưu trữ thời gian Chuẩn là 20 / nhỏ nhất là 12 ngày ở nhiệt độ 400C (duy
đồng hồ thời gian
trì bằng tụ điện có điện dung lớn)
thực
2 cổng
PROFINET 1 cổng truyền thông Ethernet truyền thông
Ethernet
Tốc độ thực thi phép
2.3 μs/lệnh
toán thực
Tốc độ thực thi logic
0.08 μs/lệnh
Boolean

Bảng 1.2. Các khối, bộ định thời và bộ đếm


Element Mô tả
Blocks Loại OB, FB, FC, DB
Kích cỡ 30 Kbytes (CPU 1211C)
50 Kbytes (CPU 1212C)
64 Kbytes (CPU 1214C và CPU 1215C)
Số lượng Tổng cộng lên tới 1024 khối (OBs + FBs +
FCs + DBs)
Miền địa chỉ FBs, FCs 1 tới 65535 (như là: FB 1 tới FB 65535)
và DBs
Bề dày lồng nhau 16 từ OB chu kỳ chương trình hoặc khởi
đô ̣ng; 4 từ các OB thời gian trễ ngắt, ngắt
thời gian thực, ngắt chu kỳ, ngắt phần cứng,
ngắt lỗi định thời, ngắt lỗi chuẩn đoán.
Giám sát Trạng thái của 2 khối mã có thể được theo
dõi đồng thời
OBs Chu kỳ chương trình Multiple: OB 1, OB 200 tới OB 65535
Khởi động Multiple: OB 100, OB 200 tới OB 65535
Thời gian trễ ngắt và 4 (1 trên sự kiện): OB 200 tới OB 65535
ngắt chu kỳ
Các ngắt phần cứng 50 (1 trên sự kiện): OB 200 tới OB 65535
(edges và HSC)
Các ngắt lỗi định thời 1: OB 80
Các ngắt lỗi chuẩn đoán 1: OB 82
Timers Type IEC
Quantity Chỉ bị giới hạn bởi kích thước bộ nhớ
Storage Cấu trúc trong DB, 16 bytes/timer
Counters Type IEC
Quantity Chỉ bị giới hạn bởi kích thước bộ nhớ
Storage Cấu trúc trong DB, kích thước phụ thuộc
trên kiểu đếm
 SInt, USInt: 3 bytes
 Int, UInt: 6 bytes
 DInt, UDInt: 12 bytes
1.2. Khả năng mở rộng của CPU

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.

 


Hình 1.2. CPU, SB, CM và SM

 Module truyền thông (CM), Vi xử lý truyền thông (CP) hoặc TS Adapter


 CPU
 Broad tín hiệu (SB), broad truyền thông (CB) hoặc broad pin (BB)
 Module tín hiệu (SM)

Bảng 1.3. Module tín hiệu và broad tín hiệu số


Chỉ có ngõ vào Chỉ có ngõ ra Kết hợp ngõ vào ra
Loại
input output input/output
 SB số  4 x 24VDC  4 x 24VDC  2 x 24VDC In / 2 x
In, 200 kHz Out, 200 kHz 24VDC Out
 4 x 5VDC  4 x 5VDC Out, 2 x 24VDC In / 2 x
In, 200 kHz 200 kHz 24VDC Out, 200 kHz
 2 x 5VDC In / 2 x 5VDC
Out, 200 kHz
 SM số  8 x 24VDC  8 x 24VDC Out  8 x 24VDC In / 8 x
In  8 x Relay Out 24VDC Out
 8 x Relay Out  8 x 24VDC In / 8 x Relay
(Changeover) Out
 8 x 120/230VAC In / 8 x
Relay Out
 16 x 24VDC  16 x 24VDC  16 x 24VDC In / 16 x
In Out 24VDC Out
 16 x Relay Out  16 x 24VDC In / 16 x
Relay Out

Bảng 1.4. Module tín hiệu và broad tín hiệu tương tự


Kết hợp ngõ
Chỉ có ngõ ra
Loại Chỉ có ngõ vào input vào ra
output
input/output
 SB  1 x 12 bit Analog In  1 x Analog Out
tương tự  1 x 16 bit RTD
 1 x 16 bit Thermocouple
 SM  4 x Analog In  2 x Analog Out  4 x Analog
tương tự  4 x Analog In x 16 bit  4 x Analog Out In / 2 x
 8 x Analog In Analog Out
 Thermocouple:
o 4 x 16 bit TC
o 8 x 16 bit TC
 RTD:
o 4 x 16 bit RTD
o 8 x 16 bit RTD

Bảng 1.5. Các giao thức truyền thông


Module Loại Mô tả
RS232 Full-duplex
RS422/485 Full-duplex (RS422)
Half-duplex (RS485)
 Module truyền thông (CM)
PROFIBUS Master DPV1
PROFIBUS Slave DPV1
AS-i Master (CM 1243-2) AS-Interface
 Vi xử lý truyền thông (CP) Modem connectivity GPRS
 Broad truyền thông (CB) RS485 Half-duplex
TS Adapter IE Basic1 Connection to CPU
TS Adapter GSM GSM/GPRS
 Dịch vụ viễn thông TS Adapter Modem Modem
TS Adapter ISDN ISDN
TS Adapter RS232 RS232

Bảng 1.6. Các broad khác


Module Mô tả
 Battery board Cắm vào bên trong broad mở rộng ở mặt trước của CPU. Cung
cấp thời gian dự trữ dài cho đồng hồ thời gian thực.
1.3. Các loại module của S7-1200

1.3.1. Các board tín hiệu

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

 Bộ phận kết nối dây của người dùng có thể tháo



ra

Hình 1.3. Board tín hiệu SB

1.3.2. Các module tín hiệu (SM)

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

Hình 1.4. Module tín hiệu SM

1.3.3. Các module truyền thông (CM)

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).

 Các LED trạng thái (sau nắp che)


  Cổng kết nối truyền thông

Hình 1.5. Module truyền thông CM

1.3.4. Card bộ nhớ SIMATIC

Card nhớ SIMATIC, dùng khi cần mở


rộng bộ nhớ cho CPU, copy chương
trình ứng dụng hay khi cập nhật
firmware.

Hình 1.6. Card nhớ SIMATIC

1.4. Các bảng hiển thị

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

KTP 1000 Basic PN  Màn hình cảm ứng 10  500 nhãn


inch với 8 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)  25 biểu đồ
 211.2 mm x 158.4 mm  40 KB bộ nhớ nhận
(10.4")  5 bộ nhận, 20 bảng
 Độ phân giải: 640 x 480 ghi dữ liệu, 20 mục
nhập
 Màn hình cảm ứng 15  500 nhãn
inch  50 màn hình xử lý
 Kiểu màu (TFT, 256  200 cảnh báo
màu)  25 biểu đồ
 304.1 mm x 228.1 mm  40 KB bộ nhớ nhận
(15.1") (tích hợp flash)
 Độ phân giải: 1024 x 768  5 bộ nhận, 20 bảng
TP 1500 Basic PN ghi dữ liệu, 20 mục
nhập

1.5. Chế độ vận hành của PLC

PLC có ba chế độ vận hành: chế độ STOP, chế độ STARTUP và chế độ


RUN. Các LED trạng thái trên mặt trước của CPU hiển thị chế độ vận hành hiện
hành của nó.
- Trong chế độ STOP, CPU không thực hiện chương trình nên ta có thể tải
xuống CPU một dự án.
- Trong chế độ STARTUP, CPU sẽ thực hiện bất kỳ logic khởi động nào
(đang hiện hành). Các sự kiện ngắt sẽ không được xử lý trong chế độ khởi động.
- Trong chế độ RUN, CPU thực hiện chương trình theo vòng lặp, mỗi vòng
lặp gọi là vòng quét hay chu kỳ quét. Các sự kiện ngắt có thể xảy ra và được xử lý ở
bất kỳ điểm nào trong pha chu kỳ chương trình.
Trong chế độ RUN chúng ta không thể tải xuống CPU bất cứ một dự án nào
mà chỉ có thể tải xuống khi CPU đang ở chế độ STOP.

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ớ.

Hình 1.7. Bảng vận hành

Màu sắc của LED chỉ thị ở RUN/STOP sẽ thể hiện


chế độ vận hành hiện hành của CPU:
 Màu vàng chỉ thị chế độ STOP
 Màu xanh chỉ thị chế độ RUN
 Sáng nhấp nháy chỉ thị chế độ STARTUP.

Hình 1.8. Các LED vận hành


CPU không có công tắc vật lý nào để thực hiện thay đổi chế độ vận hành
(STOP hoặc RUN). Khi cấu hình cho CPU trong cấu hình thiết bị, ta thiết lập cấu
hình trạng thái khởi động trong properties của CPU. Phần mềm STEP7 Basic cung
cấp một bảng điều hành cho việc thay đổi chế độ vận hành của CPU trực tuyến.

1.6. STEP 7 Basic

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.

Bảng 1.8. Các yêu cầu hệ thống


Phần cứng/phần mềm Các yêu cầu
Processor type Pentium M, 1.6 GHz or similar
RAM 1 GB
Available hard disk space 2 GB on system drive C:\
Operating systems  Windows XP Professional SP3
 Windows 2003 Server R2 StdE SP2
 Windows 7 Home Premium (STEP 7 Basic only,
không hỗ trợ cho STEP 7 Professional)
 Windows 7 (Professional, Enterprise, Ultimate)
 Windows 2008 Server StdE R2
Graphics card 32 MB RAM
24-bit color depth
Screen resolution 1024 x 768
Network 20 Mbit/s Ethernet or faster
Optical drive DVD-ROM
1.6.1. Các kiểu xem khác nhau giúp công việc dễ dàng hơn

Nhằm giúp gia tăng hiệu suất công việc, phần Totally Intergrated
Automation Portal cung cấp hai kiểu xem thiết lập công cụ khác nhau: một là thiết
lập được định hướng theo công việc, thiết lập này được tổ chức trong chức năng của
các công cụ (kiểu xem Portal), hai là kiểu xem được định hướng theo 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

Hình 1.9. Cửa sổ “Portal view”

Kiểu xem Project cung cấp sự truy cập đến


tất cả các phần tử trong một dự án.
 Thanh thực đơn và thanh công cụ chuẩn
 Điều hướng dự án
 Miền làm việc
 Thêm thẻ nhiệm vụ
 Cửa sổ kiểm tra
 Chuyển sang kiểu hiển thị Portal
 Thanh biên tập
Hình 1.10. Cửa sổ “Project view”
1.6.2. Trợ giúp người dùng khi cần

Nhanh chóng tìm ra câu trả lời đến người dùng.


Để giúp người dùng giải quyết những vấn đề phát sinh một cách nhanh
chóng và có hiệu quả, STEP 7 Basic cung cấp phần trợ giúp thông minh đến từng
yêu cầu:
Một trường nhập vào cung cấp trợ giúp kiểu “mở ra” để hỗ trợ người dùng
nhập vào thông tin chính xác (các phạm vi và kiểu dữ liệu) đối với trường đó. Ví dụ,
nếu người dùng nhập một giá trị không hợp lệ, một hộp văn bản thông điệp sẽ mở ra
nhằm cung cấp phạm vị các giá trị hợp lệ.
Một số thủ thuật về công cụ trong giao diện (ví dụ đối với các lệnh) “xếp
tầng” nhằm cung cấp thông tin bổ sung. Các thủ thuật về công cụ này sẽ liên kết đến
các chủ đề xác định trong hệ thống thông tin trực tuyến (trợ giúp trực tuyến).
Thêm vào đó STEP 7 Basic có một hệ thống thông tin toàn diện miêu tả một cách
đầy đủ chức năng của các công cụ SIMATIC.

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.

1.6.2.2. Hệ thống thông tin

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.

1.6.2.3. Việc in ấn các chủ đề từ hệ thống thông tin

Để 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. Kết nối phần cứng

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.

Hình 1.11. Chèn bộ mô phỏng tín hiệu vào CPU


1.7.2. Kết nối nguồn tới CPU

 Kết nối nguồn tới CPU

CPU yêu cầu điện áp từ 120 –


240VAC. Chèn dây dẫn đến điện
cực L1 và N, nối đất cho điện cực
đất. Sau đó xiết chặt các ốc vít lại
rồi cấm dây vào ổ cấm.

Hình 1.12. Kết nối nguồn cho CPU

1.7.3. Kết nối cáp PROFINET

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.

 Chèn một đầu cáp PROFINET vào CPU.


Chèn đầu cáp còn lại tới cổng Ethernet của máy
tính hoặc một thiết bị khả trình.

Hình 1.13. Kết nối cáp PROFINET


CHƯƠNG II

XÂY DỰNG DỰ ÁN VỚI TIA PORTAL V11

2.1. Tạo một dự án

Trong Start portal, click vào


“Create new project”.
Nhập tên dự án ở khung “project
name” và click vào nút “Create”.

Sau khi xây dựng dự án, chọn kênh


thiết bị và mạng “Device &
Networks”. Click vào “Add new
device”

Hình 2.1. Cửa sổ hiển thị “Portal view”

Chọn một CPU để thêm vào dự án:


1. Trong hộp thoại “Add new device”,
click vào nút “SIMATIC”.
2. Chọn một CPU từ danh sách.
3. Thêm CPU đã chọn vào dự án, click
vào nút “Add”.
Chú ý là tùy chọn “Open device view” đã
được chọn. Click vào “Add” với tùy chọn
đã chọn này để mở “Device
configuration” trong kiểu xem Project.

Hình 2.2. Hộp thoại “Add new device”


Hình 2.3. Cửa sổ “Device view” hiển thị CPU đã thêm vào

2.2. Cấu hình thiết bị

2.2.1. Cấu hình CPU và các module

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.

Hình 2.4. Cấu hình của CPU và các module

 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

a. Chèn một 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.

Hình 2.5. Hộp thoại “Add new device”

Hình 2.6. Giao diện “Device view”

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.

Hình 2.7. Thuộc tính CPU trong cửa sổ kiểm tra


Ở đây ta chú ý rằng, CPU không có một địa chỉ IP được cấu hình trước. Một
cách thủ công, ta phải gán giá trị địa chỉ IP cho CPU trong suốt việc cấu hình thiết
bị. Nếu CPU được kết nối đến một bộ định tuyến (router) trong mạng thì ta còn phải
nhập vào địa chỉ IP cho router đó.

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.

Hình 2.8. Trình đơn “Online”

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.

Hình 2.9. CPU chưa xác định

Hình 2.10. Hộp thoại “Accessible


device”

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

a. Chèn thêm 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.

b. Cấu hình các thông số của các module

Để cấu hình các thông số vận hành cho các module, lựa chọn module trong
Device view và sử dụng thẻ “Properties” của cửa sổ kiểm tra để cấu hình các thông
số cho module.

 Cấu hình một module tín hiệu (SM) hay một bảng tín hiệu (SB)

- I/O kiểu số: các ngõ vào có thể được cấu hình cho việc phát
hiện ngưỡng tăng hay ngưỡng giảm (mỗi ngưỡng liên quan với
một sự kiện và ngắt phần cứng) và còn cho việc “bắt giữ xung”
(để lưu lại sau một xung tức thời) cho đến cập nhật kế tiếp của
ảnh tiến trình ngõ vào. Các ngõ ra có thể sử dụng một giá trị
ngừng phát triển hay một giá trị thay thế.
- I/O kiểu tương tự: đối với các ngõ vào riêng lẻ, cấu hình các
thông số, như là kiểu đại lượng đo (điện áp hay dòng điện),
phạm vi và sự làm trơn, và để khởi động các chẩn đoán tràn
dưới hay tràn ra. Các ngõ ra cung cấp các thông số như là kiểu
ngõ ra (điện áp hay dòng điện) và dành cho các chẩn đoán, ví
dụ như ngắn mạch (đối với ngõ ra điện áp) hay các chẩn đoán
giới hạn dưới/trên.
- Các địa chỉ chẩn đoán I/O: cấu hình địa chỉ khởi đầu dành cho
thiết lập của các ngõ vào và ngõ ra của module.

 Cấu hình một module truyền thông (CM)


- Cấu hình cổng: cấu hình các thông số truyền thông, như tốc độ
baud, tính chẵn lẻ, các bit dữ liệu, các bit dừng, điều khiển
dòng, các ký tự XON và XOFF, và thời gian chờ.
- Cấu hình thông điệp truyền phát: khởi động và cấu hình các tùy
chọn có liên quan đến truyền phát.
- Cấu hình thông điệp thu nhận: khởi động và cấu hình các thông
số khởi đầu thông điệp và kết thúc thông điệp.
Các thông số cấu hình này có thể được thay đổi bởi chương trình.

2.2.2. Cấu hình hiển thị trên HMI

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.

Cấu hình màn hình và các đối tượng

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

Một màn hình có thể chứa các phần tử tĩnh và động.


 Các phần tử tĩnh như là: các đối tượng văn bản hoặc đồ họa mà trạng
thái của chúng không thay đổi trong quá trình runtime.
 Các phần tử động thay đổi trạng thái của nó phụ thuộc vào quá trình
xử lý. Ta cho hiển thị các giá trị xử lý hiện hành như sau:
- Từ bộ nhớ của PLC
- Từ bộnhớ của HMI trong các hiển thị ký tự số, xu hướng và các
thanh
- Các trường input trên thiết bị HMI cũng được khảo sát cho các đối
tượng động.
Các giá trị xử lý và các input bộ vận hành thì được chuyển tiếp giữa bộ điều
khiển và thiết bị HMI thông qua các tag.

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

2.2.2.2. Cấu hình HMI tags

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ộ.

c. Trình biên tập HMI tags

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

d. Cấu hình các PLC tags trên màn hình HMI

Cấu hình các PLC tags

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.

Hình 2.14. Màn hình biên tập HMI

Cấu hình các recipes

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.

Hình 2.15. Bảng recipes

2.3. Lập trình cho PLC

2.3.1. Tạo các Tag cho các I/O của CPU

“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.

Hình 2.16. Cây dự án và 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ị.

Phóng to cấu hình thiết bị lên tới hơn


200% để các điểm I/O của CPU được
thấy rõ hơn và chọn lựa. Kéo các cổng
vào và ra từ CPU đến bảng tag.
1. Chọn I0.0 và
kéo nó đến hàng đầu tiên
của bảng tag.
2. Thay đổi tên
tag I0.0 thành “Start”.
3. Kéo I0.1 đến
bảng tag và đổi tên thành
“Stop”.
4. Kéo Q0.0 (ở
phía dưới cùng của CPU)
đến bảng tag và đổi tên thành “Running”.

Hình 2.17. Cửa sổ“table tag” và “device view”

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.

2.3.2. Tạo một mạch đơn giản trong chương trì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.

Mở trình biên tập, thực hiện các bước sau:


1. Mở rộng thư mục “Program
blocks” trong cây dự án để hiển thị khối
“Main [OB1]”.
2. Double-click vào khối “Main
[OB1]”.

Hình 2.18. Cây dự án

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.

“Favorites” cũng cung cấp một nút để xây


dựng một nhánh.
1.Chọn thanh rail trái để chọn thanh
rail cho nhánh.
2.Click vào biểu tượng“Open
branch” để thêm một nhánh đến một
thanh rail của mạng.
3.Chèn tiếp điểm thường mở khác để
mở một nhánh.
4.Kéo đầu muỗi tên kép đến điểm kết
nối (ô vuông xanh trên thanh ngang)
giữa hai tiếp điểm trên thanh ngang đầu
tiên.

Hình 2.19. Cửa sổ lập trình.

Để 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.

1. Double-click vào địa chỉ mặt định <??.?>ở


bên trên của tiếp điểm thường mở đầu tiên.
2. Click vào biểu tượng lựa chọn ở bên phải
của ô địa chỉ để mở các tag trong bảng tag.
3. Từ danh sách thả, chọn “Start” cho tiếp
điểm đầu tiên.
4. Đối với tiếp điểm thứ hai, lặp lại các bước như trước và chọn tag “Stop”.
5. Đối với cuộn dây và tiếp điểm tự giữ, chọn tag “Running”.
Hình 2.20. Cửa sổ lập trình
Ta cũng có thể kéo các địa chỉ I/O
trực tiếp từ CPU.
 Đầu tiên, ta phải phóng to
CPU lên tới hơn 200% để thấy rõ các
điểm I/O.
 Sau đó, có thể kéo I/O trên
CPU trong “Device configuration” tới
lệnh LAD trong trình biên tập để tạo
nên không những địa chỉ lệnh, mà
còn tạo ra một mục trong bảng PLC
tag.

Hình 2.21. Cửa sổ “device view” và cửa xổ lập trình

2.3.4. Thêm vào một hộp lệnh

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”.

Hộp lệnh chung này hỗ trợ các


lệnh khác nhau. Ví dụ, xây dựng
một lệnh ADD:
1. Click vào góc màu vàng của hộp
lệnh để hiển thị danh sách thả của
các lệnh.
2. Lướt xuống danh sách và chọn lệnh
ADD.
3. Click vào góc màu vàng ở vị trí
“???” để chọn kiểu dữ liệu cho các
input và output.
Bây giờ ta có thể nhập vào các tag (hoặc địa chỉ bộ nhớ) cho các giá trị để sử
dụng với lệnh ADD.

Hình 2.22. Hộp lệnh biên tập trên network


Ta cũng có thể tạo thêm các cổng vào input cho các lệnh đã
biết:
1. Click vào một cổng của các cổng vào input ở bên ngoài
hộp lệnh.
2. Click phải chuột để hiển thị menu thuộc tính và chọn lệnh
“insert input”
Lệnh ADD bây giờ có thể sử dụng với 3 tín hiện vào input.

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.

Hình 2.23. Tập lệnh cơ bản

Lệnh CALCULATE chưa được cấu


hình cung cấp hai tham số đầu vào và
một tham số đầu ra.

Hình 2.24. Hộp lệnh CALCULATE

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.

Hình 2.25. Hộp thoại “Edit “Calculate” instruction”

Đố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:

OUT = ((in4 - in5) / (in2 - in3)) * (in1 - in3) + in5

Khi ta click vào “OK”, lệnh tính


toán CALCULATE xây dựng các tham số
cổng vào được yêu cầu cho lệnh.

Nhập tên các tag cho các giá trị


tương ứng với các tham số.

Hình 2.26. Hộp lệnh


CALCULATE được tham số hóa
2.3.6. Thêm vào dự án thiết bị HMI

1. Double-click vào biểu tượng


“Add new device”.
2. Click vào nút “SIMATIC
HMI” trong hộp thoại “Add new
device”.
3. Chọn thiết bị HMI từ danh
sách.
Ta có thể chọn “Start device
wizard” để chạy wizard HMI
giúp ta cấu hình màn hình cho
thiết bị HMI.
4. Click “OK” để thêm thiết bị
HMI đến dự án.

Hình 2.27. Hộp thoại “Add new device"

Thiết bị HMI đã được thêm vào dự án.

STEP 7 cung cấp một trình thuật sĩ HMI


để giúp ta cấu hình tất cả cho màn hình
và cấu trúc cho thiết bị HMI của mình.
Nếu ta không chạy trình thuật sĩ HMI,
thì STEP 7 sẽ tạo mặc định màn hình
HMI đơn giản.

Hình 2.28. Màn hình biên tập HMI


2.3.7. Tạo một kết nối mạng giữa HMI và CPU

Xây dựng một mạng rất dễ dàng.


Đi đến “Devices and Networks”
và chọn Network view để hiển
thị thiết bị CPU và HMI.

Xây dựng một mạng


PROFINET, kéo ghê một đường
dẫn từ hộp xanh (Ethernet port)
trên một thiết bị đến một thiết bị
khác.

Một kết nối mạng sẽ được thiết lập giữa


hai thiết bị.

Hình 2.29. Liên kết mạng HMI và PLC trong “Network view”

2.3.8. Tạo một kết nối HMI để chia sẻ các tag

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ả.

Sự kết nối HMI sẽ biến hai thiết bị


thành màu xanh dương.

Chọn thiết bị CPU và kéo một


đường dẫn đến thiết bị HMI.

Sự kết nối HMI cho phép ta cấu hình


các HMI tags bằng cách chọn các tag
trong danh sách PLC tags.
Hình 2.30. Kết nối “HMI connection” trong “Network view”

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.

2.3.9. Xây dựng màn hình 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.

STEP7 cung cấp một chuẩn cài


đặt của thư viện hệ thống cho
việc chèn các “Basic objects”,
“Elements” và “Graphics”.

Hình 2.31. Màn hình


biên tập HMI

Để 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.

Hình 2.32.Thuộc tính các phần tử HMI


trong cửa sổ kiểm tra
Hình 2.33. Màn hình biên tập HMI

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).

2.3.10. Chọn một PLC tag gán cho phần tử HMI

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.

Hình 2.34. Cửa sổ các tag PLC

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.

2.4. Tải dữ liệu dự án tới thiết bị

2.4.1. Phạm vi dữ liệu dự án được tải xuống

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ớ.

2.4.3. Các yêu cầu

Dữ liệu dự án là nhất quán.


Dự án đã được biên dịch – cho các thiết bị hoặc đối tượng đã chọn. Nếu
không, dữ liệu dự án sẽ được biên dịch tự động trước khi nó được tải.

2.4.4. Kết quả

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ị.

2.5. Sử dụng các chức năng online

2.5.1. Tổng quan về các chức năng online

2.5.1.1. Chế độ online

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

2.5.1.2. Hiển thị thiết bị truy cập

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ình 2.35. Hộp thoại “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.

2.5.1.3. Going online

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.

Hình 2.36. Hộp thoại “Connect online”


2.5.1.4. Hiển thị thông tin chuẩn đoán

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.

2.5.2. Kiểm tra chương trình người dùng

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

 Thiết bị được kết nối online


 Dữ liệu dự án đang chứa chương trình thực thi đã được tải tới thiết bị

Các tùy chọn kiểm tra

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.

Ví dụ: Hiển thị trạng thái chương trình

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”

2.5.3. Các chức năng chuẩn đoán phần cứng và mạng

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.

Hình 2.39. Thuộc tính “Diagnostics” trong cửa sổ kiểm tra


CHƯƠNG III

CÁC KHÁI NIỆM LẬP TRÌNH

3.1. Các hướng dẫn để thiết kế một hệ thống PLC

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ảng 3.1. Các hướng dẫn để thiết kế một hệ thống PLC.


Các bước đề nghị Các nhiệm vụ
Phân vùng tiến Phân chia tiến trình hay bộ máy thành các khâu có mức độ
trình hay bộ máy phụ thuộc vào nhau. Các phân vùng này xác định các vùng
biên giữa các bộ điều khiển, sự ảnh hưởng các đặc tính kỹ
thuật miêu tả chức năng, và sự phân nhiệm của các tài
nguyên.
Tạo ra các đặc tính Ghi các miêu tả vận hành đối với mỗi công đoạn trong chu
chức năng trình hay bộ máy, như các điểm I/O, miêu tả chức năng của
việc vận hành, các trạng thái phải được đạt đến trước khi
cho phép sự hoạt động đối với mỗi cơ cấu (như một cuộn
dây nam châm, động cơ hay một bộ điều khiển), một sự
miêu tả giao diện điều khiển, và bất kỳ các giao diện nào
với các công đoạn khác của tiến trình hay bộ máy.
Thiết kế các mạch Nhận dạng bất kỳ thiết bị nào có thể yêu cầu logic gắn cứng
an toàn để an toàn. Hãy nhớ rằng các thiết bị điều khiển có thể hư
hỏng khi làm phương pháp không an toàn, điều này có thể
sinh ra sự khởi động hay sự thay đổi không mong muốn
trong quá trình hoạt động của máy móc. Tại nơi mà sự vận
hành không chính xác hay không được mong muốn của thiết
bị có thể gây ra hậu quả về mặt tổn thương vật lý đến con
người hay sự hủy hoại tài sản đáng kể, cần cân nhắc đến
việc thực thi của việc khống chế bằng điện cơ. Các nhiệm
vụ sau đây nên được cài đặt sẵn trong thiết kế của các mạch
an toàn:
 Nhận dạng bất kỳ sự vận hành không bình thường
hay không mong muốn của các cơ cấu mà có thể
nguy hiểm.
 Nhận dạng các điều kiện sẽ bảo đảm sự vận hành
không nguy hiểm, và xác định làm cách nào để phát
hiện các điều kiện này một cách độc lập với PLC.
 Nhận dạng bằng cách nào mà PLC tác động đến tiến
trình khi đặt vào hay gỡ bỏ nguồn điện, và còn nhận
dạng bằng cách nào và khi nào mà các lỗi được phát
hiện. Chỉ sử dụng thông tin này dành cho việc thiết
kế sự vận hành bình thường hay bất bình thường theo
mong muốn. Ta không nên phụ thuộc vào viễn cảnh
của tình huống tốt nhất này đối với các mục đích an
toàn.
 Thiết kế việc khống chế an toàn bằng tay hay bằng
điện cơ mà ngăn chặn sự vận hành nguy hiểm một
cách độc lập với PLC.
 Cung cấp thông tin trạng thái thích hợp từ các mạch
độc lập đến PLC đểchương trình và bất kỳ các giao
diện điều khiển khác có được thông tin cần thiết.
 Nhận dạng bất kỳyêu cầu nào có liên quan đến tính
an toàn khác dành cho sự hoạt động an toàn của tiến
trình.
Xác định các trạm Dựa trên những yêu cầu của các thông số kỹ thuật chức
điều hành năng, tạo ra các bản vẽ sau đây cho các trạm điều hành:
 Bản vẽ tổng quan thể hiện vị trí của mỗi trạm điều
hành theo quan hệ đến tiến trình hay bộ máy.
 Bản vẽ bố trí máy móc của các thiết bị dành cho trạm
điều hành, như bộ hiển thị, các chuyển mạch và đèn.
 Bản vẽ điện với I/O có liên quan của PLC và các
module tín hiệu.
Tạo ra các bản vẽ Dựa trên những yêu cầu của các thông số kỹ thuật chức
về cấu hình năng, tạo ra các bản vẽ cấu hình của thiết bị điều khiển:
 Bản vẽ tổng quan thể hiện vị trí của mỗi PLC theo
quan hệ đến tiến trình hay bộ máy.
 Bản vẽ bố trí máy móc của mỗi PLC và bất kỳ các
module I/O, bao gồm các tủ máy và thiết bị khác.
 Bản vẽ điện cho mỗi PLC và bất kỳ các module I/O,
bao gồm các số hiệu mẫu của thiết bị, các địa chỉ
truyền thông và các địa chỉ I/O.
Tạo ra một danh Tạo ra một danh sách các tên gọi ký hiệu cho các địa chỉ
sách các tên gọi ký tuyệt đối. Bao gồm không chỉ các tín hiệu I/O vật lý mà còn
hiệu các phần tử khác (như các tên thẻ ghi) để được sử dụng
trong chương trình.
3.2. Cấu trúc bộ nhớ S7-1200

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.

3.2.1. Bộ nhớ nạp (load memory)

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.

3.2.2. Bộ nhớ làm việc (work memory)

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.

3.2.3. Bộ nhớ hệ thống (system memory)

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ớ.

Bảng 3.2. Các miền toán hạng của system memory


Các miền toán hạn Chức năng Kích thước truy Ký
cập hiệu
Process image CPU sẽ chuyển giá trị logic Output (bit) QB
output của bộ đệm Q tới các cổng Output word QD
(Bộ đệm ra số) ra số. Output (bit) QB
Output word QD
Process image input CPU sẽ đọc giá trị logic của Input (bit) IB
(Bộ đệm vào số) tất cả các cổng vào và cất dữ Input word ID
chúng trong vùng nhớ I lúc Input (bit) IB
bất đầu chu kỳ quét. Input word ID
Bit memory Chương trình ứng dụng sử Bit memory (bit) MB
(Vùng nhớ cờ) dụng các tham số này để lưu Memory word MD
trữ các tham số cần thiết. Bit memory (bit) MB
Memory word MD
Data block Miền chứa dữ liệu được tổ Data bit DBB
(Khối dữ liệu share) chức thành khối. Kích thước, Data word DBD
số lượng do người dùng quy Data bit DBB
định phù hợp với từng bài Data word DBD
toán điều khiển.
Local data Được các khối OB, FB, FC Local data bit LB
(Miền dữ liệu địa tổ chức và sử dụng cho các Local data word LD
phương) biến nháp tức thời và trao Local data bit LB
đổi dữ liệu của biến hình Local data word LD
thức với những chương trình
gọi nó. Nội dung dữ liệu
trong miền nhớ sẽ bị xóa khi
kết thúc chương trình.
I/O input area Miền I/O vào và ra cho phép I/O input bit <tag>
(Miền I/O cổng vào) truy cập trực tiếp tới các I/O input word :P
cổng vào và ra trên CPU hay I/O input bit
các module mở rộng. I/O input word
I/O output area I/O output bit
(Miền I/O cổng ra) I/O output byte
I/O output word
I/O output double
word

3.2.4. Các kiểu dữ liệu được hỗ trợ bởi S7-1200

Bảng 3.3. Các kiểu dữ liệu cho S7-1200


Kiểu dữ liệu Kích Phạm vi Ví dụ
thước
Bool (Boolean) 1 bit 0 to 1 TRUE, FALSE, 0,
1
Byte 8 bits 16#00 to 16#FF 16#12, 16#AB
(byte) (1 byte)
Word 16 bits 16#0000 to 16#FFFF 16#ABCD,
(word) (2 bytes) 16#0001
DWord 32 bits 16#00000000 to 16#02468ACE
(double word) (4 bytes) 16#FFFFFFFF
Char 8 bits 16#00 to 16#FF 'A', 't', '@'
(character) (1 byte)
SInt 8 bits -128 to 127 123, -123
(short integer) (1 byte)
USInt 8 bits 0 to 255 123
(unsigned short (1 byte)
integer)
Int 16 bits -32,768 to 32,767 123, -123
(integer) (2 bytes)
UInt 16 bits 0 to 65,535 123
(unsigned (2 bytes)
integer)
DInt 32 bits -2,147,483,648 to 123, -123
(double integer) (4 bytes) 2,147,483,647
UDInt 32 bits 0 to 4,294,967,295 123
(unsigned double (4 bytes)
integer)
Real 32 bits +/-1.18 x 10-38to +/-3.40 x 123.456, -3.4,
(real or floating (4 bytes) 1038 -1.2E+12,
point) 3.4E-3
LReal 64 bits +/-2.23 x 10-308 to +/-1.79 x 12345.123456789
(long real) (8 bytes) 10308 -1.2E+40
Time 32 bits T#- T#5m_30s
(time) (4 bytes) 24d_20h_31m_23s_648ms to 5#-2d
T#24d_20h_31m_23s_647ms T#1d_2h_15m_30
Stored as: -2,147,483,648 ms x_45ms
to +2,147,483,647 ms
String Variable 0 to 254 byte-size characters 'ABC'
(character string)
DTL1 12 bytes Minimum: DTL#2008-12-16-
(date and time DTL#1970-01-01-00:00:00.0 20:30:20.250
long) Maximum:
DTL#2554-12-31-
23:59:59.999 999 999

3.3. Cấu trúc chương 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.

Các dạng cấu trúc của chương trình

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.

3.4. Sử dụng các khối để cấu trúc chương trì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.

A Khối đang gọi


B Khối được gọi (hay đang ngắt)
 Sự thực thi chương trình
 Lệnh hoặc sự kiện khởi đầu thực thi một
khối khác
 Sự thực thi chương trình
 Kết thúc khối (trở lại khối đang gọi)
Hình 3.3. Cấu trúc gọi khối
Việc xử lý tiếp tục với sự thực thi của lệnh theo sau lệnh gọi khối. Các
chương trình con được phép gọi lồng nhau, tức là chương trình con này gọi một
chương trình con khác và từ chương trình con được gọi lại gọi một chương trình
con thứ ba.
 Khởi động chu trình
 Độ sâu lồng vào nhau

Hình 3.4. Cấu trúc gọi lồng nhau

3.4.1. Khối tổ chức (OB)

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.

Hình 3.5. Hộp thoại “Add new block”

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.

Tạo ra một OB bổ sung nằm trong một lớp OB

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).

Cấu hình sự hoạt động của một OB

Ta có thể chỉnh sửa các thông số


vận hành của một OB. Ví dụ, có
thể cấu hình thông số thời gian cho
một OB thời gian trễ hay cho một
OB chu trình.

Hình 3.6. Các thuộc tính OB


3.4.2. Hàm số (FC)

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.

3.4.3. Khối hàm (FB)

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.

Các khối mã có thể sử dụng lại với bộ nhớ có liên quan

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.

Gán các giá trị ban đầ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ố.

Sử dụng một FB đơn lẻ với các DB

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ẻ.

Hình 3.7. Cách gọi và sử dụng khối hàm FB

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.

3.4.4. Khối dữ liệu (DB)

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”.

3.5. Hiểu dữ liệu một cách thống nhất

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.

3.6. Ngôn ngữ lập trình

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.

3.6.1. Ngôn ngữ lập trình LAD

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.

Hình 3.8. Dạng lệnh LAD

Để 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.

Hình 3.9. Dạng lệnh LAD không hợp lệ

 Ta không thể tạo ra một nhánh mà có thể gây nên ngắn mạch.

Hình 3.10. Dạng lệnh LAD không hợp lệ

3.6.2. Ngôn ngữ lập trình FBD

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.

Để tạo logic cho các hoạt động phức


tạp, chèn các nhánh song song giữa các
hộp.

Hình 3.11. Dạng lệnh FBD

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.

Hình 3.12. Dạng lập trình SCL

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.

Hình 3.13. Khối mã SCL

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.

3.6.4. EN và ENO cho LAD, FBD và SCL

Xác định “dòng tín hiêu”


̣ (EN và ENO) cho một lệnh

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 SCL để set ENO

Để 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).

3.7. Chức năng bảo vệ

3.7.1. Bảo vệ chống truy cập CPU

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.

Để thiết lập mật khẩu, ta thực hiện theo các


bước sau:
1. Trong “Device configuration”, chọn
CPU.
2. Trong cửa xổ kiểm tra, chọn nhãn
“Properties”.
3. Chọn thuộc tính “Protection” để chọn
mức bảo vệ và để nhập vào mật khẩu.
Hình 3.14. Thuộc tính bảo vệ

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ảng 3.4. Cấp độ bảo mật cho CPU


Cấp độ bảo mật Ngăn chặn truy cập
Không bảo vệ Cho phép truy cập tất cả mà không có mật khẩu bảo vệ.
Bảo vệ ghi Cho phép truy cập HMI và tất cả các hình thức truyền
thông PLC-to-PLC mà không có mật khẩu bảo vệ.
Bảo vệ đọc/ghi Cho phép truy cập HMI và tất cả các hình thức truyền
thông PLC-to-PLC mà không có mật khẩu bảo vệ. Mật
khẩu được yêu cầu cho việc đọc dữ liệu trong CPU, sửa đổi
(viết) CPU và thay đổi chế độ CPU (RUN/STOP).

3.7.2. Bí quyết bảo vệ (know-how protection)

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.

Hình 3.15. Thuộc tính bảo vệ

1. Trong các thuộc tính khối mã,


click vào nút “Protection” để
hiển thị hộp thoại “Know-how
protection”.
2. Click vào nút “Define” để nhập
vào mật khẩu.

Hình 3.16. Hộp thoại “Know-how protection”


Sau khi nhập và xác nhận mật khẩu,
click vào “OK”.

Hình 3.17. Hộp thoại “Define Password”

3.7.3. Bảo vệ chống sao chép

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.

Hình 3.18. Các thuộc tính bảo vệ

1. Sau khi mở khối mã, chọn “Protection”.


2. Từ danh sách thả bên dưới mục “Copy protection”, chọn tùy chọn để
nối kết khối mã tới hoặc card nhớ hoặc CPU riêng.
3. Chọn kiểu chống sao chép và nhập vào số serial card nhớ hoặc CPU.

Lưu ý là số serial có phân biệt chữ hoa chữ thường.


3.8. Tải xuống các phần tử của chương trình

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”.

3.9. Tải lên từ CPU

3.9.1. Sao chép các phần tử từ dự án

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”.

Khi tải lên hoàn thành thì tất cả các khối


chương trình, các khối công nghệ và các tag sẽ được
hiển thị trong khu vực offline.

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.

3.9.2. Sử dụng chức năng so sánh

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.

3.10. Gỡ rối và kiểm tra chương trình

3.10.1. Giám sát và sửa đổi dữ liệu trong 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.

Bảng 3.5. Giám sát và sửa đổi dữ liệu trong CPU


Trình biên tập Bộ giám sát Sửa đổi Cưỡng bức
Watch table Yes Yes No
Force table Yes No Yes
Program editor Yes Yes No
Tag table Yes No No
DB editor Yes No No
Hình 3.20. Bảng giám sát Watch table

Hình 3.21. Giám sát với trình biên tập LAD

3.10.2. Các bảng watch table và force table

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”).

3.10.3. Tham chiếu chéo chỉ ra cách sử dụng

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.

Bảng 3.6. Các phần tử tham chiếu chéo


Cột Mô tả
Đối tượng Tên của đối tượng mà nó sử dụng các đối tượng bật thấp hoặc
được sử dụng bởi các đối tượng bật thấp.
Số lượng Số lượng sử dụng
Vị trí Mỗi vị trí được dùng, ví dụ, network
Thuộc tính Các thuộc tính đặc biệt của đối tượng được tham chiếu, ví dụ, các
tên tag trong các mô tả multi-instance.
Như là (as) Thể hiện các thông tin bổ sung về đối tượng, như việc một DB
mẫu được sử dụng như là template hoặc một multi-instance.
Truy cập Kiểu truy cập, việc truy cập tới toán hạng truy cập đọc (R) và/hoặc
truy cập viết (W)
Địa chỉ Địa chỉ của toán hạng
Kiểu Thông tin về kiểu và ngôn ngữ được dùng để tạo đối tượng
Đường dẫn Đường dẫn của đối tượng trong cây dự án

3.10.4. Cấu trúc gọi để kiểm tra trật tự gọi

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

CÁCH SỬ DỤNG BỘ ĐIỀU KHIỂN PID_COMPACT TRONG PLC S7-


1200

4.1. Tìm hiểu khối hàm PID_compact PLC S7-1200

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.

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)

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.1. 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.

Chọn Organization block (OB) → Cyclic


interrupt → LAD → Cycle time 100→ OK.
Số thứ tự của OB được tự động đánh số là OB30.

Hình 4.3. Cây dự án

Hình 4.4. Hộp thoại “add new block”

Lấy khối hàm PID_Compact : Chọn Extended instructions → PID →


PID_Compact → OK.
Hình 4.5. Cửa sổ “portal view” và hộp thoại “call options”

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

trên khối PID_Compact.

Hình 4.6. Cửa sổ làm việc

Trong phần Basic parameters → Chọn Controllertype là


general/temperature/pressure/ volume ….. → %/ 0C/Bar/l…. → input chọn
Input_PER (analog) → output : Output_PER
Hình 4.7. Cửa sổ cấu hình PID

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

Hình 4.8. Cửa sổ cấu hình PID

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

Hình 4.10. Cửa sổ làm việc

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

Ứ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

5.1. Giới thiệu

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

Cảm biến nhiệt độ PLC Gia nhiệt

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.1. Cảm biến nhiệt độ


Trong ứng dụng này, ta sử dụng cặp nhiệt điện (Thermocouple ) loại K với
dải nhiê ̣t đô ̣ làm viê ̣c từ -200C tới 5000C.
Cấu tạo cặp nhiệt điện gồm: hai dây kim loại khác nhau được hàn dính một
đầu gọi là đầu nóng (đầu cần đo), hai đầu còn lại gọi là đầu lạnh. Xem hình 5.2

Hình 5.2. Cấu tạo cặp nhiệt điện

Bảng 5.1. Tầm đo của các loại că ̣p nhiệt điện

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.

Hình 5.3. Cấu tạo lò nhiệt


1) Lớp lót 2) Vật nung (không thuộc cấu tạo lò)
3) Dây nung 4) Vỏ lò

Trong ứng dụng này, ta sử dụng lò sấy có các thông số kỹ thuâ ̣t sau:

 Công suất lò: 600 W.


 Dây nung (dây điê ̣n trở): gồm có 3 dây điê ̣n trở mắc song song, mỗi
dây có điê ̣n trở 240 Ω.
 Phạm vi điều chỉnh nhiê ̣t đô ̣ của lò: 300C – 700C.
5.3.3. HMI

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

5.4. Sơ đồ đấu dây các thiết bị

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

Công tắc tơ Dây nung (lò nhiệt)

Hình 5.3. Sơ đồ đấu dây các thiết bị vào PLC

5.5. Lưu đồ giải thuật và chương trình

5.5.1. Lưu đồ giải thuật

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

5.5.2.1. Các bước lập 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:

Bước 1: Định nghĩa các tag

Hình 5.5. Cây dự án và bảng PLC tag

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

Bước 2: Tạo OB ngắt chu kỳ


Hình 5.6. Cây dự án và hộp thoại “Add new block”

1. Thêm khối mới từ cây dự án


2. Chọn OB “Cyclic interrupt”
3. Đặt tên cho khối tổ chức là “Cyclic interrupt_PID_Control”
4. Đặt thời gian gọi cho khối là “100 ms”
5. Kích hoạt hộp kiểm tra “Add new and open”
6. Xác nhận hộp thoại với “OK”

Bước 3: Thêm bộ điều khiển PID

Hình 5.7. Cửa sổ lập trình và hộp thoại “call options”

1. Chèn hộp lệnh “PID_Compact” từ tập lệnh mở rộng vào trong


“Cyclic_interrupt_PID_Control” sử dụng phương pháp kéo thả.
2. Gán tên cho DB mẫu liên quan
3. Xác nhận hộp thoại với “OK”
Bước 4: Tham số hóa bộ điều khiển PID

Hình 5.8. Thuô ̣c tính “Configuration” trong cửa sổ kiểm tra


1. Chọn khối “PID_Compact”
2. Chọn “Basic parameters” trong cửa sổ kiểm tra
3. Chọn kiểu bộ điều khiển nhiệt độ
4. Chọn đơn vị kỹ thuật là “0C”
5. Đặt giá trị yêu cầu “setpoint” bằng 50
6. Chọn “Input_PER” cho cổng vào là tag “temperature_sensor” (IW64)
7. Chọn “Output_PWM” cho cổng ra là tag “heating” (Q0.0)

Bước 5: Tỷ lệ hóa giá trị đầu vào

Hình 5.9. Thuộc tính “Properties” trong cửa sổ kiểm tra

1. Chọn cấu hình “Input scaling”


2. “Scaled high value” là “100°C”.
3. “Scaled low value” là “-90°C”.
4. Ta thiết lặp chuyển đổi analog/digital diễn ra giữa các giá trị “0” và
“3771” (thuộc phạm vi định mức của module).
Viê ̣c tỷ lê ̣ hóa này tùy thuô ̣c vào tín hiê ̣u từ cảm biến, ví dụ giá trị số nguyên
được chuyển đổi từ ngõ vào analog là 0 tương ứng với -900C và 3771 tương ứng
1000C.

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

Hình 5.10. Hộp thoại thuộc tính của thiết bị

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

3. Mở cấu hình bộ điều khiển thông qua cây dự án


4. Trong việc cấu hình, các tham số hiện hành của bộ điều khiển được
hiển thị bên dưới “PID parameters”. (ta có thể vào đây để nhập các
thông số bằng tay).
Bước 7: Chạy thử nghiệm bộ điều khiển PID
Hình 5.12. Cửa sổ “commissing”

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

Hình 5.14. Khối lệnh PID

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

Hình 5.16. Thuộc tính “properties” trong cửa sổ kiểm tra

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

6. Chọn hiển thị “Trend” bên dưới thuộc tính Properties.


7. Tạo một đường công động cho việc hiển thị nhiệt độ đặt, sử dụng với
tên setpoint
8. Kết hợp đường công với tag setpoint từ bộ điều khiển
9. Tạo đường công thứ hai cho việc hiển thị giá trị nhiệt độ hiện hành, sử
dụng với tên là “scaled_input”
10. Kết hợp đường công với tag “scaled_input” trong bộ điều khiển

Hình 5.19. Màn hình biên tập HMI

11. Mở màn hình HMI bằng cách double-click


12. Chèn trường văn bản “setpoint” và “scaled_input” lên trên màn hình
13. Chèn tag “setpoint” và “scaled_input” từ “Detail view” lên trên màn
hình sử dụng phương pháp kéo và thả. Định dạng màu sắc font chữ
như trên hình 5.20.
Bước 9: Tải xuống dự án HMI tới panel hoặc bắt đầu Runtime HMI

Hình 5.20. Mô phỏng trên màn hình HMI


1. Tải xuống dự án HMI tới panel
2. Hoặc Runtime, nếu ta không có một panel
3. Kiểm tra dự án.

5.5.2.2. Chương trình

5.6. Kết quả

Hệ thống giám sát và điều khiển qua giao diện HMI.


Điều khiển chính xác nhiệt độ đặt.

 Nhiệt độ đặt là 500C


Đô ̣ vọt lố (giá trị xử lý max 530C)

Hình 5.21. Đặt nhiệt độ điều khiển

Hình 5.22. Đáp ứng của bộ điều khiển nhiệt độ


Hình 5.23. Đáp ứng ổn định

 Từ đồ thị ta thấy
o Độ vọt lố:

POT = =6%

o Sai số xác lập: 10C

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

TẬP LỆNH LẬP TRÌNH

A. Tập lệnh cơ bản

A.1. Bit logic

A.1.1. Các tiếp điểm và cuộn dây bit logic

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. 1. Các tiếp điểm thường mở và thường đóng


LAD SCL Mô tả
IF in THEN Tiếp điểm thường hở và tiếp điểm thường đóng:
Statement; Ta có thể kết nối các tiếp điểm với nhau và tạo ra
ELSE mạch logic kết nối. Nếu bit ngõ vào mà ta chỉ rõ
Statement; sử dụng bộ nhớ danh định I (ngõ vào) hay Q (ngõ
END_IF; ra) thì giá trị bit sẽ được đọc từ một thanh ghi bộ
IF NOT (in) THEN đệm. Các tín hiệu tiếp điểm vật lý trong xử lý
Statement; điều khiển được nối đến các đầu cực cổng vào
ELSE trên PLC. CPU quét các tín hiệu ngõ vào được
Statement; kết nối và cập nhật liên tục các giá trị tương ứng
END_IF; trong thanh ghi bộ đệm ngõ vào.
Ta có thể đọc tức thời một ngõ vào vật lý bằng
cách sử dụng “:P” theo sau tag cổng vào (ví dụ:
“Motor_Start:P” hoặc “%I3.4:P”). Đối với việc
đọc tức thời, các giá trị dữ liệu bit được đọc một
cách trực tiếp từ ngõ vào vật lý thay vì từ bộ
đệm. Việc đọc tức thời thì không cập nhật dữ liệu
từ bộ đệm.

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.

A.1.1.2. Các hộp lệnh AND, OR và XOR trong FBD

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 OR Bất kỳ ngõ vào nào của hộp OR 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

A.1.1.3. Bộ đảo logic NOT

Bảng A. 5. Bộ đảo logic NOT


LAD FBD SCL Mô tả
NOT Đối với lập trình FBD, ta có thể kéo
công cụ “Negate binary input” từ
thanh công cụ “Favorites” hoặc cây
lệnh và sau đó thả chúng lên một cổng
vào hoặc cổng ra để xây dựng một
logic đảo trên hộp kết nối.
Tiếp điểm NOT (LAD) sẽ đảo trạng
thái logic của dòng tín hiệu cổng vào
như sau:
 Nếu không có tín hiệu tác động
tiếp điểm NOT thì sẽ có dòng
công suất ở cổng ra.
 Nếu có tín hiệu tác động tiếp
điểm NOT thì sẽ không có
dòng công suất ở cổng ra.

A.1.1.4. Ngõ ra cuộn dây và hộp lệnh gán

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.

A.1.2. Các lệnh set và reset

A.1.2.1. Set và reset 1 bit

Bảng A. 8. Các lệnh S và R


LAD FBD SCL Mô tả
Không có sẳn Khi S (Set) bị tác động, thì giá
trị dữ liệu ở địa chỉ OUT sẽ được
đặt lên 1. Khi S không bị tác
động, thì OUT sẽ không thay
đổi.
Không có sẳn Khi R (Rset) bị tác động, thì giá
trị dữ liệu ở địa chỉ OUT sẽ được
đặt về 0. Khi R không bị tác
động, thì OUT sẽ không thay
đổi.
Bảng A. 9. Các kiểu dữ liệu cho các tham sốlệnh S và R
Tham số Kiểu dữ liệu Mô tả
IN (hoặc kết nối tới tiếp điểm/cổng Bool Vị trí bit được giám sát
logic)
OUT Bool Vị trí bit được set hoặc
reset

A.1.2.2. Set và Reset bit trường

Bảng A. 10. Các lệnh SET_BF và RESET_BF


LAD FBD SCL Mô tả
Không có sẳn Khi SET_BF được tác động thì
một giá trị dữ liệu “1” sẽ được
gán tới “n” bit bắt đầu ở địa chỉ
OUT. Khi SET_BF không được
tác động thì OUT không thay
đổi.
Không có sẳn RESET_BF viết một giá trị dữ
liệu “0” tới “n” bit bắt đầu ở địa
chỉ OUT. Khi RESET_BF
không được tác động thì OUT
không thay đổi.
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 của
một nhánh.
2
Đối vớ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.

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

A.1.2.3. Set-dominant và Reset-dominant bit chốt

Bảng A. 12. Các lệnh RS và SR


LAD/FBD SCL Mô tả
Không có sẳn RS là một chốt ưu tiên set nơi set ưu tiên. Nếu
các tín hiệu set (S1) và reset (R) đều “true” thì
địa chỉ cổng ra OUT sẽ là 1.

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.

Bảng A. 13. Các kiểu dữ liệu cho các tham sốlệnh RS và SR


Tham số Kiểu dữ liệu Mô tả
S, S1 Bool Set input; 1 cho biết sự
ưu tiên
R, R1 Bool Ret input; 1 cho biết sự
ưu tiên
OUT Bool Được gán bit output
“OUT”
Q Bool Trạng thái của bit “OUT”

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”.

Lệnh S1 R Bit “OUT”


RS 0 0 Trạng thái trước
0 1 0
1 0 1
1 1 1
S R1
SR 0 0 Trạng thái trước
0 1 0
1 0 1
1 1 0
A.1.3. Các lệnh sườn dương và âm

Bảng A. 14. Lê ̣nh phát hiện chuyển đổi dương và âm


LAD FBD SCL Mô tả
Không LAD: Trạng thái của tiếp điểm là TRUE khi
có sẳn một sự chuyển đổi dương (OFF-to-ON) được
phát hiện trên bit “IN” được gán. Trạng thái
tiếp điểm logic, sau đó được kết hợp với
dòng năng lượng trong trạng thái nhằm set
dòng năng lượng ngoài trạng thái. Tiếp điểm
P có thể được đặt ở bất kỳ đâu trong mạng
ngoại trừ nơi kết thúc của một nhánh.
FBD: Trạng thái logic cổng ra là TRUE khi
một sự chuyển đổi dương (OFF-to-ON) được
phát hiện trên bit input được gán. Hộp P chỉ
có thể được đặt ở vị trí bắt đầu trong nhánh.
Không LAD: Trạng thái của tiếp điểm là TRUE khi
có sẳn một sự chuyển đổi âm (ON-to-OFF) được
phát hiện trên bit input được gán. Trạng thái
tiếp điểm logic, sau đó được kết hợp với
dòng năng lượng trong trạng thái nhằm set
dòng điện ngoài trạng thái. Tiếp điểm N có
thể được đặt ở bất kỳ đâu trong mạng ngoại
trừ nơi kết thúc của một nhánh.
FBD: Trạng thái logic cổng ra là TRUE khi
một sự chuyển đổi âm (ON-to-OFF) được
phát hiện trên bit input được gán. Hộp N chỉ
có thể được đặt ở vị trí bắt đầu trong nhánh.
Không LAD: bit “OUT” được gán là TRUE khi một
có sẳn sự chuyển đổi tích cực (OFF-to-ON) được
phát hiện trên dòng năng lượng vào cuộn
dây. dòng năng lượng trong trạng thái luôn
luôn đi qua cuộn dây như là trạng thái dòng
cổng ra. Cuộn dây P có thể được đặt ở bất kỳ
nơi nào trong mạng.
FBD: bit “OUT” được gán là TRUE khi một
sự chuyển đổi tích cực (OFF-to-ON) được
phát hiện trên trạng thái logic ở kết nối cổng
vào hộp lệnh hoặc trên bit cổng vào được gán
nếu hộp lệnh được đặt ở vị trí bất đầu của
dãy. Trạng thái logic cổng vào luôn luôn đi
qua hộp lệnh như là trạng thái logic cổng ra.
Hộp lệnh P= có thể được đặt ở bất kỳ đâu
trong nhánh.
Không LAD: bit “OUT” được gán là TRUE khi một
có sẳn sự chuyển đổi tích cực (OFF-to-ON) được
phát hiện trên dòng điện vào cuộn dây. dòng
năng lượng trong trạng thái luôn luôn đi qua
cuộn dây như là trạng thái dòng năng lượng
cổng ra. Cuộn dây P có thể được đặt ở bất kỳ
nơi nào trong mạng.
FBD: bit “OUT” được gán là TRUE khi một
sự chuyển đổi tích cực (OFF-to-ON) được
phát hiện trên trạng thái logic ở kết nối cổng
vào hộp lệnh hoặc trên bit cổng vào được gán
nếu hộp lệnh được đặt ở vị trí bất đầu của
dãy. Trạng thái logic cổng vào luôn luôn đi
qua hộp lệnh như là trạng thái logic cổng ra.
Hộp lệnh P= có thể được đặt ở bất kỳ đâu
trong nhánh.

Bảng A. 15. Các lệnh P_TRIG và N_TRIG


LAD/FBD SCL Mô tả
Không có sẳn Dòng cổng ra Q hoặc trạng thái logic là TRUE
khi một sự chuyển đổi dương (OFF-to-ON)
được phát hiện trên trạng thái cổng vào CLK
(FBD) hoặc dòng CLK trong (LAD).
Trong LAD, lệnh P_TRIG không thể được đặt ở
vị trí bất đầu hoặc kết thúc của một mạng.
Trong FBD, lệnh P_TRIG có thể được đặt ở bất
cứ đâu ngoại trừ nơi kết thúc của một dãy.
Không có sẳn Dòng cổng ra Q hoặc trạng thái logic là TRUE
khi một sự chuyển đổi âm (OFF-to-ON) được
phát hiện trên trạng thái cổng vào CLK (FBD)
hoặc dòng CLK trong (LAD).
Trong LAD, lệnh N_TRIG không thể được đặt
ở vị trí bất đầu hoặc kết thúc của một mạng.
Trong FBD, lệnh N_TRIG có thể được đặt ở bất
cứ đâu ngoại trừ nơi kết thúc của một dãy.
1
Đối với SCL: Ta phải viết code để tái tạo chức năng này trong chương trình
của mình.

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.

A.2. Các bộ định thì

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. 17. Các lệnh bộ định thì


LAD/FBD LAD coils SCL Mô tả
boxes
"IEC_Timer_0_DB".TP Bộ đình thì TP tạo ra
( một xung với một độ
IN:=_bool_in_, rộng thời gian được đặt
PT:=_time_in_, trước.
Q=>_bool_out_,
ET=>_time_out_);
"IEC_Timer_0_DB".T Bộ định thì TON sẽ đặt
ON ( cổng ra Q tới ON sau
IN:=_bool_in_, một thời gian trễ đặt
PT:=_time_in_, trước.
Q=>_bool_out_,
ET=>_time_out_);
"IEC_Timer_0_DB".T Bộ định thì TOF sẽ đặt
OF ( lại cổng ra Q trở về
IN:=_bool_in_, OFF sau một thời gian
PT:=_time_in_, trễ đặt trước.
Q=>_bool_out_,
ET=>_time_out_);
"IEC_Timer_0_DB".T Bộ định thì TONR sẽ
ONR ( đặt cổng ra Q tới ON
IN:=_bool_in_, sau môt thời gian trễ
R:=_bool_in_ đặt trước. Thời gian
PT:=_time_in_, trôi qua được tích lũy
Q=>_bool_out_, hơn nhiều chu kỳ thời
ET=>_time_out_); gian cho đến khi cổng
vào R được dùng để
reset lại thời gian trôi
qua.
Chỉ có ở (Không có tương đương ở Cuộn TP (Preset timer)
FBD: SCL) sẽ nạp một giá trị thời
gian PRESET mới
trong IEC_Timer xác
định.
Chỉ có ở (Không có tương đương ở Cuộn RT (Reset timer)
FBD: SCL) sẽ reset bộ định thì
IEC_Timer xác định.

STEP 7 tự động tạo khối DB khi ta chèn lệnh.


Trong ví dụ SCL, “IEC_Timer_0_DB” là tên của khối DB mẫu.

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.

Ví dụ về bộ định thì cuộn dây

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.

Miễn là bộ định thì chạy, thì trạng thái của DB1.MyIEC_Timer.Q=1 và


Tag_Output=1 có giá trị = 1. Khi giá trị tag_Time có trôi qua, thì
DB1.MyIEC_Timer.Q=0 và Tag_Output có giá trị = 0.

Các cuộn dây Reset timer -(RT)- và Preset timer -(PT)-

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ẻ.

Sự hoạt động của các bộ định thì

Bảng A. 21. Các kiểu của các bộ định thì IEC


Bộ định thì Lưu đồ thời gian
TP: Bộ định thì xung
Bộ định thì TP tạo ra một xung với
một độ rộng thời gian được đặt
trước

TON: ON-delay timer


Bộ định thì TON sẽ set cổng ra Q
tới ON sau một thời gian trễ đặt
trước

TOF: OFF-delay timer


Bộ định thì TOF sẽ set cổng ra Q
tới OFF sau một thời gian trễ đặt
trước
TONR: ON-delay Retentive timer
Bộ định thì sẽ set cổng ra Q tới
ON sau một thời gian trễ đặt trước.
Thời gian trôi qua được tích lũy
hơn nhiều chu kỳ thời gian cho đến
khi cổng vào R được sử dụng để
reset thời gian trôi qua.

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

A.3. Các bộ đếm

Bảng A. 22. Các lệnh bộ đếm


LAD/FBD SCL Sự hoạt động
"IEC_Counter_0_DB".CTU( Sử dụng các lệnh bộ đếm để
CU:=_bool_in, đếm các sự kiện chương trình
R:=_bool_in, bên trong và sự kiện xử lý bên
PV:=_int_in, ngoài. Mỗi bộ đếm sử dụng một
Q=>_bool_out, cấu trúc được lưu trong một
CV=>_int_out); khối dữ liệu nhằm duy trì dữ
"IEC_Counter_0_DB".CTD( liệu bộ đếm. Ta gán khối dữ liệu
CD:=_bool_in, khi lệnh bộ đếm đặt trong trình
LD:=_bool_in, biên tập.
PV:=_int_in,  CTU là bộ đếm đếm lên
Q=>_bool_out,  CTD là bộ đếm đếm
CV=>_int_out); xuống
"IEC_Counter_0_DB".CTUD(  CTUD là bộ đếm đếm
CU:=_bool_in, lên và đếm xuống.
CD:=_bool_in,
R:=_bool_in,
LD:=_bool_in,
PV:=_int_in,
QU=>_bool_out,
QD=>_bool_out,
CV=>_int_out);
1
Đối với LAD và FBD: Chọn kiểu dữ liệu giá trị đếm từ danh sách thả bên
dưới tên lệnh.
2
STEP 7 tự động tạo DB khi ta chèn lệnh.
3
Trong SCL, ví dụ: “IEC_Counter_0_DB” là tên của DB mẫu.

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.

A.4. Các lệnh so sánh

A.4.1 Lệnh so sánh

Bảng A. 24. Các lệnh so sánh


LAD FBD SCL Mô tả
out := in1 = So sánh hai giá trị cùng
in2; kiểu dữ liệu. Khi sự so
or sánh các tiếp điểm LAD là
IF in1 = in2 TRUE thì sau đó tiếp điểm
THEN out := 1; được tác động. Khi sự so
ELSE out := 0; sánh hộp lệnh FBD là
END_IF; TRUE thì sau đó cổng ra
hộp lệnh sẽ là TRUE.
1
Đối với LAD và FBD: Click vào tên lệnh (như là “==”) để thay đổi kiểu so
sánh từ danh sách thả. Click vào “???” và chọn kiểu dữ liệu từ danh sách thả.

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

Bảng A. 26. Mô tả sự so sánh


Kiểu quan hệ Sự so sánh này là đúng nếu
= IN1 bằng với IN2
<> IN1 khác với IN2
>= IN1 lớn hơn hoặc bằng IN2
<= IN1 bé hơn hoặc bằng IN2
> IN1 lớn hơn IN2
< IN1 bé hơn IN2

A.4.2. Các lệnh In-rang và Out-rang

Bảng A. 27. Các lệnh In-rang và Out-rang


LAD/FBD SCL Mô tả
out := IN_RANGE(min, val, Kiểm tra xem một giá trị cổng
max); vào ở bên trong hay bên ngoài
một phạm vi giá trị xác định.
Nếu sự so sánh là TRUE thì sau
đó cổng ra hộp lệnh là TRUE.

out := OUT_RANGE(min, val,


max);

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

A.4.3. Các lệnh OK và Not OK

Bảng A. 29. Các lệnh OK và Not OK


LAD FBD SCL Mô tả
Không có sẳn Kiểm tra xem một dữ liệu tham
chiếu cổng vào có là một số thực
hợp lệ theo IEEE thông số kỹ thuật
754.
Không có sẳn
1
Đối với LAD và FBD: Khi tiếp điểm LAD là TRUE thì tiếp điểm được tác
động và dòng điện đi qua. Khi hộp lệnh FBD là TRUE thì cổng ra hộp lệnh là
TRUE.

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. 31. Sự hoạt độnglệnh OK và Not OK


Lệnh Số Real kiểm tra là TRUE nếu:
OK Các giá trị cổng vào là một số thực hợp lệ 1
NOT_OK Các giá trị cổng vào không là một số thực hợp lệ 1
1
Một giá trị Real hoặc LReal là không hợp lệ nếu nó là +/- INF (vô cùng),
NaN (không phải số) hoặc nếu nó là một giá trị denormalized. Một giá trị
denormalized là một số rất gần bằng 0. CPU thay thế một số 0 cho một giá trị
denormalized trong các tính toán.

A.5. Lệnh toán số học

A.5.1. Lệnh CALCULATE

Bảng A. 32. Lệnh CALCULATE

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.

Hình A. 1. Hộp thoại “Edit “Calculate” instruction”

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.

A.5.2. Các lệnh cộng, trừ, nhân và chia

Bảng A. 34. Các lệnh cộng, trừ, nhân và chia


LAD/FBD SCL Mô tả
out := in1 + in2;  ADD: Sự cộng (IN1 + IN2 = OUT)
out := in1 - in2;  SUB: Sự trừ (IN1 - IN2 = OUT)
out := in1 * in2;  MUL: Sự nhân (IN1 * IN2 = OUT)
out := in1 / in2;  DIV: Sự chia (IN1 / IN2 = OUT)
Hoạt động chia nguyên sẽ bỏ đi phần dư của
thương số để tạo ra một số nguyên ở cổng
ra.
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. 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ề.

A.5.3. Lệnh Modulo

Bảng A. 37. Lệnh MOD


LAD/FBD SCL Mô tả
out := in1 MOD in2; Ta sử dụng lệnh MOD để trả về phần dư
khi thực hiện chia một số nguyên. Giá trị
ở cổng vào IN1 được chia bởi giá trị ở
cổng vào IN2 và phần dư được trả về ở
cổng ra OUT.

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

Bảng A. 39. Các giá trị ENOlệnh MOD


ENO Mô tả
1 Không có lỗi
0 Giá trị IN2 = 0, OUT được gán giá trị 0

A.5.4. Lệnh đảo

Bảng A. 40. Lệnh NEG


LAD/FBD SCL Mô tả
-(in); Lệnh NEG đảo ngược dấu số học của giá trị tại tham số IN
và lưu kết quả trong tham số OUT.

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

Bảng A. 42. Các trạng thái ENOlệnh NEG


ENO Mô tả
1 Không có lỗi
0 Kết quả giá trị vượt quá phạm vi hợp lệ của kiểu dữ liệu được chọn. Ví dụ
đối với SInt: NEG (– 128) cho kết quả + 128 vượt quá giá trị tối đa của
kiểu dữ liệu này.

A.5.5. Các lệnh tăng và giảm

Bảng A. 43. Các lệnh INC và DEC


LAD/FBD SCL Mô tả
in_out := in_out + 1; Tăng giá trị một số nguyên có dấu hoặc
không dấu:
Giá trị tham số IN/OUT + 1 = giá trị tham
số IN/OUT.
in_out := in_out - 1; Giảm giá trị một số nguyên có dấu hoặc
không dấu:
Giá trị tham số IN/OUT – 1 = giá trị tham
số IN/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ả.

Bảng A. 44. Các kiểu dữ liệu cho các tham sốlệnh INC và DEC

Tham số Kiểu dữ liệu Miêu tả


IN/OUT SInt, Int, DInt, USInt, UDInt Ngõ vào và ngõ ra phép toán

Bảng A. 45. Các trạng thái ENOlệnh INC và DEC


ENO Miêu tả
1 Không có lỗi
0 Giá trị kết quả vượt quá phạm vi hợp lệ của kiểu dữ liệu được chọn.
Ví dụ đối với SInt: INC (+127) cho kết quả +128 vượt quá giá trị tối
đa của kiểu dữ liệu này.

A.5.6. Lệnh giá trị tuyệt đối

Bảng A. 46. Lệnh ABS


LAD/FBD SCL Mô tả
out := ABS(in); Tính giá trị tuyệt đối của một số nguyên hoặc
một số thực có dấu ở tham số IN và lưu kết quả
trong tham 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ả.

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. 48. Các trạng thái ENOlệnh ABS


ENO Miêu tả
1 Không có lỗi
0 Giá trị kết quả phép toán vượt quá phạm vi hợp lệ của kiểu dữ liệu
được chọn. Ví dụ đối với SInt: ABS (–128) cho kết quả +128 vượt quá
giá trị tối đa của kiểu dữ liệu này.

A.5.7. Các lệnh cực đại và cực tiểu

Bảng A. 49. Các lệnh MIN và MAX


LAD/FBD 1 SCL Mô tả
out:= MIN( Lệnh MIN so sánh giá trị của hai thông số
in1:=_variant_in_, IN1 và IN2 và gán giá trị cực tiểu (nhỏ
in2:=_variant_in_ hơn) cho thông số OUT.
[,...in32]);

out:= Lệnh MAX so sánh giá trị của hai thông số


MAX( in1:=_varia IN1 và IN2 và gán giá trị cực đại (lớn hơn)
nt_in_, cho thông số OUT.
in2:=_variant_in_
[,...in32]);
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. 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. 51. Các trạng thái ENOlệnh MIN và MAX


ENO Miêu tả
1 Không có lỗi
0 Chỉ đối với dữ liệu kiểu Real:
 Một hay cả hai ngõ vào không phải là một số thực (NaN).
 Kết quả OUT là +/– INF (vô cùng).

A.5.8. Lệnh giới hạn

Bảng A. 52. Lệnh LIMIT


LAD/FBD SCL Mô tả
LIMIT(MN:=_variant_in_, Lệnh LIMIT sẽ kiểm tra xem giá trị
IN:=_variant_in_, của tham số IN có nằm bên trong
MX:=_variant_in_, phạm vi giá trị được xác định bởi các
OUT:=_variant_out_); thông số MIN và MAX hay không.
Giá trị OUT sẽ được giữ lại tại giá trị
MIN hoặc MAX, nếu giá trị IN nằm
ngoài phạm vi này.
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. 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).

Bảng A. 54. Các trạng thái ENOlệnh LIMIT


ENO Miêu tả
1 Không có lỗi
0 Real: nếu một hoặc nhiều hơn các giá trị cho MIN, IN và MAX là
NaN (Không là một số), thì sau đó NaN được trả về.
0 Nếu MIN lớn hơn MAX thì giá trị IN sẽ được gán tới OUT.

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

A.5.9. Các lệnh toán học dấu phẩy động

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;

out := in1 ** in2; Hàm mũ tổng quát: IN1IN2 = OUT


Ví dụ: nếu IN1 = 3 và IN2 = 2 thì OUT = 9.

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

ATAN IN là +/– NaN +/– NaN


FRAC IN là +/– INF hay +/– NaN + NaN
EXPT IN1 là + INF và IN2 không phải là – INF + INF
IN1 âm hay bằng – INF + NaN nếu IN2
là Real/ LReal;
– INF với trường
hợp khác
IN1 hay IN2 là +/– NaN + NaN
IN1 bằng 0.0 và IN2 (chỉ) là Real/LReal + NaN

A.6. Lệnh di chuyển

A.6.1 Lệnh di chuyển

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.

Bảng A. 58. Các lệnh MOVE, MOVE_BLK và UMOVE_BLK


LAD/FBD SCL Mô tả
out1 := in; Sao chép một phần tử dữ liệu từ
một địa chỉ đã xác định tới một
hay nhiều địa chỉ mới.

MOVE_BLK(in:=_variant_in, Di chuyển có thể ngắt mà sao


count:=_uint_in, chép một khối các phần tử dữ
out=>_variant_out); liệu đến một địa chỉ mới.
UMOVE_BLK(in:=_variant_i Di chuyển không ngắt được mà
n, sao chép một khối các phần tử
count:=_uint_in dữ liệu đến một địa chỉ mới.
out=>_variant_out);

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.

Bảng A. 59. Các kiểu dữ liệu cho lệnh MOVE


Tham số Kiểu dữ liệu Mô tả
IN SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Địa chỉ nguồn
Byte, Word, DWord, Char, Array, Struct, DTL, Time
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Địa chỉ đích
Byte, Word, DWord, Char, Array, Struct, DTL, Time

Để 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.

Bảng A. 61. Các trạng thái ENOlệnh MOVE, MOVE_BLK và UMOVE_BLK


ENO Điều kiện Kết quả
1 Không có lỗi Tất cả phần tử COUNT đã được sao
chép thành công.
0 Cả phạm vi nguồn (IN) hay Các phần tử phù hợp được sao
phạm vi đích (OUT) vượt quá chép. Các phần tử lẻ ra không được
vùng nhớ có sẵn. sao chép.

A.6.2. Các lệnh FieldRead và FieldWrite

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. 62. Các lệnh FieldRead và FieldWrite


LAD/FBD SCL Mô tả
value := FieldRead đọc phần tử mảng với
member[index]; giá trị ở chỉ số INDEX từ mảng
có phần tử đầu tiên được xác
định bởi tham số MEMBER.
Giá trị của phần tử mảng được
chuyển tới vị trí quy định tại
tham số VALUE.
member[index] FieldWrite chuyển giá trị tại vị
:= value; trí quy định bởi tham số
VALUE đến các mảng có phẩn
tử đầu tiên được xác định bởi
tham số MEMBER. Giá trị này
được chuyển tới các phần tử
mảng có mảng chỉ số được xác
định bởi tham số INDEX.
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. 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 dữ liệu bằng cách lập mảng chỉ mục

Để 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];

A.6.3. Các lệnh điền đầy

Bảng A. 64. Các lệnh FILL_BLK và UFILL_BLK


LAD/FBD SCL Mô tả
FILL_BLK( Lệnh lấp đầy có thể ngắt: sẽ lấp đầy một
in:=_variant_in, phạm vi địa chỉ bằng các bản sao của
count:=int, một phần tử dữ liệu xác định.
out=>_variant_out);

UFILL_BLK( Lệnh lấp đầy không ngắt: sẽ lấp đầy


in:=_variant_in, một phạm vi địa chỉ bằng các bản sao
count:=int của một phần tử dữ liệu xác định .
out=>_variant_out);

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. 66. Các trạng thái ENOlệnh FILL_BLK và UFILL_BLK


ENO Điều kiện Mô tả
1 Không có lỗi Phần tử IN đã được sao chép thành
công đến tất cả các đích đến COUNT.
0 Phạm vi đích (OUT) vượt quá Các phần tử phù hợp được sao chép.
vùng nhớ có sẵn. Các phần tử lẻ ra không được sao chép.
A.6.4. Lệnh tráo đổi

Bảng A. 67. Lệnh SWAP


LAD/FBD SCL Mô tả
out := SWAP(in); Đảo ngược trật tự bytecho các phần tử dữ liệu
2 bytevà 4 byte. Không có sự thay đổi nào
được thực hiện đến trật tự bittrong phạm vi
mỗi byte. ENO luôn luôn nhận giá trị “TRUE”
theo sự thực thi của lệnh SWAP.
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. 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

Ví dụ 1 Tham số IN = MB0 Tham số OUT = MB4


(Trước khi thực thi) (Sau khi thực thi)
Địa chỉ MB0 MB1 MB4 MB5
W#16#1234 12 34 34 12
Word MSB LSB MSB LSB

Ví dụ 2 Tham số IN = MB0 Tham số OUT = MB4


(Trước khi thực thi) (Sau khi thực thi)
Địa chỉ MB0 MB1 MB2 MB3 MB4 MB5 MB6 MB7
DW#16#1234567 12 34 56 78 78 56 34 12
8
DWord MSB LSB MSB LSB

A.7. Các lênh


̣ chuyển đổi

A.7.1. Lệnh chuyển đổi

Bảng A. 69. Lệnh chuyển đổi (CONV)


LAD/FBD SCL Mô tả
out := <data type in>_TO_<data type Chuyển đổi một phần tử
out>(in); dữ liệu từ một kiểu dữ liệu
này sang một kiểu dữ liệu
khác.
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
2
Đối với SCL: Xây dựng lệnh chuyển đổi bằng cách xác định kiểu dữ liệu cho
tham số cổng vào (in) và tham số cổng ra (out). Ví dụ, DWORD_TO_REAL
chuyển đổi một giá trị DWORD sang giá trị REAL.
Bảng A. 70. Các kiểu dữ liệu cho các tham sốlệnh chuyển đổi (CONV)
Tham số Kiểu dữ liệu Mô tả
IN Bit string1, SInt, USInt, Int, UInt, DInt, Giá trị IN
UDInt, Real, LReal, BCD16, BCD32
OUT Bit string1, SInt, USInt, Int, UInt, DInt, Giá trị IN được chuyển
UDInt, Real, LReal, BCD16, BCE32 đổi sang một kiểu dữ liệu
mới

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. 71. Các trang thái ENOlệnh chuyển đổi (CONV)


ENO Miêu tả Kết quả OUT
1 Không có lỗi Kết quả hợp lệ
0 IN là +/– INF hay +/– NaN +/– INF hay +/– NaN
0 Kết quả vượt quá phạm vi hợp lệ của kiểu OUT được đặt về các byte
dữ liệu OUT có trọng số thấp nhất của IN

A.7.2. Các lệnh chuyển đổi cho SCL

Bảng A. 72. Sự chuyển đổi từ Bool, Word hoặc DWord


Kiểu Lệnh Kết quả
dữ liệu
Bool BOOL_TO_BYTE, BOOL_TO_WORD, Giá trị này được
BOOL_TO_DWORD, BOOL_TO_INT, chuyển tới bit quan
BOOL_TO_DINT trọng nhất của kiểu
dữ liệu đích.
Byte BYTE_TO_BOOL Bit thấp nhất được
chuyển vào trong
kiểu dữ liệu đích.
BYTE_TO_WORD, BYTE_TO_DWORD Giá trị này được
chuyển tới byte
thấp của kiểu dữ
liệu đích.
BYTE_TO_SINT, BYTE_TO_USINT Giá trị này được
chuyển tới kiểu dữ
liệu đích.
BYTE_TO_INT, BYTE_TO_UINT, Giá trị này được
BYTE_TO_DINT, BYTE_TO_UDINT chuyển tới byte
quan trọng nhất của
kiểu dữ liệu đích.
Word WORD_TO_BOOL Bit thấp nhất được
chuyển vào trong
kiểu dữ liệu đích.
WORD_TO_BYTE Các byte thấp của
giá trị nguồn được
chuyển tới kiểu dữ
liệu đích.
WORD _TO_DWORD Giá trị này được
chuyển tới byte
thấp của kiểu dữ
liệu đích.
WORD _TO_SINT, WORD _TO_USINT Byte thấp của giá
trị nguồn được
chuyển tới kiểu dữ
liệu đích.
WORD _TO_INT, WORD _TO_UINT Giá trị này được
chuyển tới kiểu dữ
liệu đích.
WORD _TO_DINT, WORD _TO_UDINT Giá trị này được
chuyển tới byte
thấp của kiểu dữ
liệu đích.
DWord DWORD_TO_BOOL Bit thấp nhất được
chuyển vào trong
kiểu dữ liệu đích.
DWORD_TO_BYTE,DWORD_TO_WORD, Byte thấp của giá
DWORD_TO_SINT, DWORD_TO_USINT, trị nguồn được
DWORD_TO_INT, DWORD_TO_UINT chuyển tới kiểu dữ
liệu đích.
DWORD_TO_DINT, DWORD_TO_UDINT, Giá trị này được
DWORD_TO_REAL chuyển tới kiểu dữ
liệu đích.

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. 74. Sự chuyển đổi từ một số nguyên (Int hoặc UInt)


Kiểu Lệnh Kết quả
dữ
liệu
Int INT_TO_BOOL Bit thấp nhất được chuyển
vào trong kiểu dữ liệu
đích.
INT_TO_BYTE, INT_TO_DWORD, Giá trị được chuyển đổi.
INT_TO_SINT, INT_TO_USINT,
INT_TO_UINT, INT_TO_UDINT,
INT_TO_REAL, INT_TO_LREAL,
INT_TO_CHAR, INT_TO_STRING
INT_TO_WORD Giá trị này được chuyển
tới kiểu dữ liệu đích.
INT_TO_DINT Giá trị này được chuyển
tới byte thấp của kiểu dữ
liệu đích.
UInt UINT_TO_BOOL Bit thấp nhất được chuyển
vào trong kiểu dữ liệu
đích.
UINT_TO_BYTE, UINT_TO_SINT, Giá trị được chuyển đổi.
UINT_TO_USINT, UINT_TO_INT,
UINT_TO_REAL, UINT_TO_LREAL,
UINT_TO_CHAR, UINT_TO_STRING
UINT_TO_WORD, UINT_TO_DATE Giá trị này được chuyển
tới kiểu dữ liệu đích.
UINT_TO_DWORD, UINT_TO_DINT, Giá trị này được chuyển
UINT_TO_UDINT tới byte thấp của kiểu dữ
liệu đích.

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.

Bảng A. 76. Chuyển đổi từ một số thực (Real hoặc LReal)


Kiểu dữ liệu Lệnh Kết quả
Real REAL_TO_DWORD, REAL_TO_LREAL Giá trị này được
chuyển tới kiểu
dữ liệu đích.
REAL_TO_SINT, REAL_TO_USINT, Giá trị được
REAL_TO_INT, REAL_TO_UINT, chuyển đổi.
REAL_TO_DINT, REAL_TO_UDINT,
REAL_TO_STRING
LReal LREAL_TO_SINT, LREAL_TO_USINT, Giá trị được
LREAL_TO_INT, LREAL_TO_UINT, chuyển đổi.
LREAL_TO_DINT, LREAL_TO_UDINT,
LREAL_TO_REAL, LREAL_TO_STRING

Bảng A. 77. Sự chuyển đổi từ Time, DTL, TOD hoặc Date


Kiểu dữ liệu Lệnh Kết quả
Time TIME_TO_DINT Giá trị này được chuyển tới
kiểu dữ liệu đích.
DTL DTL_TO_DATE, DTL_TO_TOD Giá trị được chuyển đổi.
TOD TOD_TO_UDINT Giá trị được chuyển đổi.
Date DATE_TO_UINT Giá trị được chuyển đổi.

Bảng A. 78. Sự chuyển đổi từ một ký tự hoặc một chuỗi


Kiểu Lệnh Kết quả
dữ
liệu
Char CHAR_TO_SINT, CHAR_TO_USINT, Giá trị được chuyển
(ký tự) CHAR_TO_INT, CHAR_TO_UINT, đổi.
CHAR_TO_DINT, CHAR_TO_UDINT
CHAR_TO_STRING Giá trị này được
chuyển tới ký tự đầu
tiên của chuỗi.
String STRING_TO_SINT, STRING_TO_USINT, Giá trị được chuyển
(chuỗi) STRING_TO_INT, STRING_TO_UINT, đổi.
STRING_TO_DINT, STRING_TO_UDINT,
STRING_TO_REAL, STRING_TO_LREAL
STRING_TO_CHAR Ký tự đầu tiên của
chuỗi được sao chép
tới Char.
A.7.3. Các lệnh làm tròn (ROUND) và bỏ bớt (TRUNC)

Bảng A. 79. Các lệnh làm tròn (ROUN) và bỏ bớt (TRUNC)


LAD/FBD SCL Mô tả
out := ROUND (in); Chuyển đổi một số thực (Real hoặc LReal)
thành số nguyên. Phân số thực sẽ được làm
tròn tới giá trị nguyên gần nhất (IEEE –
round to nearest). Nếu con số có độ chính
xác một nữa trong khoảng giữa hai số
nguyên (ví dụ là 10.5), thì nó sẽ được làm
tròn tới một số nguyên chẵn. Ví dụ:
 ROUND (10.5) = 10
 ROUND (11.5) = 12
out := TRUNC(in); Chuyển một số thực (Real hoặc LReal) thành
một số nguyên. Phần phân số của số thực sẽ
được cắt bỏ tới số 0 (IEEE – round to zero).

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.

Bảng A. 81. Các trạng thái ENOlệnh ROUND và TRUNC


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

A.7.4. Các lệnh Ceiling và floor

Bảng A. 82. Các lệnh ceiling (CEIL) và (FLOOR)


LAD/FBD SCL Mô tả
out := CEIL(in); Chuyển đổi một số thực (Real hoặc LReal)
thành số nguyên gần nhất lớn hơn hoặc bằng
số thực đã chọn (IEEE “round to + infinity”).
out := FLOOR(in); Chuyển đổi một số thực (Real hoặc LReal)
thành số nguyên gần nhất nhỏ hơn hoặc bằng
số thực đã chọn (IEEE “round to + infinity”).

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

A.7.5. Các lệnh định tỷ lệ và chuẩn hóa

Bảng A. 85. Các lệnh SCALE_X và NORM_X


LAD/FBD SCL Mô tả
out := SCALE_X( Định mức tỷ lệ tham số thực VALUE được
min,:=_undef_in_ chuẩn hóa, với (0.0 <= VALUE <= 1.0)
value:=_real_in_, trong kiểu dữ liệu và miền giá trị được xác
max:=undef_in_); định bởi các tham số MIN và MAX:
OUT = VALUE (MAX – MIN) + MIN

out := NORM_X( Chuẩn hóa tham số VALUE bên trong miền


min:=_,undef_in_ giá trị được xác định bởi các tham số MIN và
value:=_undef_in_, MAX:
max:=_undef_in_); OUT = (VALUE – MIN) / (MAX – MIN),
với (0.0 <= OUT <= 1.0)

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.

Bảng A. 87. Các trạng thái ENOlệnh SCALE_X và NORM_X


ENO Mô tả Kết quả OUT
1 Không có lỗi Kết quả hợp lệ
0 Kết quả vượt quá phạm vi Kết quả trung gian: phần có trọng số nhỏ
hợp lệ đối với kiểu dữ nhất của một số thực ưu tiên cho sự chuyển
liệu OUT đổi sau cùng sang kiểu dữ liệu OUT.
0 Thông số MAX <= MIN SCALE_X: phần có trọng số nhỏ nhất của
số thực VALUE lấp đầy kích thước OUT.
NORM_X: VALUE trong kiểu dữ liệu
VALUE được kéo dài để lấp đầy một kích
thước Double Word.
0 Thông số VALUE là +/– VALUE được ghi ra OUT
INF hay +/– NaN

A.8. Các lênh


̣ điều khiển chương trình

A.8.1. Lệnh nhảy và ghi nhãn

Bảng A. 88. Lệnh JMP, JMPN và LABEL


LAD FBD Mô tả
Nếu có dòng tín hiệu đến một cuộn dây JMP (LAD),
hay nếu tín hiệu vào hộp JMP (FBD) là true thì sau đó
sự thực thi chương trình tiếp tục với lệnh đầu tiên
theo nhãn được chỉ định.
Nếu không có dòng tín hiệu đi đến một cuộn dây
JMPN (LAD), hay nếu tín hiệu vào hộp JMP (FBD)
là false thì sau đó sự thực thi chương trình tiếp tục với
lệnh đầu tiên theo nhãn được chỉ định.
Nhãn đích cho một lệnh nhảy JMP hoặc JMPN.

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

 Mỗi nhãn phải là duy nhất trong một khối mã


 Ta có thể nhảy trong một khối mã, nhưng ta không thể nhảy từ một
khối mã tới khối mã khác.
 Ta có thể nhảy tiến hoặc nhảy lùi.
 Ta có thể nhảy tới cùng một nhãn từ nhiều hơn một nơi trong cùng
một khối mã.
A.8.2. Lệnh JMP_LIST

Bảng A. 90. Lệnh JMP_LIST


LAD/FBD SCL Mô tả
CASE k OF Lệnh JMP_LIST hoạt động như một bộ
0: GOTO dest0; phân phối nhảy chương trình để điều
1: GOTO dest1; khiển thực thi các phần chương trình. Tùy
2: GOTO dest2; thuộc vào giá trị của ngõ vào K, một nhảy
[n: GOTO destn;] xảy ra tới các nhãn chương trình tương
END_CASE; ứng. Chương trình thực hiện liên tiếp với
các lệnh chương trình theo nhãn nhảy
đích. Nếu giá trị của ngõ vào K vượt quá
(số nhãn – 1), thì sau đó nhảy không xảy
ra và xử lý tiếp mạng chương trình tiếp
theo.

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.

Right-Click trên một chốt ngõ ra và chọn lệnh “Insert output”.


Right-Click trên một chốt ngõ ra và chọn lệnh “Delete”.
A.8.3. Lệnh SWITCH

Bảng A. 92. Lệnh SWITCH


LAD/FBD SCL Mô tả
Không có sẳn Lệnh SWITCH hoạt động như một bộ phân
phối nhảy chương trình để điều khiển việc thực
thi các phần chương trình. Tùy thuộc vào kết
quả so sánh giữa giá trị ngõ vào K và các giá trị
được gán tới các ngõ vào so sánh, một nhảy xảy
ra tới nhãn chương trình tương ứng khi mà sự
so sánh thứ nhất là true. Nếu một trong những
sự so sánh tiếp theo là true, thì xảy ra một nhảy
tới nhãn được gán cho ELSE. Chương trình tiếp
tục thực thi với các lệnh chương trình theo nhãn
nhảy đích.

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.

Right-Click trên một chốt ngõ ra và chọn lệnh “Insert output”.


Right-Click trên một chốt ngõ ra và chọn lệnh “Delete”.

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.

A.9. Các phép toán logic

A.9.1. Các lệnh AND, OR và XOR

Bảng A. 97. Các lệnh AND, OR và XOR


LAD/FBD SCL Mô tả
out := in1 AND in2; AND: Logical AND

out := in1 OR in2; OR: Logical OR

out := in1 XOR in2; XOR: Logical exclusive


OR
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ê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.

A.9.2. Lệnh lấy bù

Bảng A. 99. Lệnh INV


LAD/FBD SCL Mô tả
Không có sẳn Tính phần bù 1 nhị phân của thông số IN. Phần bù
1 được thực hiện bằng cách đảo ngược giá trị bit
của thông số IN (thay đổi mỗi giá trị 0 thành 1 và
mỗi giá trị 1 thành 0). ENO luôn luôn là TRUE theo
sự thực thi của lệnh này.
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. 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

A.9.3. Các lệnh mã hóa và giải mã

Bảng A. 101. Các lệnh ENCO và DECO


LAD/FBD SCL Mô tả
out := ENCO(_in_); Lệnh ENCO mã hóa một mẫu bit thành một
số nhị phân.
Lệnh ENCO chuyển đổi thông số IN thành
một số nhị phân tương ứng với vị trí bit của
bit đặt có trọng số nhỏ nhất trong thông số
IN và trả kết quả đến thông số OUT. Nếu
thông số IN là 0000 0001 hay 0000 0000 thì
sau đó giá trị 0 được trả về đến OUT. Nếu
thông số IN là 0000 0000 thì ENO được đặt
là FALSE.
out := DECO(_in_); Lệnh DECO giải mã một số nhị phân thành
một mẫu bit.
Lệnh DECO giải mã một số nhị phân từ
thông số IN, bằng cách đặt vị trí bit tương
ứng trong thông số OUT lên giá trị 1 (tất cả
các bit khác được đặt về 0). ENO luôn luôn
là TRUE theo sự thực thi của lệnh DECO.
Lưu ý: Kiểu dữ liệu mặc định cho lệnh
DECO là DWORD. Trong SCL, thay đổi tên
lệnh thành DECO_BYTE hoặc
DECO_WORD để giải mã một byte hoặc giá
trị word và gán cho một byte hoặc tag word
hoặc địa chỉ.
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. 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ã

Bảng A. 103. Tham số OUT cho ENCO

ENO Điều kiện Kết quả (OUT)


1 Không có lỗi Số bit hợp lệ
0 IN bằng 0 OUT được đặt về 0
Sự lựa chọn kiểu dữ liệu cho thông số OUT của DECO gồm Byte, Word hay
DWord làm giới hạn phạm vi hữu dụng của thông số IN. Nếu giá trị của thông số
IN vượt quá phạm vi hữu dụng này, một phép toán modulo được thực hiện để tách
ra các bit có trọng số nhỏ nhất được liệt kê dưới đây.
Phạm vi thông số IN của lệnh DECO:
 IN 3 bit (các giá trị từ 0 đến 7) được sử dụng để đặt vị trí 1 bit trong
một OUT kiểu Byte.
 IN 4 bit (các giá trị từ 0 đến 15) được sử dụng để đặt vị trí 1 bit trong
một OUT kiểu Word.
 IN 5 bit (các giá trị từ 0 đến 31) được sử dụng để đặt vị trí 1 bit trong
một OUT kiểu DWord.

Bảng A. 104. Các ví dụ lê ̣nh ENCODE và DECODE


Giá trị IN trong DECO Giá trị OUT trong DECO (giải mã vị trí bit
đơn)
OUT Byte 8 Min. IN 0 0000 0001
bit Max. IN 7 1000 0000
OUT Word Min. IN 0 0000 0000 0000 0001
16 bit Max. IN 15 1000 0000 0000 0000
OUT DWord Min. IN 0 0000 0000 0000 0000 0000 0000 0000 0001
32 bit Max. IN 31 1000 0000 0000 0000 0000 0000 0000 0000

A.9.4. Các lệnh lựa chọn (SEL), dồn kênh (MUX) và phân kênh (DEMUX)

Bảng A. 105. Lệnh SEL (lựa chọn)


LAD/FBD SCL Mô tả
out := SEL( Lệnh SEL gán một trong hai giá trị
g:=_bool_in, ngõ vào đến thông số OUT, phụ thuộc
in0:-_variant_in, vào giá trị thông số G.
in1:=_variant_in);

Đố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. 106. Các kiểu dữ liệu cho lệnh SEL


Tham số Kiểu dữ liệu 1 Mô tả
G Bool  0 chọn IN0
 1 chọn IN1
IN0, IN1 SInt, Int, DInt, USInt, UInt, UDInt, Real, Các ngõ vào
Byte, Word, DWord, Time, Char
OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, Ngõ ra
Byte, Word, DWord, Time, Char
1
Các biến số ngõ vào và biến số ngõ ra phải cùng kiểu dữ liệu.
Các mã điều kiện: ENO luôn luôn là TRUE theo sự thực thi của lệnh SEL.

Bảng A. 107. Lệnh MUX (dồn kênh)


LAD/FBD SCL Mô tả
out := MUX( Lệnh MUX sao chép một trong nhiều
k:=_unit_in, giá trị các ngõ vào đến thông số
in1:=variant_in, OUT, phụ thuộc vào giá trị thông số
in2:=variant_in, K. Nếu giá trị thông số K vượt quá
phạm vi hợp lệ (INn-1) thì giá trị
[...in32:=variant_in,] thông số ELSE sẽ được gán đến
inelse:=variant_in); 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ê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. 108. Các kiểu dữ liệu cho lệnh MUX


Tham số Kiểu dữ liệu 1 Mô tả
K UInt  0 chọn IN0
 1 chọn IN1
 n chọn INn
IN0, IN1, .. SInt, Int, DInt, USInt, UInt, UDInt, Các ngõ vào
INn Real, Byte, Word, DWord, Time, Char
ELSE SInt, Int, DInt, USInt, UInt, UDInt, Giá trị thay thế ngõ
Real, Byte, Word, DWord, Time, Char vào (tùy chọn)
OUT SInt, Int, DInt, USInt, UInt, UDInt, Ngõ ra
Real, Byte, Word, DWord, Time, Char
1
Các biến số ngõ vào và biến số ngõ ra phải cùng kiểu dữ liệu.

Bảng A. 109. Lệnh DEMUX (phân kênh)


LAD/FBD SCL Mô tả
DEMUX( Lệnh DEMUX sao chép giá trị ở vị
k:=_unit_in, trí được gán cho tham số IN tới
in:=variant_in, một trong các cổng ra. Giá trị của
out1:=variant_in, tham số lựa chọn K trong đó đầu ra
out2:=variant_in, được chọn là đích đến của giá trị
[...out32:=variant_in,] IN. Nếu giá trị của K lớn hơn số
outelse:=variant_in); (OUTn-1) thì sau đó giá trị IN
được sao chép tới vị trí được gán
cho các tham số ELSE.
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êm một cổng ra, click vào biểu tượng “Create” hoặc right-click
trên chân một cổng ra cho một trong những tham số OUT đ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. 110. Các kiểu dữ liệu cho lệnh DEMUX


Tham số Kiểu dữ liệu 1 Mô tả
K UInt Chọn giá trị:
 0 chọn OUT0
 1 chọn OUT1
 n chọn OUTn
IN SInt, Int, DInt, USInt, UInt, UDInt, Ngõ vào
Real, Byte, Word, DWord, Time,
Char
OUT0, OUT1, .. SInt, Int, DInt, USInt, UInt, UDInt, Các ngõ ra
OUTn Real, LReal, Byte, Word, DWord,
Time, Char
ELSE SInt, Int, DInt, USInt, UInt, UDInt, Thay thế ngõ ra khi K
Real, LReal, Byte, Word, DWord, lớn hơn (OUTn-1)
Time, Char
1
Các biến số ngõ vào và biến số ngõ ra phải cùng một kiểu dữ liệu.

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.

A.10. Dịch chuyển và Xoay

A.10.1. Các lệnh dịch chuyển

Bảng A. 112. Các lệnh SHR và SHL


LAD/FBD SCL Mô tả
out := SHR( Sử dụng các lệnh dịch chuyển (SHR và
in:=_variant_in_, SHL) để dịch chuyển mẫu bit của thông số
n:=_uint_in); IN. Kết quả được gán đến thông số OUT.
out := SHL( Thông số N xác định số lượng của các vị trí
in:=_variant_in_, bit được dịch chuyển:
n:=_uint_in);  SHR: Dịch chuyển mẫu bit qua phải.
 SHL: Dịch chuyển mẫu bit qua trá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ả.

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

Bảng A. 114. Ví dụ về SHL cho dữ liệu Word


Chuyển các bit của một Word sang trái bằng cách chèn các số 0 từ phía bên
phải (N = 1)
IN 1110 0010 1010 1101 Giá trị OUT trước lần dịch 1110 0010 1010 1101
chuyển đầu tiên:
Sau dịch chuyển trái đầu 1100 0101 0101 1010
tiên:
Sau dịch chuyển trái thứ 1000 1010 1011 0100
hai:
Sau dịch chuyển trái thứ ba: 0001 0101 0110 1000

A.10.2. Các lệnh xoay

Bảng A. 115. Các lệnh ROR và ROL


LAD/FBD SCL Mô tả
out := ROL( Sử dụng các lệnh xoay để xoay
in:=_variant_in_, mẫu bit của thông số IN. Kết quả
n:=_uint_in); được gán đến thông số OUT.
out := ROR( Thông số N xác định số lượng của
in:=_variant_in_, các vị trí bit được xoay.
n:=_uint_in);  ROR: xoay mẫu bit
sang phải
 ROL: xoay mẫu bit
sang trá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ả.

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

B.1. Các lênh


̣ Ngày và thời gian trong ngày

B.1.1. Các lệnh ngày và giờ

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

Bảng B. 1. Lệnh T_CONV (chuyển đổi thời gian)


LAD/FBD SCL Mô tả
out := T_CONV( Lệnh T_CONV (Time Convert) chuyển đổi
in:=_variant_in); một kiểu dữ liệu Time sang một kiểu dữ liệu
DInt, hay chuyển đổi ngược từ kiểu dữ liệu
DInt sang kiểu dữ liệu Time.
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 B. 2. Các kiểu dữ liệu cho các tham số T_CONV


Tham số và kiểu Kiểu dữ liệu Mô tả
IN IN DInt, Time Giá trị Time hay DInt ngõ vào
OUT OUT DInt, Time Giá trị Time hay DInt được chuyển đổi

Bảng B. 3. Các lệnh T_ADD (Time Add) và T_SUB (Time Subtract)


LAD/FBD SCL Mô tả
out := T_ADD( T_ADD (Time Add) cộng giá trị ngõ
in1:=_variant_in, vào IN1 (kiểu DTL hay Time) với giá
in2:=_time_in); trị ngõ vào IN2 kiểu Time. Thông số
OUT mang lại kết quả là giá trị DTL
hay Time.
Có thể thực hiện hai phép cộng kiểu dữ
liệu sau:
 Time + Time = Time
 DTL + Time = DTL

out := T_SUB( Lệnh T_SUB (Time Subtract) trừ một


in1:=_variant_in, giá trị IN2 kiểu Time từ giá trị IN1 kiểu
in2:=_time_in); DTL hay kiểu Time. Thông số OUT
mang lại giá trị hiệu như một kiểu dữ
liệu DTL hay Time.
Có thể thực hiện hai phép trừ kiểu dữ
liệu sau:
 Time – Time = Time
 DTL – Time = 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ả.

Bảng B. 4. Các kiểu dữ liệu cho các tham số T_ADD và T_SUB


Tham số và kiểu Kiểu dữ liệu Mô tả
IN1 IN DTL, Time Giá trị DTL hay Time
IN2 IN Time Giá trị Time để trừ
OUT OUT DTL, Time Hiệu DTL hay Time
1
Chọn kiểu dữ liệu IN1 từ danh sách thả sẳn có bên dưới tên lệnh. Và việc
chọn kiểu dữ liệu IN1 cũng thiết lập kiểu dữ liệu cho tham số OUT.

Bảng B. 5. Lệnh T_DIFF (Time Difference)


LAD/FBD SCL Mô tả
out := T_DIFF( Lệnh T_DIFF (Time Difference) trừ một giá trị
in1:=_DTL_in, DTL của IN2 từ giá trị DTL của IN1. Thông số
in2:=_DTL_in); OUT là giá trị hiệu mang kiểu dữ liệu Time.
 DTL – DTL = Time

Bảng B. 6. Các kiểu dữ liệu cho các tham số T_DIFF


Tham số và kiểu Kiểu dữ liệu Mô tả
IN1 IN DTL Giá trị DTL
IN2 IN DTL Giá trị DTL để trừ
OUT OUT Time Hiệu Time

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.

Bảng B. 8. Các kiểu dữ liệu cho các tham số T_COMBINE


Tham số và kiểu Kiểu dữ liệu Mô tả
IN1 IN Date Giá trị Date được kết hợp phải nằm giữa
DATE#1990-01-01 và DATE#2089-12-31
IN2 IN Time_of_Day Giá trị Time_of_Day được kết hợp
OUT OUT DTL Giá trị DTL

B.1.2. Thiết lập và đọc đồng hồ hệ thống

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. 9. Các lệnh về thời gian hệ thống


LAD/FBD SCL Mô tả
ret_val := WR_SYS_T( Lệnh WR_SYS_T (Write System Time)
in:=_DTL_in_); thiết lập đồng hồ thời gian trong ngày
của PLC với một giá trị DTL tại thông
số IN. Giá trị thời gian này không bao
gồm múi giờ địa phương hay độ dịch
chỉnh thời gian tiết kiệm ánh sáng ngày.
ret_val := RD_SYS_T( Lệnh RD_SYS_T (Read System Time)
out=>_DTL_out); đọc thời gian hệ thống hiện thời từ PLC.
Giá trị này không bao gồm múi giờ địa
phương hay độ dịch chỉnh thời gian tiết
kiệm ánh sáng ngày.
ret_val := RD_LOC_T( Lệnh RD_LOC_T (Read Local Time)
out=>_DTL_out); đưa ra thời gian địa phương hiện thời
của PLC như một kiểu dữ liệu DTL.

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

B.2. Các lệnh chuỗi và ký tự

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.

B.2.1. S_CONV (đổi chuỗi thành giá trị)

Bảng B. 12. Lệnh chuyển đổi chuỗi S_CONV


LAD/FBD SCL Mô tả
out := Chuyển đổi một chuỗi ký tự thành giá
<Type>_TO_<Type>(in); trị tương ứng, hay một giá trị thành
một chuỗi ký tự tương ứng. S_CONV
không có các tùy chọn định dạng ngõ
ra. Điều này làm cho lệnh S_CONV
đơn giản hơn, nhưng kém linh hoạt
hơn so với các lệnh STRG_VAL và
VAL_STRG.
1
Đối với LAD/FBD: Click vào “???” và chọn một kiểu dữ liệu từ danh sách
thả.
2
Đối với SCL: chọn S_CONV từ các lệnh được mở rộng và trả lời các hướng
dẫn cho các kiểu dữ liệu cho việc chuyển đổi. STEP 7 sau đó, cung cấp lệnh chuyển
đổi phù hợp.
Bảng B. 13. Các kiểu dữ liệu lê ̣nh S_CONV (chuỗi sang giá trị)
Tham số và kiểu Kiểu dữ liệu Mô tả
IN IN String Chuỗi ký tự ngõ vào
OUT OUT String, SInt, Int, DInt, USInt, UInt, Giá trị số ngõ ra
UDInt, Real

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.

Các quy tắc định dạng chuỗi ngõ vào:


 Nếu một dấu chấm thập phân được sử dụng trong chuỗi IN, ta phải
dùng ký tự “.”.
 Các ký tự dấu phẩy “,” được sử dụng như một phân cách hàng ngàn
về bên trái của dấu chấm thập phân thì được cho phép và được bỏ qua.
 Các khoảng trống cách quãng được bỏ qua.

B.2.2. S_CONV (đổi giá trị thành chuỗi)

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.

Bảng B. 15. Độ dài chuỗi tối đa của mỗi kiểu dữ liệu


Kiểu dữ Số lượng tối đa của các Ví dụ Độ dài chuỗi tổng bao
liệu IN ký tự được chuyển đổi gồm các byte độ dài cực
trong chuỗi OUT đại và hiện thời.
USInt 3 255 5
SInt 4 – 128 6
UInt 4 65535 7
Int 6 – 32768 8
UDInt 10 4294967295 12
DInt 11 – 2147483648 13

Các quy tắc định dạng chuỗi ngõ ra:


 Các giá trị được ghi đến thông số OUT không sử dụng một dấu “+”
cách quãng.
 Sự biểu thị dấu chấm cố định được sử dụng (không có ký hiệu lũy
thừa).
 Ký tự dấu chấm “.” được sử dụng để biểu thị dấu chấm thập phân khi
thông số IN là kiểu dữ liệu Real.

B.2.3. Lệnh STRG_VAL

Bảng B. 16. Lệnh đổi chuỗi sang giá trị (STRG_VAL)


LAD/FBD SCL Mô tả
"STRG_VAL"( Chuyển đổi một chuỗi ký tự
in:=_string_in, số thành một số nguyên tương
format:=_word_in, ứng hay một biểu thị dấu
p:=uint_in, chấm động.
out=>_variant_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ả.

Bảng B. 17. Các kiểu dữ liệu cho lệnh STRG_VAL


Tham số và kiểu Kiểu dữ liệu Mô tả
IN IN String Chuỗi ký tự ASCII để chuyển
đổi
FORMAT IN Word Các tùy chọn định dạng ngõ
ra
P IN_OUT UInt IN: chỉ mục đến ký tự đầu
tiên dùng để chuyển đổi (ký
tự đầu tiên = 1)
OUT: chỉ mục đến ký tự tiếp
theo sau khi tiến trình chuyển
đổi kết thúc
OUT OUT SInt, Int, DInt, USInt, Giá trị số được chuyển đổi
UInt, UDInt, Real

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 của STRG_VAL

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. 18. Định dạng lệnh STRG_VAL.


Bit Bit Bit Bit
16 8 7 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 f r

f = định dạng ký hiệu; 1 = ký hiệu lũy thừa


0 = ký hiệu dấu chấm cố định
r = định dạng chấm thập phân; 1 = “,” (ký tự dấu phẩy)
0 = “.” (ký tự dấu chấm)
Bảng B. 19. Các giá trị của tham số FORMAT
FORMAT Định dạng ký hiệu Biểu thị chấm thập phân
0000 (mặc định) Dấu chấm cố định "."
0001 ","
0002 Lũy thừa "."
0003 ","
0004 đến FFFF Các giá trị không hợp lệ

Các quy tắc đối với chuyển đổi STRG_VAL:


 Nếu ký tự dấu chấm “.” được sử dụng cho dấu chấm thập phân, khi đó
các dấu phẩy “,” về bên trái của chấm thập phân được diễn dịch như
là các ký tự phân cách phần ngàn. Các ký tự dấu phẩy được cho phép
và được bỏ qua.
 Nếu ký tự dấu phẩy “,” được sử dụng cho dấu chấm thập phân, khi đó
các dấu chấm “.” về bên trái của chấm thập phân được diễn dịch như
là các ký tự phân cách phần ngàn. Các ký tự dấu chấm được cho phép
và được bỏ qua.
 Các khoảng trống cách quãng được bỏ qua.
B.2.4. Lệnh VAL_STRG

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ả.

Bảng B. 21. Các kiểu dữ liệu cho lệnh VAL_STRG


Tham số và kiểu Kiểu dữ liệu Mô tả
IN IN SInt, Int, DInt, USInt, Giá trị để chuyển đổi
UInt, UDInt, Real
SIZE IN USInt Số lượng các ký tự được dùng
để ghi vào chuỗi OUT
PREC IN USInt Độ chính xác hay kích thước
của phần phân số. Không bao
gồm dấu chấm thập phân.
FORMAT IN Word Các tùy chọn định dạng ngõ ra
P IN_OUT UInt IN: chỉ mục đến ký tự chuỗi
OUT đầu tiên dùng để thay thế
(ký tự đầu tiên bằng 1)
OUT OUT String Chuỗi được chuyển đổi

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.

Thông số FORMAT của lệnh VAL_STRG


Thông số FORMAT đối với lệnh VAL_ STRG đượ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. 22. Định dạng lệnh STRG_VAL
Bit Bit Bit Bit
16 8 7 0
0 0 0 0 0 0 0 0 0 0 0 0 0 s f r

s = ký tự dấu của số; 1 = sử dụng ký tự dấu “+” và “ – ”


0 = chỉ sử dụng ký tự dấu “ – ”
f = định dạng ký hiệu; 1 = ký hiệu lũy thừa
0 = ký hiệu dấu chấm cố định
r = định dạng chấm thập phân; 1 = “,” (ký tự dấu phẩy)
0 = “.” (ký tự dấu chấm)

Bảng B. 23. Các giá trị cho tham số FORMATlệnh STRG_VAL


FORMAT Ký tự dấu của số Định dạng ký Biểu thị chấm
(Word) hiệu thập phân
W#16#0000 Chỉ “ – ” Dấu chấm cố định "."
W#16#0001 ","
W#16#0002 Lũy thừa "."
W#16#0003 ","
W#16#0004 “+” và “ – ” Dấu chấm cố định "."
W#16#0005 ","
W#16#0006 Lũy thừa "."
W#16#0007 ","
W#16#0008 tới Các giá trị không hợp lệ
W#16#FFFF

Các quy tắc định dạng chuỗi thông số OUT:


 Các ký tự khoảng trắng cách quãng được cộng vào phần ngoài cùng
bên trái của chuỗi khi chuỗi được chuyển đổi nhỏ hơn kích thước
được xác định.
 Khi bit dấu của thông số FORMAT là FALSE, các giá trị kiểu dữ liệu
số nguyên không dấu và có dấu được ghi đến bộ đệm ngõ ra mà
không có dấu “+” cách quãng. Dấu “ – ” được sử dụng nếu cần.
<Các khoảng trống cách quãng><các con số không có số 0 cách quãng>
„.‟<Các con số PREC>
 Khi bit dấu là TRUE, các giá trị kiểu dữ liệu số nguyên không dấu và
có dấu được ghi đến bộ đệm ngõ ra luôn luôn có một ký tự dấu cách
quãng.
<Các khoảng trống cách quãng><dấu><các con số không có số 0 cách
quãng> „.‟<Các con số PREC>
 Khi FORMAT được thiết lập để biểu thị lũy thừa, các giá trị kiểu dữ
liệu Real được ghi đến bộ đệm ngõ ra như sau:
<Các khoảng trống cách quãng><dấu>< con số> „.‟<Các con số PREC>
„E‟<dấu><các con số không có số 0 cách quãng>
 Khi FORMAT được thiết lập để biểu thị dấu chấm cố định, các giá trị
kiểu dữ liệu số nguyên không dấu, số nguyên có dấu và số thực được
ghi đến bộ đệm ngõ ra như sau:
<Các khoảng trống cách quãng><dấu><các con số không có số 0 cách
quãng> „.‟<Các con số PREC>
 Các số 0 cách quãng nằm bên trái của chấm thập phân (ngoại trừ con
số kế cận với chấm thập phân) bị xóa bỏ.
 Các giá trị nằm bên phải của chấm thập phân được làm tròn để nằm
vừa trong số lượng các con số bên phải chấm thập phân được xác định
bởi thông số PREC.
 Kích thước của chuỗi ngõ ra phải ít nhất lớn hơn 3 byte so với số
lượng các con số nằm bên phải của chấm thập phân.
 Các giá trị được căn chỉnh bên phải trong chuỗi ngõ ra.

Các điều kiện được thuật lại bởi ENO

 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. 24. Các trạng thái ENOlệnh STRG_VAL


ENO Mô tả
1 Không có lỗi.
0 Thông số không hợp lệ hay không đúng quy tắc, ví dụ truy xuất vào một
DB không tồn tại.
0 Chuỗi không đúng quy tắc khi chiều dài tối đa của chuỗi là 0 hay 255.
0 Chuỗi không đúng quy tắc khi chiều dài hiện thời lớn hơn chiều dài tối đa.
0 Giá trị số được chuyển đổi quá lớn đối với kiểu dữ liệu OUT được xác
định.
0 Kích cỡ chuỗi tối đa của thông số OUT phải đủ lớn để nhận một số lượng
các ký tự được xác định bởi thông số SIZE, bắt đầu từ vị trí ký tự thông số
P.
0 Giá trị P không đúng quy tắc khi P = 0 hay P lớn hơn độ dài chuỗi hiện
thời.
0 Thông số SIZE phải lớn hơn thông số PREC.
Bảng B. 25. Các ví dụ về chuyển đổi chuỗi thành giá trị S_CONV
Chuỗi IN Kiểu dữ liệu OUT Giá trị OUT ENO
“123” Int/DInt 123 TRUE
“– 00456” Int/DInt – 456 TRUE
“123.45” Int/DInt 123 TRUE
“+2345” Int/DInt 2345 TRUE
“00123AB” Int/DInt 123 TRUE
“123” Real 123.0 TRUE
“123.45” Real 123.45 TRUE
“1.23e-4” Real 1.23 TRUE
“1.23E-4” Real 1.23 TRUE
“12,345.67” Real 12345.67 TRUE
“3.4e39” Real 3.4 TRUE
“-3.4e39” Real -3.4 TRUE
“1.17549e-38” Real 1.17549 TRUE
“12345” SInt 0 FALSE
“A123” N/A 0 FALSE
“” N/A 0 FALSE
“++123” N/A 0 FALSE
“+-123” N/A 0 FALSE

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

Bảng B. 27. Các ví dụ về chuyển đổi STRG_VAL


Chuỗi IN FORMAT (W#16#...) Kiểu dữ liệu OUT Giá trị OUT
“123” 0000 Int/DInt 123
“– 00456” 0000 Int/DInt – 456
“123.45” 0000 Int/DInt 123
“+2345” 0000 Int/DInt 2345
“00123AB” 0000 Int/DInt 123
“123” 0000 Real 123.0
“-00456” 0001 Real -456.0
“+00456” 0001 Real 456.0
“123.45” 0000 Real 12345.0
“123,45” 0001 Real 123.45
“.00123AB” 0001 Real 123.0
“1.23e-4” 0000 Real 1.23
“1.23E-4” 0000 Real 1.23
“1.23E-4” 0002 Real 1.23E-4
“12,345.67” 0000 Real 12345.67
“12,345.67” 0001 Real 12.345
“3.4e39” 0002 Real +INF
“-3.4e39” 0002 Real -INF
“1.17549e- 0002 Real 0.0
38” (và nhỏ
hơn)
“12345” N/A SInt 0
“A123” N/A N/A 0
“” N/A N/A 0
“++123” N/A N/A 0
“+-123” N/A N/A 0

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ảng B. 28. Các ví dụ về chuyển đổi VAL_STRG


Kiểu Giá trị P SIZE FORMAT PREC Chuỗi OUT ENO
dữ IN (W#16#...)
liệu
UInt 123 16 10 0000 0 Current TRUE
Temp =
xxxxxxx123
C
UInt 0 16 10 0000 2 Current TRUE
Temp =
xxxxxx0.00
C
UDIn 12345678 16 10 0000 3 Current TRUE
t Temp =
x12345.678
C
UDIn 12345678 16 10 0001 3 Current TRUE
t Temp =
x12345,678
C
Int 123 16 10 0004 0 Current TRUE
Temp =
xxxxxx+123
C
Int -123 16 10 0004 0 Current TRUE
Temp =
xxxxxx-123
C
Real -0.00123 16 10 0004 4 Current TRUE
Temp = xxx-
0.0012 C
Real -0.00123 16 10 0006 4 Current TRUE
Temp =
-1.2300E-3
C
Real -INF 16 10 N/A 4 Current FALSE
Temp =
xxxxxx-INF
C
Real +INF 16 10 N/A 4 Current FALSE
Temp =
xxxxxx+INF
C
Real NaN 16 10 N/A 4 Current FALSE
Temp =
xxxxxxxNa
NC
UDIn 12345678 16 6 N/A 3 Current FALSE
t Temp =
xxxxxxxxxx
C

C. Tâ ̣p lệnh công nghệ

C.1. Bộ đếm tốc độ cao

Bảng C. 1. Lệnh CTRL_HSC


LAD/FBD SCL Mô tả
"CTRL_HSC_0_DB" ( Mỗi lệnh CTRL_HSC sử
hsc:=_hw_hsc_in_, dụng một cấu trúc được
dir:=_bool_in_, lưu trữ trong một DB để
cv:=_bool_in_, duy trì dữ liệu. Ta gán giá
rv:=_bool_in_, trị DB khi lệnh
period:=_bool_in_, CTRL_HSC được đặt
new_dir:=_int_in_, trong trình soạn thảo.
new_cv:=_int_in_,
new_rv:=_dint_in_,
new_period:=_int_in_,
busy:=_bool_out_,
status:=_word_out_);
1
STEP 7 tự động tạo DB khi ta chèn lệnh.
2
Ví dụ trong SCL, “CTRL_HSC_0_DB” là tên của một DB mẫu.

Bảng C. 2. Các kiểu dữ liệu cho các tham sốlệnh CTRL_HSC


Tham số và loại Kiểu dữ liệu Mô tả
HSC IN HW_HSC Bộ định danh HSC
DIR1, 2 IN Bool 1 = yêu cầu hướng đếm mới
1
CV IN Bool 1 = yêu cầu đặt một giá trị đếm mới
1
RV IN Bool 1 = yêu cầu đặt một giá trị tham chiếu
mới
1
PERIOD IN Bool 1 = yêu cầu đặt một giá trị chu kỳ mới
(chỉ dành cho chế độ đo tần số)
NEW_DIR IN Int Hướng đếm mới:
1 = tiến; – 1 = lùi
NEW_CV IN DInt Giá trị đếm mới
NEW_RV IN DInt Giá trị tham chiếu mới
NEW_PERIOD IN Int Giá trị chu kỳ mới (s): .01, .1 hay 1
(chỉ dành cho chế độ đo tần số)
3
BUSY OUT Bool Chức năng bận
STATUS OUT Word Mã điều kiện thực thi
1
Nếu một cập nhật của một giá trị thông số không được yêu cầu, các giá trị
ngõ vào tương ứng sẽ bị bỏ qua.
2
Tham số DIR chỉ có hợp lệ nếu mệnh lệnh đếm đã cấu hình được đặt về
“User program (internal direction control)”. Ta xác định sử dụng tham số này trên
cấu hình thiết bị HSC như thế nào.
3
Đối với một HSC S7 – 1200 trên CPU hay trên Signal Board, thông số
BUSY luôn luôn mang giá trị là 0.
Nhiều thông số cấu hình bộ đếm tốc độ cao chỉ được thiết lập trong cấu hình
thiết bị cho đề án.Một vài thông số bộ đếm tốc độ cao được khởi chạy trong cấu
hình thiết bị đề án, nhưng không thể được chỉnh sửa về sau dưới sự điều khiển
chương trình.
Các thông số của lệnh CTRL_HSC cung cấp sự điều khiển chương trình của
tiến trình đếm:
 Thiết lập hướng đếm đến một giá trị NEW_DIR.
 Thiết lập giá trị đếm hiện thời đến một giá trị NEW_CV.
 Thiết lập giá trị tham chiếu đến một giá trị NEW_RV.
 Thiết lập giá trị chu kỳ (cho chế độ đo tần số) đến một giá trị
NEW_PERIOD.
 Nếu các giá trị cờ boolean sau đây được đặt lên 1 khi lệnh
CTRL_HSC được
Nếu các giá trị cờ boolean sau đây được đặt lên 1 khi lệnh CTRL_HSC được
thực thi, giá trị NEW_xxx tương ứng được nạp đến bộ đếm. Nhiều yêu cầu (tức là
có nhiều hơn một cờ được đặt tại cùng một thời điểm) được xử lý trong một sự thực
thi đơn thuần của lệnh CTRL_HSC.
 Đặt DIR = 1 nạp một giá trị NEW_DIR.
 Đặt CV = 1 nạp một giá trị NEW_CV.
 Đặt RV = 1 nạp một giá trị NEW_RV.
 Đặt PERIOD = 1 nạp một giá trị NEW_PERIOD.
Lệnh CTRL_HSC thường được đặt trong một OB ngắt phần cứng, OB này
được thực hiện khi sự kiện ngắt phần cứng bộ đếm được kích hoạt. Lấy ví dụ, nếu
một sự kiện CV = RV kích hoạt việc ngắt bộ đếm, một khối mã OB ngắt phần cứng
sau đó sẽ thực thi lệnh CTRL_HSC và có thể thay đổi giá trị tham chiếu bằng cách
nạp một giá trị NEW_RV.
Giá trị đếm hiện thời thì không có sẵn trong các thông số của
CTRL_HSC.Địa chỉ ảnh tiến trình lưu trữ giá trị đếm hiện thời được gán giá trị
trong suốt sự cấu hình phần cứng bộ đếm tốc độ cao. Ta có thể sử dụng chương
trình logic để đọc trực tiếp giá trị đếm và giá trị được trả lại chương trình sẽ là một
số đếm đúng trong lúcmà bộ đếm đã được đọc. Bộ đếm sẽ tiếp tục đếm các sự kiện
tốc độ cao. Vì vậy, giá trị đếm thực tế có thể thay đổi trước khi chương trình hoàn
thành một chu trình sử dụng một giá trị đếm cũ.
Các mã điều kiện: trong trường hợp có lỗi, ENO được đặt về 0 và ngõ ra
STATUS chứa một mã điều kiện.

Bảng C. 3. Các giá trị STATUS (W#16#)lệnh CTRL_HSC


STATUS Mô tả
0 Không có lỗi
80A1 Nhận dạng HSC không ghi địa chỉ HSC
80B1 Giá trị không phù hợp trong NEW_DIR
80B2 Giá trị không phù hợp trong NEW_CV
80B3 Giá trị không phù hợp trong NEW_RV
80B4 Giá trị không phù hợp trong NEW_PERIOD
80C0 Nhiều truy cập tới bộ đếm tốc độ cao
80D0 Bộ đếm tốc độ cao (HSC) không được kích hoạt trong cấu
hình phần cứng CPU.

C.1.1. Sự vận hành bộ đếm tốc độ cao

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

Lựa chọn chức năng cho bộ đếm tốc độ cao HSC

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.

Bảng C. 5. Các chế độ đếm của HSC


Loại Input1 Input2 Input3 Chức năng
Bộ đếm một pha với điều Đồng hồ (Quang: - Đếm hay tần
khiển định hướng bên đếm trực tiếp) số
trong Reset Đếm
Bộ đếm một pha với điều Đồng hồ Trực tiếp - Đếm hay tần
khiển định hướng bên đếm lên số
ngoài Reset Đếm
Bộ đếm hai pha với 2 tín Đồng hồ Đồng hồ - Đếm hay tần
hiệu vào clock đếm đếm xuống số
Reset Đếm
Bộ đếm trạng thái vuông Pha A Pha B - Đếm hay tần
pha A/B số
Reset Z Đếm

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.

Truy cập giá trị hiện hành cho HSC

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.

Bảng C. 8. Giá trị hiện hành của HSC


HSC Kiểu dữ liệu Địa chỉ mặc định
HSC1 DInt ID1000
HSC2 DInt ID1004
HSC3 DInt ID1008
HSC4 DInt ID1012
HSC5 DInt ID1016
HSC6 DInt ID1020

C.1.2. Cấu hình của bộ đếm tốc độ cao


CPU cho phép ta cấu hình đến 6 bộ đếm tốc độ
cao.Để cấu hình các thông số cho mỗi HSC
riêng biệt, ta chỉnh sửa phần “Properties” của
CPU.
Sử dụng lệnh CTRL_HSC trong chương trình
người dùng để điều khiển sự hoạt động của
HSC.
Kích hoạt tính năng HSC cụ thể bằng cách chọn
tùy chọn “Enable” cho HSC đó.

Hình C. 1. Thuộc tính “HSC” của CPU

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.

Hình C. 2. Cấu hình HSC

C.2. Bộ đều khiển PID

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.

Thuật toán điều khiển PID

Bộ điều khiển PID (Proportional/Integral/Derivative) đo khoảng thời gian


giữa hai lần gọi và sau đó ước lượng các kết quả cho việc giám sát thời gian lấy
mẫu. Một giá trị trung bình của thời gian lấy mẫu được tạo ra ở mỗi lần chuyển chế
độ và trong quá trình khởi động ban đầu. Giá trị này được sử dụng như là giá trị
tham chiếu cho chức năng giám sát và được sử dụng để tính toán. Việc giám sát bao
gồm đo lường thời gian hiện hành giữa hai lần gọi và giá trị trung bình của thời gian
lấy mẫu được xác định từ bộ điều khiển.
Giá trị cổng ra của bộ điều khiển PID bao gồm ba thành phần sau:
 P (Proportional): khi được tính toán với thành phần “P”, giá trị cổng
ra sẽ tỷ lệ với sự khác biệt giữa điểm đặt (setpoint) và giá trị xử lý (giá
trị cổng vào).
 I (Integral): khi được tính toán với thành phần “I”, giá trị cổng ra tăng
theo tỷ lệ tương ứng với thời gian của sự khác biệt giữa điểm đặt và
giá trị xử lý (giá trị cổng vào) cho tới sự khác nhau chính xác cuối
cùng.
 D (derivative): khi được tính toán với thành phần “D”, giá trị cổng ra
tăng như một hàm tỷ lệ ngày càng tăng của sự thay đổi về sự khác
nhau giữa điểm đặt và giá trị xử lý (giá trị cổng vào). Giá trị cổng ra
được hiệu chỉnh tới điểm đặt càng nhanh càng tốt.
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.

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ộ đ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)

C.2.1. Chèn lệnh PID và đối tượng công nghệ

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.

Để tạo một đối tượng công nghệ,


double-click vào biểu tượng “Add
new object” trong đường dẫn dự án.

Click vào biểu tượng “điều khiển”


và chọn đối tượng công nghệ cho
kiểu bộ điều khiển PID
(PID_Compact hoặc PID_3Step).
Và ta có thể đặt một tên tùy ý cho
đối tượng công nghệ.
Click vào “OK” để tạo đối tượng
công nghệ.

C.2.2. Lệnh PID_Compact


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.

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. 11. Lệnh PID_Compact


LAD/FBD SCL Mô tả
"PID_Compact_1"( PID_Compact
Setpoint:=_real_in_, cung cấp một bộ
Input:=_real_in_, điều khiển PID
Input_PER:=_word_in_, với chức năng tự
ManualEnable:=_bool_in_, điều chỉnh cho
ManualValue:=_real_in_, chế độ tự động
Reset:=_bool_in_, hoặc bằng tay.
ScaledInput=>_real_out_, PID_Compact là
Output=>_real_out_, một bộ điều
Output_PER=>_word_out_, khiển PIDT1 với
Output_PWM=>_bool_out_, anti-windup và
SetpointLimit_H=>_bool_out_, trọng số của
SetpointLimit_L=>_bool_out_, thành phần P- và
InputWarning_H=>_bool_out_, thành phần D.
InputWarning_L=>_bool_out_,
State=>_int_out_,
Error=>_dword_out_);
1
STEP 7 sẽ tự động tạo ra các đối tượng công nghệ và DB mẫu khi ta chèn
lệnh. DB mẫu sẽ chứa các tham số của đối tượng công nghệ.
2
Ví dụ trong SCL, “PID_Compact_1” là tên của một DB mẫu.

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.

Đáp ứng để thiết lập lại (Response to Reset)

Phản ứng để Reset = TRUE phụ thuộc vào phiên bản của lệnh
PID_Compact.

Reset áp ứng PID_Compact V1.1


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. Một sự giảm cạnh ở Reset sẽ kích hoạt một thay đổi để tác động
chế độ hoạt động gần đây nhất.

Hình C. 3. Biểu đồ reset đáp ứng PID_Compact V1.1

 Kích hoạt
 Lỗi
 Reset

Reset đáp ứng PID_Compact V1.0

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. 4. Biểu đồ reset đáp ứng PID_Compact V1.0


 Kích hoạt
 Lỗi
 Reset

Sự hoạt động của bộ điều khiển PID_Compact

Hình C. 5. Sự hoạt động của bộ điều khiển PID_Compact

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ảng C. 13. Các tham số ErrorBit lệnh PID_Compact


ErrorBit Mô tả
(DW#16#...)
0000 Không có lỗi
0001 Tham số “Input” nằm bên ngoài giới hạn giá trị xử lý
Input > sPid_Cmpt.r_Pv_Hlmor
Input < sPid_Cmpt.r_Pv_Llm
Ta không thể khởi động lại thiết bị tác động cho đến khi loại bỏ lỗi
0002 Giá trị không hợp lệ ở tham số “Input_PER”. Kiểm tra xem liệu có
một lỗi đang chờ ở cổng ra analog không.
0004 Lỗi trong quá trình tinh chỉnh sự dao động của giá trị xử lý không
thể được duy trì.
0008 Lỗi trong khi đang bất đầu điều chỉnh sơ bộ. Giá trị xử lý quá gần
điểm đặt setpoint. Bất đầu tinh chỉnh.
0010 Điểm đặt đã được thay đổi trong quá trình điều chỉnh bộ điều
khiển.
0020 Điều chỉnh sơ bộ có thể không được thực hiện trong chế độ tự
động hoặc trong quá trình tinh chỉnh.
0040 Lỗi trong tinh chỉnh điểm đặt quá gần với các giới hạn điểm đặt
0080 Cấu hình không chính xác các giới hạn giá trị cổng ra.
Kiểm tra để xem các giới hạn của giá trị cổng ra có được cấu hình
chính xác và phù hợp với hướng điều khiển hoạt động.
0100 Lỗi trong quá trình điều chỉnh bộ điều khiển đã dẫn đến các tham
số không hợp lệ.
0200 Giá trị không hợp lệ ở tham số “Input”: định dạng số của giá trị là
không hợp lệ.
0400 Tính toán giá trị cổng ra sai. Kiểm tra các tham số PID.
0800 Lỗi thời gian lấy mẫu: PID_Compact không được gọi trong thời
gian lấy mẫu của OB chu kỳ ngắt.
1000 Giá trị không hợp lệ ở tham số “Setpoint”: định dạng số của giá trị
không hợp lệ.

C.2.4. Lệnh PID_3STEP

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. 14. Lệnh PID_3Step


LAD/FBD SCL Mô tả
"PID_3Step_1"( PID_3Step cấu
SetpoInt:=_real_in_, hình một bộ điều
Input:=_real_in_, khiển PID với khả
ManualValue:=_real_in_, năng tự điều chỉnh
Feedback:=_real_in_, đã được tối ưu hóa
InputPer:=_word_in_, cho động cơ điều
FeedbackPer:=_word_in_, khiển các valve và
ManualEnable:=_bool_in_, các cơ cấu tác
ManualUP:=_bool_in_, động. Nó cung cấp
ManualDN:=_bool_in_, hai cổng ra
ActuatorH:=_bool_in_, Boolean.
ActuatorL:=_bool_in_, PID_3Step là một
Reset:=_bool_in_, bộ điều khiển với
ScaledInput=>_real_out_, anti-windup và
ScaledFeedback=>_real_out_, trọng số của thành
ErrorBits=>_dword_out_, phần P- và thành
OutputPer=>_word_out_, phần D.
State=>_int_out_,
OutputUP=>_bool_out_,
OutputDN=>_bool_out_,
SetpoIntLimitH=>_bool_out_,
SetpoIntLimitL=>_bool_out_,
InputWarningH=>_bool_out_,
InputWarningL=>_bool_out_,
Error=>_bool_out_);
1
STEP 7 sẽ tự động tạo ra các đối tượng công nghệ và DB mẫu khi ta chèn
lệnh. DB mẫu sẽ chứa các tham số của đối tượng công nghệ.
2
Ví dụ trong SCL, “PID_3Step_1” là tên của một DB mẫu.

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)

Sự hoạt đô ̣ng của bô ̣ diều khiển PID_3Step

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í

C.2.5. Các tham số ErrorBit lệnh PID_3STEP

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ờ.

Bảng C. 16. Các tham số ErrorBit lệnh PID_3Step


ErrorBit Mô tả
(DW#16#...)
0000 Không có lỗi
0001 Tham số “Input” nằm bên ngoài giới hạn giá trị xử lý
Input > Config.InputUpperLimit or
Input < Config.InputLowerLimit
Nếu ActivateRecoverMode = TRUE và ErrorBehaviour = 1 thì cơ
cấu tác động sẽ chuyển động để thay thế giá trị cổng ra. Nếu
ActivateRecoverMode = TRUE và ErrorBehaviour = 0 thì cơ cấu
tác động sẽ dừng tại vị trí hiện hành của nó. Nếu
ActivateRecoverMode = FALSE thì cơ cấu tác động sẽ dừng tại vị
trí hiện hành của nó.
PID_3STEP V1.1: ta có di chuyển cơ cấu tác động trong chế độ
bằng tay.
PID_3STEP V1.0: chế độ bằng tay không ở trong trạng thái này.
Ta không thể khởi động lại cơ cấu tác động cho đến khi loại bỏ
được lỗi.
0002 Giá trị không hợp lệ ở tham số “Input_PER”. Kiểm tra xem liệu có
một lỗi đang chờ ở cổng ra analog không.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn chờ nữa,
PID_3STEP chuyển về chế độ tự động.
0004 Lỗi trong quá trình tinh chỉnh sự dao động của giá trị xử lý không
thể được duy trì.
0008 Lỗi trong khi bất đầu điều chỉnh sơ bộ. Giá trị xử lý quá gần điểm
đặt setpoint. Bất đầu tinh chỉnh.
0010 Điểm đặt có thể không được thay đổi trong quá trình điều chỉnh bộ
điều khiển.
0020 Điều chỉnh sơ bộ có thể không được thực hiện trong chế độ tự
động hoặc trong quá trình tinh chỉnh.
0040 Lỗi trong khi tinh chỉnh điểm đặt quá gần với giới hạn điểm đặt
0080 Cấu hình không chính xác giới hạn giá trị cổng ra.
Kiểm tra để xem các giới hạn của giá trị cổng ra có được cấu hình
chính xác và phù hợp với hướng điều khiển hoạt động.
0100 Lỗi trong quá trình điều chỉnh bộ điều khiển đã dẫn đến các tham
số không hợp lệ.
0200 Giá trị không hợp lệ ở tham số “Input”: định dạng số của giá trị là
không hợp lệ.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn chờ nữa,
PID_3STEP chuyển về chế độ tự động.
0400 Tính toán giá trị cổng ra sai. Kiểm tra các tham số PID.
0800 Lỗi thời gian lấy mẫu: PID_3STEP không được gọi trong thời gian
lấy mẫu của OB chu kỳ ngắt.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn chờ nữa,
PID_3STEP chuyển về chế độ tự động.
1000 Giá trị không hợp lệ ở tham số “Setpoint”: định dạng số của giá trị
không hợp lệ.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn chờ nữa,
PID_3STEP chuyển về chế độ tự động.
2000 Giá trị không hợp lệ ở tham số Feedback_PER.
Kiểm tra xem có một lỗi đang chờ ở cổng vào analog không.
Cơ cấu tác động không được di chuyển để thay thế giá trị cổng ra
và không di chuyển từ vị trí hiện hành. Chế độ bằng tay không thể
ở trong trạng thái này. Ta phải vô hiệu hóa hồi tiếp vị trí (Config.
FeedbackOn = FALSE) để di chuyển cơ cấu tác động từ trạng thái
này.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn đang chờ,
PID_3STEP chuyển về chế độ tự động.
4000 Giá trị không hợp lệ ở tham số Feedback. Định dạng số của giá trị
không hợp lệ.
Cơ cấu tác động không thể được di chuyển để thay đổi giá trị cổng
ra và không di chuyển từ vị trí hiện hành. Chế độ tự động không
thể ở trong trạng thái này. Ta phải vô hiệu hóa hồi tiếp vị trí
(Config. FeedbackOn = FALSE) để di chuyển cơ cấu tác động từ
trạng thái này.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn chờ nữa,
PID_3STEP chuyển về chế độ tự động.
8000 Lỗi trong hồi tiếp vị trí digital. Actuator_H = TRUE và Actuator_L
= TRUE
Cơ cấu tác động không thể được di chuyển để thay thế giá trị cổng
ra và không di chuyển từ vị trí hiện hành. Chế độ bằng tay không
thể ở trong trạng thái này. Ta phải vô hiệu hóa “Endstop signals
actuator” (Config.ActuatorEndStopOn = FALSE) để di chuyển cơ
cấu tác động từ trạng thái này.
Nếu chế độ tự động đã được kích hoạt trước khi xảy ra lỗi thì
ActivateRecoverMode = TRUE và lỗi không còn đang chờ,
PID_3STEP chuyển về chế độ tự động.

C.2.6. Cấu hình cho bộ điều khiển PID

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”.

C.2.7. Chạy thử nghiệm bộ điều khiển PID

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.

Bảng C. 19. Cấu hình mẫu cho màn hình (PID_3Step)


 Đo lường: để hiển thị điểm đặt
setpoint, giá trị xử lý (giá trị
input) và giá trị output trong
một dạng thời gian thực, nhập
vào thời gian mẫu và click vào
nút “Start”.
 Chế độ điều chỉnh: Để điều
chỉnh vòng lặp PID, chọn một
trong hai “Pretuning” hoặc
“Fine tuning” (manual) và click
vào nút “Start”. Bộ điều khiển
PID chạy qua nhiều pha để tính
thời gian đáp ứng và cập nhật
của hệ thống. Các thông số
điều chỉnh thích hợp được tính
từ các giá trị này.
Sau khi hoàn thành quá trình điều
chỉnh, ta có thể lưu trữ các tham số
mới bằng cách click vào nút
“Upload PID parameters” trong
phần “PID Parameters” của trình
soạn thảo chạy thử nghiệm.
Nếu xảy ra một lỗi trong quá trình
điều chỉnh thì giá trị output của
PID tiến tới 0. Chế độ PID sau đó
sẽ set tới chế độ “inactive”. Trạng
thái này sẽ chỉ rõ lỗi.

You might also like