You are on page 1of 12

Lập trình PLC Delta điều khiển Servo bằng lệnh phát xung - Ứng dụng PLC Delta,

Servo Delta trong công nghiệp chế tạo máy.

Mở đầu:
- Sau khi làm quen với PLC và Servo, lập trình viên có thể tìm hiểu thêm về điều khiển phát
xung để điều khiển Servo ở chế độ điều khiển vị trí. Ứng dụng trong các máy cắt bao bì,
máy đóng gói, máy phóng nguyên liệu, ...
- Với Servo, sẽ có tham số cho phép cài đặt hiệu chỉnh số xung / 1 vòng quay.
- PLC sẽ có lệnh phát xung với các tham số về tần số phát xung, số xung phát ra.
Vấn đề điều khiển:
- Cài đặt Servo ở chế độ điều khiển vị trí: khi đó với mỗi 1 vòng quay của Motor, bộ điều
khiển - Drive của Servo sẽ quy thành số xung. Ví dụ là 160.000 xung/vòng quay. Điều này
có nghĩa : PLC phát đủ 160.000 xung thì động cơ Servo sẽ quay được đúng 1 vòng. Ở bài
viết này, tôi chưa đề cập tới độ phân giải tức là số xung của Encoder được gắn trên động cơ.
- Về tốc độ: tốc độ động cơ ở chế độ điều khiển vị trí sẽ được tính tương đương với tần số
phát xung của PLC. Chúng ta có thể dựa vào tần số + số xung/ vòng để quy ngược lại thành
tốc độ vòng/ phút của Motor, xem chi tiết cách tính bên dưới.
Vấn đề lập trình PLC:
Sau đây, phòng kỹ thuâ ̣t Công ty TNHH Cơ Điê ̣n Auto Vina xin gửi tới quý khách và các
ba ̣n tham khảo phương pháp lâ ̣p trình PLC phát xung điề u khiể n Servo:
- Lệnh điều khiển phát xung:

( Do bố cục blog, hình ảnh sẽ được thu nhỏ, nếu quý vị và các bạn cần tham khảo, xin vui
lòng click lên hình ảnh để được xem với kích thước thực )

+ Trong hình trên:


P1 là chương trình con P1 tên do người lập trình đặt là AC Servo
M1000 là bit luôn ON khi PLC RUN - dùng để tạo điều kiện đầu vào cho câu lệnh, tránh
trường hợp vô điều kiện.
M13 là bit Rơ le phụ trong chương trình và được người lập trình đặt cho phép thực hiện
lệnh phát xung.
M10 là bit Rơ le phụ trong chương trình và được người lập trình đặt cho phép chạy chế độ
phát xung liên tục, không giới hạn số xung. ( Phát đủ xung, chương trình sẽ khởi tạo lại bit
M10 để lệnh phát xung nhận lần tiếp theo ).
M1029 là bit Rơ le trạng thái trong chương trình và được PLC tự động ON khi lệnh phát
xung phát đủ số xung đã yêu cầu ( Trong chế độ phát xung có giới hạn) và không ON khi
chạy liên tục.
M12 là bit Rơ le phụ trong chương trình và được người lập trình đặt cho chế độ tự động.

Ở ví dụ lập trình trên, chúng ta chỉ quan tâm tới lệnh phát xung và bit báo trạng thái phát
xung hoàn thành.
+ Cách viết lệnh phát xung:
Trong cửa số soạn thảo chương trình theo dạng Ladder, người lập trình chỉ cần gõ trực tiếp
câu lệnh :
DPLSY D500 D510 Y0

+ Với ví dụ này:
 Cấu trúc lệnh phát xung DPLSY bao gồm:
chữ D nghĩa là dạng Double, các thanh ghi dữ liệu được sử dụng sẽ ghép đôi trở thành
thanh ghi lớn hơn.
Ví dụ trên: D500 là thanh ghi 16 bit với PLC Delta, khi dùng trong câu lệnh có Double sẽ
được ghép chung với 1 thanh ghi phía sau là D501 trở thành thanh ghi 32 bit. Khi đó D501
và D500 sẽ trở thành 1 thanh ghi và được chia làm 2 phần chứa trong D501 và D500 dưới
dạng byte thấp và byte cao.
 Chữ PLSY là ký hiệu của lệnh phát xung vuông trong PLC với ngõ ra Y.
 D500-D501 ( Double) : Là thanh ghi chứa giá trị của tần số phát xung, tính theo đơn
