Lập trình điều khiển cánh tay robot bằng PLC

21/05/2025
36 Phút đọc
1634 Lượt xem

Điều khiển cánh tay robot bằng PLC đang mở ra những cơ hội đột phá cho các ngành công nghiệp hiện đại giúp tối ưu hóa quy trình sản xuất và nâng cao năng lực cạnh tranh. Việc ứng dụng bộ điều khiển logic khả trình để kiểm soát chuyển động chính xác của tay máy robot không chỉ mang lại hiệu suất vượt trội mà còn đảm bảo tính ổn định và linh hoạt cho toàn bộ hệ thống. Cùng Thanh Thiên Phú tìm hiểu các bước lập trình chi tiết trong bài viết sau đây.

1. Yêu cầu bài toán

Bài toán điều khiển cánh tay robot bằng PLC đặt ra nhiều yêu cầu kỹ thuật phức tạp, đòi hỏi sự chính xác, linh hoạt và độ tin cậy cao trong môi trường công nghiệp. Mục tiêu chính là làm cho cánh tay robot có thể thực hiện các nhiệm vụ cụ thể một cách tự động, lặp đi lặp lại với độ chính xác cao, thay thế hoặc hỗ trợ con người trong các công việc nặng nhọc, nguy hiểm hoặc đòi hỏi sự tỉ mỉ.

Xác định các yêu cầu của bài toán điều khiển cánh tay robot bằng PLC
Xác định các yêu cầu của bài toán điều khiển cánh tay robot bằng PLC

Các yêu cầu cơ bản của bài toán này gồm việc PLC phải có khả năng điều khiển chính xác vị trí, tốc độ và gia tốc của từng khớp của cánh tay robot, bao gồm cả chuyển động điểm-tới-điểm và chuyển động theo quỹ đạo liên tục. Bên cạnh đó, PLC cần năng lực điều khiển đồng bộ và phối hợp chuyển động của tất cả các trục để đầu công tác di chuyển đến đúng vị trí và hướng mong muốn.

Hệ thống cũng phải tích hợp các loại cảm biến khác nhau để cung cấp thông tin phản hồi giúp PLC đưa ra quyết định điều khiển phù hợp. Một yêu cầu quan trọng khác là khả năng giao tiếp và phối hợp hoạt động với các thiết bị khác trong dây chuyền sản xuất thông qua các chuẩn truyền thông công nghiệp.

Giao diện lập trình cho PLC phải trực quan, dễ sử dụng và hỗ trợ các ngôn ngữ lập trình PLC tiêu chuẩn, đồng thời chương trình điều khiển cần dễ dàng sửa đổi, nâng cấp. Yếu tố an toàn cũng được đặt lên hàng đầu, với các chức năng như dừng khẩn cấp và giới hạn vùng làm việc.

Hệ thống còn cần cung cấp khả năng giám sát trạng thái hoạt động và chẩn đoán lỗi nhanh chóng. Cuối cùng, PLC phải có tốc độ xử lý đủ nhanh và thời gian chu kỳ quét đủ nhỏ để đáp ứng yêu cầu động học của robot, đảm bảo chuyển động mượt mà.

Việc giải quyết thành công các yêu cầu này sẽ giúp doanh nghiệp khai thác tối đa tiềm năng của cánh tay robot, từ đó cải thiện đáng kể hiệu suất sản xuất, giảm chi phí vận hành và nâng cao chất lượng sản phẩm.

2. Các thành phần chính trong hệ thống

Để xây dựng một hệ thống điều khiển cánh tay robot bằng PLC hoàn chỉnh và hoạt động hiệu quả, việc hiểu rõ và lựa chọn đúng các thành phần cốt lõi là vô cùng quan trọng. Mỗi thành phần đóng một vai trò riêng biệt nhưng lại phối hợp chặt chẽ với nhau, tạo nên một thể thống nhất.

2.1. Bộ điều khiển logic khả trình PLC

PLC được ví như bộ não của toàn bộ hệ thống, chịu trách nhiệm nhận tín hiệu đầu vào từ cảm biến và các thiết bị khác, thực thi chương trình logic đã được lập trình sẵn, và xuất tín hiệu điều khiển đến các cơ cấu chấp hành của cánh tay robot. Vai trò của PLC rất đa dạng, bao gồm thực thi thuật toán điều khiển chuyển động của robot, xử lý tín hiệu từ cảm biến để đưa ra quyết định, quản lý trình tự hoạt động của robot theo yêu cầu công việc như gắp, di chuyển, đặt, hàn, sơn. PLC cũng giao tiếp với HMI để người vận hành giám sát và điều khiển, kết nối và đồng bộ với các thiết bị khác trong dây chuyền sản xuất, và thực hiện các chức năng an toàn.

Kết nối HMI với PLC giúp hướng dẫn các quy trình vận hành an toàn
Kết nối HMI với PLC giúp hướng dẫn các quy trình vận hành an toàn

Hiện nay, đang có nhiều loại PLC phổ biến trên thị trường. Ví dụ, PLC Siemens có các dòng SIMATIC S7-1200 phù hợp cho ứng dụng vừa và nhỏ, S7-1500 cho ứng dụng phức tạp, và các dòng S7-300/400 vẫn còn được sử dụng. Mitsubishi Electric cung cấp dòng FX series như FX3U, FX5U nhỏ gọn (Mini PLC) và mạnh mẽ, cùng với Q series module hóa cho hệ thống lớn. Omron nổi bật với dòng CP1L/CP1H và CJ2M/CS1. Rockwell Automation (Allen-Bradley) có CompactLogix và ControlLogix. Delta cũng là một lựa chọn với DVP series giá cả cạnh tranh, phổ biến tại Việt Nam.

Bộ điều khiển PLC Siemens
Bộ điều khiển PLC Siemens

