Lập Trình PLC Siemens S7-1500: Hướng Dẫn Thực Hành Cho Kỹ Sư Tự Động Hóa

Bạn đang triển khai dự án tự động hóa với S7-1500 nhưng chưa rõ quy trình lập trình SCL? Bài viết này hướng dẫn chi tiết từ đấu nối phần cứng đến viết code thực tế, giúp bạn tự tin triển khai hệ thống điều khiển công nghiệp.

Hình minh họa: Sơ đồ tổng quan hệ thống PLC S7-1500 trong dây chuyền tự động hóa
Hình minh họa: Sơ đồ tổng quan hệ thống PLC S7-1500 trong dây chuyền tự động hóa

Tại Sao Chọn S7-1500 và SCL?

SIMATIC S7-1500 là bộ điều khiển thế hệ mới với thời gian quét cực nhanh (từ 1ms), bộ nhớ lớn và khả năng chẩn đoán vượt trội. Ngôn ngữ SCL (tương tự Pascal) giúp bạn viết các thuật toán phức tạp ngắn gọn hơn LAD/FBD đến 70%, đặc biệt hiệu quả cho tính toán công thức toán học và xử lý dữ liệu.

Bước 1: Lắp Đặt Phần Cứng Đúng Kỹ Thuật

Danh sách thiết bị cần chuẩn bị

Thiết bị Vai trò Mã tham khảo
CPU 1511-1 PN Bộ xử lý điều khiển 6ES7511-1AK02-0AB0
PM 190W Nguồn 24VDC cho I/O 6EP1332-4BA00
SIMATIC Memory Card 24MB Lưu chương trình 6ES7954-8LC03-0AA0
DIN Rail 2m Thanh gắn module 6ES7590-1AB60-0AA0
DI 16x24VDC Module đầu vào số 6ES7521-1BH50-0AA0
DQ 16x24VDC/0.5A Module đầu ra số 6ES7522-1BH01-0AB0
Front Connector Đầu nối tín hiệu 6ES7592-1AM00-0XB0

Quy trình lắp ráp chuẩn

Bước 1: Gắn DIN Rail vào tủ điện, đảm bảo phẳng và chắc chắn.

Bước 2: Lắp PM vào đầu thanh, sau đó lắp CPU sát bên phải PM. Nghe tiếng “click” khi module khớp vào bus phía sau.

Bước 3: Lắp các module I/O theo thứ tự từ trái sang phải. Module tự động nhận địa chỉ tuần tự.

Lưu ý quan trọng: Luôn lắp từ trái sang phải để TIA Portal tự động gán địa chỉ đúng thứ tự.

Bước 2: Đấu Nối Điện An Toàn

Đấu nguồn chính

Đấu nguồn AC (220V/380V) vào PM theo sơ đồ trên vỏ module. Siết chặt vít đầu nối với mô-men 0.5-0.6 Nm (dùng tuốc nơ vít có điều chỉnh mô-men).

Đấu nguồn DC cho hệ thống

Nối đầu ra 24VDC của PM đến:

  • Cực L+ và M của CPU

  • Cực nguồn của các module I/O (nếu cần cách ly)

Đấu tín hiệu I/O

Đầu vào số (DI):

  • Cảm biến PNP: Nối 24V→Cảm biến→DI, Common về 0V

  • Cảm biến NPN: Nối 0V→Cảm biến→DI, Common về 24V

Đầu ra số (DQ):

  • Contactor/Van: Nối DQ→Cuộn dây→0V

  • Công suất lớn: Sử dụng relay trung gian

Checklist an toàn trước cấp nguồn

  • ✓ Kiểm tra cực tính nguồn DC (đo bằng đồng hồ vạn năng)

  • ✓ Đảm bảo không có chập ngắn mạch giữa L+ và M

  • ✓ Siết chặm tất cả đầu nối, không có dây hở

  • ✓ Nối đất tủ điện đúng kỹ thuật

Bước 3: Cấu Hình Kết Nối Mạng