vị Hz dạng số nguyên.
 D510-D511 ( Double) : Là thanh ghi chứa số xung sẽ phát ra tại ngõ ra phát xung.
 Y0 là địa chỉ của ngõ ra Y0, nơi mà xung sẽ được phát ra. Tùy theo loại PLC mà lựa
chọn ngõ ra phát xung được quy định trong tài liệu.
 M1029 là bít báo trạng thái của PLC: Khi M1029 ON, có nghĩa là lệnh phát xung ở
ngõ ra Y0 đã phát đủ số xung trong thanh ghi D510-D511.
 Nếu D510-D511 = 0, khi đó PLC sẽ không hiểu theo nghĩa số xung phát ra = 0. PLC
sẽ hiểu ngược lại là phát xung liên tục, không giới hạn.
Chú ý: với mỗi loại PLC sẽ bị giới hạn tốc độ phát xung và số ngõ ra cho phép phát xung
khác nhau. Người lập trình cần đọc kỹ tài liệu của PLC khi lựa chọn.
Tham khảo:
DVP14SS211T : phát xung 10kHz
DVP12SC11T : Phát xung 100kHz
DVP28SV11T : phát xung 200kHz
.....
Ngoài ra cần phải chú ý, với ngõ ra phát xung, PLC được chọn phải là dạng ngõ ra
Transistor, tuyệt đối không phải Relay.

Khi nào thì lệnh phát xung có tác dụng ?


Khi điều kiện lập trình đạt yêu cầu, xem hình ví dụ bên dưới:

Khi M111 ON, và giá trị D500 ( 16 bít, không phải Double 32 bit ) được đặt, lệnh phát xung
sẽ có tác dụng, ngõ ra Y0 sẽ có một chuỗi xung vuông đến khi số xung phát ra bằng với
thanh ghi D510. Và nếu D510 = 0 thì lệnh phát xung sẽ tạo ra một chuỗi xung liên tục đến
khi bit M111 được OFF.
Ở đây tần số phát xung là D500 = 100Hz.

Làm sao để biết PLC đã phát xung hoàn thành, kết thúc:
Như đã nêu ở trên, bit M1029 sẽ báo trạng thái kết thúc lệnh phát xung khi số xung là 1 số
khác 0 và bằng với giá trị lưu trong thanh ghi chứa số xung phát ra ( D510 ).
Lập trình viên có thể lập trình kiểm tra trạng thái của bit M1029 để xác nhận việc phát
xung đã kết thúc.
Ví dụ khi lập trình máy cắt bao bì, với chiều dài túi tương đương với 5000 xung, chúng ta
dùng lệnh trên và nạp giá trị phát xung là K5000 vào thanh ghi D510, tốc độ tùy theo yêu
cầu và quy thành Hz nạp vào thanh ghi D500.
Khi nạp xong giá trị, Set ON bit M111, PLC sẽ thực hiện phát xung ở ngõ ra Y0, và khi phát
đủ 5000 xung tương đương với chiều dài bao bì, Bit M1029 sẽ ON. Lúc này dùng logic lập
trình để hủy phát xung <=> Set OFF M111, và thực hiện bước tiếp theo như ra lệnh cắt
bao bì, thổi túi, ...