Khi lựa chọn PLC, cần xem xét nhiều tiêu chí. Số lượng I/O (Input/Output) phải đủ để kết nối tất cả thiết bị và có dự phòng. Tốc độ xử lý (CPU Speed) và bộ nhớ (Memory) quan trọng cho các ứng dụng đòi hỏi đáp ứng nhanh và chương trình phức tạp. Khả năng Motion Control, tức là một số PLC tích hợp sẵn module hoặc chức năng điều khiển chuyển động chuyên dụng giúp đơn giản hóa lập trình và tăng độ chính xác. Số lượng và loại cổng truyền thông (Ethernet, RS485, Profinet) cũng cần được cân nhắc để kết nối với HMI, biến tần, servo drive. Phần mềm lập trình cần dễ sử dụng, hỗ trợ gỡ lỗi và mô phỏng. Chi phí phải phù hợp ngân sách và độ tin cậy cùng hỗ trợ kỹ thuật từ nhà cung cấp cũng là yếu tố quan trọng. Thanhthienphu.vn là nhà cung cấp các dòng PLC chính hãng với sự hỗ trợ tận tâm, giúp bạn lựa chọn đúng PLC, nền tảng vững chắc cho dự án.

2.2. Cánh tay robot

Cánh tay robot là cơ cấu cơ khí chính, thực hiện các chuyển động vật lý theo lệnh từ PLC. Cấu trúc của nó bao gồm các khớp (joints) và các thanh nối (links), với số lượng khớp và cách bố trí quyết định bậc tự do và không gian làm việc. Có nhiều loại cánh tay robot phổ biến. Robot khớp nối (Articulated Robot), tương tự cánh tay người, thường có 5 hoặc 6 bậc tự do, linh hoạt cho các ứng dụng phức tạp như hàn, sơn, lắp ráp, ví dụ như KUKA KR AGILUS hay FANUC LR Mate. Robot SCARA (Selective Compliance Assembly Robot Arm) có 4 bậc tự do, rất nhanh và chính xác trong mặt phẳng ngang, lý tưởng cho gắp đặt và lắp ráp linh kiện nhỏ, điển hình là Epson G-Series. Robot Delta (Parallel Robot) với 3 hoặc 4 bậc tự do, cấu trúc song song, tốc độ rất cao, thường dùng trong gắp và đóng gói sản phẩm nhẹ như ABB IRB 360 FlexPicker. Robot Cartesian (Gantry Robot) chuyển động theo 3 trục X, Y, Z, đơn giản, dễ lập trình, phù hợp xếp dỡ hàng hóa và gia công.

Các loại cánh tay robot công nghiệp
Cánh tay robot công nghiệp

Các thông số kỹ thuật quan trọng khi lựa chọn cánh tay robot bao gồm bậc tự do (DOF), tức số trục độc lập robot có thể di chuyển; tải trọng (Payload), là khối lượng tối đa robot có thể mang; tầm với (Reach), khoảng cách xa nhất đầu công tác vươn tới. Độ chính xác (Accuracy) và độ lặp lại (Repeatability) cũng rất quan trọng, trong đó độ lặp lại thường được ưu tiên trong nhiều ứng dụng công nghiệp. Tốc độ tối đa của các khớp hoặc đầu công tác và môi trường làm việc (một số robot được thiết kế cho môi trường khắc nghiệt) cũng là những yếu tố cần xem xét.

2.3. Cơ cấu chấp hành

Cơ cấu chấp hành (End-Effector / End-of-Arm Tooling – EOAT) là công cụ được gắn vào đầu cuối của cánh tay robot để thực hiện tác vụ cụ thể, và việc lựa chọn EOAT phụ thuộc hoàn toàn vào ứng dụng.

Thiết bị đầu cuối (EOAT) của cánh tay robot
Thiết bị đầu cuối (EOAT) của cánh tay robot

Các loại phổ biến bao gồm tay kẹp (Gripper) dùng để gắp giữ đối tượng, có nhiều loại như 2 ngón, 3 ngón, khí nén, điện, chân không.

Đầu hàn (Welding Gun) được dùng trong ứng dụng hàn. Đầu phun sơn (Paint Sprayer) dùng cho sơn tự động.

Dụng cụ gia công như Spindle, Drill Head dùng cho khoan, phay, cắt.

Cảm biến lực/mô-men dùng trong lắp ráp đòi hỏi kiểm soát lực tinh vi.

Hệ thống vision với camera tích hợp để nhận dạng, kiểm tra, dẫn đường.

PLC sẽ điều khiển hoạt động của EOAT này.

2.4. Cảm biến

Cảm biến cung cấp thông tin phản hồi (feedback) cho PLC, giúp robot “nhận biết” môi trường xung quanh và điều chỉnh hành vi. Vai trò của chúng là xác định vị trí robot và đối tượng, phát hiện sự hiện diện/vắng mặt của vật thể, đo lường khoảng cách, kích thước, phát hiện va chạm hoặc điều kiện bất thường, và đảm bảo an toàn.

Các loại cảm biến thường dùng bao gồm cảm biến vị trí như encoder gắn trên động cơ. Cảm biến tiệm cận như cảm biến điện cảm, điện dung, từ, dùng để phát hiện vật thể ở cự ly gần. Cảm biến quang như thu-phát, phản xạ gương, phản xạ khuếch tán, dùng để phát hiện vật thể từ xa, kiểm tra màu sắc. Cảm biến lực/mô-men gắn ở cổ tay robot hoặc EOAT để đo lực tác động. Hệ thống nhận dạng hình ảnh (Machine Vision Systems) với camera và phần mềm xử lý ảnh. Cảm biến an toàn như rèm ánh sáng, thảm an toàn, máy quét laser khu vực để phát hiện sự xâm nhập của con người vào vùng nguy hiểm. Tín hiệu từ các cảm biến này được đưa về đầu vào của PLC để xử lý.

2.5. Giao diện HMI

HMI cho phép người vận hành tương tác với hệ thống điều khiển cánh tay robot bằng PLC. Chức năng của HMI là hiển thị trạng thái hoạt động của robot và hệ thống, cho phép người vận hành cài đặt các thông số, khởi động, tạm dừng, dừng khẩn cấp robot, chọn chương trình làm việc, và hiển thị thông tin chẩn đoán lỗi.

Màn hình HMI điều khiển hệ thống cánh tay robot
Màn hình HMI điều khiển hệ thống cánh tay robot

