# Dùng ChatGPT viết SCL cho PLC S7-1200 điều khiển hệ thống trộn

[Ngọc Automation](https://homus.dev/speakers/ngoc-automation) · [Ngọc Automation](https://homus.dev/orgs/ngoc-automation)

> Nhờ ChatGPT viết chương trình SCL cho PLC Siemens S7-1200 điều khiển hệ thống trộn, rồi vẽ HMI trong TIA Portal và chạy thử.

Topics: Workflow, Coding Agents

Canonical: https://homus.dev/talks/dung-ai-lap-trinh-plc-s7-1200-dieu-khien-he-thong-tron-tu-dong-bang-scl

## 1. Hệ thống trộn cần lập trình và vai trò của AI

Ngọc Automation mở đầu bài bằng lời chào và giới thiệu chủ đề: lập trình điều khiển động cơ trộn bằng ngôn ngữ SCL trên PLC Siemens S7-1200, có ChatGPT hỗ trợ. Theo Ngọc Automation (video đăng ngày 31/10/2026), các bạn có thể dùng một AI bất kỳ, chọn AI nào cũng được; trong bài, người hướng dẫn dùng ChatGPT.

Hệ thống trộn trong video đăng ngày 31/10/2026 gồm các thiết bị sau. Thứ nhất là bơm 1 và bơm 2: có hai nguyên liệu, nguyên liệu 1 được bơm vào bồn thông qua bơm 1, còn nguyên liệu 2 được bơm vào bồn thông qua bơm 2. Người thao tác có thể cài đặt thời gian chạy của mỗi bơm là bao nhiêu giây. Ví dụ bơm 1 cài đặt 10 giây thì mỗi lần nhấn Start, bơm 1 chạy 10 giây; bơm 2 cài đặt 15 giây thì mỗi lần nhấn Start, bơm 2 chạy 15 giây.

Sau khi hai bơm chạy xong, động cơ trộn bắt đầu trộn, trong ví dụ mở đầu là trong vòng 15 giây. Trộn xong 15 giây thì van xả mở ra và bắt đầu xả nguyên liệu trong bồn trộn, cho tới khi cảm biến cạn tác động. Đó là nguyên lý hoạt động của hệ thống trong bài (video đăng ngày 31/10/2026). Ngoài ra còn có đèn run: theo yêu cầu trong tài liệu của bài, nhấn START thì đèn RUN sáng, nhấn STOP thì đèn RUN tắt.

![Hình 1 trong tài liệu Word: sơ đồ công nghệ hệ thống trộn với hai bơm, bồn TK-100, động cơ trộn, van xả, cảm biến cạn và bảng điều khiển](https://homus.dev/photos/_1Fgs7Pn0Pg-0003.jpg)

Hình 1 trong tài liệu của bài: bên trái là sơ đồ công nghệ với NL 1 qua BƠM 1 (P-101), NL 2 qua BƠM 2 (P-102) vào bồn trộn TK-100, động cơ trộn M-001 ở trên, van xả XV-101 và cảm biến cạn LSL 101 ở dưới; bên phải là bảng điều khiển có START, STOP, đèn RUN và ô cài đặt thời gian (Bơm 1: 10 giây, Bơm 2: 15 giây, Động cơ trộn: 15 giây), trong video đăng ngày 31/10/2026.

Phía trên hình, tài liệu Word trong video đăng ngày 31/10/2026 còn ghi hai mục tiêu của bài: xây dựng khối hàm FB bằng ngôn ngữ SCL theo phương pháp máy trạng thái (CASE ... OF) kết hợp các bộ định thời TON có thời gian cài đặt; gọi khối FB trong OB1, nạp chương trình, giám sát và kiểm tra hoạt động của hệ thống trộn.

## 2. Bảng phân công vào/ra: từ Word sang Excel rồi vào TIA Portal

Bước tiếp theo (demo trong video đăng ngày 31/10/2026) là vào phần mềm TIA Portal để thêm tag (tag list) cho dự án. Ngọc Automation đã soạn sẵn một danh sách tag trong tài liệu Word, gồm Start, Stop và các tag khác. Cách làm trong bài: copy bảng sang Excel trước cho nhanh, mở Excel lên, dán vào đó, rồi copy từng cột sang bảng tag của TIA Portal. Lúc đầu người hướng dẫn quên copy cột địa chỉ (miền nhớ), nên quay lại copy thêm cột này và giải thích từng dòng; cột comment cũng được copy sang luôn.

![Bảng 3 trong tài liệu Word: bảng phân công vào/ra (PLC tags) gồm 12 dòng tên tag, kiểu dữ liệu, địa chỉ và chức năng](https://homus.dev/photos/_1Fgs7Pn0Pg-0123.jpg)

Bảng 3 "Bảng phân công vào/ra (PLC tags)" trong tài liệu: start %I50.0, stop %I50.1, cb_can %I50.2 (cảm biến cạn LSL-101), den_run %Q0.0, bom_1 %Q0.1, bom_2 %Q0.2, dc_tron %Q0.3, van_xa %Q0.4 kiểu Bool; t_bom1 %MW100, t_bom2 %MW102, t_tron %MW104, tt_time %MW106 kiểu Int (tài liệu trong video đăng ngày 31/10/2026).

Theo bảng này (tài liệu trong video đăng ngày 31/10/2026), nút nhấn Start nằm ở địa chỉ I50.0, Stop ở I50.1, cảm biến cạn ở I50.2. Đầu ra gồm đèn run, bơm 1, bơm 2, động cơ trộn và van xả. Ngoài ra còn các tag thời gian cho bơm 1, bơm 2 và thời gian trộn.

Ngay trong TIA Portal (demo trong video đăng ngày 31/10/2026), Ngọc Automation sửa tên các tag thời gian thành dạng "t_set", với "set" nghĩa là cài đặt: thời gian cài đặt bơm 1, bơm 2 và trộn. Sau đó thêm các tag thời gian thực tế: thời gian thực tế bơm 1, thời gian thực tế bơm 2 và thời gian thực tế trộn, rồi copy phần chú giải (comment) cho từng tag. Ở các bước sau, danh sách tag trong TIA Portal hiện các tên t_set_bom1, t_set_bom2, t_set_tron, t_tt_bom1, t_tt_bom2, t_tt_tron. Như vậy là đã tạo xong tag cho hệ thống.

## 3. Tạo khối FB hệ thống trộn và khai báo Input, Output

Sau khi tạo xong tag, bước tiếp theo là tạo một khối FB (demo trong video đăng ngày 31/10/2026). Các bạn tạo FB như bình thường và đặt tên theo hệ thống trộn; trong TIA Portal, khối hiện ra với tên HT_TRON [FB1]. Nhấn OK, và giao diện khối mở ra để khai báo biến.

Trong video đăng ngày 31/10/2026, phần Input: copy start, stop và cảm biến cạn từ bảng tag rồi dán vào vùng Input. Các thời gian cài đặt (t_set) cũng là Input, định dạng là Integer; Ngọc Automation nhắc các bạn lưu ý điểm này. Phần Output: đèn run, bơm 1, bơm 2, động cơ trộn, van xả, cùng với thời gian thực tế của bơm 1, bơm 2 và trộn. Thời gian thực tế là đầu ra.

Comment cũng được copy theo (demo trong video đăng ngày 31/10/2026): nút nhấn start, stop, cảm biến cạn; các dòng cài đặt thời gian; đèn run, bơm 1, bơm 2, van xả; và thời gian thực tế của bơm và trộn. Người hướng dẫn nhắc: Input sẽ là các giá trị cài đặt hết, còn đèn, bơm, van và thời gian thực tế là Output. Như vậy là đã tạo xong đầu vào và đầu ra của khối.

Giao diện của khối HT_TRON [FB1] như trong TIA Portal ở các bước sau (video đăng ngày 31/10/2026): Input là start, stop, cảm biến cạn và ba thời gian cài đặt kiểu Int; Output là đèn run, hai bơm, động cơ trộn, van xả và ba thời gian thực tế.

## 4. Gửi yêu cầu điều khiển cho ChatGPT

Bây giờ là lúc nhờ ChatGPT làm phần lập trình (demo trong video đăng ngày 31/10/2026). Ngọc Automation đã mở sẵn ChatGPT. Đầu tiên, các bạn cắt ảnh màn hình phần khai báo Input, Output của FB vừa tạo, copy hình đó và dán vào khung chat. Sau đó mở tài liệu Word, copy phần nguyên lý (yêu cầu điều khiển) và dán vào sau câu "Hãy lập trình cho hệ thống trộn theo nguyên lý". Người hướng dẫn đọc lại các ý: khi nhấn Start thì đèn run sáng, khi nhấn Stop thì đèn run tắt; khi đèn run sáng thì bơm 1 và bơm 2 cùng chạy, mỗi bơm chạy hết thời gian cài đặt của nó; khi cả hai bơm chạy xong thì động cơ chạy đến hết thời gian cài đặt; sau đó van xả mở để xả sản phẩm cho đến khi cảm biến cạn ON. Copy toàn bộ phần này, dán vào và gửi đi để xem ChatGPT lập trình như thế nào.

Tin nhắn gửi đi trên màn hình (kèm ảnh chụp giao diện FB ở góc trên):

```
HÃY LẬP TRÌNH CHO HỆ THỐNG TRỘN THEO NGUYÊN LÝ:
Yêu cầu điều khiển:

·       Khi nhấn START thì đèn RUN sáng; khi nhấn STOP thì đèn RUN tắt.

·       Khi đèn RUN sáng thì bơm 1 và bơm 2 cùng chạy, mỗi bơm chạy đến hết thời gian cài đặt của nó.

·       Khi cả hai bơm chạy xong thì động cơ trộn chạy đến hết thời gian cài đặt.

·       Sau đó van xả mở để xả sản phẩm cho đến khi cảm biến cạn ON.

·       Khi cảm biến cạn ON thì van xả đóng và hệ thống lặp lại chu trình từ đầu.
```

![Khung chat ChatGPT với yêu cầu lập trình hệ thống trộn và ảnh chụp giao diện FB đính kèm](https://homus.dev/photos/_1Fgs7Pn0Pg-0603.jpg)

Yêu cầu điều khiển vừa gửi cho ChatGPT, ảnh chụp giao diện FB nằm ngay phía trên; ChatGPT đang ở trạng thái "Đang suy nghĩ" với dòng "Thiết kế chu trình FB" (demo trong video đăng ngày 31/10/2026).

Ngọc Automation nói thêm là mình quên ghi rõ "lập trình SCL" trong yêu cầu, nhưng theo người hướng dẫn (video đăng ngày 31/10/2026), chắc ChatGPT cũng hiểu, vì từ hình chụp đính kèm nó nhận ra đó là phần mềm TIA Portal.

## 5. ChatGPT đề xuất thêm biến Static

Trong câu trả lời (demo trong video đăng ngày 31/10/2026), ChatGPT nhắc tới các biến Input và Output như hình của người dùng, và đề nghị bổ sung một số biến trong vùng Static của FB1. Ngọc Automation bảo các bạn thêm các biến Static này: copy cả bảng sang Excel, rồi từ Excel copy tiếp và dán vào vùng Static trong TIA Portal. Cột comment cũng được copy theo.

![Câu trả lời của ChatGPT: mục Khai báo biến trong FB1 với bảng biến Static step, timer_bom1, timer_bom2, timer_tron](https://homus.dev/photos/_1Fgs7Pn0Pg-0653.jpg)

Mục "2. Khai báo biến trong FB1" trong câu trả lời của ChatGPT (demo trong video đăng ngày 31/10/2026): step kiểu Int (trạng thái hệ thống), timer_bom1, timer_bom2, timer_tron kiểu TON; ChatGPT ghi đó là các instance TON đa thể hiện (Multi-instance), các biến t_set_bom1, t_set_bom2, t_set_tron tính bằng giây, và mở đầu mục 3 "Toàn bộ chương trình SCL cho FB1".

Khi dán vào TIA Portal, kiểu dữ liệu của ba timer là TON_TIME, và Ngọc Automation nhắc các bạn lưu ý điều này. Theo người hướng dẫn (video đăng ngày 31/10/2026), ChatGPT kiến nghị một biến step lưu các bước trạng thái của hệ thống, định dạng Integer, cùng ba timer cho bơm 1, bơm 2 và thời gian trộn.

## 6. Dán code SCL vào FB và đọc lại logic từng bước

Tiếp theo, copy đoạn code SCL mà ChatGPT viết ra. Trong network của FB, click chuột và chọn Insert SCL, rồi dán đoạn code vừa copy vào. Theo Ngọc Automation (video đăng ngày 31/10/2026), từ đó hệ thống sẽ chạy theo chương trình này; các bạn xoá network 1 cũ đi.

Một đoạn code trong FB sau khi dán, gồm phần Start/Stop, dừng hệ thống và timer bơm 1, bơm 2 (demo trong video đăng ngày 31/10/2026):

```
IF #stop THEN
#den_run := FALSE;
ELSIF #start THEN
#den_run := TRUE;
END_IF;

IF NOT #den_run THEN
#step := 0;
END_IF;

#timer_bom1(
IN := (#step = 10),
PT := DINT_TO_TIME(INT_TO_DINT(#t_set_bom1) * 1000)
);

#timer_bom2(
IN := (#step = 10),
PT := DINT_TO_TIME(INT_TO_DINT(#t_set_bom2) * 1000)
);
```

![Trình soạn SCL trong TIA Portal với khối HT_TRON FB1: phần START/STOP, STOP HE THONG, TIMER BOM 1 và TIMER BOM 2](https://homus.dev/photos/_1Fgs7Pn0Pg-0723.jpg)

Code SCL do ChatGPT viết, đã dán vào HT_TRON [FB1] trên CPU 1212C DC/DC/DC; các comment chia code thành từng phần: "1. START / STOP, STOP UU TIEN", "2. STOP HE THONG", "3. TIMER BOM 1", "4. TIMER BOM 2", "5. TIMER DONG CO TRON" (demo trong video đăng ngày 31/10/2026).

Ngọc Automation giải thích code (video đăng ngày 31/10/2026). Khi nhấn Stop thì đèn run tắt, khi nhấn Start thì đèn run sáng. Khi dừng hệ thống, nếu đèn run không sáng thì bước (step) cũng được đưa về 0. Timer bơm 1 quy đổi thời gian cài đặt của bơm 1 ra giá trị PT để chạy; timer bơm 2 và timer động cơ trộn cũng vậy.

Sau đó là các bước trong code ChatGPT viết (demo trong video đăng ngày 31/10/2026). Bắt đầu là bước 0. Nếu step bằng 10 thì đầu ra bơm 1 và bơm 2 đang chạy; khi cả bơm 1 và bơm 2 đều xuất ra Q (timer báo xong) thì step nhảy sang 20. Ở step 20, động cơ trộn tiếp tục chạy; trộn xong thì step nhảy sang 30. Khi cảm biến cạn tác động thì chương trình quay lại step 10, cứ thế cho đến khi nhấn Stop.

Về đầu ra: bơm 1 chạy khi có đèn run, đang ở step 10 và đầu ra Q của timer bơm 1 chưa lên; bơm 2 và động cơ trộn cũng theo cách đó. Theo Ngọc Automation (video đăng ngày 31/10/2026), ChatGPT lập trình rất logic. Phần hiển thị thời gian thực tế lấy giá trị của timer chia cho 1.000. Đó là nguyên lý của chương trình.

Bốn bước của chương trình theo lời giải thích của Ngọc Automation (demo trong video đăng ngày 31/10/2026): 0, 10 chạy hai bơm, 20 chạy động cơ trộn, 30 mở van xả; cảm biến cạn ON thì quay lại 10.

## 7. Gọi FB trong Main [OB1] và nối tag

Sau đó (demo trong video đăng ngày 31/10/2026) các bạn vào khối Main, kéo khối hệ thống trộn (HT_TRON) vào network và nhấn OK; lúc này chương trình chính đã có FB, và trên màn hình xuất hiện khối instance HT_TRON_DB [DB1]. Tiếp theo nối tag cho từng chân: chân start nối với tag start, stop nối với stop, rồi cảm biến cạn; các chân thời gian cài đặt nối với t_set_bom1, t_set_bom2 và t_set_tron.

![Network 1 của Main OB1 trong TIA Portal với khối HT_TRON FB1 và instance HT_TRON_DB, các chân start, stop, cb_can đã nối tag](https://homus.dev/photos/_1Fgs7Pn0Pg-0903.jpg)

Khối HT_TRON [FB1] trong Network 1 của Main [OB1] với instance "HT_TRON_DB" [%DB1]: start (%I50.0), stop (%I50.1), cb_can (%I50.2) và t_set_bom1 (%MW100) đã nối tag; bên phải là các đầu ra den_run, bom_1, bom_2, dc_tron, van_xa, t_tt_bom1, t_tt_bom2, t_tt_tron (demo trong video đăng ngày 31/10/2026).

Ở phía đầu ra, nối đèn run, bơm 1, bơm 2, động cơ trộn và van xả vào các tag đầu ra Q tương ứng; ba chân thời gian thực tế nối với t_tt_bom1, t_tt_bom2 và thời gian thực tế của động cơ trộn. Theo Ngọc Automation (video đăng ngày 31/10/2026), như vậy là đã lập trình xong chương trình cho hệ thống trộn, và làm rất nhanh.

## 8. Thêm màn hình HMI KTP700 Basic

Để các bạn dễ hình dung, Ngọc Automation thêm phần SCADA bằng cách thêm một HMI vào dự án. Người hướng dẫn chọn loại HMI Basic 7 inch (trong cây dự án hiện là HMI_1 [KTP700 Basic PN]) và nhấn OK. Hệ thống sẽ được vẽ ra trên màn hình: một cái bồn như hình trong tài liệu. Theo Ngọc Automation (video đăng ngày 31/10/2026), trong TIA Portal có thể thiết kế được giao diện giống hình đã xây dựng sẵn: nút nhấn Start, Stop, đèn run và phần cài đặt thời gian. Quay lại TIA Portal thì nhấn Finish.

Theo Ngọc Automation (video đăng ngày 31/10/2026), bước này load tương đối lâu một chút, nhưng không sao: học thì cứ từ từ, không cần phải gấp.

Khi đã có màn hình, để xoá các phần nền có sẵn ở phía sau, các bạn click chuột phải, chọn Properties và xoá template đi; xoá template xong thì các phần nền đó mất đi (demo trong video đăng ngày 31/10/2026).

## 9. Nút Start, Stop, đèn run và các ô thời gian

Quay lại màn hình (demo trong video đăng ngày 31/10/2026), các bạn thêm nút nhấn Start, rồi copy ra một nút nữa và đặt tên Stop. Bên cạnh có một cái đèn, đó là đèn run hệ thống. Bên dưới là phần cài đặt thời gian cho bơm 1, bơm 2 và (người hướng dẫn nói nhầm là bơm 3 rồi sửa lại) thời gian trộn. Ngọc Automation thêm một dòng text "Cài đặt thời gian" ở đây.

Với các ô thời gian (demo trong video đăng ngày 31/10/2026), người hướng dẫn dùng I/O field, đơn vị thời gian là giây. Phía trước mỗi ô đặt nhãn bơm 1, copy tiếp cho bơm 2, và một ô cho động cơ trộn. Để phần này đẹp hơn, Ngọc Automation dùng thêm một hình chữ nhật làm nền, đưa nó xuống lớp dưới; với phần thời gian thì click chuột phải, chọn Properties và cho border bằng 0, theo người hướng dẫn như vậy là tương đối đẹp.

![Màn hình HMI trong TIA Portal với nút START, STOP, đèn run hệ thống, các ô cài đặt thời gian và thời gian thực tế](https://homus.dev/photos/_1Fgs7Pn0Pg-1316.jpg)

Màn hình HMI trên KTP700 Basic PN đang thiết kế: START, STOP, "Đèn run hệ thống", nhóm "CÀI ĐẶT THỜI GIAN" (Bơm 1, Bơm 2, ĐC trộn) và nhóm "THỜI GIAN THỰC TẾ" bên dưới, đơn vị giây (demo trong video đăng ngày 31/10/2026).

Các bạn cũng có thể đặt phần thời gian thực tế ở bên dưới; Ngọc Automation chọn đặt ở bên dưới, dịch phần cài đặt lên một chút, đặt phần thời gian thực tế ở bên dưới và sửa tiêu đề thành "Thời gian thực tế". Các I/O field của thời gian thực tế được đổi sang màu khác để phân biệt cái nào là thực tế, cái nào là cài đặt: theo người hướng dẫn (video đăng ngày 31/10/2026), ô cài đặt thì có thể nhập vào, còn ô thực tế thì không nhập được.

## 10. Vẽ sơ đồ bơm, bồn trộn, cánh khuấy và van xả

Bên trái màn hình, Ngọc Automation vẽ lại hình gồm bơm 1, bơm 2 và bồn trộn. Đầu tiên vẽ một bồn trộn bằng hình chữ nhật. Bơm được thể hiện bằng hình tròn. Ống dẫn từ bơm vào bồn được vẽ bằng một đường line: muốn đường nằm ngang thì vào phần Layout và nhập chiều cao bằng 0. Sau đó tăng kích thước nét lên 5, thêm một đoạn quay xuống, và chọn kiểu đầu cuối là mũi tên. Theo người hướng dẫn (video đăng ngày 31/10/2026), làm như thế thì hình đẹp hơn nhiều. Các bạn cho hình động cơ (bơm) nằm lên trên, và đặt nhãn bơm 1.

Để làm bơm 2 đối xứng, các bạn bôi đen tất cả phần vừa vẽ, click chuột phải, chọn Group, copy ra một bản rồi dùng chức năng Mirror để lật sang bên kia. Theo Ngọc Automation (video đăng ngày 31/10/2026), cách này rất nhanh, các bạn không cần vẽ lại. Sau đó ungroup và đặt nhãn bơm 2.

Tiếp theo là động cơ trộn (demo trong video đăng ngày 31/10/2026): Ngọc Automation dùng một hình chữ nhật làm động cơ trộn. Cánh khuấy được tạo bằng cách vẽ thêm hình chữ nhật và làm cho nó nhỏ lại, kéo xuống một chút, rồi cho một hình nằm ngang bằng cách xoay nó đi. Đưa cụm này lên trên là xong động cơ trộn.

Còn một cái van: Ngọc Automation copy ống dẫn qua chỗ đầu ra của bồn, cho ngắn lại, đặt xuống dưới, rồi ghép một đoạn thẳng với một đoạn ngang xoay một góc để trông giống cái van. Theo người hướng dẫn (video đăng ngày 31/10/2026), các bạn làm đơn giản thôi, không cần phức tạp, người nhìn hiểu được là được. Đặt nhãn van xả cho van, thêm một cảm biến và đặt nhãn cảm biến cạn, rồi ghi bồn chứa cho bồn. Như vậy là đã tạo xong các thiết bị trong hệ thống trên màn hình.

## 11. Gán tag và đổi màu thiết bị bằng Animation

Bây giờ là gán tag (demo trong video đăng ngày 31/10/2026). Các bạn bôi đen tất cả thiết bị (giữ Shift và bôi đen), click chuột phải, chọn Properties, vào mục Animations, Display và chọn Appearance. Ở đây đặt giá trị bằng 1 thì thiết bị chuyển sang màu xanh. Sau đó click vào từng thiết bị: với bơm 1, mở danh sách tag, kéo tag bơm 1 (đầu ra Q) qua ô Tag; bơm 2 cũng vậy, rồi động cơ trộn. Các thiết bị thuộc động cơ trộn được bôi đen cùng nhau để gán chung, rồi làm tiếp van xả.

![Thẻ Animations, Appearance trong TIA Portal: Range 1 đổi màu nền sang xanh cho ống dẫn của bơm 1, sơ đồ bồn trộn đã vẽ xong phía trên](https://homus.dev/photos/_1Fgs7Pn0Pg-1823.jpg)

Thẻ Animations, Appearance của một đoạn ống dẫn (Line_2): dòng Range 1 với màu 0, 255, 0; bên trái là danh sách tag có t_set và t_tt; phía trên là sơ đồ đã vẽ xong với Bơm 1, Bơm 2, ĐC trộn, Van xả, CB cạn và Bồn chứa (demo trong video đăng ngày 31/10/2026).

Cảm biến thì Ngọc Automation cho màu đỏ (demo trong video đăng ngày 31/10/2026): khi tag lên 1 thì cảm biến cạn hiện màu đỏ. Nếu các bạn muốn ống dẫn cũng chuyển sang màu xanh khi bơm chạy, dùng Display, chọn Appearance, đặt 1 với màu xanh cho ống dẫn tương ứng: ống của bơm 2 sáng khi bơm 2 chạy, ống của bơm 1 sáng khi bơm 1 chạy.

Van cũng vậy (demo trong video đăng ngày 31/10/2026): khi van xả mở thì cũng cho màu xanh, theo người hướng dẫn là cho đẹp thôi. Đèn run hệ thống cũng được cho màu xanh khi tag bằng 1, rồi các bạn kéo tag đèn run qua là xong.

## 12. Event cho nút bấm, ô thời gian và nút mô phỏng cảm biến cạn

Với nút Start và Stop (demo trong video đăng ngày 31/10/2026), Ngọc Automation vào Events: chọn Press thì dùng Set Bit, chọn Release thì dùng Reset Bit. Với nút Start, các bạn kéo tag start qua cho cả hai sự kiện; nút Stop cũng phải kéo tag stop vào cả hai vị trí Press và Release. Các ô cài đặt thời gian thì vào Properties rồi kéo tag tương ứng qua: t_set_bom1, t_set_bom2, t_set_tron; tiếp theo là các ô thực tế t_tt_bom1, t_tt_bom2 và thời gian thực tế của động cơ trộn. Như vậy là đã gắn xong tag cho hệ thống.

Để mô phỏng cảm biến cạn, Ngọc Automation thêm hai nút nhỏ: nút ON (cảm biến cạn on) và nút OFF (cảm biến cạn off), cho cỡ chữ nhỏ hơn. Theo người hướng dẫn (video đăng ngày 31/10/2026), đây là nút để người dùng nhấn vào cho việc mô phỏng: nút ON khi nhấn thì Set Bit tag cảm biến cạn, nút OFF thì Reset Bit. Hình cảm biến cạn được cho màu đỏ khi cảm biến cạn on, tức là tag bằng 1.

![Nút ON nhỏ dưới nhãn CB cạn đang được chọn, thẻ Properties, General của Button_3 với nhãn ON](https://homus.dev/photos/_1Fgs7Pn0Pg-1943.jpg)

Nút ON dưới nhãn "CB cạn" đang được tạo (Button_3, thẻ General, nhãn "ON"); danh sách tag bên trái có t_set_bom1, t_set_bom2, t_set_tron, t_tt_bom1, t_tt_bom2, t_tt_tron kiểu Int (demo trong video đăng ngày 31/10/2026).

Cuối cùng (demo trong video đăng ngày 31/10/2026), Ngọc Automation thêm một dòng tiêu đề cho đẹp: "SCADA hệ thống trộn tự động, lập trình bằng AI", vì theo người hướng dẫn, chương trình là do ChatGPT làm chứ không phải tự mình làm. Một đường thẳng được thêm để ngăn cách phần đèn: click chuột phải, chọn Properties, đặt chiều cao bằng 0 để thành đường thẳng và cho kích thước nét bằng 2. Như vậy là đã thiết kế xong giao diện HMI.

## 13. Download xuống PLC thật và chạy runtime HMI

Quay lại TIA Portal để download chương trình xuống. Ngọc Automation có sẵn PLC thật. Bạn nào chưa có thì có thể dùng PLCSIM; người hướng dẫn dùng PLC thật cho nhanh, vì theo Ngọc Automation (video đăng ngày 31/10/2026), PLCSIM làm RAM của máy tính chạy tương đối chậm. Bạn nào có PLC thì dùng, không có thì chấp nhận dùng PLCSIM.

![Hộp thoại Extended download to device trong TIA Portal tìm thấy PLC_1 CPU 1212C DC/DC/DC qua cổng PN/IE](https://homus.dev/photos/_1Fgs7Pn0Pg-2123.jpg)

Hộp thoại "Extended download to device": TIA Portal tìm thấy PLC_1 (CPU 1212C DC/DC/DC, giao diện PN/IE) và báo "Scan completed. 1 compatible devices of 1 accessible devices found"; phía sau, Network 1 của Main đã có tiêu đề "Hệ thống trộn" (demo trong video đăng ngày 31/10/2026).

Download chương trình xuống rồi chọn Start module. Sau đó chuyển qua HMI và chạy runtime lên. Theo Ngọc Automation (video đăng ngày 31/10/2026), khi chạy runtime HMI thì có thể giám sát được trạng thái của các thiết bị cũng như chương trình vận hành hệ thống.

## 14. Chạy thử một chu trình trộn

Trong lần chạy thử (demo trong video đăng ngày 31/10/2026), Ngọc Automation cài đặt thời gian: 10 giây cho bơm 1, 15 giây cho bơm 2 và 10 giây cho động cơ trộn. Sau đó nhấn Start: lúc này hai bơm cùng chạy. Bơm 1 chạy đến 10 giây thì dừng, bơm 2 chạy đến 15 giây thì dừng. Khi bơm 2 chạy đủ 15 giây thì động cơ trộn bắt đầu trộn, trong khoảng 10 giây. Trộn xong 10 giây thì van xả bắt đầu xả, và xả cho tới khi cảm biến cạn tác động.

![RT Simulator chạy màn hình SCADA hệ thống trộn: hai bơm và ống dẫn màu xanh, đèn run sáng, cài đặt 10, 15, 10 giây](https://homus.dev/photos/_1Fgs7Pn0Pg-2223.jpg)

Màn hình "SCADA HỆ THỐNG TRỘN TỰ ĐỘNG - LẬP TRÌNH BẰNG AI" trong RT Simulator: Bơm 1, Bơm 2 và hai ống dẫn đang xanh, đèn run hệ thống sáng; cài đặt Bơm 1 +10, Bơm 2 +15, ĐC trộn +10 giây, thời gian thực tế của hai bơm đang đếm tới +2 (demo trong video đăng ngày 31/10/2026).

Để thử, Ngọc Automation cho cảm biến cạn tác động. Lúc này hệ thống quay lại chu trình ban đầu, chạy lại bơm 1 và bơm 2 (demo trong video đăng ngày 31/10/2026). Có lúc màn hình hơi giật, theo người hướng dẫn là do máy tính thôi.

Theo Ngọc Automation (video đăng ngày 31/10/2026), như vậy là AI ChatGPT đã giúp lập trình được một hệ thống trộn rất hữu ích: nếu các bạn tự làm thì có thể khó, nhưng ChatGPT làm thì rất nhanh.

## 15. Nhờ ChatGPT cho cảm biến cạn tự tác động

Tiếp theo (demo trong video đăng ngày 31/10/2026), Ngọc Automation không muốn phải nhấn nút ON/OFF của cảm biến cạn nữa, mà muốn sau một khoảng thời gian thì cảm biến cạn tự tác động. Việc này cũng nhờ ChatGPT viết. Quay lại khung chat, người hướng dẫn vừa gõ vừa đọc yêu cầu mới (dòng đầu trên màn hình là "TÔI MUỐN M…"): "tôi muốn mô phỏng cảm biến cạn tự tác động sau khi van xả mở 10 giây".

Tức là theo yêu cầu, cảm biến cạn sẽ on sau khi van xả mở được 10 giây. ChatGPT lập trình tiếp phần này (demo trong video đăng ngày 31/10/2026): thêm một timer thời gian xả (TON) và một biến cảm biến cạn mô phỏng, rồi sửa đoạn State 30 điều khiển van xả.

![Câu trả lời của ChatGPT với code SCL timer_xa mô phỏng cảm biến cạn và mục Sửa State 30, Điều khiển van xả](https://homus.dev/photos/_1Fgs7Pn0Pg-2423.jpg)

Câu trả lời thứ hai của ChatGPT (demo trong video đăng ngày 31/10/2026): khối "TIMER MO PHONG CAM BIEN CAN" với timer_xa chạy khi step bằng 30, PT T#10S, và mục "3. Sửa State 30, Điều khiển van xả" với đoạn code thay cho State 30 cũ.

Hai đoạn code SCL trong câu trả lời của ChatGPT trên màn hình (demo trong video đăng ngày 31/10/2026):

```
// TIMER MO PHONG CAM BIEN CAN
// VAN XA MO 10 GIAY -> CAM BIEN CAN ON

#timer_xa(
IN := (#step = 30),
PT := T#10S
);

// Tin hieu cam bien can mo phong
#cb_can_mophong := #timer_xa.Q;
```

```
// STATE 30: MO VAN XA
// SAU 10 GIAY CAM BIEN CAN TU DONG ON

30:
IF #cb_can_mophong THEN
#step := 10;
END_IF;
```

Đọc câu trả lời, Ngọc Automation nhận xét phần thêm state điều khiển van xả thì hơi phức tạp, và theo người hướng dẫn (video đăng ngày 31/10/2026), phần này có cũng được mà không có cũng được. Muốn thêm thì phải sửa chương trình thành chức năng mô phỏng, trong khi cảm biến cạn có thể tác động bằng nút trên màn hình, không cần thời gian delay. Vì vậy người hướng dẫn quyết định không thêm, cứ để chương trình như cũ.

## 16. Kết thúc bài

Ngọc Automation tổng kết: như vậy là đã lập trình xong một hệ thống, theo người hướng dẫn (video đăng ngày 31/10/2026) là rất hay và hữu ích, đó là hệ thống trộn. Đây cũng là nội dung của bài giảng; bài kết thúc ở đây, và người hướng dẫn chào các bạn.

## Nguồn và liên kết

- Tên gốc: Dùng AI Lập Trình PLC S7-1200 | Điều Khiển Hệ Thống Trộn Tự Động Bằng SCL
- Sự kiện: [YouTube](https://homus.dev/events/youtube)
- Video gốc: [https://www.youtube.com/watch?v=_1Fgs7Pn0Pg](https://www.youtube.com/watch?v=_1Fgs7Pn0Pg)

- Kênh YouTube Ngọc Automation (Ngọc Automation): [youtube.com/channel/UCvoeYwp6cxdrbx_5b0xibWQ](https://www.youtube.com/channel/UCvoeYwp6cxdrbx_5b0xibWQ)

- Trang Totally Integrated Automation Portal (TIA Portal) của Siemens (đọc ngày 01/11/2026): [siemens.com/en-us/products/tia-portal](https://www.siemens.com/en-us/products/tia-portal/)

- Trang dòng PLC SIMATIC S7-1200 của Siemens, hiện chuyển tới trang S7-1200 G2 (đọc ngày 01/11/2026): [siemens.com/en-us/products/simatic/s7-1200-g2](https://www.siemens.com/en-us/products/simatic/s7-1200-g2/)

Nguồn: https://homus.dev/talks/dung-ai-lap-trinh-plc-s7-1200-dieu-khien-he-thong-tron-tu-dong-bang-scl · cập nhật 2026-11-01