Cách lập trình tính toán chiều dài thực tế và quy thành chiều dài trên PLC
Chúng ta đã được biết, với ví dụ là tham số đặt số xung / vòng quay là 5000 xung. Đây là 1
điều kiện cần để tính toán chiều dài thực tế.
Sau khi có đầy đủ phần cơ khí, chúng ta cần tính thêm và phải đo thực tế hoặc tính toán
thiết kế ngay từ ban đầu như sau: số mm / vòng quay của trục động cơ Servo. Tức là khi
trục động cơ quay 1 vòng, phần dịch chuyển của máy di chuyển 1 chiều dài bao nhiêu? Giả
sử là 25mm/ vòng quay.
Từ đó ta có công thức tính ứng với chiều dài dịch chuyển là 50cm <=> 500mm là :
Số xung cần phát = ( chiều dài đặt ) / ( chiều dài / vòng quay ) x ( số xung / vòng
quay )
=> Số xung cần phát = 500 / 25 x 5000 = 100 000 xung.
Vậy chỉ cần viết lệnh phát đủ 100.000 xung thì động cơ sẽ quay và làm máy dịch chuyển
50cm.
Có một mẹo khi lập trình với số nguyên Int mà không muốn chuyển sang số thực Real là:
thực hiện phép nhân trước và phép chia sau. Vì nếu thực hiện phép chia số nguyên, phần dư
sẽ bị cắt bỏ. Khi đó càng về sau, sai số càng lớn.
Với việc đo thực tế, sẽ có sai số nhất định nhưng sẽ khiến việc thiết kế cơ khí không cần
tính toán chi tiết tỷ số truyền của phần truyền động. Để lấy thêm độ chính xác, chúng ta có
thể quy chiều dài ra giá trị nhỏ hơn. Sau kết quả thu được, chúng ta sẽ quy đổi về Cm hoặc
mm tùy theo yêu cầu.

Cách lập trình tính toán tốc độ thực của Motor Servo theo tần số phát xung:
- Giả sử chúng ta phát xung với tần số 100Hz.
- Giả sử tốc độ định mức của động cơ là 3000 vòng/ phút, và tham số đặt số xung / vòng
quay là 5000 xung/vòng quay.
=> Tính tốc độ động cơ tại tần số 100Hz ?
Cách tính như sau:
100Hz <=> 1 giây phát 100 xung => 1 phút phát số xung là : 100 x 60 = 6000 xung
=> số vòng quay / phút ở 100Hz là : 6000 / 5000 = 1.2 Vòng / Phút

Tại sao lại phải quan tâm tới tốc độ định mức của Motor khi thực hiện lệnh phát xung điều
khiển ???
Giả sử với tốc độ 3000 vòng / phút, 5000 xung / vòng quay
=> số xung cần phát trong 1 phút là : 3000x5000 = 15.000.000 xung
=> số xung cần phát trong 1 giây là : 15.000.000 / 60 = 250.000 xung
=> Tần số phát xung để đạt tốc độ 3000 vòng/ phút là : 250.000 Hz = 250kHz
Vậy nếu chúng ta phát tần số > 250kHz, nghĩa là Drive sẽ nhận quá số xung định mức / giây
=> không điều khiển được, gây giật động cơ, có thể bị mất xung gây sai số về vị trí đã tính
toán.

Tốc độ phát xung có ảnh hưởng gì tới lựa chọn PLC ???
Với mỗi loại PLC sẽ được thiết kế đặc biệt cho ngõ ra phát xung. Số lượng ngõ ra phát xung
và tốc độ ( tần số ) ngõ ra tỷ lệ thuận với giá thành sản phẩm và hiệu quả của hệ thống.
Giả sử chúng tay chỉ cần phát 5kHz, khi đó chỉ cần lựa chọn PLC có tốc độ phát xung >
5kHz.
Ví dụ: DVP14SS211T : phát xung 10kHz
Hoặc nếu lựa chọn PLC phát xung tốc độ thấp khi cần tới tốc độ cao hơn sẽ không thể đáp
ứng.
Nếu chúng ta lập trình phát với tốc độ cao hơn tốc độ cho phép của PLC theo các cách tính
ở trên, dẫn tới ngõ ra phát xung không đáp ứng được và có thể gây mất xung.
Sự khác nhau cơ bản giữa ngõ ra phát xung tốc độ cao và ngõ ra không phát xung hoặc tốc
độ thấp ???
Ngõ ra phát xung được thiết kế bằng các linh kiện bán dẫn có tốc độ đóng cắt cao như
Transistor trường ( Như Mos FET, ... )
Ngõ ra không có khả năng phát xung tốc độ cao như ngõ ra dạng Relay - do đáp ứng cơ cấu
cơ khí chậm và tuổi thọ cơ khí khi đóng cắt nhanh là không cao gây lên việc không thể phát
với tốc độ quá cao và không nên dùng để phát xung liên tục dù tốc độ thấp. Chu kỳ có thể là
1 hoặc nhiều hơn 1 giây nhưng vẫn gây giảm tuổi thọ đáng kể của Relay.
Ngõ ra không có khả năng phát xung tốc độ cao nhưng vẫn cho phép phát ở tốc độ thấp hơn
bằng các lệnh tương tự, đó là ngõ ra dạng Transistor lưỡng cực BJT.
Các kiến thức về phần cứng - điện tử , các bạn vui lòng trao đổi trực tiếp hoặc tìm hiểu qua
mạng và sách vở.
Chú ý:
Bài viế t này có thể ứng dụng trong lập trình PLC Mitsubishi điề u khiể n Servo hoặc quý
khách có thể tham khảo bài viết về lập trình PLC Mitsubishi điều khiển Servo MR-J2S.
Các bài viế t cầ n dẫn nguồ n tác giả, vui lòng tôn trọng bản quyề n. Chúng tôi sẽ báo cáo với
google nế u bài viế t của các bạn không dẫn nguồ n tác giả, sử dụng với mục đích quảng cáo
riêng.
Biên soạn : Nguyễn Bá Quỳnh - CN Điện tử - tự động hóa.
Ngày 30/03/2013