Các loại HMI gồm màn hình cảm ứng (Touch Panel), là loại phổ biến nhất, trực quan và dễ sử dụng. HMI dạng nút nhấn và đèn báo đơn giản hơn, dùng cho các hệ thống không yêu cầu hiển thị đồ họa phức tạp. PC-based HMI/SCADA sử dụng máy tính công nghiệp với phần mềm SCADA để giám sát và điều khiển các hệ thống lớn. HMI giao tiếp với PLC thông qua các chuẩn truyền thông.

2.6. Động cơ và bộ điều khiển động cơ

Động cơ và bộ điều khiển động cơ (Motors and Drives) là thành phần tạo ra chuyển động cho các khớp của cánh tay robot. Động cơ Servo (Servo Motors) được sử dụng phổ biến nhất do khả năng điều khiển vị trí, tốc độ và mô-men xoắn chính xác, hoạt động theo vòng lặp kín với phản hồi từ encoder, cung cấp hiệu suất động học cao và đi kèm với bộ điều khiển servo (Servo Drive). Động cơ Bước (Stepper Motors) có chi phí thấp hơn, điều khiển vị trí theo từng bước góc, thường hoạt động theo vòng lặp hở và phù hợp cho ứng dụng không yêu cầu tốc độ quá cao hoặc tải trọng nhẹ, đi kèm với bộ điều khiển động cơ bước (Stepper Drive). PLC sẽ gửi tín hiệu điều khiển đến các Drive này.

2.7. Nguồn cung cấp và hệ thống phụ trợ

Các thành phần này bao gồm bộ nguồn (Power Supply) cung cấp nguồn điện ổn định cho PLC, HMI, cảm biến, động cơ, thường là 24VDC. Tủ điện điều khiển chứa PLC, drive, và các thiết bị bảo vệ, đấu nối. Hệ thống khí nén (Pneumatic System) nếu sử dụng cơ cấu chấp hành khí nén. Cuối cùng là cáp kết nối tín hiệu, động lực, truyền thông, cần đảm bảo chất lượng và đấu nối đúng kỹ thuật.

Việc lựa chọn và tích hợp đúng các thành phần này là yếu tố quyết định đến hiệu suất, độ tin cậy và tuổi thọ của toàn bộ hệ thống. Thanhthienphu.vn cung cấp đầy đủ các thiết bị này từ các thương hiệu hàng đầu, đồng thời hỗ trợ tư vấn kỹ thuật để bạn có được một hệ thống điều khiển cánh tay robot bằng PLC tối ưu nhất. Đừng ngần ngại liên hệ với chúng tôi qua website thanhthienphu.vn hoặc hotline 08.12.77.88.99.

3. Nguyên lý hoạt động của hệ thống

Hệ thống điều khiển cánh tay robot bằng PLC hoạt động dựa trên một chu trình khép kín, phối hợp nhịp nhàng giữa các thành phần để thực hiện các tác vụ đã được lập trình.

3.1. Quy trình từ lệnh đến hành động

Quy trình này bắt đầu bằng việc nhập lệnh và chương trình, nơi người vận hành có thể nhập lệnh qua HMI hoặc hệ thống hoạt động dựa trên chương trình nạp sẵn vào PLC. Tiếp theo, PLC xử lý thông tin bằng cách quét đầu vào để nhận tín hiệu từ cảm biến và nút nhấn, sau đó thực thi chương trình logic dựa trên các tín hiệu này.

Trong quá trình này, PLC thực hiện tính toán động học, bao gồm động học thuận để xác định vị trí đầu công tác từ góc khớp và động học ngược để tính toán góc khớp cần thiết từ vị trí đầu công tác mong muốn. Sau đó, PLC tạo lệnh điều khiển chuyển động, có thể là chuỗi xung, tín hiệu analog hoặc lệnh qua mạng truyền thông.

Nguyên lý hoạt động của hệ thống điều khiển cánh tay robot bằng PLC
Nguyên lý hoạt động của hệ thống điều khiển cánh tay robot bằng PLC

Các tín hiệu điều khiển này được truyền đến bộ điều khiển động cơ. Kế đến, bộ điều khiển động cơ vận hành động cơ, servo drive điều khiển servo motor và stepper drive điều khiển stepper motor. Kết quả là cánh tay robot thực hiện chuyển động cơ học, với sự phối hợp của các khớp giúp đầu công tác di chuyển theo quỹ đạo đã tính toán.

Trong suốt quá trình, phản hồi từ cảm biến về PLC liên tục được gửi, bao gồm tín hiệu từ encoder, cảm biến tiệm cận, quang, lực, và an toàn, giúp PLC xác nhận, đưa ra quyết định, điều chỉnh, xử lý lỗi và đảm bảo an toàn.

Cuối cùng, PLC cập nhật đầu ra, điều khiển đèn báo, van, và các thiết bị khác, sau đó lặp lại toàn bộ chu trình quét đầu vào, thực thi chương trình, và cập nhật đầu ra một cách nhanh chóng.

3.2. Các chế độ hoạt động thường gặp

Hệ thống điều khiển cánh tay robot bằng PLC thường có nhiều chế độ hoạt động:

– Chế độ tự động (Automatic Mode) cho phép robot thực hiện hoàn toàn tự động chu trình công việc đã lập trình.

– Chế độ bằng Tay/Chạy nhích (Manual/Jog Mode) cho phép người vận hành di chuyển từng khớp hoặc đầu công tác của robot theo từng bước nhỏ để thiết lập, hiệu chỉnh hoặc bảo trì.

– Chế độ dạy điểm (Teach Mode) là nơi người vận hành di chuyển robot đến các vị trí mong muốn và lưu lại tọa độ, sau đó PLC sẽ điều khiển robot di chuyển qua các điểm này trong chế độ tự động.

– Một số hệ thống còn có Chế độ mô phỏng (Simulation Mode), cho phép chạy chương trình và mô phỏng chuyển động trên HMI hoặc máy tính mà không cần robot thực tế di chuyển, hữu ích cho việc kiểm tra logic.

4. Sơ đồ kết nối và thuật toán điều khiển cánh tay robot bằng PLC

