Hiện nay, lập trình PLC S7-1200 là một kỹ năng quan trọng trong lĩnh vực tự động hóa công nghiệp, nó giúp tăng khả năng tối ưu hóa quy trình sản xuất và hiệu quả vận hành. Việc nắm vững cách thức viết chương trình cho PLC S7-1200 không chỉ giúp các kỹ sư điện, kỹ thuật viên giải quyết các bài toán điều khiển phức tạp mà còn đóng góp trực tiếp vào việc giảm chi phí, tăng cường an toàn và nâng cao năng lực cạnh tranh cho doanh nghiệp. Hãy cùng Thanh Thiên Phú đào sâu về kiến thức lập trình PLC S7-1200 nhằm hỗ trợ kỹ thuật toàn diện trong bài viết dưới đây!
1. Chuẩn bị trước khi lập trình PLC S7-1200
Để có thể bắt đầu quá trình tự học lập trình PLC hiệu quả, chúng ta cần chuẩn bị đầy đủ các yếu tố cần thiết để phục vụ việc học này, cụ thể là:
1.1. Chuẩn bị kiến thức nền tảng
Bạn cần có những kiến thức cơ bản về Điện – Điện tử như hiểu về dòng điện, điện áp, điện trở, các linh kiện điện tử cơ bản, cách đấu nối mạch điện an toàn.
Cần nắm vững các cổng logic cơ bản (AND, OR, NOT, XOR) và cách hoạt động, và đây là nền tảng của ngôn ngữ lập trình Ladder mà PLC S7-1200 hỗ trợ.
Cần hiểu về nguyên lý hoạt động của PLC như chu kỳ quét (Scan Cycle), cách PLC đọc tín hiệu đầu vào (Inputs), thực thi chương trình và cập nhật tín hiệu đầu ra (Outputs).
Luôn tuân thủ các quy tắc an toàn khi làm việc với thiết bị điện, đặc biệt là khi đấu nối phần cứng, và hãy nhớ ngắt nguồn trước khi thao tác đấu nối.
Nếu bạn chưa có các kiến thức nền tảng thì hãy tạm dừng việc lập trình ở đây và ưu tiên trang bị các kiến thức này qua giáo trình và tài liệu PLC S7-1200 trên thanhthienphu.vn nhé!
1.2. Chuẩn bị phần mềm lập trình & mô phỏng
TIA Portal (Totally Integrated Automation Portal) là phần mềm duy nhất bạn cần để cấu hình, lập trình, mô phỏng và chẩn đoán cho PLC S7-1200.
Hãy lựa chọn phiên bản phù hợp (V13, V14, V15, V16, V17, V18, V19,…), và lưu ý rằng khi tạo dự án bằng phiên bản “cao hơn” thì không thể mở bằng phiên bản “thấp hơn”. Và phiên bản phần mềm của PLC cũng cần tương thích với phiên bản TIA Portal.
6ES7822-0AE24-0YA5 | SIMATIC STEP 7 Basic V20 (download); hỗ trợ 9 ngôn ngữ de,en,zh, fr,es,it,ru,ja,ko; để cấu hình SIMATIC S7-1200; SIMATIC Basic Panels; SIMATIC Unified Basic Panels. |
6ES7822-0AE23-0YA5 | SIMATIC STEP 7 Basic V19 (download); hỗ trợ 9 ngôn ngữ de,en,zh, fr,es,it,ru,ja,ko; để cấu hình SIMATIC S7-1200; SIMATIC Basic Panels; SIMATIC Unified Basic Panels. |
6ES7822-0AE08-0YA5 | SIMATIC STEP 7 Basic V18 (download); hỗ trợ 9 ngôn ngữ de,en,zh, fr,es,it,ru,ja,ko; Hoạt động trên hệ điều hành Windows 10; Windows 11; Windows Server 2016/2019/2022; để cấu hình SIMATIC S7-1200, SIMATIC Basic Panels. |
6ES7822-0AE07-0YA5 | SIMATIC STEP 7 Basic V17 (download); hỗ trợ 9 ngôn ngữ de,en,zh, fr,es,it,ru,ja,ko; Hoạt động trên hệ điều hành Windows 10, Windows Server 2016/2019; để cấu hình SIMATIC S7-1200, SIMATIC Basic Panels. |
(*) Lưu ý: Phần mềm TIA Portal được cài trên Máy tính (PC/Laptop) nên cần xem xét yêu cầu của phần mềm lập trình PLC S7-1200 để có thể chọn phiên bản phù hợp.
Bên cạnh đó, PLCSIM (bản thường) được tích hợp trong TIA Portal, cho phép mô phỏng hoạt động của CPU S7-1200 ngay trên PC mà không cần phần cứng PLC thực. Rất tiện lợi cho việc học tập, kiểm thử chương trình trước khi nạp xuống PLC thật. Tuy nhiên, để có thể mô phỏng các tính năng nâng cao thì cần nâng cấp lên bản “Advanced”.
1.3. Chuẩn bị phần cứng để kiểm nghiệm thực tế
Để có thể kiểm chứng chương trình PLC có thể hoạt động tốt trong thực tế hay không thì bắt buộc phải có PLC thật. Bạn cần chọn mã CPU phù hợp với quy mô và yêu cầu của ứng dụng, có thể kể đến các mã CPU S7-1200 phổ biến như:
6ES7211-1AE40-0XB0 | CPU 1211C nhỏ gọn, DC/DC/DC, tích hợp 6 DI 24 V DC & 4 DO 24 V DC & 2 AI 0-10 V DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 50 KB |
6ES7211-1BE40-0XB0 | CPU 1211C nhỏ gọn, AC/DC/relay, tích hợp 6 DI 24 V DC & 4 DO relay 2A & 2 AI 0-10 V DC, Nguồn cấp 85-264 V AC ở 47-63 Hz, Bộ nhớ chương trình/ dữ liệu: 50 KB |
6ES7211-1HE40-0XB0 | CPU 1211C nhỏ gọn, DC/DC/relay, tích hợp 6 DI 24 V DC & 4 DO relay 2A & 2 AI 0-10 V DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 50 KB |
6ES7212-1AE40-0XB0 | CPU 1212C nhỏ gọn, DC/DC/DC, tích hợp 8 DI 24 V DC & 6 DO 24 V DC & 2 AI 0-10 V DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 75 KB |
6ES7212-1BE40-0XB0 | CPU 1212C nhỏ gọn, AC/DC/relay, tích hợp 8 DI 24 V DC & 6 DO relay 2 A & 2 AI 0-10 V DC, Nguồn cấp 85-264 V AC ở 47-63 Hz, Bộ nhớ chương trình/ dữ liệu: 75 KB |
6ES7212-1HE40-0XB0 | CPU 1212C nhỏ gọn, DC/DC/relay, tích hợp 8 DI 24 V DC & 6 DO relay 2 A & 2 AI 0-10 V DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 75 KB |
6ES7214-1AG40-0XB0 | CPU 1214C nhỏ gọn, DC/DC/DC, tích hợp 14 DI 24 V DC & 10 DO 24 V DC & 2 AI 0-10 V DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 100 KB |
6ES7214-1BG40-0XB0 | CPU 1214C nhỏ gọn, AC/DC/relay, tích hợp 14 DI 24 V DC & 10 DO relay 2 A & 2 AI 0-10 V DC, Nguồn cấp 85-264 V AC ở 47-63 Hz, Bộ nhớ chương trình/ dữ liệu: 100 KB |
6ES7214-1HG40-0XB0 | CPU 1214C nhỏ gọn, DC/DC/relay, tích hợp 14 DI 24 V DC & 10 DO relay 2 A & 2 AI 0-10 V DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 100 KB |
6ES7215-1AG40-0XB0 | CPU 1215C nhỏ gọn, DC/DC/DC, 2 Cổng PROFINET, tích hợp 14 DI 24 V DC & 10 DO 24 V DC; 0.5A & 2 AI 0-10 V DC & 2 AO 0-20 mA DC, Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 125 KB |
6ES7215-1BG40-0XB0 | CPU 1215C nhỏ gọn, AC/DC/relay, 2 Cổng PROFINET, tích hợp 14 DI 24 V DC & 10 DO relay 2 A & 2 AI 0-10 V DC & 2 AO 0-20 mA DC, Nguồn cấp 85-264 V AC ở 47-63 Hz, Bộ nhớ chương trình/ dữ liệu: 125 KB |
6ES7215-1HG40-0XB0 | CPU 1215C nhỏ gọn, DC/DC/relay, 2 Cổng PROFINET, tích hợp 14 DI 24 V DC & 10 DO relay 2 A & 2 AI 0-10 V DC & 2 AO 0-20 mA DC, Nguồn cấp 20.4-28.8 V DC, Bộ nhớ chương trình/ dữ liệu: 125 KB |
6ES7217-1AG40-0XB0 | CPU 1217C nhỏ gọn, DC/DC/DC, 2 Cổng PROFINET, tích hợp 10 DI 24 V DC & 4 DI RS422/485 & 6 DO 24 V DC; 0.5A & 4 DO RS422/485 & 2 AI 0-10 V DC & 2 AO 0-20 mA Nguồn cấp 20.4-28.8V DC, Bộ nhớ chương trình/ dữ liệu: 150 KB |
Trong các mã CPU được liệt kê ở trên thì dòng CPU S7-1200 DC/DC/DC thường được lựa chọn nhiều hơn. Và khi sử dụng nguồn DC cho hệ thống thì nên sử dụng một nguồn 24VDC ổn định và đủ công suất nhằm đảm bảo cung cấp đủ năng lượng.
Bạn có thể tham khảo 6EP1332-1SH71 là một module cấp nguồn ổn định cho SIMATIC S7-1200 với nguồn đầu vào 120/230 V AC và nguồn đầu ra DC 24 V/2.5 A.
Bên cạnh đó, để có thể kết nối CPU và máy tính thì chúng ta cần cáp mạng Ethernet tiêu chuẩn (RJ45) để kết nối trực tiếp giữa PC và PLC.
Ngoài ra, nếu nhu cầu thử nghiệm của bạn vượt quá các cổng mà CPU có sẵn thì chúng ta có thể sử dụng các module mở rộng (tùy chọn) như module tín hiệu (SM), module truyền thông (CM), bo mạch tín hiệu (SB). Cụ thể:
6ES7221-1BF32-0XB0 | Thêm 8 DI, 24 V DC, Sink/Source |
6ES7221-1BH32-0XB0 | Thêm 16 DI, 24 V DC, Sink/Source |
6ES7221-3AD30-0XB0 | Thêm 4 DI, 5V DC 200kHz, Sourcing |
6ES7221-3BD30-0XB0 | Thêm 4 DI, 24 V DC 200 kHz, Sourcing |
6ES7222-1BF32-0XB0 | Thêm 8 DO, 24 V DC, transistor 0.5 A |
6ES7222-1BH32-0XB0 | Thêm 16 DO, 24 V DC, transistor 0.5 A |
6ES7222-1BH32-1XB0 | Thêm 16 DO, 24 V DC, sourcing (Sinking), NPN transistor 0.5 A |
6ES7222-1HF32-0XB0 | Thêm 8 DO, relay 2 A |
6ES7222-1HH32-0XB0 | Thêm 16 DO, relay 2 A |
6ES7222-1XF32-0XB0 | Thêm 8 DO, Relay Changeover contact |
6ES7222-1AD30-0XB0 | Thêm 4 DQ, 5V DC 200kHz |
6ES7222-1BD30-0XB0 | Thêm 4 DQ, 24 V DC 200 kHz |
6ES7223-1BH32-0XB0 | Thêm 8 DI/8 DO, 8 DI 24 V DC, Sink/Source, 8 DO, transistor 0.5 A |
6ES7223-1BL32-0XB0 | Thêm 16 DI/16 DO, 16 DI 24 V DC, Sink/Source, 16 DO, transistor 0.5 A |
6ES7223-1BL32-1XB0 | Thêm 16 DI/16 DO, 16 DI 24 V DC; Sourcing/sinking, 16 DO, sourcing (Sinking), NPN transistor 0.5 A |
6ES7223-1PH32-0XB0 | Thêm 8 DI/8 DO, 8 DI 24 V DC, Sink/Source, 8 DO, relay 2 A |
6ES7223-1PL32-0XB0 | Thêm 16 DI/16 DO, 16 DI 24 V DC, Sink/Source, 16 DO, relay 2 A |
6ES7223-1QH32-0XB0 | Thêm 8 DI AC/8 DO RLY, 8 DI 120/230 V AC, 8 DO relay 2 A |
6ES7223-0BD30-0XB0 | Thêm 2 DI/2 DO, 2 DI 24 V DC/2 DO 24 V DC |
6ES7223-3AD30-0XB0 | Thêm 2 DI/2 DQ, 5V DC 200kHz |
6ES7223-3BD30-0XB0 | Thêm 2 DI/2 DQ, 24 V DC 200 kHz |
6ES7231-4HD32-0XB0 | Thêm 4 AI, +/-10 V, +/-5 V, +/-2.5 V, hoặc 0-20 mA/4-20 mA, 12 bit+sign (13 bit ADC) |
6ES7231-4HF32-0XB0 | Thêm 8 AI, +/-10 V, +/-5 V, +/-2.5 V, hoặc 0-20 mA/4-20 mA, 12 bit+sign hoặc (13 bit ADC) |
6ES7231-5ND32-0XB0 | Thêm 4 AI, +/-10 V, +/-5 V, +/-2.5 V, +/-1.25 hoặc 0-20 mA/4-20 mA, 15 bit+sign bit |
6ES7231-4HA30-0XB0 | Thêm 1 AI, +/-10 V DC (12 bit) hoặc 0-20 mA |
6ES7232-4HB32-0XB0 | Thêm 2 AO, +/-10 V, 14-bit, hoặc 0-20 mA/4-20 mA, 13-bit |
6ES7232-4HD32-0XB0 | Thêm 4 AO, +/-10 V, 14-bit, hoặc 0-20 mA/4-20 mA, 13-bit |
6ES7232-4HA30-0XB0 | Thêm 1 AO, +/-10 V DC (12 bit) hoặc 0-20mA (11 bit) |
6ES7234-4HE32-0XB0 | Thêm 4 AI/2 AO, +/-10 V, 14-bit hoặc 0 (4)-20mA, 13-bit |
6ES7231-5QD32-0XB0 | Thêm 4 AI cặp nhiệt điện |
6ES7231-5QF32-0XB0 | Thêm 8 AI cặp nhiệt điện |
6ES7231-5QA30-0XB0 | Thêm 1 AI cặp nhiệt điện Type J hoặc K |
6ES7231-5PD32-0XB0 | Thêm 4xAI RTD |
6ES7231-5PF32-0XB0 | Thêm 8xAI RTD |
6ES7231-5PA30-0XB0 | Thêm 1 AI RTD, Pt100 và Pt1000 |
6ES7241-1AH32-0XB0 | Thêm RS232, 9-pole D-sub (pin), hỗ trợ Freeport |
6ES7241-1CH32-0XB0 | Thêm RS422/485 hỗ trợ truyền thông Modbus RTU trên S7-1200, 9-pole D-sub (socket) hỗ trợ Freeport |
6GK7242-5DX30-0XE0 | Để kết nối SIMATIC S7-1200 với PROFIBUS dưới dạng mô-đun DP Slave |
3RK7243-2AA30-0XB0 | AS-Interface Master theo đặc điểm kỹ thuật AS-i V3.0 |
6GK7243-5DX30-0XE0 | Để kết nối SIMATIC S7-1200 với PROFIBUS dưới dạng mô-đun DP Master; truyền thông PG / OP |
Mặt khác, chúng ta có thể chọn thêm các thiết bị ngoại vi như DI (nút nhấn, công tắc, cảm biến,…), DO (đèn báo, relay, contactor,…), AI/AO (cảm biến, biến tần, đồng hồ đo,…) để tiến hành kiểm nghiệm một cách chân thực hơn.
Cũng đừng quên chuẩn bị các dụng cụ đấu nối và lắp đặt khác như tua vít, kìm, dây điện, đầu cosse,…
2. Hướng dẫn kết nối phần cứng PLC S7-1200
Kết nối phần cứng đúng cách là bước đầu tiên và cực kỳ quan trọng để PLC S7-1200 có thể hoạt động và giao tiếp được với máy tính cũng như các thiết bị ngoại vi. Quy trình này đòi hỏi sự cẩn thận và tuân thủ các nguyên tắc về an toàn điện.
(*) Lưu ý: Các bạn cần phải đọc kỹ tài liệu kỹ thuật của PLC trước và trong quá trình đấu nối. Và các bước đấu nối dưới đây mình hướng dẫn dựa trên dòng CPU DC/DC/relay, chứ không phải áp dụng cho toàn bộ CPU nhé!
2.1. Đấu nối nguồn cấp cho CPU
Bước khởi đầu quan trọng nhất là cung cấp nguồn điện phù hợp cho CPU S7-1200.
Với các dòng CPU S7-1200 sử dụng nguồn một chiều thì chúng ta cần cấp nguồn 24V DC ổn định, và kết nối cực dương (+) của bộ nguồn ngoài vào terminal L+ và cực âm (-) hoặc 0V vào terminal M trên khối cấp nguồn của PLC.
Đồng thời, chúng ta cần tiếp địa đúng kỹ thuật là để đảm bảo an toàn và chống nhiễu; hãy nối terminal tiếp địa (PE, thường có biểu tượng ⏚) trên PLC với thanh tiếp địa chung của tủ điện, và đảm bảo bộ nguồn sử dụng cũng được tiếp địa tương tự.
2.2. Đấu nối ngõ vào/ngõ ra số (DI/DO)
Sau khi cấp nguồn, bạn tiến hành đấu nối các tín hiệu điều khiển:
Đối với ngõ vào số (DI) thì chân chung (Common, ví dụ 1M) của nhóm DI thường được nối với 0V của nguồn 24VDC khi sử dụng các cảm biến hoặc nút nhấn kiểu PNP phổ biến. Còn tín hiệu +24VDC của các thiết bị này sẽ được đưa vào các chân DI tương ứng (I0.0, I0.1…).
Đối với ngõ ra số (DO) thì cách đấu nối phụ thuộc vào loại ngõ ra. Nếu là DO Relay, tùy vào tải thì bạn cấp nguồn điều khiển (có thể là 24VDC hoặc 220VAC) vào chân chung (L) và nối tải giữa chân Qx.x và cực còn lại của nguồn. Nếu là DO Transistor (PNP), bạn cấp +24VDC vào chân chung L+, nối tải một chiều (ví dụ cuộn relay 24VDC) vào chân Qx.x và đầu còn lại của tải nối về 0V.
Ngoài ra, bạn cần kiểm tra thông số kỹ thuật của CPU để biết giới hạn dòng/áp cho phép của ngõ ra.
2.3. Đấu nối ngõ vào/ra tương tự (AI/AO)
Việc kết nối các tín hiệu analog (AI/AO) đòi hỏi sự cẩn thận hơn để đảm bảo độ chính xác. Tín hiệu từ cảm biến analog (ví dụ: cảm biến nhiệt độ 4-20mA, cảm biến áp suất 0-10V) được đưa vào các chân AI+ và AI- của kênh ngõ vào tương ứng. Tương tự, tín hiệu điều khiển analog được xuất ra từ các chân AO+ và AO- để giúp PLC S7-1200 điều khiển biến tần, van tuyến tính hoặc các thiết bị chấp hành khác.
Bên cạnh đó, để giảm thiểu ảnh hưởng của nhiễu điện từ, bạn nên sử dụng cáp xoắn có vỏ bọc chống nhiễu (shielded cable) cho các tín hiệu analog và thực hiện việc nối đất vỏ bọc (shield) đúng cách, thường là chỉ nối đất tại một đầu (phía PLC hoặc tủ điều khiển) để tránh tạo vòng lặp tiếp địa.
2.4. Kết nối PLC S7-1200 với máy tính (PC)
Để có thể tải chương trình vào PLC hay cấu hình và giám sát trong quá trình học lập trình PLC S7-1200 hoặc triển khai dự án thì bạn cần kết nối PLC với máy tính.
Việc kết nối này được thực hiện rất đơn giản thông qua cổng Profinet (chuẩn Ethernet công nghiệp) tích hợp sẵn trên tất cả các CPU S7-1200. Bởi vậy, bạn chỉ cần sử dụng một sợi cáp mạng Ethernet tiêu chuẩn (loại Cat5e hoặc Cat6), cắm một đầu vào cổng mạng RJ45 trên PLC và đầu còn lại vào cổng mạng trên máy tính hoặc laptop của bạn.
2.5. Đấu nối module mở rộng
Trong trường hợp số lượng I/O hoặc các chuẩn giao tiếp tích hợp trên CPU không đáp ứng đủ yêu cầu của ứng dụng, bạn có thể dễ dàng mở rộng hệ thống bằng cách lắp thêm các module.
Trước khi thực hiện, hãy đảm bảo đã ngắt hoàn toàn nguồn cấp cho PLC. Sau đó thì tháo nắp che bảo vệ ở cạnh phải của CPU hoặc module cuối cùng đã lắp.
Tiếp theo, bạn cần căn chỉnh và trượt module mới vào thanh ray DIN (nếu có), sau đó đẩy module sang trái để khớp nối bus ở mặt sau kết nối chắc chắn với thiết bị liền kề, thường sẽ có một tiếng click nhẹ xác nhận kết nối thành công.
Cuối cùng là lắp lại nắp che bảo vệ vào module cuối vừa lắp.
Bên cạnh đó, sau khi lắp đặt và đấu nối các module vật lý thì bạn cần phải khai báo và cấu hình các module này trong phần mềm TIA Portal để PLC có thể nhận diện và làm việc với chúng.
3. Hướng dẫn kết nối phần mềm TIA Portal với PLC S7-1200
Sau khi hoàn tất việc kết nối phần cứng, bước tiếp theo là chúng ta cần thiết lập kết nối giữa phần mềm TIA Portal trên máy tính và PLC S7-1200.
Bởi TIA Portal sẽ cho phép bạn cấu hình thiết bị, tải chương trình xuống PLC và thực hiện giám sát, gỡ lỗi,…
3.1. Chuẩn bị trên máy tính
Đầu tiên, đảm bảo bạn đã cài đặt phiên bản TIA Portal tương thích với PLC và có giấy phép hợp lệ.
Tiếp theo, bạn cần cấu hình địa chỉ IP cho card mạng PC vì địa chỉ mặc định thường là 192.168.0.1 (hoặc không có IP nếu là PLC mới xuất xưởng).
Việc đặt địa chỉ IP tĩnh cho card mạng của PC cùng lớp mạng với PLC được thực hiện như sau: Vào Control Panel -> Network and Sharing Center -> Change adapter settings -> Chuột phải vào card mạng Ethernet đang dùng -> Properties -> Internet Protocol Version 4 (TCP/IPv4) -> Properties -> Chọn “Use the following IP address” và nhập thông số.
3.2. Các bước kết nối và cấu hình trong TIA Portal
Đầu tiên, bạn cần khởi động TIA Portal bằng cách mở phần mềm TIA Portal trên máy tính, sau đó chọn mục Tạo Dự Án Mới (Create New Project), đặt tên cho dự án và chọn đường dẫn lưu. Bạn có thể nhập tên tác giả (Author) và mô tả (Comment) nếu muốn, sau đó nhấn nút “Create”.
Bước tiếp theo, double-click vào mục “Add new device” trong cửa sổ Project view để thêm thiết bị mới. Trong cửa sổ Add new device, chọn “Controllers” -> “SIMATIC S7-1200”. Bạn cần chọn đúng mã CPU và bạn đang sử dụng (ví dụ: CPU 1214C DC/DC/DC), mã này được ghi trên mặt trước của PLC. Bên cạnh đó, bạn cũng cần chọn đúng phiên bản Firmware của CPU (được ghi trên PLC hoặc bạn có thể dò tìm sau). Nếu không chắc, chọn phiên bản mới nhất tương thích, sau đó nhấn “Add” hoặc “OK”.
Khi đó, TIA Portal sẽ chuyển sang giao diện Device view với hình ảnh CPU bạn đã chọn. Bạn cần đặt địa chỉ IP cho PLC bằng cách click vào cổng Ethernet (màu xanh lá) trên hình ảnh CPU. Trong cửa sổ Properties (thường ở phía dưới), chọn tab “General” -> “PROFINET interface [X1]” -> “Ethernet addresses”. Sau đó chọn “Set IP address in the project”, nhập địa chỉ IP bạn muốn gán cho PLC (ví dụ: 192.168.0.1) và Subnet mask (ví dụ: 255.255.255.0).
Ngoài ra, nếu muốn thêm module mở rộng, bạn có thể tìm đến các module SM, CM, SB mà bạn đã lắp đặt thực tế ở khung bên phải (Hardware catalog). Kéo thả các module từ Hardware catalog vào đúng vị trí tương ứng trên thanh ray ảo bên cạnh CPU trong Device view theo thứ tự chính xác như lắp đặt thực tế. Sau đó, cấu hình thông số Module (nếu cần) bằng cách click vào từng module đã thêm, trong cửa sổ Properties, bạn có thể cấu hình các thông số chi tiết (ví dụ: dải đo cho module analog, tốc độ baud cho module truyền thông…).
Tiếp theo, để biên dịch cấu hình, click chuột phải vào tên PLC trong cây dự án (Project tree) bên trái -> Chọn “Compile” -> “Hardware (rebuild all)”. Kiểm tra cửa sổ thông báo (Info -> Compile) xem có lỗi hay cảnh báo nào không. Sau đó, tải cấu hình xuống PLC bằng cách click vào nút “Go online” (biểu tượng màu cam) trên thanh công cụ hoặc chuột phải vào tên PLC -> “Go online”.
Nếu kết nối lần đầu hoặc chưa biết IP PLC, bạn có thể dùng chức năng “Online” -> “Accessible devices”. Chọn loại giao diện PG/PC là card mạng Ethernet của bạn. Nhấn “Start search”. TIA Portal sẽ quét mạng và hiển thị các thiết bị Siemens tìm thấy. Chọn đúng PLC S7-1200 của bạn và nhấn “Show”. Nếu PLC chưa có IP, bạn có thể gán IP trực tiếp từ cửa sổ này (Assign IP address).
Sau khi online hoặc đã biết IP, click vào nút “Download to device” (mũi tên chỉ xuống PLC) trên thanh công cụ hoặc chuột phải vào tên PLC -> “Download to device” -> “Hardware configuration”. TIA Portal sẽ hiển thị cửa sổ “Extended download to device”. Chọn card mạng PC (Type of the PG/PC interface), chọn giao diện kết nối là PN/IE, sau đó nhấn “Start search”. Chọn PLC tìm thấy trong danh sách và nhấn “Load”. TIA Portal sẽ so sánh cấu hình trong project và cấu hình thực tế, sau đó hiển thị các hành động cần thực hiện. Nhấn “Load” lần nữa.
Trong quá trình tải, PLC có thể yêu cầu chuyển sang chế độ STOP. Đồng ý để tiếp tục. Sau khi tải xong, chọn “Start module” để PLC chuyển sang chế độ RUN và nhấn “Finish”.
Sau khi tải thành công và PLC ở chế độ RUN, các đèn LED trạng thái trên CPU (RUN/STOP, ERROR, MAINT) sẽ báo hiệu tình trạng hoạt động. Đèn RUN sáng xanh lá ổn định là trạng thái bình thường. Trong TIA Portal (khi đang online), các biểu tượng trạng thái bên cạnh tên PLC và các module sẽ chuyển sang màu xanh lá, báo hiệu kết nối và hoạt động tốt.
Bằng cách thực hiện tuần tự các bước trên, bạn đã thiết lập thành công kết nối giữa TIA Portal và PLC S7-1200, sẵn sàng cho bước tiếp theo là viết những dòng lệnh đầu tiên trong hành trình tự học PLC S7-1200.
4. Các tập lệnh lập trình PLC S7-1200
Sức mạnh thực sự của PLC S7-1200 nằm ở khả năng thực thi các chương trình điều khiển logic phức tạp. Để làm được điều đó, bạn cần làm quen và sử dụng thành thạo bộ tập lệnh (Instruction Set) phong phú mà TIA Portal cung cấp.
(*) Lưu ý: Thanh Thiên Phú sẽ liệt kê các nhóm lệnh chính từ cơ bản đến nâng cao. Tuy nhiên, các ví dụ minh họa chủ yếu sử dụng ngôn ngữ LAD (Ladder Logic) do tính phổ biến và trực quan.
4.1. Nhóm lệnh bit logic (Logic nhị phân)
Đây là nhóm lệnh nền tảng để mô phỏng hoạt động của các mạch relay-logic truyền thống. Cụ thể:
1, Tiếp điểm thường mở (Normally Open Contact – NO): —-| |—- Biểu diễn một điều kiện đầu vào. Và lệnh sẽ cho phép dòng logic đi qua nếu bit địa chỉ liên kết với nó có trạng thái là 1 (TRUE).
Ví dụ: —-| I0.0 |—- (Kiểm tra trạng thái ngõ vào I0.0)
2, Tiếp điểm thường đóng (Normally Closed Contact – NC): —-|/|—- Lệnh sẽ cho phép dòng logic đi qua nếu bit địa chỉ liên kết với nó có trạng thái là 0 (FALSE).
Ví dụ: —-|/| I0.1 |—- (Kiểm tra trạng thái phủ định của ngõ vào I0.1)
3, Cuộn dây đầu ra (Output Coil): —-( )—- Gán trạng thái kết quả logic của một network (dòng lệnh) cho một bit địa chỉ đầu ra hoặc bit nhớ.
Ví dụ: —-( Q0.0 )—- (Gán kết quả logic cho ngõ ra Q0.0)
4, Cuộn dây Set (Set Coil): —-( S )—- Đặt bit địa chỉ liên kết lên trạng thái 1 (TRUE) khi có dòng logic đi tới. Và bit này sẽ giữ trạng thái 1 ngay cả khi dòng logic không còn.
Ví dụ: —-( S M10.0 )—- (Set bit nhớ M10.0)
5, Cuộn dây Reset (Reset Coil): —-( R )—- Đặt bit địa chỉ liên kết về trạng thái 0 (FALSE) khi có dòng logic đi tới. Nó được ưu tiên hơn lệnh Set nếu cả hai cùng được kích hoạt trong một chu kỳ quét.
Ví dụ: —-( R M10.0 )—- (Reset bit nhớ M10.0)
6, Lệnh SR (Set-Reset Flipflop): Khối chức năng thực hiện logic Set-Reset, ưu tiên Reset.
7, Lệnh RS (Reset-Set Flipflop): Khối chức năng thực hiện logic Reset-Set, ưu tiên Set.
8, Phát hiện cạnh lên (Positive Edge Detection – P_TRIG): —-|P|—- Chỉ cho dòng logic đi qua trong một chu kỳ quét duy nhất khi tín hiệu đầu vào chuyển từ 0 lên 1.
9, Phát hiện cạnh xuống (Negative Edge Detection – N_TRIG): —-|N|—- Chỉ cho dòng logic đi qua trong một chu kỳ quét duy nhất khi tín hiệu đầu vào chuyển từ 1 xuống 0.
4.2. Nhóm lệnh timer (Bộ định thời)
Nhóm lệnh này dùng để tạo ra khoảng thời gian trễ trong chương trình. Cụ thể:
TON (Timer On-Delay): Bắt đầu đếm khi ngõ vào IN chuyển lên 1. Ngõ ra Q sẽ lên 1 sau khi bộ đếm đạt giá trị đặt trước PT (Preset Time) và ngõ vào IN vẫn còn là 1. Ngõ ra Q về 0 ngay khi IN về 0. ET (Elapsed Time) hiển thị thời gian đã đếm.
TOF (Timer Off-Delay): Ngõ ra Q lên 1 ngay khi ngõ vào IN lên 1. Khi IN chuyển về 0, bộ đếm bắt đầu đếm. Ngõ ra Q sẽ giữ trạng thái 1 cho đến khi bộ đếm đạt giá trị PT, sau đó Q mới về 0.
TP (Pulse Timer): Ngõ ra Q lên 1 trong một khoảng thời gian chính xác bằng giá trị PT khi có một xung cạnh lên tại ngõ vào IN. Trạng thái của IN sau đó không ảnh hưởng đến Q cho đến khi hết thời gian PT.
4.3. Nhóm lệnh counter (Bộ đếm)
Nhóm lệnh này dùng để đếm sự kiện (thường là các xung cạnh lên). Cụ thể:
CTU (Counter Up): Đếm lên mỗi khi có xung cạnh lên tại ngõ vào CU (Count Up). Ngõ ra Q sẽ lên 1 khi giá trị đếm hiện tại CV (Current Value) lớn hơn hoặc bằng giá trị đặt trước PV (Preset Value). Ngõ vào R (Reset) dùng để đặt CV về 0.
CTD (Counter Down): Đếm xuống mỗi khi có xung cạnh lên tại ngõ vào CD (Count Down). Ngõ ra Q sẽ lên 1 khi CV <= 0. Ngõ vào LD (Load) dùng để nạp giá trị PV vào CV.
CTUD (Counter Up/Down): Kết hợp cả đếm lên (CU) và đếm xuống (CD). Có cả ngõ vào Reset (R) và Load (LD). Ngõ ra QU lên 1 khi CV >= PV. Ngõ ra QD lên 1 khi CV <= 0.
4.4. Nhóm lệnh so sánh (Comparator)
Nhóm lệnh này dùng để so sánh hai giá trị (Integer, Real, Time…). Cụ thể:
CMP == (Equal): Bằng
CMP <> (Not Equal): Không bằng
CMP > (Greater Than): Lớn hơn
CMP < (Less Than): Nhỏ hơn
CMP >= (Greater or Equal): Lớn hơn hoặc bằng
CMP <= (Less or Equal): Nhỏ hơn hoặc bằng
IN_RANGE: Kiểm tra giá trị có nằm trong một khoảng cho trước không.
OUT_RANGE: Kiểm tra giá trị có nằm ngoài một khoảng cho trước không.
4.5. Nhóm lệnh toán học (Math functions)
Nhóm lệnh này chuyên thực hiện các phép tính số học. Cụ thể:
ADD: Cộng
SUB: Trừ
MUL: Nhân
DIV: Chia
MOD: Chia lấy phần dư
SQRT: Căn bậc hai
Các hàm lượng giác: SIN, COS, TAN, ASIN, ACOS, ATAN
Các hàm Logarit: LN, LOG
Tính toán với số thực (Floating-point): Các lệnh tương tự nhưng áp dụng cho kiểu dữ liệu Real.
4.6. Nhóm lệnh di chuyển dữ liệu (Move operations)
Nhóm lệnh này có chức năng sao chép giá trị từ vùng nhớ này sang vùng nhớ khác. Cụ thể:
MOVE: Sao chép giá trị từ ngõ vào IN sang ngõ ra OUT. Kiểu dữ liệu phải tương thích hoặc có thể chuyển đổi ngầm định.
4.7. Nhóm lệnh chuyển đổi kiểu dữ liệu (Conversion operations)
CONVERT: Chuyển đổi giữa các kiểu dữ liệu số (ví dụ: INT sang REAL, DINT sang WORD…).
ROUND: Làm tròn số thực về số nguyên gần nhất.
TRUNC: Lấy phần nguyên của số thực.
CEIL: Làm tròn lên số nguyên gần nhất.
FLOOR: Làm tròn xuống số nguyên gần nhất.
SCALE_X: Chuẩn hóa giá trị từ thang đo kỹ thuật (ví dụ: 0-27648 của Analog Input) sang thang đo thực tế (ví dụ: 0-100 độ C).
NORM_X: Chuẩn hóa giá trị từ thang đo thực tế về thang đo kỹ thuật (0.0 – 1.0).
4.8. Nhóm lệnh điều khiển chương trình (Program control)
Nhóm lệnh này có chức năng thay đổi luồng thực thi của chương trình. Cụ thể:
JMP (Jump): Nhảy đến một nhãn (Label) trong cùng một khối chương trình. Thường đi kèm với điều kiện.
LBL (Label): Đánh dấu điểm đến cho lệnh JMP.
CALL: Gọi thực thi một khối chương trình khác (Function – FC hoặc Function Block – FB). Có thể truyền tham số vào/ra.
RET (Return): Kết thúc thực thi khối chương trình hiện tại và quay về nơi đã gọi nó.
4.9. Nhóm lệnh công nghệ (Technology objects – TO)
CTRL_HSC: Cấu hình và điều khiển bộ đếm tốc độ cao (High Speed Counter).
CTRL_PTO / CTRL_PWM: Cấu hình và điều khiển ngõ ra phát xung tốc độ cao (Pulse Train Output / Pulse Width Modulation) cho điều khiển vị trí hoặc tốc độ động cơ bước/servo cơ bản.
PID_Compact / PID_3Step: Thực thi thuật toán điều khiển PID (Proportional-Integral-Derivative) cho điều khiển vòng kín (nhiệt độ, áp suất, mức…).
4.10. Nhóm lệnh truyền thông (Communication)
Đây là nhóm lệnh giao tiếp với các thiết bị khác qua các chuẩn truyền thông trên PLC S7-1200. Cụ thể:
TSEND_C, TRCV_C: Gửi/nhận dữ liệu qua TCP/IP.
PUT, GET: Gửi/nhận dữ liệu giữa các PLC Siemens qua S7 Communication.
MB_COMM_LOAD, MB_MASTER, MB_SLAVE: Cấu hình và thực thi truyền thông Modbus RTU/TCP.
Các khối chức năng cho Profinet IO, Profibus DP (nếu có module CM), AS-Interface, IO-Link,…
4.11. Các nhóm lệnh khác
- Lệnh xử lý Chuỗi ký tự (String + Char).
- Lệnh xử lý Thời gian và Ngày tháng (Date and Time).
- Lệnh Chẩn đoán và Ngắt (Diagnostics, Interrupts).
=> Việc bạn nắm vững cách sử dụng các tập lệnh này là nền tảng để bạn có thể viết code PLC S7-1200 một cách hiệu quả, và khi đó bạn có thể tự tin để giải quyết các bài toán tự động hóa từ đơn giản đến phức tạp. Bên cạnh đó, TIA Portal cũng cung cấp trợ giúp chi tiết (Help – F1) cho từng lệnh (mô tả chức năng, các tham số, ví dụ) để bạn có thể dễ dàng vận dụng.
5. Các ngôn ngữ lập trình PLC S7-1200 phổ biến
TIA Portal hỗ trợ nhiều ngôn ngữ lập trình PLC theo tiêu chuẩn IEC 61131-3, mang đến sự linh hoạt cho người dùng để lựa chọn ngôn ngữ phù hợp nhất với nền tảng kiến thức, sở thích cá nhân và yêu cầu cụ thể của từng bài toán. Đối với PLC S7-1200 thì có 3 ngôn ngữ chính được sử dụng rộng rãi là:
5.1. LAD
LAD (Ladder logic) hay Ngôn ngữ Hình Thang là ngôn ngữ đồ họa phổ biến nhất trong thế giới PLC, và nó rất quen thuộc với những người có nền tảng về kỹ thuật điện hoặc đã từng làm việc với sơ đồ mạch relay-logic truyền thống.
Chương trình LAD được trình bày dưới dạng các mạng lưới (network) giống như bậc thang, với dòng logic chảy từ trái sang phải qua các tiếp điểm (đại diện cho điều kiện) để tác động lên các cuộn dây (đại diện cho hành động hoặc trạng thái đầu ra).
LAD có tính trực quan cao, dễ đọc và khả năng theo dõi trạng thái online dễ dàng giúp cho LAD rất mạnh mẽ cho các bài toán điều khiển logic tuần tự và các thao tác bật/tắt đơn giản.
Tuy nhiên, với các thuật toán phức tạp hơn và nhiều phép toán học hoặc xử lý dữ liệu lớn thì cấu trúc LAD có thể trở nên khá dài, rối rắm và khó quản lý. Do đó, LAD thường là lựa chọn hàng đầu cho việc điều khiển các máy móc đơn lẻ, hệ thống băng tải, các quy trình hoạt động tuần tự, logic an toàn cơ bản và là điểm khởi đầu lý tưởng cho những người mới bắt đầu học lập trình PLC S7-1200.
5.2. FBD
FBD (Function block diagram) hay Sơ Đồ Khối Chức Năng cũng là một ngôn ngữ lập trình đồ họa khác được TIA Portal hỗ trợ mạnh mẽ. Thay vì các tiếp điểm và cuộn dây như LAD, chương trình FBD được xây dựng bằng cách kết nối các khối chức năng (function blocks) lại với nhau.
Mỗi khối này đại diện cho một hàm cụ thể hoặc một phép toán (ví dụ: khối AND, khối OR, khối Timer TON, khối phép cộng ADD, khối di chuyển dữ liệu MOVE). Dữ liệu sẽ chảy từ đầu ra của khối này đến đầu vào của khối khác thông qua các đường nối trực quan. Cách tiếp cận này đặc biệt phù hợp để biểu diễn các luồng xử lý tín hiệu, các phép toán logic và số học, cũng như các chức năng điều khiển liên tục như bộ điều khiển PID.
Cấu trúc FBD khá rõ ràng giúp người dùng dễ hình dung mối quan hệ và sự phụ thuộc giữa các chức năng, nên nó khá được ưa chuộng trong các ngành công nghiệp xử lý liên tục. Mặc dù vậy, FBD có thể chiếm nhiều không gian hiển thị hơn LAD cho cùng một logic đơn giản và việc theo dõi các logic tuần tự phức tạp đôi khi có thể kém trực quan hơn so với LAD.
Vì vậy, FBD là lựa chọn tốt cho việc xử lý tín hiệu analog, triển khai các bộ điều khiển vòng kín, các thuật toán tính toán và những logic tập trung vào dòng chảy và xử lý dữ liệu.
5.3. SCL
Khác biệt hoàn toàn với hai ngôn ngữ đồ họa ở trên thì SCL (Structured control language) hay Ngôn Ngữ Điều Khiển Cấu Trúc là một ngôn ngữ lập trình dạng văn bản (text-based) mạnh mẽ, nó có cú pháp và cấu trúc tương tự như các ngôn ngữ lập trình bậc cao quen thuộc như Pascal hoặc C.
Sức mạnh vượt trội của SCL nằm ở việc nó cung cấp các cấu trúc lệnh điều khiển tiên tiến như vòng lặp (FOR, WHILE, REPEAT) hay câu lệnh rẽ nhánh (IF-THEN-ELSE, CASE) cho phép các lập trình viên triển khai một cách hiệu quả và linh hoạt các thuật toán phức tạp, các tác vụ xử lý chuỗi ký tự, làm việc với mảng dữ liệu (arrays), cấu trúc dữ liệu (structs) và thực hiện các phép tính toán học nâng cao.
Nhờ vậy, mã nguồn SCL thường ngắn gọn, có cấu trúc rõ ràng và dễ quản lý hơn đáng kể so với LAD hoặc FBD đối với các logic phức tạp. Nó cũng rất thích hợp để tạo ra các khối chức năng (FC/FB) phức tạp, có khả năng tái sử dụng cao, đặc biệt là với những người dùng có nền tảng về lập trình máy tính.
Tuy nhiên, việc lập trình SCL trên PLC S7-1200 đòi hỏi người lập trình phải nắm vững cú pháp và logic lập trình cấu trúc. Việc gỡ lỗi và theo dõi trạng thái online có thể kém trực quan hơn đối với những người không quen với lập trình dạng văn bản. Nhưng SCL là lựa chọn đúng đắn cho việc phát triển các thuật toán điều khiển phức tạp, xử lý lượng lớn dữ liệu, thực hiện các giao thức truyền thông phức tạp, xây dựng thư viện hàm tùy chỉnh và tối ưu hóa hiệu suất cho các đoạn mã cần tốc độ xử lý nhanh.
Ngoài 3 ngôn ngữ phổ biến trên thì S7-1200 còn hỗ trợ Graph (SFC) để cấu trúc hóa các quy trình tuần tự phức tạp theo bước và điều kiện chuyển tiếp, và IL (Danh sách lệnh) là một ngôn ngữ cấp thấp dạng văn bản ít được khuyến nghị cho các dự án mới do tính phức tạp và khó đọc.
6. Một số bài toán lập trình PLC S7-1200 tiêu biểu
Lý thuyết sẽ trở nên sống động hơn khi được áp dụng vào các ví dụ thực tế. Và Thanh Thiên Phú có thể kể đến 7 bài toán lập trình PLC S7-1200 cơ bản và phổ biến, giúp bạn hình dung cách ứng dụng các lệnh và ngôn ngữ đã học vào giải quyết vấn đề cụ thể.
6.1. Điều khiển đèn giao thông ngã tư đơn giản
Một ứng dụng cơ bản nhưng rất trực quan là mô phỏng hoạt động của hệ thống đèn tín hiệu giao thông tại một ngã tư đơn giản. Mục tiêu là điều khiển chu trình Xanh – Vàng – Đỏ lặp lại một cách tuần tự và phối hợp nhịp nhàng giữa hai hướng giao thông chính.
Để thực hiện điều này, người lập trình thường sử dụng các khối Timer, đặc biệt là Timer On-Delay (TON), để định thời gian sáng cho từng màu đèn (Xanh, Vàng, Đỏ) theo yêu cầu thực tế. Các bit nhớ trung gian (M-flags) được dùng để lưu giữ trạng thái hiện tại của từng pha đèn trong chu trình.
Logic điều khiển được xây dựng dựa trên sự chuyển tiếp tuần tự giữa các trạng thái: ví dụ, khi Timer định thời gian Xanh của hướng 1 kết thúc, chương trình sẽ kích hoạt đèn Vàng hướng 1, đồng thời khởi động Timer cho pha Vàng. Khi Timer Vàng kết thúc, đèn Đỏ hướng 1 và đèn Xanh hướng 2 sẽ được bật và quy trình cứ thế tiếp diễn.
Trong các ngôn ngữ lập trình mà PLC S7-1200 hỗ trợ, thì LAD (Ladder Logic) rất phù hợp và trực quan để thể hiện logic tuần tự trong bài toán này, và sẽ giúp chúng ta dễ dàng theo dõi và gỡ lỗi.
Ví dụ code LAD (Mô tả một phần chu trình đơn giản):
(* Network 1: Kích hoạt Timer đèn Xanh hướng 1 khi pha trước đó (Đỏ H1) kết thúc *)
(* Giả sử M0.0 là bit báo hiệu bắt đầu chu trình hoặc kết thúc pha Đỏ H1 *)
----| M0.0 |----------------+---[ TON ]---+
| Timer_Xanh_H1 |
| IN Q |-----( M0.1 ) // Bit trạng thái Đèn Xanh H1
| PT: T#20s |
+-------------+
(* Network 2: Bật đèn Xanh Hướng 1 khi Timer chưa chạy xong *)
----| M0.1 |----|/ Timer_Xanh_H1.Q |----------( Q0.0 ) // Đèn Xanh Hướng 1
(* Network 3: Kích hoạt Timer đèn Vàng Hướng 1 khi Timer Xanh H1 xong *)
----| Timer_Xanh_H1.Q |-----+---[ TON ]---+
| Timer_Vang_H1 |
| IN Q |-----( M0.2 ) // Bit trạng thái Đèn Vàng H1
| PT: T#5s |
+-------------+
(* Network 4: Bật đèn Vàng Hướng 1 khi Timer Vàng đang chạy *)
----| M0.2 |----|/ Timer_Vang_H1.Q |----------( Q0.1 ) // Đèn Vàng Hướng 1
(* Network 5: Bật đèn Đỏ Hướng 1 khi không phải Xanh hoặc Vàng *)
----|/ M0.1 |----+----|/ M0.2 |----------------( Q0.2 ) // Đèn Đỏ Hướng 1
|
*--- (* Logic tương tự cho Hướng 2, kích hoạt bởi Timer_Vang_H1.Q *)
(* Lưu ý: Cần thêm logic đầy đủ để reset chu trình và xử lý hướng 2 *)
6.2. Điều khiển băng tải đơn giản
Bài toán điều khiển một hệ thống băng tải cơ bản cũng là một ví dụ thực hành phổ biến. Yêu cầu thường bao gồm việc khởi động và dừng băng tải thông qua các nút nhấn Start (thường mở – NO) và Stop (thường đóng – NC), đồng thời tích hợp một cảm biến ở cuối băng tải để tự động dừng khi phát hiện có sản phẩm.
Logic điều khiển cốt lõi thường sử dụng một mạch tự giữ (latching circuit) kinh điển: tín hiệu từ nút Start sẽ “Set” một bit nhớ trung gian (ví dụ M_Run), và tín hiệu từ nút Stop sẽ “Reset” bit nhớ này. Ngõ ra vật lý điều khiển contactor của động cơ băng tải (ví dụ Q_Motor) chỉ được phép bật khi bit M_Run đang ở trạng thái 1 VÀ tín hiệu từ cảm biến cuối băng tải (ví dụ I_SensorEnd) đang ở trạng thái 0 (chưa phát hiện vật).
Khi cảm biến phát hiện sản phẩm (I_SensorEnd = 1), ngõ ra Q_Motor phải được ngắt ngay lập tức để dừng băng tải, bất kể trạng thái của nút Start/Stop. Có thể bổ sung các Timer để tạo độ trễ dừng hoặc thêm các logic phức tạp hơn tùy yêu cầu.
Đối với bài toán này, thì LAD rất thích hợp bởi sự tương đồng với mạch điện điều khiển relay truyền thống.
Ví dụ code LAD:
(* Network 1: Mạch tự giữ cho trạng thái chạy *)
----| I0.0 |-----------+----------------------( S: M0.0 ) // Nút Start (NO) - Set Run_Flag
| M0.0 | |
----| |-----------+
|
----| I0.1 |----------------------------------( R: M0.0 ) // Nút Stop (NC - đấu thường đóng vật lý, nên dùng tiếp điểm NO trong code) - Reset Run_Flag
(* Network 2: Điều khiển Motor băng tải *)
----| M0.0 |----|/ I0.2 |---------------------( Q0.0 ) // Run_Flag=ON và Cảm biến cuối (NO) KHÔNG phát hiện vật thì bật Motor
(* Run_Flag Sensor_End Motor_Output *)
(* Lưu ý: Nếu nút Stop đấu thường mở (NO) vật lý thì dùng tiếp điểm thường đóng |/| trong Network 1. Nếu cảm biến là NC vật lý (bình thường = 1, phát hiện = 0) thì dùng tiếp điểm thường mở | | trong Network 2 *)
6.3. Khởi động động cơ sao – tam giác
Đối với việc khởi động các động cơ không đồng bộ ba pha công suất lớn, phương pháp đổi nối Sao – Tam giác (Star-Delta) được sử dụng rộng rãi nhằm mục đích giảm dòng khởi động.
Việc lập trình PLC S7-1200 cho quá trình này đòi hỏi điều khiển tuần tự chính xác 3 contactor: K_Main, K_Star và K_Delta… Khi nhấn Start, đóng K_Main và K_Star, khởi động Timer Sao. Khi Timer xong, ngắt K_Star, chờ trễ ngắn, đóng K_Delta. Luôn có khóa chéo giữa K_Star và K_Delta.
Đối với bài toán này, thì cả LAD và FBD đều có thể hiệu quả.
Ví dụ code LAD:
(* Network 1: Mạch tự giữ cho yêu cầu chạy *)
----| I0.0 |-----------+----------------------( S: M1.0 ) // Start -> Set Run_Request
| M1.0 | |
----| |-----------+
|
----| I0.1 |----------------------------------( R: M1.0 ) // Stop -> Reset Run_Request (Hoặc tín hiệu Overload)
(* Network 2: Điều khiển Contactor Chính (K_Main) *)
----| M1.0 |----------------------------------( Q0.1 ) // Run_Request -> K_Main
(* Network 3: Kích hoạt Timer Sao *)
----| M1.0 |----------------+---[ TON ]---+
| Timer_Star |
| IN Q | // Output Q dùng để chuyển sang Delta
| PT: T#5s |
+-------------+
(* Network 4: Điều khiển Contactor Sao (K_Star) *)
----| M1.0 |----|/ Q0.3 |----|/ Timer_Star.Q |---( Q0.2 ) // Run_Request AND NOT K_Delta AND Timer_Star chưa xong -> K_Star
(* Run_Req K_Delta_NC Timer_Not_Done K_Star *)
(* Network 5: Điều khiển Contactor Tam giác (K_Delta) *)
(* (Cần thêm Timer trễ chuyển đổi nhỏ nếu muốn chính xác, ở đây bỏ qua cho đơn giản) *)
----| M1.0 |----|/ Q0.2 |----| Timer_Star.Q |-----( Q0.3 ) // Run_Request AND NOT K_Star AND Timer_Star đã xong -> K_Delta
(* Run_Req K_Star_NC Timer_Done K_Delta *)
(* Lưu ý: Khóa chéo (Interlocking) được thực hiện bằng cách dùng tiếp điểm thường đóng |/|
của contactor kia trong mạch điều khiển của contactor này (Q0.3 trong N4, Q0.2 trong N5). *)
6.4. Đọc giá trị Analog Input và hiển thị
PLC S7-1200 đọc tín hiệu AI (ví dụ: Cảm biến nhiệt độ, IW64, dải 0-27648) và cần chuyển đổi sang đơn vị kỹ thuật (ví dụ 0-100 °C) bằng NORM_X và SCALE_X, lưu kết quả vào biến Real (ví dụ MD100).
Trong bài toán này, thì sử dụng FBD và SCL sẽ tốt hơn LAD.
Ví dụ sử dụng FBD (Minh họa dạng khối):
+---------+ +-----------------+ +-------------------+ +---------+
----| IW64 |--->| NORM_X |---->| SCALE_X |---->| MD100 |
| | | MIN: 0 | | MIN: 0.0 (°C) | | Temp_C |
| Raw AI | | VALUE: (IN) | | VALUE: (IN) | | Real |
| Integer | | MAX: 27648 | | MAX: 100.0 (°C) | | |
+---------+ | OUT: (Real 0-1) | | OUT: (Real Temp) | +---------+
+-----------------+ +-------------------+
Ví dụ sử dụng SCL:
// Khai báo biến trong DB hoặc Temp/Static của FC/FB
// VAR
// Raw_AI_Value : Int;
// Normalized_Value : Real;
// Temperature_C : Real;
// AI_HW_Input AT %IW64 : Int; // Khai báo trực tiếp hoặc dùng tag symbolic
// Scaled_Temp_Output AT %MD100 : Real; // Khai báo trực tiếp hoặc dùng tag symbolic
// END_VAR
// Đọc giá trị thô (có thể không cần nếu dùng AT%...)
"Raw_AI_Value" := "AI_HW_Input";
// Chuẩn hóa giá trị đọc về 0.0 đến 1.0
"Normalized_Value" := NORM_X(MIN := 0,
VALUE := "Raw_AI_Value", // Hoặc trực tiếp "AI_HW_Input"
MAX := 27648);
// Tỷ lệ giá trị chuẩn hóa sang thang đo kỹ thuật (0-100 độ C)
"Temperature_C" := SCALE_X(MIN := 0.0,
VALUE := "Normalized_Value",
MAX := 100.0);
// Gán kết quả cho biến Output hoặc vùng nhớ đích
"Scaled_Temp_Output" := "Temperature_C";
6.5. Xuất tín hiệu Analog Output
PLC xuất tín hiệu AO (ví dụ: Tốc độ biến tần, QW80, dải 0-27648) để điều khiển thiết bị. Cần chuyển đổi giá trị mong muốn (ví dụ: tốc độ 0-50Hz, kiểu Real) sang giá trị số nguyên cho AO bằng NORM_X và SCALE_X.
Đối với bài toán này, thì FBD và SCL phù hợp.
Ví dụ sử dụng FBD:
+---------+ +-------------------+ +-----------------+ +---------+
----| MD110 |--->| NORM_X |---->| SCALE_X |---->| QW80 |
| | | MIN: 0.0 (Hz) | | MIN: 0 | | SpeedOut|
| Setpoint| | VALUE: (IN) | | VALUE: (IN) | | Integer |
| Real | | MAX: 50.0 (Hz) | | MAX: 27648 | | |
+---------+ | OUT: (Real 0-1) | | OUT: (Int 0-27k)| +---------+
+-------------------+ +-----------------+
Ví dụ sử dụng SCL:
// Khai báo biến
// VAR
// Speed_Setpoint_Hz : Real; // Giá trị tốc độ mong muốn (0-50 Hz)
// Normalized_Setpoint : Real;
// Scaled_Output_Value : Int;
// AO_HW_Output AT %QW80 : Int; // Khai báo trực tiếp hoặc dùng tag symbolic
// Setpoint_Input AT %MD110 : Real; // Khai báo trực tiếp hoặc dùng tag symbolic
// END_VAR
// Đọc giá trị đặt (có thể không cần nếu dùng AT%...)
"Speed_Setpoint_Hz" := "Setpoint_Input";
// Chuẩn hóa giá trị đặt về 0.0 đến 1.0
"Normalized_Setpoint" := NORM_X(MIN := 0.0,
VALUE := "Speed_Setpoint_Hz",
MAX := 50.0);
// Tỷ lệ giá trị chuẩn hóa sang thang đo của ngõ ra AO (0-27648)
"Scaled_Output_Value" := SCALE_X(MIN := 0,
VALUE := "Normalized_Setpoint",
MAX := 27648);
// Ghi giá trị đã tính toán ra ngõ ra AO
"AO_HW_Output" := "Scaled_Output_Value";
6.6. Truyền thông Modbus RTU/TCP
S7-1200 có thể giao tiếp Modbus Master/Slave. Modbus RTU cần module CM 1241, Modbus TCP dùng cổng truyền thông Profinet có sẵn trên CPU S7-1200. Sử dụng các khối hàm MB_COMM_LOAD
, MB_MASTER
, MB_SLAVE
.
MB_COMM_LOAD
cấu hình cổng (IP, port, baud…). MB_MASTER
gửi yêu cầu đọc/ghi (địa chỉ slave, mã chức năng, địa chỉ dữ liệu, con trỏ data…). MB_SLAVE
xử lý yêu cầu từ Master. Cần xử lý trạng thái (DONE, BUSY, ERROR). FBD hoặc SCL thường dùng.
Ví dụ cấu trúc gọi khối hàm trong FBD (Minh họa ý tưởng):
(* Network 1: Cấu hình cổng Modbus TCP một lần khi khởi động *)
+-----------------+ +-----------------+
| "FirstScan" |------| REQ |
| (%S0.1) | | MB_COMM_LOAD |---- DONE ----> "ConfigDone" (M10.0)
+-----------------+ | (Instance DB10) |---- BUSY ---->
| PORT: 16#XXX |---- ERROR ----> "ConfigError" (M10.1)
+-----------------+ | (Hardware ID) |---- STATUS ---> "ConfigStatus" (MW12)
| (Pointer to |------| MB_DB |
| Connect_Param) | | |
+-----------------+ +-----------------+
(* Network 2: Gửi yêu cầu Đọc Holding Register từ Slave (khi ConfigDone) *)
+-----------------+ +-----------------+
| "TriggerRead" |--+---| REQ |
| (M11.0) | | | MB_MASTER |---- DONE ----> "ReadDone" (M11.1)
+-----------------+ | | (Instance DB11) |---- BUSY ----> "ReadBusy" (M11.2)
| | MB_ADDR: 1 |---- ERROR ----> "ReadError" (M11.3)
+-----------------+ | | MODE: 0 (Read) |---- STATUS ---> "ReadStatus" (MW14)
| "ConfigDone" |--+ | DATA_ADDR: 40001|
| (M10.0) | | DATA_LEN: 10 |
+-----------------+ | DATA_PTR: P#DB20.DBX0.0 BYTE 20 | (* Con trỏ tới vùng nhớ đệm *)
| CONNECT: | (* Pointer tới cấu trúc CONNECT trong DB10 *)
+-----------------+
(* Lưu ý: Đây là cấu trúc rất cơ bản. Cần xử lý logic TriggerRead, quản lý trạng thái BUSY/ERROR/DONE
và phân tích dữ liệu trong vùng đệm DATA_PTR một cách cẩn thận.
Các tham số như PORT, MB_ADDR, DATA_ADDR, DATA_LEN, DATA_PTR cần đúng với cấu hình thực tế. *)
Ví dụ cấu trúc gọi khối hàm trong SCL (Tương đương Network 2 FBD):
// Giả sử MB_COMM_LOAD đã được gọi và thành công (ConfigDone = TRUE)
// Khai báo Instance DB cho MB_MASTER, ví dụ "MB_Master_Instance" : MB_MASTER
IF "TriggerRead" AND "ConfigDone" AND NOT "MB_Master_Instance".BUSY THEN
"MB_Master_Instance"(REQ := TRUE,
//CONNECT := // Pointer tới cấu trúc Connect của MB_COMM_LOAD DB10,
MB_ADDR := 1, // Địa chỉ Modbus Slave
MODE := 0, // 0: Read, 1: Write
DATA_ADDR := 40001, // Địa chỉ thanh ghi bắt đầu
DATA_LEN := 10, // Số lượng thanh ghi (words)
DATA_PTR := P#DB20.DBX0.0 BYTE 20 // Con trỏ vùng nhớ đệm
);
"TriggerRead" := FALSE; // Reset trigger sau khi gọi
ELSE
"MB_Master_Instance"(REQ := FALSE); // Đảm bảo REQ là FALSE khi không gọi
END_IF;
// Xử lý kết quả sau khi MB_MASTER hoàn thành
IF "MB_Master_Instance".DONE THEN
// Xử lý dữ liệu trong vùng nhớ đệm DB20...
"ReadDone" := TRUE;
// Reset DONE bằng cách gọi lại với REQ=FALSE hoặc đợi trigger mới
END_IF;
IF "MB_Master_Instance".ERROR THEN
"ReadError" := TRUE;
"ReadStatus" := "MB_Master_Instance".STATUS;
// Xử lý lỗi...
END_IF;
"ReadBusy" := "MB_Master_Instance".BUSY;
6.7. Kết nối và trao đổi dữ liệu với HMI
Trong hầu hết các hệ thống tự động hóa hiện đại thì giao diện người-máy (Human-Machine Interface – HMI) đóng vai trò quan trọng để vận hành và giám sát. Việc kết nối PLC S7-1200 với màn hình HMI (ví dụ: Siemens Basic/Comfort Panel) và trao đổi dữ liệu là một bài toán thường gặp.
Quá trình này bắt đầu bằng việc thiết kế các giao diện màn hình trên phần mềm cấu hình HMI (như WinCC Basic/Comfort/Advanced tích hợp trong TIA Portal). Sau đó, người lập trình cần tạo ra các “Tag” (biến) trong dự án HMI, mỗi Tag này sẽ được liên kết (ánh xạ) trực tiếp đến một vùng nhớ hoặc địa chỉ I/O cụ thể trong chương trình PLC (ví dụ: Tag “Nút_Nhấn_Start” liên kết với bit nhớ M0.0, Tag “Nhiệt_Độ_Lò” liên kết với biến dữ liệu MD100 chứa giá trị nhiệt độ).
Trên các màn hình HMI thì các đối tượng đồ họa như nút nhấn ảo (Button), trường nhập/xuất dữ liệu (I/O Field), thanh biểu đồ (Bar Graph), đèn báo trạng thái… sẽ được gắn với các Tag tương ứng.
Nhờ sự tích hợp chặt chẽ trong môi trường TIA Portal và giao thức truyền thông Profinet hiệu quả, việc trao đổi dữ liệu giữa PLC S7-1200 và HMI Siemens diễn ra gần như tự động sau khi cấu hình kết nối và ánh xạ Tag chính xác, cho phép người vận hành giám sát trạng thái hệ thống và nhập các lệnh điều khiển hoặc giá trị cài đặt một cách dễ dàng.
Trong vô số các bài toán, không thể không nhắc đến bài toán lập trình điều khiển thang máy bằng PLC S7-1200 vì nó thể hiển được rất rõ các điểm mạnh của dòng S7-1200 mang lại như: sử dụng đầy đủ DI/DO/AI/AO, đa dạng cổng giao tiếp và giao thức truyền thông, điều khiển và giám sát qua HMI hay SCADA,…
Trên đây, chỉ là 7 ví dụ điển hình cho thấy khả năng ứng dụng của lập trình PLC S7-1200 là vô cùng rộng lớn, từ những máy tự động nhỏ lẻ đến việc tích hợp vào các hệ thống sản xuất phức tạp. Hi vọng các đoạn code minh họa này giúp bạn hình dung rõ hơn!
7. Lập trình PLC S7-1200 cùng Thanh Thiên Phú
Qua những phần trình bày chi tiết ở trên, Thanh Thiên Phú hy vọng bạn đã có cái nhìn toàn diện và sâu sắc hơn về thế giới lập trình PLC S7-1200. Việc nắm vững kỹ năng này không chỉ mở ra những cơ hội phát triển sự nghiệp hấp dẫn cho các kỹ sư, kỹ thuật viên mà còn là đòn bẩy giúp các doanh nghiệp nâng cao năng suất, chất lượng sản phẩm và năng lực cạnh tranh trên thị trường.
ThanhThienPhu.vn không chỉ là nhà cung cấp thiết bị điện công nghiệp và tự động hóa uy tín, mà còn là đối tác tin cậy, luôn sẵn sàng hỗ trợ bạn trên con đường chinh phục công nghệ.
Thanh Thiên Phú là Đại lý Siemens tại Việt Nam, hãy liên hệ ngay với chúng tôi qua:
- Hotline: 08.12.77.88.99
- Website: thanhthienphu.vn
- Địa chỉ: 20 đường 29, Khu phố 2, Phường Cát Lái, Thành phố Thủ Đức, Thành phố Hồ Chí Minh