Thiết lập IP trên CPU

Sau khi cấp nguồn, CPU hiển thị màn hình khởi động. Thao tác trên màn hình cảm ứng:

  1. Chọn SettingsAddresses

  2. Chọn giao diện X1 P1 (cổng Ethernet)

  3. Chọn Ethernet addresses

  4. Nhập IP: 192.168.0.10 (hoặc theo quy hoạch mạng nhà máy)

  5. Subnet mask: 255.255.255.0

  6. Nhấn OK để lưu

Kết nối từ máy tính

Đặt IP máy tính cùng dải mạng (ví dụ: 192.168.0.100). Dùng cáp Ethernet kết nối trực tiếp hoặc qua switch.

Test kết nối: Mở Command Prompt, gõ ping 192.168.0.10. Nếu thấy “Reply from…” là kết nối thành công.

Bước 4: Tạo Dự Án Trong TIA Portal

Khởi tạo dự án mới

Mở TIA Portal V17 trở lên, chọn Create new project. Đặt tên theo quy ước (ví dụ: Project_Line01_Packaging_2025).

Thêm và cấu hình CPU

  1. Chọn Add new devicePLCSIMATIC S7-1500CPU 1511-1 PN

  2. Chọn phiên bản firmware (khuyến nghị V2.9 trở lên để dùng VARIANT)

  3. Trong Device configuration, kéo module PM và các module I/O từ Hardware catalog

  4. Đặt địa chỉ IP trong TIA khớp với CPU: Chọn CPU → PropertiesEthernet addresses

Kích hoạt Optimized Block Access

Trong Properties của CPU, tích chọn:

  • Optimized block access (tăng tốc độ truy cập biến)

  • Symbolic programming only (bắt buộc dùng tên biến thay địa chỉ tuyệt đối)

Lợi ích: Code dễ đọc, dễ bảo trì và giảm lỗi khi thay đổi phần cứng.

Bước 5: Lập Trình SCL – Từ Cơ Bản Đến Ứng Dụng

Cấu trúc khối chương trình

Organization Block (OB):

  • OB1: Chạy chu kỳ liên tục (Main Program)

  • OB100: Chạy một lần khi khởi động

  • OB82: Xử lý lỗi chẩn đoán

Function (FC):

  • Không có bộ nhớ riêng

  • Dùng cho tính toán, chuyển đổi đơn giản

  • Trả về một giá trị duy nhất

Function Block (FB):

  • Có Instance DB (bộ nhớ riêng)

  • Dùng cho đối tượng cần lưu trạng thái (Motor, Valve, PID)

  • Có thể gọi lại nhiều lần với Instance khác nhau

Ví Dụ Thực Tế 1: Tính Thể Tích Bồn Chứa

Bài toán: Nhà máy có bồn trụ đứng đường kính 3.5m, cao 12m. Cần tính thể tích chất lỏng hiện tại dựa vào mức đo được từ cảm biến radar.

Phân tích:

  • Công thức: V=π×r2×hV = pi times r^2 times h (m³)

  • Đổi sang lít: Vlıˊt=Vm3×1000V_{lít} = V_{m³} times 1000

  • Cần kiểm tra dữ liệu đầu vào hợp lệ

Tạo Function “FC_TankVolume”:

FUNCTION “FC_TankVolume” : Void
VAR_INPUT
Diameter : Real; // Đường kính bồn (m)
Height : Real; // Chiều cao bồn (m)
Current_Level : Real; // Mức chất lỏng hiện tại (m)
END_VAR

VAR_OUTPUT
Volume_Liter : Real; // Thể tích (lít)
Error : Bool; // TRUE = dữ liệu không hợp lệ
END_VAR

VAR_TEMP
Radius : Real;
Base_Area : Real;
END_VAR

BEGIN
// Kiểm tra điều kiện hợp lệ
IF (Diameter <= 0.0) OR (Current_Level < 0.0) OR (Current_Level > Height) THEN
Error := TRUE;
Volume_Liter := 0.0;
RETURN; // Thoát hàm sớm
END_IF;