Để hiện thực hóa hệ thống điều khiển cánh tay robot bằng PLC, việc thiết kế sơ đồ kết nối phần cứng chính xác và xây dựng thuật toán điều khiển logic là hai bước không thể thiếu. Chúng đảm bảo các thành phần giao tiếp đúng cách và robot hoạt động theo đúng ý đồ.

4.1. Sơ đồ kết nối điện

Sơ đồ kết nối điện mô tả chi tiết cách các thành phần phần cứng được đấu nối với nhau, đặc biệt là kết nối giữa PLC với các thiết bị ngoại vi.

Về kết nối với PLC S7-1200, nguồn cấp thường là 24VDC. Đầu vào số (DI) nhận tín hiệu từ các cảm biến trạng thái, công tắc hành trình, nút nhấn, và rơ le an toàn. Ví dụ, I0.0 có thể là nút Start, I0.2 là cảm biến sản phẩm. Đầu ra số (DO) điều khiển các cơ cấu ON/OFF như van điện từ, đèn báo, ví dụ Q0.0 điều khiển van mở tay kẹp. Đầu ra xung tốc độ cao (PTO/PWM) được dùng nếu PLC điều khiển trực tiếp động cơ bước hoặc servo qua chế độ xung, ví dụ Q0.0 và Q0.1 được cấu hình cho tín hiệu xung và chiều. Đầu vào/ra Analog (AI/AO) cần thiết nếu đọc tín hiệu từ cảm biến analog hoặc điều khiển servo drive bằng tín hiệu analog, có thể cần module mở rộng.

Đấu nối module mở rộng cho PLC S7-1200
Đấu nối module mở rộng cho PLC S7-1200

Kết nối với Servo Drive/Stepper Drive có thể qua chế độ xung (PTO outputs của PLC đến PULSE_IN, DIR_IN của Drive) hoặc qua mạng truyền thông S7-1200 như Profinet.

Kết nối với HMI thường qua cổng Ethernet. Động cơ được cấp nguồn từ Drive và cáp encoder từ servo motor kết nối về Servo Drive. Nút dừng khẩn cấp (E-Stop) phải được đấu nối cứng qua rơ le an toàn để ngắt nguồn động lực của robot.

Sơ đồ kết nối hệ thống điều khiển cánh tay robot bằng PLC
Sơ đồ kết nối hệ thống điều khiển cánh tay robot bằng PLC

Đây là một bảng ví dụ minh họa việc đấu nối I/O cho PLC S7-1200 trong một ứng dụng gắp thả đơn giản:

Địa chỉ PLC Tên tín hiệu Loại I/O Thiết bị kết nối Chức năng
I0.0 Nút nhấn Start DI Nút nhấn Start Bắt đầu chu trình tự động
I0.1 Nút nhấn Stop DI Nút nhấn Stop Dừng chu trình tự động
I0.2 Nút nhấn Reset DI Nút nhấn Reset Xóa lỗi, đặt lại hệ thống
I0.3 Nút dừng khẩn cấp (E-Stop) DI Tiếp điểm phụ Rơ le an toàn Báo trạng thái E-Stop về PLC
I0.4 Cảm biến sản phẩm tại vị trí gắp DI Cảm biến quang Phát hiện có sản phẩm để gắp
I0.5 Cảm biến Home Khớp 1 DI Công tắc hành trình/Tiệm cận Báo Khớp 1 về vị trí gốc
I0.6 Cảm biến Home Khớp 2 DI Công tắc hành trình/Tiệm cận Báo Khớp 2 về vị trí gốc
I0.7 Cảm biến xác nhận kẹp DI Cảm biến trên tay kẹp Xác nhận đã kẹp chặt sản phẩm
Q0.0 Điều khiển động cơ Khớp 1 (Xung) PTO Servo/Stepper Drive Khớp 1 Tín hiệu xung cho Khớp 1
Q0.1 Điều khiển động cơ Khớp 1 (Chiều) DO Servo/Stepper Drive Khớp 1 Tín hiệu chiều cho Khớp 1
Q0.2 Điều khiển động cơ Khớp 2 (Xung) PTO Servo/Stepper Drive Khớp 2 Tín hiệu xung cho Khớp 2
Q0.3 Điều khiển động cơ Khớp 2 (Chiều) DO Servo/Stepper Drive Khớp 2 Tín hiệu chiều cho Khớp 2
Q0.4 Điều khiển van mở tay kẹp DO Van điện từ Mở tay kẹp
Q0.5 Điều khiển van đóng tay kẹp DO Van điện từ Đóng tay kẹp
Q0.6 Đèn báo Robot Hoạt Động DO Đèn báo xanh Báo robot đang chạy tự động
Q0.7 Đèn báo Lỗi DO Đèn báo đỏ Báo hệ thống có lỗi
ETH PORT Kết nối HMI/Mạng COMM Màn hình HMI/Switch mạng Giao tiếp dữ liệu, lệnh

(*) Lưu ý: Đây là ví dụ đơn giản hóa. Thực tế số lượng I/O, loại tín hiệu (NPN/PNP), và cách đấu nối cụ thể phụ thuộc vào thiết bị và yêu cầu dự án.

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

Thuật toán điều khiển là logic được lập trình vào PLC để chỉ huy hoạt động của cánh tay robot. Nó có thể được biểu diễn bằng lưu đồ (flowchart) trước khi viết code.

Ví dụ: Lưu đồ thuật toán cho robot gắp sản phẩm từ Vị Trí A đến Vị Trí B và Đặt Xuống

graph TD

S[Bắt đầu] --> C1{Nhấn Start?};

C1 — Không --> C1;

C1 — Có --> P1[Robot về Home (Nếu chưa Home)];

P1 --> P2[Di chuyển đến Vị trí Chờ trên A];

P2 --> C2{Cảm biến báo có sản phẩm tại A?};

C2 — Không --> P2;

C2 — Có --> P3[Di chuyển xuống Vị trí Gắp A];

P3 --> P4[Đóng Tay Kẹp];

P4 --> C3{Xác nhận đã kẹp?};

C3 — Không (Timeout/Lỗi) --> P_Error[Báo lỗi: Kẹp thất bại];