Lập trình PLC Mitsubishi phát xung điều khiển Servo

Việc lập trình PLC điều khiển phát xung chạy cho Drive của động cơ servo, Drive Step là
một trong các ứng dụng được rất nhiều lập trình viên quan tâm và thực tế được ứng dụng
khả phổ biến trong ngành chế tạo máy móc tự động hóa.
Công ty Auto Vina xin giới thiệu tới quý khách hàng và các bạn lập trình bài viết về sử
dụng lệnh phát xung tốc độ cao của PLC Mitsubishi.
Giới thiệu chung về chế độ điều khiển Servo :
Drive và Motor Servo được sử dụng khá phổ biến với các chế độ điều khiển :
 Điều khiển vị trí : quay động cơ với một số vòng quay được xác định trước. Ứng dụng
nhiều trong các hành trình kéo sản phẩm như máy cắt bao bì, máy đóng gói. Động cơ sẽ
kéo bao bì đúng theo chiều dài túi được đặt trước.
 Điều khiển tốc độ : duy trì bám sát tốc độ được cài đặt. Ví dụ có thể ứng dụng trong việc
đồng bộ tốc độ của dao cắt với tốc độ sản phẩm đưa vào trong dao chặt giấy bao bì
carton, máy đóng gói dạng nằm, ...
 Điều khiển lực căng : nổi bật trong các ứng dụng kéo dây, việc duy trì ổn định lực căng,
momen xoắn đầu trục động cơ sẽ không làm trùng hoặc căng đứt dây.
Trong việc điều khiển vị trí, với nhiều dòng động cơ - drive Servo và hầu hết các loại động
cơ - drive Step sẽ sử dụng phương pháp điều khiển bằng việc nhận xung tần số cao ở cổng
vào I/O. Các dòng Servo Mitsubishi như MR-J2S-A là dùng phương pháp này để điều khiển
vị trí.

Giả sử với dòng Servo MR-J2S-70A , độ phân giải encoder là 131072 xung / vòng quay.
Với thông số mặc định này, để servo quay 1 vòng, chúng ta cần lập trình cho PLC
Mitsubishi phát ra chuỗi xung có 131072 chu kỳ.

Dưới đây phòng kỹ thuật Auto Vina sẽ sử dụng loại PLC Mitsubishi Fx1S Series để
thực hành lập trình điều khiển phát xung :

1. Hình ảnh PLC Fx1S-10MT và Servo MR-J2S-70A của hãng Mitsubishi :

PLC Mitsubishi Fx1S-10MT

Drive Amplifier MelServo Mitsubishi 750W MR-J2S-70A

2. Sơ đồ đấu nối tín điều khiển phát xung :


Loại PLC Fx1S-10MT-001 kết nối với Servo Mitsubishi MR-J2S-70A ( MR-J2S-__A
Series ):

Sơ đồ đấu nối PLC Fx1S-10MT-001 với Servo MR-J2S-A

Tham khảo thêm sơ đồ ngõ ra transistor loại PLC Fx1S-10MT-DSS , Fx1S-10MT-ESS/UL


Sơ đồ đấu nối ngõ ra PLC Fx1S-10MT-DSS , Fx1S-10MT-ESS/UL