// Tính toán
Error := FALSE;
Radius := Diameter / 2.0;
Base_Area := 3.141593 * Radius * Radius;
Volume_Liter := Base_Area * Current_Level * 1000.0;

END_FUNCTION

Cách sử dụng trong OB1:

Tạo Global DB “Tank_Data” với các tag:

  • Tank_Diameter (Real) = 3.5

  • Tank_Height (Real) = 12.0

  • Sensor_Level (Real) – Đọc từ module AI

  • Calculated_Volume (Real)

  • Calc_Error (Bool)

Trong OB1, gọi hàm:

Ví Dụ Thực Tế 2: Chuyển Đổi Tín Hiệu Analog 4-20mA

Bài toán: Cảm biến áp suất 4-20mA (0-10 bar) kết nối vào module AI. Module trả về giá trị INT từ 0 đến 27648. Cần chuyển đổi sang áp suất thực (bar).

Phân tích:

  • 4mA (0 bar) → Giá trị 0

  • 20mA (10 bar) → Giá trị 27648

  • Công thức scale: P=Raw×(Pmax−Pmin)27648+PminP = frac{Raw times (P_{max} – P_{min})}{27648} + P_{min}

Tạo Function “FC_ScaleAnalog”:

Test case thực tế:

Raw_Value Min_EU Max_EU Kết quả mong đợi Ý nghĩa
0 0.0 10.0 0.0 bar Cảm biến ở 4mA
13824 0.0 10.0 5.0 bar Cảm biến ở 12mA (giữa thang)
27648 0.0 10.0 10.0 bar Cảm biến ở 20mA
5530 0.0 10.0 2.0 bar Áp suất 2 bar

Kỹ Thuật Nâng Cao: Sử Dụng VARIANT

VARIANT cho phép một hàm xử lý nhiều kiểu dữ liệu khác nhau, hữu ích khi viết hàm scale chung cho cả INT và DINT.

Bước 6: Biên Dịch và Xử Lý Lỗi

Quy trình biên dịch

  1. Nhấn Ctrl + Shift + F11 hoặc chọn Compile → Software (only changes)

  2. Kiểm tra cửa sổ Info ở góc dưới

  3. Sửa các lỗi cú pháp (màu đỏ) và cảnh báo (màu vàng)

Các lỗi thường gặp

Lỗi: “Operand type mismatch”

  • Nguyên nhân: Gán kiểu dữ liệu không tương thích (ví dụ: Real → Int)

  • Giải pháp: Dùng hàm chuyển đổi REAL_TO_INT(), INT_TO_REAL()

Lỗi: “Block already exists”

  • Nguyên nhân: Tên khối trùng

  • Giải pháp: Đổi tên khối hoặc xóa khối cũ

Lỗi: “Unknown tag”

  • Nguyên nhân: Biến chưa được khai báo

  • Giải pháp: Khai báo trong PLC tags hoặc phần VAR

Bước 7: Tải Chương Trình và Vận Hành

Tải xuống PLC

  1. Nhấn Load into device (icon mũi tên xuống màu xanh)

  2. Chọn PG/PC interfacePN/IE

  3. Nhấn Start search → Chọn CPU có IP đúng

  4. Nhấn Load → Chọn Stop all khi được hỏi

Chuyển sang chế độ RUN

Trong TIA Portal:

  1. Chọn CPU → Online & diagnostics

  2. Nhấn nút RUN màu xanh

  3. Xác nhận Yes

CPU LED chuyển sang xanh nhấp nháy → Chương trình đang chạy.

Giám sát trực tuyến

Cách 1: Monitor trong Block

  • Mở OB1 hoặc FC → Nhấn icon kính lúp Monitor on/off

  • Quan sát giá trị biến thay đổi real-time

Cách 2: Watch Table

  • Tạo Watch table mới

  • Kéo thả các tag cần theo dõi vào bảng

  • Bật Monitor all