P_Error --> S_End[Dừng & Chờ Reset];

C3 — Có --> P5[Nâng sản phẩm lên];

P5 --> P6[Di chuyển đến Vị trí Chờ trên B];

P6 --> P7[Di chuyển xuống Vị trí Đặt B];

P7 --> P8[Mở Tay Kẹp];

P8 --> P9[Nâng Tay Kẹp lên (Tránh va chạm)];

P9 --> C4{Tiếp tục chu trình? (Ví dụ: có lệnh Stop không?)};

C4 — Có (Không Stop) --> P2;

C4 — Không (Có Stop) --> P_EndCycle[Hoàn thành chu trình];

P_EndCycle --> P1_ReturnHome[Robot về Home];

P1_ReturnHome --> S_EndCycle[Kết thúc];

subgraph Xử lý Dừng Khẩn Cấp / Lỗi Chung

SE[Tín hiệu E-Stop hoặc Lỗi Hệ Thống] --> PSA[Dừng Robot Ngay Lập Tức];

PSA --> PB[Báo Lỗi trên HMI];

PB --> PSW[Chờ Reset];

end

Thuật toán này bắt đầu khi hệ thống khởi động và chờ lệnh Start. Khi nhận lệnh, robot sẽ về Home nếu chưa ở vị trí gốc, sau đó di chuyển đến vị trí chờ trên khu vực A. Hệ thống kiểm tra sản phẩm tại A; nếu có, robot di chuyển xuống vị trí gắp, đóng tay kẹp và xác nhận đã kẹp. Nếu kẹp không thành công, hệ thống báo lỗi và dừng. Nếu thành công, robot nâng sản phẩm lên, di chuyển đến vị trí chờ trên khu vực B, rồi hạ xuống vị trí đặt B và mở tay kẹp. Sau đó, robot nâng tay kẹp lên và kiểm tra xem có tiếp tục chu trình hay không. Nếu không có lệnh dừng, chu trình lặp lại từ việc di chuyển đến vị trí chờ A. Nếu có lệnh dừng hoặc hoàn thành, robot về Home và kết thúc chu trình. Bất kỳ lúc nào có tín hiệu dừng khẩn cấp hoặc lỗi hệ thống nghiêm trọng, robot sẽ dừng ngay lập tức, báo lỗi và chờ reset.

Thuật toán này có thể được mở rộng và làm phức tạp hơn với việc xử lý nhiều điểm trung gian, kiểm tra va chạm, phối hợp với băng tải, hoặc tích hợp với hệ thống vision.

5. Lập trình PLC cho cánh tay robot

Lập trình PLC để điều khiển cánh tay robot là một quá trình đòi hỏi sự tỉ mỉ, kiến thức về cả phần cứng và phần mềm, cũng như hiểu biết về động học robot.

5.1. Lựa chọn phần mềm lập trình và chuẩn bị

Về phần mềm lập trình, có nhiều lựa chọn phổ biến. TIA Portal của Siemens là một môi trường phát triển tích hợp cho PLC SIMATIC S7-1200, S7-1500, HMI, Drive, với giao diện trực quan và hỗ trợ nhiều ngôn ngữ lập trình.

Phần mềm lập trình TIA Portal
Phần mềm lập trình TIA Portal

GX Works của Mitsubishi Electric, đặc biệt là GX Works3, dùng cho các dòng PLC FX, Q, L series và hỗ trợ tiêu chuẩn IEC 61131-3. CX-One là bộ phần mềm tích hợp của Omron cho PLC, HMI, Motion Control, Networks. Studio 5000 Logix Designer của Rockwell Automation dành cho các dòng PLC ControlLogix, CompactLogix.

Để chuẩn bị, bạn cần một máy tính đã cài đặt phần mềm lập trình PLC tương ứng, cùng với tài liệu của PLC, cánh tay robot, servo drive, cảm biến. Sơ đồ kết nối điện cần được thiết kế và kiểm tra kỹ lưỡng. Quan trọng nhất là phải hiểu rõ yêu cầu hoạt động của robot, bao gồm các điểm cần di chuyển, trình tự thao tác, tốc độ, và các điều kiện an toàn.

5.2. Tạo dự án mới và cấu hình phần cứng

Trong phần mềm lập trình (như TIA Portal) bạn sẽ bắt đầu bằng việc tạo một dự án mới. Tiếp theo, thêm thiết bị PLC, chọn đúng model CPU bạn đang sử dụng (ví dụ là Siemens S7-1200 DC/DC/DC CPU 1214C). Nếu hệ thống sử dụng truyền thông Ethernet, bạn cần cấu hình địa chỉ IP cho PLC.

Đồng thời, thêm các module mở rộng I/O (Signal Modules – SM) hoặc module truyền thông (Communication Modules – CM) nếu có, đảm bảo cấu hình phần cứng trong phần mềm khớp với sơ đồ kết nối thực tế. Một phần quan trọng trong bước này là cấu hình các Technology Objects (TO) cho Motion Control nếu PLC hỗ trợ, ví dụ như TO_SpeedAxis hoặc TO_PositioningAxis. Tại đây, bạn sẽ gán các ngõ ra PTO (Pulse Train Output) và ngõ vào encoder (nếu PLC trực tiếp đọc encoder) cho các trục (Axis) tương ứng của robot.

Ví dụ, đối với một trục servo điều khiển bằng PTO, bạn sẽ chọn kiểu drive là “Pulse train (PTO)” trong cấu hình TO_PositioningAxis, gán ngõ ra Qx.y cho “Pulse generator output” và Qx.z cho “Direction output”, đồng thời khai báo các thông số cơ khí của trục như số xung/vòng quay của encoder, tỉ số truyền hộp số, và bước vít me nếu là trục tịnh tiến.

5.3. Khai báo Bảng ký hiệu