3. Một số lệnh phát xung trong PLC Mitsubishi :

Các dòng PLC hỗ trợ phát xung tốc độ cao thì điều kiện cần thiết ngõ ra của PLC phải là
dạng điện tử - Transistor, khi đó nếu CPU hỗ trợ lệnh, chúng ta sẽ có thể dùng một trong
các lệnh như sau:

 PLSY : Phát xung vuông với tần số và số xung được đặt trong tham số lệnh.
 PLSR : Phát xung vuông tương tự lệnh PLSY nhưng có thêm tham số hiệu chỉnh việc
tăng tần số phát xung và giảm tần số phát xung khi khởi động và kết thúc lệnh phát xung.
Việc này tạo sườn dốc khi khởi động và dừng, giúp làm mềm chuyển động hơn lệnh
PLSY ở những tốc độ cao.
 DRVI : Phát xung kèm thêm phát lệnh đảo chiều theo giá trị +/- của xung. Lệnh này
cũng cho phép cài đặt chỉ số hiệu chỉnh sườn dốc khi bắt đầu và chuẩn bị kết thúc lệnh.
Mỗi lần phát xung, số xung được tính tương đối theo lệnh.
 DRVA : Tương tự lệnh DRVI, nhưng vị trí ban đầu được xác định tuyệt đối. Số xung sẽ
lưu lại trong thanh ghi và xác định tuyệt đối so với điểm ban đầu.
Chúng ta có thể tham khảo thêm trong tài liệu hướng dẫn lập trình PLC Mitsubishi
: ProgrammingManual_FX_serial - file PDF
Ở bài viết này, Auto Vina sẽ sử dụng hai lệnh cơ bản và thông dụng là PLSY và PLSR.

4. Lập trình phát xung điều khiển servo trong PLC Mitsubishi :

Giả sử chúng ta sẽ lập trình lệnh PLSY phát xung ra cổng Y000 và lệnh PLSR phát xung ra
cổng Y001. Các bước thực hiện như sau:

 Mở phần mềm lập trình soạn thảo code PLC : GX Developer.


 Khởi tạo file project mới cho dòng PLC FXCPU loại FX1S.
Tạo chương trình mới cho PLC Mitsubishi Fx1S bằng phần mềm GX Developer

 Soạn thảo lệnh phát xung PLSY ra cổng Y0 của PLC như sau :

Lệnh PLSY phát xung trong PLC Mitsubishi

Ý nghĩa của lệnh : PLSY D0 D1 Y000 :


D0 : Tần số xung sẽ phát ra, việc này quyết định tốc độ của Servo.
D1 : Số xung sẽ phát ra khi lệnh PLSY được kích hoạt.
Y000 : là cổng phát xung Y000 được lựa chọn.

 Soạn thảo lệnh PLSR ra cổng Y001 của PLC như sau :
Lệnh lập trình phát xung PLC Mitsubishi PLSR

Ý nghĩa của lệnh phát xung PLSR D10 D11 K100 Y001:
D10 : Tần số xung sẽ phát ra.
D11 : Số xung sẽ phát ra khi lệnh PLSR được kích hoạt.
K100 : Thời gian tạo quá trình tăng tần số và giảm tần số khi thực hiện lệnh. Tính theo
đơn vị ms.

 Biên dịch chương trình nạp xuống PLC, Online chương trình để theo dõi, nạp thử tần số
10.000Hz, số xung 25.000 xung xuống PLC và chạy thử lệnh.

Thử lệnh phát xung PLSY trong PLC Mitsubishi

Như vậy chúng ta đã có thể sử dụng hai lệnh này để làm quay Servo theo số bước tính bằng
số xung phát ra và tốc độ tính theo tần số phát xung. Bây giờ sẽ đi vào tính toán vị trí và tần
số phát xung.

5. Các tính toán số xung cần chạy theo chiều dài, vị trí thực tế khi điều khiển Servo :

Quý khách hàng và các bạn có thể tham khảo thêm cách tính toán trong bài viết PLC Delta
điều khiển Servo tại link : Lập trình PLC Delta điều khiển Servo

 Giả sử chúng ta vẫn sử dụng MelServo Mitsubishi MR-J2S-70A, với độ phân giải và hệ
