Ngôn ngữ lập trình SCL trong PLC là một ngôn ngữ cấp cao dành cho các bộ điều khiển SIMATIC của Siemens, bao gồm các dòng S7-300/S7-400 và S7-1200/S7-1500. Ngôn ngữ này tương ứng với tiêu chuẩn DIN EN-61131-3 (IEC 1131-3) và được tích hợp trong các môi trường phát triển phần mềm như STEP 7 (V5.x) và STEP 7 (TIA Portal).
SCL cho phép lập trình cấu trúc, sử dụng các kiểu dữ liệu đa dạng và hỗ trợ các khối chương trình như Tổ chức Khối (OB), Khối Chức năng (FB), Hàm (FC), Khối Dữ liệu (DB), và Kiểu dữ liệu người dùng định nghĩa (UDT/PLC data types). Việc sử dụng ngôn ngữ lập trình SCL trong PLC giúp nâng cao tính dễ đọc, dễ bảo trì và hiệu quả của chương trình điều khiển. Các thông số kỹ thuật chính liên quan đến SCL bao gồm các kiểu dữ liệu được hỗ trợ, cấu trúc khối chương trình, và các tùy chọn tối ưu hóa trong môi trường phát triển.
- 1. Ngôn ngữ Lập Trình SCL trong PLC là Gì?
- 2. SCL trong STEP 7 V5.x (S7-300/S7-400)
- 3. SCL trong TIA Portal (S7-1200/S7-1500)
- 4. Các Khái Niệm và Tính năng Chính của SCL
- 5. SCL trong Lập trình An toàn (STEP 7 Safety)
- 6. 5 Lợi ích Lớn khi sử dụng Ngôn ngữ Lập trình SCL trong PLC
- 7. Kết nối giữa PLC, SCL và Bugtech
- 8. Các Khuyến cáo Quan trọng và Trách nhiệm
- 9. Tài liệu Tham khảo Thêm
1. Ngôn ngữ Lập Trình SCL trong PLC là Gì?
Ngôn ngữ lập trình SCL trong PLC (Structured Control Language) là một ngôn ngữ lập trình cấp cao được phát triển bởi Siemens cho các hệ thống tự động hóa SIMATIC của họ. Ngược lại với các ngôn ngữ đồ họa như Ladder Logic (LAD) hoặc Function Block Diagram (FBD), SCL dựa trên văn bản và có cấu trúc tương tự như các ngôn ngữ lập trình truyền thống, giúp người lập trình thể hiện logic phức tạp một cách rõ ràng và hiệu quả hơn.