Khai báo Bảng ký hiệu (PLC Tags / Symbol Table) là bước quan trọng giúp chương trình trở nên dễ đọc, dễ hiểu và dễ bảo trì hơn. Bạn sẽ đặt tên gợi nhớ cho các địa chỉ I/O vật lý và các biến nội bộ (memory bits, data blocks). Trong mục “PLC tags” (hoặc tương đương tùy phần mềm), bạn khai báo các tag tương ứng với sơ đồ kết nối đã thiết kế. Ví dụ, “Start_Button” có thể được gán cho địa chỉ I0.0, “Stop_Button” cho I0.1, “Sensor_Product_At_A” cho I0.4, “Axis1_Pulse” cho Q0.0 (nếu không dùng TO), hay “Gripper_Open_Valve” cho Q0.4, và “Robot_Running_Lamp” cho Q0.6.

Ngoài ra, bạn cũng cần khai báo các biến trung gian, biến trạng thái, và các biến lưu trữ tọa độ điểm dạy trong các khối dữ liệu (Data Blocks – DB). Chẳng hạn, bạn có thể tạo một DB tên là DB_Robot_Data và khai báo các biến như Current_Step (kiểu INT) để lưu bước hiện tại của chu trình, Position_A_X (kiểu REAL) để lưu tọa độ X của Vị trí A, Position_A_Y (kiểu REAL) cho tọa độ Y, và Is_Homed (kiểu BOOL) làm cờ báo robot đã về vị trí Home.

5.4. Viết chương trình logic điều khiển

Chương trình chính thường được viết trong khối Main [OB1]. Tuy nhiên, để chương trình có cấu trúc rõ ràng, dễ quản lý và tái sử dụng, các chức năng phức tạp hoặc thường xuyên lặp đi lặp lại nên được đóng gói thành các Khối Hàm (Function Blocks – FB) hoặc Hàm (Functions – FC).

Các ngôn ngữ lập trình phổ biến bao gồm Ladder Logic (LAD), rất trực quan và quen thuộc với kỹ sư điện; Function Block Diagram (FBD), sử dụng các khối logic, phù hợp cho điều khiển dòng chảy; Structured Text (SCL), một ngôn ngữ dạng text giống Pascal, rất mạnh mẽ cho các thuật toán phức tạp, vòng lặp và tính toán; và Statement List (STL), ngôn ngữ dạng hợp ngữ, tuy khó đọc hơn nhưng có thể tối ưu về tốc độ thực thi.

Nội dung chương trình thường bao gồm: phần khởi tạo (Initialization), là các lệnh được thực hiện một lần khi PLC khởi động (thường trong OB100 – Startup OB), ví dụ như đặt lại các cờ trạng thái hoặc giá trị ban đầu. Phần điều khiển chế độ (Mode Control) chứa logic để chuyển đổi giữa các chế độ hoạt động như Manual, Auto, Teach.

Phần điều khiển về Home (Homing) là một chương trình con để điều khiển các trục robot về vị trí gốc (Home position) dựa trên tín hiệu từ cảm biến Home; có thể sử dụng khối lệnh MC_Home (nếu dùng Technology Objects) hoặc tự viết logic điều khiển động cơ chạy chậm cho đến khi chạm cảm biến Home, sau đó dừng và đặt lại tọa độ gốc. Phần điều khiển bằng tay (Manual/Jog Control) bao gồm logic đọc các nút nhấn Jog (ví dụ: Jog_X_Positive, Jog_X_Negative) và điều khiển trục tương ứng di chuyển khi nút được nhấn, sử dụng khối lệnh MC_MoveJog (với TO) hoặc trực tiếp phát xung.

Phần quan trọng nhất là điều khiển tự động (Automatic Sequence), chứa logic thực hiện chu trình làm việc của robot dựa trên thuật toán đã thiết kế (ví dụ, lưu đồ ở mục 4.2). Sử dụng cấu trúc máy trạng thái (State Machine) hoặc điều khiển theo bước (Step Sequencing – ví dụ dùng S7-GRAPH hoặc tự viết bằng LAD/SCL) là một cách hiệu quả để quản lý các chu trình phức tạp, nơi mỗi bước trong lưu đồ có thể tương ứng với một “State” hoặc một “Step Number”.

5.5. Lập trình chuyển động

Lập trình chuyển động (Motion Control) là phần cốt lõi để điều khiển robot di chuyển chính xác. Nếu bạn sử dụng Technology Objects (TO) của Siemens S7-1200/S7-1500, các khối lệnh Motion Control tiêu chuẩn PLCopen (có sẵn trong thư viện của TIA Portal) sẽ giúp đơn giản hóa việc lập trình đáng kể.

Lập trình chuyển động điều khiển cánh tay robot
Lập trình chuyển động điều khiển cánh tay robot

Các khối lệnh này bao gồm MC_Power để cấp nguồn/ngắt nguồn cho trục (enable/disable servo drive), MC_Home để thực hiện quy trình về Home, MC_MoveAbsolute để di chuyển trục đến một vị trí tuyệt đối (ví dụ: MC_MoveAbsolute_DB_Instance(Axis := “Axis1_TO”, Execute := “Start_Move_To_A”, Position := “DB_Robot_Data”.Position_A_X, Velocity := 100.0);), MC_MoveRelative để di chuyển trục một khoảng tương đối, MC_MoveVelocity để điều khiển trục chạy với tốc độ không đổi, MC_Stop để dừng trục, và MC_Reset để reset lỗi của trục. Bạn cần tạo các khối dữ liệu Instance DB cho mỗi lần gọi các khối lệnh Motion Control này và quản lý các cờ trạng thái (Done, Busy, Error, ErrorID) của khối lệnh để biết khi nào chuyển động hoàn thành hoặc có lỗi.

Trong trường hợp PLC không có TO Motion Control mạnh mẽ hoặc bạn điều khiển servo/step qua PTO cơ bản, bạn sẽ phải tự viết logic để phát xung, bao gồm việc tính toán tần số xung và số lượng xung cho từng chuyển động. Đồng thời, bạn cần lập trình các profile tăng tốc/giảm tốc (trapezoidal hoặc S-curve) để robot di chuyển mượt mà, tránh giật cục, điều này phức tạp hơn đáng kể. Việc liên tục đọc encoder (nếu có) để thực hiện vòng kín vị trí cũng cần thiết nếu yêu cầu độ chính xác cao. Đối với việc dạy điểm (Teach Points), bạn cần tạo một chức năng cho phép người vận hành ở chế độ Teach di chuyển robot đến các vị trí mong muốn bằng JOG. Khi nhấn nút “Save Point”, PLC sẽ đọc tọa độ hiện tại của các trục (từ TO_PositioningAxis hoặc từ encoder) và lưu vào một Data Block (DB) chứa danh sách các điểm dạy. Trong chế độ Auto, chương trình sẽ đọc các tọa độ từ DB này để điều khiển robot di chuyển đến các điểm đã dạy.