Cách 3: Force Table (Cẩn thận!)

  • Dùng để buộc giá trị đầu vào/ra khi test

  • Luôn tắt Force sau khi test xong

Kiểm Tra Hệ Thống Theo Checklist

Test hàm tính thể tích

Test case Diameter Height Level Volume mong đợi Error
Bình thường 3.5 12.0 6.0 ≈57,726 lít FALSE
Đầy bồn 3.5 12.0 12.0 ≈115,453 lít FALSE
Lỗi: Level > Height 3.5 12.0 15.0 0.0 TRUE
Lỗi: Diameter = 0 0.0 12.0 6.0 0.0 TRUE

Test hàm scale analog

Raw_Value Min_EU Max_EU Scaled mong đợi Error
0 0.0 10.0 0.0 FALSE
27648 0.0 10.0 10.0 FALSE
13824 0.0 10.0 5.0 FALSE
-100 0.0 10.0 0.0 TRUE
30000 0.0 10.0 0.0 TRUE

Tối Ưu Hóa Hiệu Suất

Sử dụng kiểu dữ liệu phù hợp

  • Bool: Cho tín hiệu số (1 bit)

  • Int/DInt: Cho đếm, giá trị rời rạc

  • Real: Cho tính toán analog, công thức

  • String: Cho thông báo, tên thiết bị

Tổ chức khối hợp lý

  • FC: Tính toán đơn giản, chuyển đổi

  • FB: Motor, valve, PID controller

  • Global DB: Dữ liệu chia sẻ giữa các khối

  • UDT: Cấu trúc dữ liệu cho thiết bị (ví dụ: Motor gồm Start, Stop, Running, Error)

Tips viết code sạch

  • Đặt tên biến rõ ràng: Tank01_Level thay vì L1

  • Thêm comment cho logic phức tạp

  • Chia nhỏ chương trình thành các khối chức năng

  • Dùng hằng số (VAR_CONSTANT) cho giá trị cố định

Xử Lý Sự Cố Thường Gặp

CPU không kết nối được

Triệu chứng: TIA Portal không tìm thấy CPU

Giải pháp:

  1. Kiểm tra cáp Ethernet đã cắm chặt

  2. Ping IP của CPU từ Command Prompt

  3. Tắt Firewall tạm thời

  4. Đặt IP máy tính cùng dải mạng với CPU

Chương trình không chạy (CPU ở STOP)

Triệu chứng: LED CPU màu vàng, không chuyển RUN

Giải pháp:

  1. Kiểm tra DiagnosticsModule states xem có module nào lỗi

  2. Kiểm tra Error LED trên CPU

  3. Xem Diagnostic buffer để biết lỗi chi tiết

  4. Đảm bảo không có lỗi compile

Giá trị đầu ra không đúng

Triệu chứng: Output không khớp với logic

Giải pháp:

  1. Dùng Watch table theo dõi từng bước tính toán

  2. Kiểm tra kiểu dữ liệu có bị ép kiểu sai không

  3. Kiểm tra thứ tự thực thi trong Network

  4. Dùng breakpoint trong simulation mode (nếu có)

Lợi Ích Khi Thành Thạo S7-1500

Cho kỹ sư:

  • Tăng 40-60% hiệu quả lập trình so với S7-300/400

  • Dễ dàng triển khai các thuật toán phức tạp

  • Chẩn đoán lỗi nhanh hơn với Trace và Web Server tích hợp

Cho nhà máy:

  • Giảm thời gian dừng máy nhờ chẩn đoán mạnh

  • Dễ mở rộng hệ thống khi tăng công suất

  • Tích hợp liền mạch với HMI, SCADA, MES

Cho dự án:

  • Rút ngắn thời gian commissioning

  • Code dễ bảo trì, chuyển giao

  • Tương thích với Industry 4.0 (OPC UA, Profinet)

Liên hệ ngay với chúng tôi để được tư vấn giải pháp phù hợp và báo giá chi tiết cho dự án của bạn.

keyboard_arrow_up
Zalo
Hotline