số chia mặc định CMX =1 / CDV = 1 ( đây là hai tham số cài đặt trong tài liệu hướng
dẫn của MR-J2S-__A) , servo sẽ hiểu 1 vòng quay có 131072 xung.
 Giả sử tiếp theo là hệ thống của chúng ta, mỗi vòng quay của servo sẽ làm phần dịch
chuyển với độ dài 25cm.
 Như vậy PLC phát ra 131072 xung sẽ làm servo dịch chuyển 250 mm.
 Vậy giờ nếu muốn Servo chạy đủ chiều dài 350 mm, PLC sẽ phải phát ra số xung là :
350 / 250 * 131072 = 183500.8 xung ~= 183501 xung.
Sai lệnh 0.2 xung do chúng ta để hệ số mặc định, số xung lẻ. Trong thực tế cũng không
loại trừ các kính thước lẻ. Việc một vòng quay có tới 131072 step mà xảy ra sai lệch
dưới 1 xung thì khó tránh khỏi. Để loại trừ, chúng ta sẽ cài đặt chuyên sâu hơn bằng các
tính toán tỷ số truyền, bước vít me, và chọn các thông số được sản xuất một cách chính
xác.
Ngoài cách tính toán trên, chúng ta có thể sử dụng hai hệ số của Servo là CMX và CDV để
hiệu chỉnh trước giá trị 1 xung tương ứng với chiều dài bao nhiêu. Từ đó PLC sẽ phát xung
theo tỷ lệ này để tránh sai số khi thực hiện phép chia trong PLC.

Lưu ý:

=> Với lệnh PLSY chúng ta chỉ có thể nạp giá trị tối đa là 16 bit, tương ứng với 32,767 .
Vậy làm sao để đưa số 183501 xung vào ?

Giải pháp là sử dụng lệnh cho thanh ghi 32 bit, giá trị sẽ được mở rộng thành 2 thanh ghi
liêp tiếp, kết quả sẽ cho phép nạp số lên đến 2,147,483,647.

Lệnh phát xung 32bit DPLSY DPLSR trong PLC Mitsubishi

6. Tính toán tần số phát xung theo tốc độ Servo:

Với giả thiết ở trên, chúng ta đang điều khiển Drive servo MR-J2S-70A và động cơ servo đi
kèm là HC-KFS73 hoặc HC-MFS73 có công suất 750W, tốc độ 3000 vòng / phút.

Tỷ lệ xung mặc định là 131072 xung / vòng quay.

=> Cần phát xung với tần số bao nhiêu để Melservo MR-J2S quay đủ 3000 vòng / phút với
thông số xung mặt định trên:

 1 vòng quay có 131072 xung.


 1 phút - 60 giây động cơ servo chạy 3000 vòng => 1 giây chạy 50 vòng
 1 giây sẽ chạy được : 50 x 131072 = 6,553,600 xung.
 Vậy tần số để đạt được tốc độ 3000 vòng phút là : 6,535,600 Hz.
=> Đây là một tần số quá cao đối với PLC. Thông thường các ứng dụng sẽ không chạy hết
khả năng của servo nên tốc độ sẽ thấp hơn. Ngoài ra chúng ta hiệu chỉnh tỷ lệ CMX / CDV
để chia lại số xung / vòng quay.
 Giả sử chúng ta đưa về 10000 xung / vòng quay.
 Lúc này để đạt được 3000 vòng phút, tần số phát xung chỉ còn 500kHz. Đây cũng là một
tần số cao với các loại PLC thông thường. Nhưng với các PLC chuyên dụng thì hoàn
toàn đạt được.
 Với PLC Fx1S-10MT, tần số tối đa vào khoảng 100kHz => Tốc độ tối đa với hệ số
10000 xung / vòng quay sẽ là : 600 vòng / phút.
Trên đây là những nội dụng cơ bản về lập trình PLC Mitsubishi điều khiển phát xung cho
Servo do Auto Vina tự biên soạn nên không tránh khỏi các thiếu xót. Công ty Auto Vina sẽ
có bài viết riêng dành cho việc thiết lập số xung trong Servo MR-J2S.
Mọi ý kiến đóng góp xin quý khách xin để lại bình luận hoặc gửi qua
Email. Auto Vina cảm ơn quý khách hàng và các bạn đã quan tâm theo dõi.

You might also like