5.6. Lập trình xử lý tín hiệu cảm biến

Chương trình cần đọc trạng thái của các cảm biến (đầu vào số DI). Trong ngôn ngữ LAD, bạn có thể sử dụng các tiếp điểm thường mở (NO) hoặc thường đóng (NC) để kiểm tra trạng thái của cảm biến. Dựa trên tín hiệu từ cảm biến, chương trình sẽ thực hiện logic điều khiển tương ứng. Ví dụ, một lệnh có thể là IF “Sensor_Product_At_A” AND “Current_Step” = Grap_Product_Step THEN … (nếu cảm biến báo có sản phẩm tại vị trí A VÀ bước hiện tại là bước gắp sản phẩm THÌ thực hiện hành động tiếp theo). Các bộ đếm (Counters) và bộ định thời (Timers) cũng thường được sử dụng để xử lý các tình huống liên quan đến thời gian chờ hoặc đếm số lượng sản phẩm.

5.7. Lập trình giao tiếp HMI

Giao diện Người-Máy (HMI) cần được thiết kế với các màn hình hiển thị trạng thái hoạt động của robot, các thông số vận hành, các nút nhấn điều khiển (Start, Stop, Jog, chọn chế độ) và các cảnh báo lỗi.

Lập trình giao tiếp cho HMI
Lập trình giao tiếp cho HMI

Trong TIA Portal, bạn có thể dễ dàng kéo thả các “Tag” (biến) từ PLC vào các đối tượng trên màn hình HMI để liên kết dữ liệu. Điều này cho phép HMI hiển thị tọa độ hiện tại của robot, trạng thái của đèn báo Robot_Running_Lamp, hoặc cho phép người vận hành nhập giá trị tốc độ mong muốn. Các nút nhấn trên HMI cũng được lập trình để gửi lệnh đến PLC, kích hoạt các bit điều khiển tương ứng trong chương trình.

5.8. Lập trình an toàn và xử lý lỗi

An toàn là yếu tố tối quan trọng. Luôn ưu tiên xử lý tín hiệu E-Stop (Dừng khẩn cấp): Khi nút E-Stop được nhấn, chương trình phải ngay lập tức dừng mọi chuyển động của robot và ngắt nguồn động lực một cách an toàn. Logic E-Stop thường được xử lý ở mức ưu tiên cao nhất trong chương trình. Bên cạnh đó, cần lập trình giới hạn vùng làm việc bằng phần mềm (Software Limits) nếu robot không có giới hạn cứng hoặc cần có thêm một lớp bảo vệ mềm.

Nếu hệ thống có cảm biến lực hoặc có thể giám sát dòng điện động cơ, cần lập trình chức năng phát hiện va chạm. Về xử lý lỗi, chương trình cần có khả năng đọc mã lỗi từ các khối Motion Control (ErrorID của các khối lệnh MC_) hoặc trực tiếp từ Servo Drive (nếu có giao tiếp). Các thông báo lỗi cụ thể nên được hiển thị rõ ràng trên HMI để người vận hành dễ dàng nhận biết và xử lý. Cần cung cấp chức năng Reset lỗi để đưa hệ thống trở lại trạng thái hoạt động sau khi lỗi đã được khắc phục. Việc ghi lại lịch sử lỗi (Alarm logging) cũng rất hữu ích cho việc chẩn đoán và bảo trì sau này.

5.9. Mô phỏng và gỡ lỗi

Trước khi nạp chương trình vào PLC thực tế, việc mô phỏng là rất cần thiết. Phần mềm TIA Portal cung cấp công cụ PLCSIM, cho phép bạn chạy chương trình PLC trên máy tính mà không cần phần cứng PLC. Bạn có thể mô phỏng trạng thái của các đầu vào, quan sát trạng thái của các đầu ra và giá trị của các biến nội bộ. PLCSIM Advanced thậm chí còn cho phép mô phỏng cả các Technology Objects và giao tiếp mạng.

Khi gỡ lỗi (Debugging) chương trình trên PLC thực hoặc trong môi trường mô phỏng, bạn có thể sử dụng công cụ “Monitoring” để xem giá trị thực của các tag và trạng thái logic trong chương trình khi PLC đang chạy. “Breakpoints” và “Step-by-step execution” (đặc biệt hữu ích trong SCL) cho phép bạn kiểm tra từng dòng lệnh. Công cụ “Trace” giúp ghi lại sự thay đổi giá trị của các tag theo thời gian, rất hữu ích cho việc phân tích các vấn đề liên quan đến thời gian hoặc các lỗi không thường xuyên xuất hiện.

5.10. Nạp chương trình và thử nghiệm thực tế

Sau khi chương trình đã được mô phỏng và gỡ lỗi kỹ lưỡng, bạn tiến hành kết nối máy tính với PLC (thường qua cáp Ethernet hoặc USB) và nạp chương trình (Download to device) từ phần mềm TIA Portal xuống PLC. Quá trình thử nghiệm thực tế (Commissioning) nên được thực hiện theo từng phần (Incremental Testing). Đầu tiên, kiểm tra các đầu vào/ra: nhấn các nút, kích hoạt các cảm biến để xem PLC có nhận đúng tín hiệu không, sau đó kích hoạt các đầu ra để xem cơ cấu chấp hành có hoạt động đúng không. Tiếp theo, thử nghiệm chế độ Manual/Jog: di chuyển từng trục của robot một cách cẩn thận, kiểm tra chiều quay, tốc độ, và các giới hạn hành trình (nếu có).