1.1. Định nghĩa và Tiêu chuẩn
SCL tương ứng với tiêu chuẩn DIN EN-61131-3 (còn gọi là IEC 1131-3), là tiêu chuẩn quốc tế cho các ngôn ngữ lập trình PLC. Tiêu chuẩn này định nghĩa năm ngôn ngữ lập trình chính, trong đó SCL thuộc nhóm các ngôn ngữ dựa trên văn bản, tương tự như Structured Text (ST) trong tiêu chuẩn IEC 61131-3. Mặc dù có sự tương ứng, các nguồn tài liệu chỉ ra rằng vẫn có “những khác biệt thiết yếu” giữa SCL và ngôn ngữ được định nghĩa trong tiêu chuẩn. Mục tiêu chính của SCL là hỗ trợ việc tạo ra các chương trình người dùng một cách có cấu trúc.
1.2. SCL trên Các Nền tảng PLC Siemens
Ngôn ngữ lập trình SCL trong PLC được sử dụng rộng rãi trên nhiều dòng bộ điều khiển SIMATIC của Siemens. Ban đầu, nó được giới thiệu và sử dụng cho các dòng PLC thế hệ cũ hơn như S7-300 và S7-400. Sau đó, khi Siemens ra mắt thế hệ PLC mới là S7-1200 và S7-1500 cùng với môi trường phát triển TIA Portal (Totally Integrated Automation Portal), SCL tiếp tục là một ngôn ngữ lập trình quan trọng.
2. SCL trong STEP 7 V5.x (S7-300/S7-400)
Trong môi trường STEP 7 V5.x, SCL là một phần mềm lập trình tiêu chuẩn cho S7-300/S7-400. Tài liệu lập trình SCL cho S7-300/S7-400 cung cấp hướng dẫn chi tiết về cách sử dụng trình soạn thảo SCL, trình biên dịch SCL và trình gỡ lỗi SCL. Nó bao gồm một phần tham khảo mô tả cú pháp và chức năng của các phần tử ngôn ngữ SCL. Manual này có giá trị cho phiên bản 3.0 của gói phần mềm lập trình tiêu chuẩn STEP 7.
Cấu trúc cơ bản của một tệp nguồn SCL bao gồm văn bản chạy, có thể chứa nhiều khối khác nhau như OBs, FBs, FCs, DBs hoặc UDTs. Các khối này có cấu trúc bên ngoài được giải thích trước khi đi sâu vào cấu trúc bên trong của từng loại.
3. SCL trong TIA Portal (S7-1200/S7-1500)
Với sự ra đời của TIA Portal, ngôn ngữ lập trình SCL trong PLC đã được cải tiến và tích hợp sâu hơn cho các dòng PLC S7-1200 và S7-1500. TIA Portal mang đến một môi trường phát triển hợp nhất, và SCL là một trong những ngôn ngữ lập trình chính được hỗ trợ trong môi trường này.
3.1. Thay đổi Thuật ngữ
Để đơn giản hóa và cải thiện việc sử dụng trong TIA Portal, một số thuật ngữ đã được thay đổi so với STEP 7 V5.x. Cụ thể:
- Bảng Ký hiệu (Symbol table) trong STEP 7 V5.x nay được gọi là Thẻ PLC (PLC tags) trong TIA Portal.
- Bảng VAT (VAT table) nay là Bảng Quan sát (Watch table).
- UDT (User-Defined Data Type) nay được gọi là Kiểu dữ liệu PLC (PLC data types).
Mặc dù tên gọi thay đổi, khái niệm và cách sử dụng của chúng vẫn tương tự. Các nguồn tài liệu cung cấp thông tin chi tiết về cách áp dụng các kiểu dữ liệu người dùng định nghĩa (UDT) trong STEP 7 (TIA Portal).
3.2. Các Kiểu Dữ liệu Mới và Mở Rộng
Đối với S7-1200/S7-1500, SCL hỗ trợ các kiểu dữ liệu mới và mở rộng. Bên cạnh các kiểu dữ liệu cơ bản (Elementary data types), SCL còn hỗ trợ các kiểu dữ liệu phức tạp như ARRAY và STRUCT. Các kiểu dữ liệu thời gian mới như Date_Time_Long và các kiểu dữ liệu thời gian khác cũng được giới thiệu.
Đặc biệt, kiểu dữ liệu VARIANT là một điểm mới cho S7-1500 và S7-1200 từ Firmware 4.1 trở lên. Một tham số kiểu VARIANT là một con trỏ có thể trỏ đến các thẻ (tags) thuộc các kiểu dữ liệu khác nhau. Khác với con trỏ ANY, VARIANT là con trỏ có kiểm tra kiểu tại thời điểm chạy (runtime type test), yêu cầu cấu trúc đích và cấu trúc nguồn phải giống hệt nhau. Ngoài ra, các kiểu dữ liệu Unicode cũng được hỗ trợ để xử lý các ký tự đa ngôn ngữ.
3.3. Khối Tối Ưu (Optimized Blocks) và Truy Cập Dữ liệu
Trong TIA Portal, đặc biệt với S7-1500, việc sử dụng “khối dữ liệu tối ưu” (optimized data blocks) được khuyến khích. Các khối này được tối ưu hóa về hiệu suất và chủ yếu được lập trình bằng cách truy cập ký hiệu (symbolic access). Bằng cách sử dụng khối tối ưu, chương trình của bạn sẽ hiệu quả hơn vì các thẻ được khai báo có tên ký hiệu thay vì địa chỉ cố định.
Trong khối tối ưu cho S7-1200, không có khoảng trống dữ liệu được hình thành vì các thẻ lớn hơn được đặt ở đầu khối và các thẻ nhỏ hơn ở cuối. Chỉ có truy cập ký hiệu cho các khối tối ưu.
Việc truy cập dữ liệu trong S7-1200/1500 có tốc độ khác nhau tùy thuộc vào khu vực bộ nhớ và loại khối. Tốc độ truy cập nhanh nhất theo thứ tự giảm dần là:
- Khối tối ưu: Thẻ tạm thời (temporary tags), tham số của FC và FB, thẻ tĩnh không retentive (non-retentive static tags), thẻ [kiểu dữ liệu PLC].
- Khối tối ưu có truy cập được biết tại thời điểm biên dịch: Thẻ FB retentive, DB global tối ưu.
- Truy cập vào các khối không tối ưu.
Việc sao chép giữa khối tối ưu và không tối ưu có tốc độ truy cập nhanh (2 trên thang 6, với 1 là nhanh nhất).
3.4. Tối Ưu Hóa Hiệu Suất Chương Trình
Để tối ưu hóa biên dịch và thời gian chạy chương trình trong TIA Portal, các nguồn tài liệu đưa ra một số khuyến cáo, đặc biệt hữu ích khi sử dụng SCL. Các mẹo và thủ thuật cho ngôn ngữ lập trình SCL bao gồm:
- Sử dụng mẫu gọi (call templates).
- Xác định các tham số bắt buộc của lệnh.
- Kéo và thả với toàn bộ tên thẻ.
- Áp dụng đúng cách các vòng lặp FOR, REPEAT và WHILE.
- Chèn lệnh CASE một cách hiệu quả.
- Không thao tác bộ đếm vòng lặp cho vòng lặp FOR.
- Sử dụng vòng lặp FOR ngược.
- Tạo instance (thể hiện) cho các lời gọi một cách đơn giản.
- Xử lý thẻ thời gian (time tags).
Đối với STEP 7 Safety, một số khuyến cáo cụ thể để tối ưu hóa biên dịch và thời gian chạy chương trình an toàn bao gồm:
- Tránh các khối xử lý thời gian: TP, TON, TOF.
- Tránh các hệ thống gọi hàm sâu (deep call hierarchies).
- Tách biệt chương trình tiêu chuẩn và chương trình an toàn.
- Sử dụng đa instance (multi-instances).
- Tránh các cấu trúc JMP/label. (Lưu ý: Lệnh GOTO được đề cập trong SCL S7-300/400 manual, nhưng cấu trúc JMP/Label được khuyến cáo tránh trong STEP 7 Safety).
4. Các Khái Niệm và Tính năng Chính của SCL
Ngôn ngữ lập trình SCL trong PLC cung cấp một bộ các khái niệm và tính năng mạnh mẽ để phát triển các ứng dụng tự động hóa phức tạp.
4.1. Cấu trúc Khối Chương trình
Trong SCL, chương trình được tổ chức thành các khối. Các loại khối chính bao gồm:
- Organization Blocks (OB): Các khối được CPU gọi tự động để xử lý các tác vụ như chu kỳ chương trình, xử lý ngắt thời gian, xử lý lỗi, v.v..
- Function Blocks (FB): Các khối có khả năng nhớ trạng thái thông qua một khối instance dữ liệu (instance data block). Chúng thường được sử dụng để biểu diễn các thiết bị hoặc chức năng có trạng thái.
- Functions (FC): Các khối không có khả năng nhớ trạng thái. Chúng thường được sử dụng cho các tác vụ tính toán hoặc logic không yêu cầu lưu trữ trạng thái giữa các lần gọi.
- Data Blocks (DB): Các khối được sử dụng để lưu trữ dữ liệu global hoặc dữ liệu instance cho FB. DB có thể chứa cấu trúc dữ liệu phức tạp và mảng.
- User-Defined Data Types (UDT) / PLC data types: Cho phép người dùng định nghĩa cấu trúc dữ liệu riêng của họ, giúp tổ chức dữ liệu một cách logic và tái sử dụng. UDT/PLC data types mô tả một khu vực gồm một số thành phần cố định với các kiểu dữ liệu khác nhau.
Mỗi khối SCL bao gồm một phần khai báo (declaration section) và một phần mã lệnh (code section). Phần khai báo chứa các hằng số, tham số đầu vào, đầu ra, vào/ra và biến tạm thời. Phần mã lệnh chứa logic chương trình thực tế.
4.2. Các Kiểu Dữ liệu Hỗ trợ
SCL hỗ trợ một phạm vi rộng các kiểu dữ liệu, từ cơ bản đến phức tạp:
- Kiểu dữ liệu Cơ bản (Elementary Data Types): BOOL, BYTE, WORD, DWORD, INT, DINT, REAL, TIME, DATE, TIME_OF_DAY.
- Kiểu dữ liệu Phức tạp (Complex Data Types): STRING, ARRAY, STRUCT.
- Kiểu dữ liệu Người dùng định nghĩa (User-Defined Data Type – UDT / PLC data types): Cho phép tạo các cấu trúc dữ liệu tùy chỉnh.
Như đã đề cập, S7-1200/1500 còn có thêm các kiểu dữ liệu mới như Date_Time_Long, Unicode, và VARIANT. Trong chương trình an toàn cho S7-1200F/1500F, có phạm vi kiểu dữ liệu không hạn chế.
4.3. Địa chỉ Hóa trong SCL
SCL khuyến khích sử dụng địa chỉ hóa ký hiệu (symbolic addressing) thay vì địa chỉ hóa tuyệt đối (absolute addressing). Việc sử dụng tên ký hiệu cho các thẻ và biến giúp chương trình dễ đọc và dễ bảo trì hơn.
Trong các khối tối ưu của S7-1200/1500, chỉ có truy cập ký hiệu được hỗ trợ. Điều này giúp trình biên dịch tối ưu hóa việc lưu trữ và truy cập dữ liệu trong bộ xử lý.
4.4. Câu lệnh Điều khiển và Vòng lặp
SCL cung cấp các cấu trúc điều khiển luồng chương trình mạnh mẽ, bao gồm:
- Lựa chọn (Alternatives): IF THEN/ELSIF/ELSE, CASE OF. Lệnh CASE được sử dụng hiệu quả để xử lý nhiều trường hợp.
- Vòng lặp (Loops): FOR, WHILE, REPEAT. Cần áp dụng đúng cách các loại vòng lặp này.
- Nhảy (Jumps): Lệnh GOTO. Lệnh này thực hiện một bước nhảy ngay lập tức đến nhãn nhảy được chỉ định trong cùng một khối. Tuy nhiên, các cấu trúc JMP/label (tương đương với GOTO) nên tránh trong chương trình an toàn.
- Thoát vòng lặp/Hàm: Lệnh EXIT và RETURN.
4.5. Truyền Tham số
Khi gọi các hàm (FC) hoặc khối chức năng (FB), SCL hỗ trợ truyền tham số. Có hai cơ chế truyền tham số chính được đề cập trong TIA Portal:
- Call-by-value: Truyền giá trị của tham số.
- Call-by-reference: Truyền địa chỉ của tham số.
Việc truyền tham số chính xác rất quan trọng để đảm bảo hoạt động đúng của chương trình.
4.6. Chú Thích và Tài liệu Hóa
Trong SCL, chú thích (comments) được sử dụng để tài liệu hóa và giải thích mã lệnh. Chú thích không ảnh hưởng đến hoạt động của chương trình sau khi biên dịch. Có hai loại chú thích chính:
- Chú thích dòng (Line comments): Bắt đầu bằng // và kéo dài đến cuối dòng. Độ dài tối đa là 253 ký tự.
- Chú thích khối (Block comments): Nằm trong cặp dấu (* *). Việc lồng chú thích được cho phép theo cài đặt mặc định, nhưng có thể thay đổi.
Ngoài ra, có thể tạo các dòng chú thích trong bảng quan sát (watch table) để cấu trúc tốt hơn. Việc sử dụng chú thích đầy đủ cho các thẻ và cấu trúc giúp chương trình dễ hiểu hơn rất nhiều.
5. SCL trong Lập trình An toàn (STEP 7 Safety)
STEP 7 Safety trong TIA Portal cho phép phát triển các chương trình an toàn (safety programs) cho các CPU an toàn (F-CPUs) như S7-1200F và S7-1500F. Ngôn ngữ lập trình SCL trong PLC là một ngôn ngữ lập trình chính được sử dụng để viết các khối chương trình an toàn.
Trong chương trình an toàn, có phạm vi kiểu dữ liệu không hạn chế cho S7-1200/1500F. Một khái niệm quan trọng là “Kiểu dữ liệu PLC tương thích an toàn” (F-conform PLC data type). Các tài liệu cung cấp thông tin về cách tạo kiểu dữ liệu PLC cho bộ điều khiển S7-1500 và áp dụng các kiểu dữ liệu người dùng định nghĩa (UDT), điều này liên quan đến việc tạo kiểu dữ liệu an toàn.
Các khuyến cáo về tối ưu hóa biên dịch và thời gian chạy chương trình an toàn trong SCL đã được liệt kê ở mục 3.4. Việc tuân thủ các khuyến cáo lập trình chung sẽ giúp bạn.
6. 5 Lợi ích Lớn khi sử dụng Ngôn ngữ Lập trình SCL trong PLC
Sử dụng ngôn ngữ lập trình SCL trong PLC mang lại nhiều ưu điểm đáng kể trong phát triển và bảo trì hệ thống tự động hóa:
- Tính có cấu trúc và dễ đọc: SCL có cú pháp giống các ngôn ngữ lập trình cấp cao khác, giúp thể hiện logic phức tạp một cách rõ ràng, có cấu trúc, dễ hiểu và dễ theo dõi hơn nhiều so với LAD hoặc FBD cho các tác vụ phức tạp.
- Dễ bảo trì và sửa đổi: Cấu trúc rõ ràng và việc sử dụng địa chỉ ký hiệu giúp việc tìm lỗi, sửa đổi và cập nhật chương trình trở nên đơn giản và nhanh chóng hơn. Chú thích đầy đủ cũng góp phần vào điều này.
- Khả năng xử lý logic phức tạp và tính toán: SCL đặc biệt phù hợp cho các tác vụ đòi hỏi tính toán toán học phức tạp, thuật toán, xử lý dữ liệu (như mảng, cấu trúc) và các cấu trúc điều khiển phức tạp (vòng lặp, rẽ nhánh).
- Tối ưu hóa hiệu suất: Việc sử dụng các khối tối ưu và tuân thủ các khuyến cáo lập trình trong TIA Portal với SCL có thể giúp tối ưu hóa việc sử dụng bộ nhớ và thời gian thực thi chương trình, đặc biệt trên các CPU S7-1200/S7-1500.
- Tính di động và tái sử dụng: Mã SCL có cấu trúc tốt và ít phụ thuộc vào địa chỉ phần cứng tuyệt đối có thể dễ dàng tái sử dụng trong các dự án khác hoặc trên các dòng PLC khác nhau (có thể cần điều chỉnh nhỏ do khác biệt nền tảng/phiên bản).
7. Kết nối giữa PLC, SCL và Bugtech
Lưu ý: Thông tin trong mục này dựa trên việc từ khóa “Bugtech” được đưa ra trong yêu cầu của bạn, không phải là thông tin được trích xuất trực tiếp từ các nguồn tài liệu kỹ thuật về SCL và PLC Siemens được cung cấp.
Trong lĩnh vực tự động hóa công nghiệp, các công ty chuyên về giải pháp tự động hóa và kỹ thuật điều khiển thường làm việc chặt chẽ với các hệ thống PLC sử dụng ngôn ngữ lập trình như SCL. Các công ty này có thể cung cấp các dịch vụ như:
- Tư vấn và thiết kế hệ thống tự động hóa: Dựa trên yêu cầu của khách hàng, lựa chọn phần cứng PLC Siemens phù hợp và thiết kế kiến trúc hệ thống.
- Lập trình PLC: Sử dụng các ngôn ngữ như SCL để phát triển logic điều khiển cho máy móc và quy trình sản xuất.
- Tích hợp hệ thống: Kết nối PLC với các thiết bị khác như HMI, biến tần, robot, hệ thống SCADA, v.v.
- Đào tạo và hỗ trợ kỹ thuật: Cung cấp các khóa đào tạo về lập trình PLC, bao gồm SCL, cho kỹ sư và kỹ thuật viên.
- Tối ưu hóa và bảo trì hệ thống: Giúp khách hàng cải thiện hiệu suất hoạt động của hệ thống tự động hóa hiện có.
Nếu Bugtech là một công ty hoạt động trong lĩnh vực tự động hóa, họ có thể tham gia vào các hoạt động trên, sử dụng kiến thức và kỹ năng về ngôn ngữ lập trình SCL trong PLC để triển khai các giải pháp cho khách hàng. Để tìm hiểu thêm về các giải pháp tự động hóa, bạn có thể truy cập trang danh mục Tự động hóa của Bugtech tại https://www.bugtech.com.vn/category/tu-dong-hoa/.
8. Các Khuyến cáo Quan trọng và Trách nhiệm
Các tài liệu hướng dẫn lập trình và ví dụ ứng dụng được cung cấp bởi Siemens chỉ mang tính chất tham khảo và không ràng buộc. Chúng không đại diện cho các giải pháp tùy chỉnh cho khách hàng và chỉ nhằm mục đích hỗ trợ các ứng dụng điển hình.
Người sử dụng hoàn toàn chịu trách nhiệm về việc vận hành an toàn và chuyên nghiệp, cài đặt, vận hành và bảo trì thiết bị. Siemens không chịu trách nhiệm cho bất kỳ thiệt hại/khiếu nại nào vượt quá điều khoản trách nhiệm được mô tả trong tài liệu. Các ví dụ ứng dụng không bắt buộc phải trải qua các bài kiểm tra và kiểm định chất lượng thông thường của một sản phẩm tính phí; chúng có thể có lỗi về chức năng và hiệu suất. Việc sử dụng chúng phải đảm bảo rằng bất kỳ sự cố nào xảy ra không gây thiệt hại tài sản hoặc thương tích cho người.
Nếu có bất kỳ sự sai lệch nào giữa các khuyến cáo trong ví dụ ứng dụng và các ấn phẩm khác của Siemens (ví dụ: catalog), nội dung của các tài liệu khác sẽ có ưu tiên.
Để cập nhật thông tin và tài liệu chính thức từ Siemens, bạn có thể truy cập cổng hỗ trợ trực tuyến của Siemens tại https://sieportal.siemens.com/en-ww/home.
9. Tài liệu Tham khảo Thêm
Các nguồn tài liệu và liên kết được cung cấp trong các bản trích dẫn chứa nhiều thông tin hữu ích khác để tìm hiểu sâu hơn về SCL và lập trình PLC Siemens. Chúng bao gồm hướng dẫn chi tiết về di chuyển từ STEP 7 V5.x sang TIA Portal, danh sách so sánh các ngôn ngữ lập trình, và các mẹo lập trình hiệu quả.
Kết luận
Ngôn ngữ lập trình SCL trong PLC là một công cụ mạnh mẽ và linh hoạt cho các kỹ sư tự động hóa, đặc biệt khi làm việc với các dòng PLC Siemens S7-1200 và S7-1500 trong môi trường TIA Portal.
Với khả năng thể hiện logic phức tạp một cách có cấu trúc, hỗ trợ đa dạng kiểu dữ liệu và cung cấp các tùy chọn tối ưu hóa, SCL giúp nâng cao hiệu quả phát triển, tính dễ đọc và dễ bảo trì của chương trình. Việc nắm vững SCL cùng với các ngôn ngữ khác như LAD và FBD sẽ trang bị cho bạn bộ kỹ năng toàn diện để giải quyết các bài toán tự động hóa hiện đại.