Sau đó, thử nghiệm quy trình Homing để đảm bảo robot có thể về vị trí gốc một cách chính xác. Nếu đã có các điểm dạy, hãy thử nghiệm di chuyển đến các điểm đó. Cuối cùng, thử nghiệm toàn bộ chu trình tự động. Luôn bắt đầu với tốc độ chậm để dễ dàng quan sát và đảm bảo an toàn. Kiểm tra xem robot có di chuyển đúng quỹ đạo đã lập trình, thực hiện đúng các thao tác (gắp, đặt, hàn…) hay không.

Trong quá trình này, bạn có thể cần phải tinh chỉnh các thông số như tốc độ, thời gian chờ, vị trí các điểm dạy để tối ưu hóa hiệu suất và độ chính xác của hệ thống. Đừng quên kiểm tra kỹ lưỡng các chức năng an toàn và khả năng xử lý lỗi của hệ thống. Sau khi hệ thống đã hoạt động ổn định và đáp ứng tất cả các yêu cầu, hãy sao lưu (backup) phiên bản chương trình cuối cùng và các thông số cấu hình quan trọng.

Ví dụ đoạn code Ladder Logic (LAD) đơn giản cho việc điều khiển tay kẹp:

Network 1: Mở tay kẹp khi có lệnh và tay kẹp đang đóng

|—-| |———————-( “Open_Gripper_Command” )

|    |

|—-|/|———————( “Gripper_Is_Open_Feedback” )

|    |

|—-| |———————-( “Gripper_Is_Closed_Feedback” )

|                               |

|                               —-( S )— “Gripper_Open_Valve” (Q0.4)

|

|                               —-( R )— “Gripper_Close_Valve” (Q0.5)

Network 2: Đóng tay kẹp khi có lệnh và tay kẹp đang mở

|—-| |———————-( “Close_Gripper_Command” )

|    |

|—-| |———————-( “Gripper_Is_Open_Feedback” )

|    |

|—-|/|———————( “Gripper_Is_Closed_Feedback” )

|                               |

|                               —-( S )— “Gripper_Close_Valve” (Q0.5)

|

|                               —-( R )— “Gripper_Open_Valve” (Q0.4)

Trong đó, “Open_Gripper_Command” và “Close_Gripper_Command” là các bit được điều khiển từ chương trình hoặc HMI. “Gripper_Is_Open_Feedback” và “Gripper_Is_Closed_Feedback” là tín hiệu từ cảm biến. Lệnh Set (S) và Reset (R) được sử dụng.

Lưu ý quan trọng về an toàn trong lập trình và vận hành là luôn có kế hoạch dừng khẩn cấp rõ ràng và dễ tiếp cận. Vùng làm việc của robot phải được rào chắn hoặc có các biện pháp an toàn như rèm ánh sáng, thảm an toàn. Không bao giờ được phép vào vùng làm việc của robot khi nó đang hoạt động ở chế độ tự động. Khi tiến hành thử nghiệm, luôn bắt đầu với tốc độ chậm và phải luôn sẵn sàng dừng robot ngay lập tức nếu có bất kỳ sự cố nào xảy ra. Việc tuân thủ các quy định an toàn lao động tại nhà máy là bắt buộc.

6. Mua các phần cứng và phần mềm điều khiển cánh tay robot bằng PLC ở đâu?

Việc lựa chọn nhà cung cấp uy tín cho các thành phần của hệ thống điều khiển cánh tay robot bằng PLC là một quyết định quan trọng, ảnh hưởng trực tiếp đến chất lượng, độ bền, hiệu suất của hệ thống cũng như chi phí đầu tư và vận hành lâu dài.

Tại thị trường Việt Nam, Thanh Thiên Phú là một trong những đơn vị hàng đầu chuyên cung cấp các thiết bị điện tự động, PLC, cánh tay robot, động cơ servo, cảm biến, HMI và phần mềm bản quyền từ các thương hiệu nổi tiếng. Chúng tôi hiểu rằng quý khách hàng luôn tìm kiếm những sản phẩm chất lượng cao, giải pháp tối ưu và dịch vụ hỗ trợ chuyên nghiệp.

Thanh Thiên Phú là Đại lý Siemens tại Việt Nam, khi chọn chúng tôi quý khách hàng sẽ nhận được nhiều lợi ích vượt trội: cam kết 100% sản phẩm chính hãng đa dạng với đầy đủ giấy tờ; được đội ngũ kỹ sư giàu kinh nghiệm tư vấn giải pháp toàn diện, tối ưu và hỗ trợ kỹ thuật chuyên sâu từ ý tưởng đến vận hành. Chúng tôi còn cung cấp chính sách bảo hành rõ ràng, hỗ trợ sau bán hàng nhanh chóng, sản phẩm chất lượng cao với giá cạnh tranh và ưu đãi hấp dẫn, cùng các phần mềm bản quyền đảm bảo ổn định, an toàn kèm hỗ trợ cài đặt.

Sự đầu tư vào công nghệ và đối tác tin cậy chính là đầu tư cho tương lai phát triển bền vững của bạn và doanh nghiệp. Thanh Thiên Phú cam kết mang đến sự hài lòng tối đa cho quý khách hàng!

Liên hệ ngay với Thanh Thiên Phú qua các kênh sau:

  • Website: thanhthienphu.vn
  • Hotline: 08.12.77.88.99
  • Đị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.
CEO Dương Minh Kiệt

Dương Minh Kiệt

Người sáng lập Thanh Thiên Phú

Với 6 năm kinh nghiệm chuyên sâu về kỹ thuật tự động hóa, tôi đã giải quyết nhiều bài toán điều khiển và giám sát trong môi trường công nghiệp. Trọng tâm công việc của tôi là áp dụng kiến thức về lập trình PLC, cấu hình hệ thống SCADA, và lựa chọn thiết bị phần cứng (cảm biến, biến tần, PLC, HMI) để xây dựng các giải pháp tự động hóa đáp ứng yêu cầu vận hành cụ thể. Tôi có kinh nghiệm thực tế trong việc hiệu chỉnh hệ thống, gỡ lỗi logic điều khiển và đảm bảo các giao thức truyền thông công nghiệp (như Modbus, Profinet, Ethernet/IP) hoạt động thông suốt.