Kí hiệu trong ch−ơng trình thang nh− sau:
Lệnh KEEP(11) dùng để duy trì trạng thái bit đã định theo hai điều kiện ngõ vào là S và R. S là ngõ vào SET còn R là ngõ vào RESET. Lệnh Keep(11)hoạt động giống nh− một Rơ le chốt mà đ−ợc SET bởi S và RESET bởi R. Biểu đồ minh hoạ:
SET B RESET B KEEP(11) B S R
Điều kiện thực hiện S
Điều kiện thực hiện R
68
4.3.16 Lệnh DIFU(13) và DIFD(14).
Kí hiệu trong ch−ơng trình thang.
Lệnh DIFU(13) và DIFD(14) đ−ợc dùng để ON bit đã định trong một chu kỳ
Mỗi khi thực hiện lệnh DIFU(13), nó sẽ so sánh điều kiện thực hiện tại ngõ vào với điều kiện tr−ớc đó của nó. Nếu điều kiện thực hiện tr−ớc đó là OFF và hiện tại là ON thì DIFU(13) sẽ ON bit đã định. Nếu điều kiện thực hiện tr−ớc đó là ON và hiện tại là ON hay OFF lệnh DIFU(13) sẽ OFF bit đã định.
Còn đối với lệnh DIFD(14) khi thực hiện nó sẽ so sánh điều kiện thực hiện tại ngõ vào hiện tại với điều kiện tr−ớc đó của nó. Nếu điều kiện thực hiện tr−ớc đó là ON và hiện tại là OFF thì DIFD(14) sẽ ON bit đã định. Nếu điều kiện thực hiện tại ngõ vào là ON bất chấp điều kiện tr−ớc đó là ON hay OFF lệnh DIFD(14) sẽ OFF bit đã định.
Hai lệnh này không ảnh h−ởng đến cờ trạng thái. Ví dụ: Xét sơ đồ thang sau:
Ch−ơng trình thang cho sơ đồ trên.
Địa chỉ Lệnh Dữ liệu 00000 LD 00000 00001 DIFU(13) 10014 00002 DIFD(14) 10014 DIFD(14)B DIFU(13) B DIFU(13) 10014 DIFD(14) 10014
69 Minh họa biểu đồ thời gian:
4.3.17 Lệnh JMP(04) và JME(05)
Các lệnh này đ−ợc dùng để nhảy nấc trong ch−ơng trình thang. Ký hiệu trong ch−ơng trình thang:
N: là số nhảy.
Số nhảy N trong lệnh là từ 00 đến 99.
JMP(04) luôn luôn đ−ợc dùng kết hợp với JME(05) để tạo thành lệnh nhảy. để nhảy từ một điểm trong ch−ơng trình thang đến một điểm khác. JPM(04) đ−ợc định nghĩa là điểm mà tại đó lệnh nhảy đ−ợc tạo. JME(05) đ−ợc định nghĩa là điểm đích của lệnh nhảy. Khi điều kiện thực hiện ngõ vào cho JMP(04) là ON thì b−ớc nhảy không đ−ợc tạo và ch−ơng trình đ−ợc thực hiện nh− đã lập trình. Khi điều kiện thực hiện ngõ vào cho JMP(04) là OFF thì b−ớc nhảy đ−ợc thi hành. Khi đó ch−ơng trình tiếp tục thực hiện tại JME(05).
Khi số nhảy N của JMP(04) từ 01 đến 99 thì con trỏ lập tức chuyển đến JME(05) cùng với số nhảy t−ơng ứng. Tất cảc các lệnh ở giữa JMP(04) và JME(05) không đ−ợc thực hiện, trạng thái của các Timer, Counter, Bit Out, Out not và tất cả trạng thái của bit điều khiển khác đều không thay đổi. Số nhảy này chỉ đụnh nghĩa cho một lần nhảy.
DIFU(13)
Điều kiện nhập: 00000
DIFD(14)
J M E ( 0 5 ) N J M P ( 0 4 ) N
70
Khi số nhảy của JMP(04) là 00, Cpũe tìm đến JME(05) kế có số nhảy N=00. Để thực hiện, nó kiểm tra toàn bộ ch−ơng trình tất cả những lệnh và bit điều khiển nằm ở giữa JMP(04) 00 và JME(05) 00 đ−ợc giữ nguyên. số nhảy 00 có thể đ−ợc sử dụng nhiều lần đối với JMP(04) mà chỉ cần một đích nhảy đến JME(05).
Ví dụ: Ch−ơng trình thang nh− sau:
Các lệnh đ−ợc nhập vào theo PLC OMNRON
Địa chỉ Lệnh Dữ liệu 00000 LD 00000 00001 JMP(04) 01 00002 LD 00001 00003 Lệnh 1 00004 LD 00002 00005 Lệnh 2 00006 JME(05) 01 Giải thích:
Khi IR 00000 = ON thì ch−ơng trình thực hiện từ lệnh 1 đến lệnh 2. khi IR00000 = OFF thì lệnh1 và lệnh 2 đ−ợc bỏ qua. Ch−ơng trình sẽ thực hiện các lệnh tiếp theo.
4.3.18 Lệnh chuyển dữ liệu MOV(21):
Ký hiệu trong ch−ơng trình thang.
JM P (04 ) 01 L ện h 1 L ện h 2 JM E (0 5) 0 1 00 000 00 001 00 002 MOV(21) S D
71 Trong đó: S : là word nguồn. D: là word đích.
Khi điều kiện thực hiện ngõ vào là OFF, lệnh MOV(21) không thực hiện. Khi điều kiện ngõ vào là ON lệnh MOV(21) sẽ sao chép toàn bộ nội dung của S sang D.
Ví dụ:
Sử dụng lệnh MOV(21) sao chép nội dung của IR001 cho HR 05 khi IR00000 chuyển từ OFF sang ON.
Sơ đồ thang.
Ch−ơng trình đ−ợc viết nh− sau:
Địa chỉ Lệnh Toán tử
00000 LD 00000
00001 MOV(21) 01 HR05
4.3.19 Lệnh MVN(22) Move Not:
Kí hiệu trong ch−ơng trình thang.
Trong đó:
S : là word nguồn.
Word nguồn Word đích
Trạng thái bit không thay đổi
HR05 001 MOV(21) 00000 D S MVN(22)
72 D: là word đích.
Khi điều kiện thực hiện ngõ vào là ON, lệnh MVN(22) sẽ sao chép nội dung đảo của S sang D. Mỗi bit ON của S t−ơng ứng với bit OFF trong D và bit OFF của S t−ơng ứng với bit ON trong D.
4.3.20 Lệnh tính toán BCD( Binary Code Decimal) – SET CARRY STC(40)
Kí hiệu trong ch−ơng trình thang.
Khi tín hiệu của ngõ vào là OFF, lệnh STC(40) không thực hiện. STC(40) chỉ thực hiện khi ngõ vào là ON.
4.3.21 Lệnh tính toán CLC – CLEAR CARRY (CLC(41) )
Kí hiệu trong ch−ơng trình thang.
Khi tín hiệu của ngõ vào là OFF, lệnh CLC(41) không thực hiện. CLC(41) chỉ thực hiện khi ngõ vào là ON.
4.3.22 Lệnh ADD(30).
Kí hiệu trong ch−ơng trình thang.
Trong đó:
Au: Augen word.(Word đã có) Ad: Addend word.(Word bị cộng) R : Result word.( Word kết quả)
Chỉ dùng vùng nhớ DM 0000 đến DM 1023. DM 6144 đến DM6655 không đ−ợc dùng cho R.
Khi tín hiệu của ngõ vào là OFF, lệnh ADD(30) không thực hiện. ADD(30) chỉ thực hiện khi ngõ vào là ON. Khi đó ADD(30) sẽ cộng nội dung của Au và Ad rồi đặt kết quả trong R.
STC(40) CLC(41) ADD(30) Au Ad R
73
4.3.23 Lệnh SUB(31) Trừ BCD.
Kí hiệu dùng trong ch−ơng trình thang: Trong đó:
Mi: Word bị trừ Su: Word trừ
R : Result word.( Word kết quả)
Chỉ dùng vùng nhớ DM 0000 đến DM 1023. DM 6144 đến DM6655 không đ−ợc dùng cho R.
Khi tín hiệu của ngõ vào là OFF, lệnh SUB(31) không thực hiện. SUB(31) chỉ thực hiện khi ngõ vào là ON. Khi đó SUB(31) sẽ trừ nội dung của Mi cho Su rồi đặt kết quả trong R.
4.3.24 Lệnh MUL(32) Nhân BCD (BCD MULTIPLY).
Kí hiệu dùng trong ch−ơng trình thang:
Md: Multiolicand (BCD) Mr: Multiplier (BCD) R : Result word.
Chỉ dùng vùng nhớ DM 0000 đến DM 1023. DM 6144 đến DM6655 không đ−ợc dùng cho R.
Khi tín hiệu của ngõ vào là OFF, lệnh MUL(32) không thực hiện. MUL(32) chỉ thực hiện khi ngõ vào là ON. Khi đó MUL(32) sẽ nhân nội dung của Md cho Mr rồi đặt kết quả trong R và R+1:
Su M i SU B (21) R Mr Md MUL(32) R Md Mr R R+1 MUL(32) 00001 DM0006 013 HR 07
74 Xét ví dụ có ch−ơng trình thang nh− trên:
Khi IR00001 mà ON thì nội dung của IR013 và DM00006 đ−ợc nhân và kết quả đ−ợc đặt trong HR07 và HR 08.
Dữ liệu và tính toán nh− sau:
4.3.25 Lệnh DIV(33) BCD DIVIDE (chia BCD)
Kí hiệu dùng trong ch−ơng trình thang:
Dd: Dividend (BCD) Mr: Divisorword (BCD) R : Result word.
Chỉ dùng vùng nhớ DM 0000 đến DM 1023. DM 6144 đến DM6655 không đ−ợc dùng cho R.
Khi tín hiệu của ngõ vào là OFF, lệnh DIV(33) không thực hiện. DIV(33) chỉ thực hiện khi ngõ vào là ON. Khi đó DIV(33) sẽ chia nội dung của Dd cho Dr rồi đặt kết quả trong R và R+1, th−ơng số đặt trong R và số d− đặt trong R+1:
Ví du:
Xét sơ đồ thang sau:
Md: IR013 3 3 5 6 5 2 0 0 Mr: DM00005 R+1: HR08 8 R: HR07 3 9 0 0 0 0 0 DIV(33) R Dd Dr 00000 DM0017 216 HR09 DIV(33)
75 Khi IR00000 ON, lệnh DIV(33) sẽ đ−ợc thực thi
Nội dung của IR216 sẽ đ−ợc chia cho nội dung của HR09 kết quả đ−ợc đặt trong DM0017 và DM0018.
4.3.26 Lệnh so sánh CMP(20).
Kí hiệu dùng trong ch−ơng trình thang:
Trong đó:
CP1: Word so sánh thứ nhất: CP2: Word so sánh thứ hai:
Lệnh CMP(20) dùng so sánh dữ liệu CP1 và CP2 và xuất hiện các kết quả ra các cờ GL, EQ, LE trong vùng SR( Special Registers).
EQ: ON nếu CP1 = CP2. LE: ON nếu CP1 < CP2. GL: ON nếu CP1 > CP2. Bảng các trạng thái của các cờ: Cờ Địa chỉ CP1 < CP2 CP1 = CP2 CP1>CP2 GR 25505 OFF OFF ON EQ 25506 OFF ON OFF LE 25507 ON OFF OFF Dd: IR216 Dr: HR09 0 0 0 4 4 2 0 0 R:DM0017 1 0 5 0 0 0 Số chia Số bị chia Thuơng số Số du R+1: DM0018 0 0 CP2 CP1 CMP(20)
76
4.3.27 Bộ đếm lặp lại CNTR(12).
Kí hiệu dùng trong ch−ơng trình thang:
Trong đó: N là chỉ số CNTR(12).
SV: là giá trị đặt trong DM, HR, LR, SR…
CNTR là một bộ đếm theo hai chiều. Nó đ−ợc dùng để đếm giữa giá trị đặt SV và 0 theo sự chuyển đổi một trong hai điều kiện đó là ngõ vào tăng II và ngõ vào giảm DI.
Giá tri hiện tại sẽ tăng nếu điều kiện đếm đ−ợc đ−a vào ngõ vào II và sẽ giảm nếu điều kiện đếm đ−ợc đua vào ngõ vào DI. Nếu điều kiện đếm đ−ợc đ−a cả vào hai ngõ II và DI thì trị số của CNTR sẽ không đổi. Khi gí trị hiện tai PV giảm đến 00 thì PV sẽ đ−ợc đặt về giá trị SV và cờ hoàn toàn đ−ợc bật thành ON cho đến khi giá trị PV giảm trở lại. Khi giá trị PV tăng lên tới SV thì giá trị PV đ−ợc đặt về 0 và cờ hoàn thành đ−ợc bật sang ON cho đến khi giá trị PV tăng trở lại.
4.3.28 Lệnh High Speed Timer -TIMH (15)
Kí hiệu dùng trong ch−ơng trình thang:
Trong đó: N là chỉ số TIMH(15).
SV: là giá trị đặt trong DM, HR, LR, SR…
Giá trị SV đặt trong TIM(15) chạy từ 00,00 giây đến 99,99 giây. Hoạt độnh của TIMH(15) giống nh− lệnh TIM.
4.3.29 Lệnh PRV(62) – High Speed Counter Pvread.
CNTR (12) N SV II DI R TIMH (15) N SV
77 Kí hiệu dùng trong ch−ơng trình thang:
Trong đó: P :là port riêng: 001, 002, 003.
C :là dữ liệu điều khiển 001, 002, 003. D :là Word đích đầu tiên SR, DM, HR…
Khi điều kiện thực hiện ngõ vào là ON, lệnh PRV (62) đọc dữ liệu đã định ở P và C rồi ghi nó vào D hay D +1.
Port riêng P xác định tốc độ xuất xung của Counter.
Port (P) Chức năng
001 Chỉ định Counter tốc độ cao 0 hay xuất xung từ một bit
002 Chỉ định Counter tốc độ cao 1 hay xuất xung từ Port1
003 Chỉ định Counter tốc độ cao 2 hay xuất xung từ port 2
C: Dữ liệu điều khiển xác định loại dữ liệu xử lý truy xuất
C Dữ liệu Word đích
001 Giá trị hiện tại PV của Counter tốc độ cao D & D +1 002 Trạng thái của Counter tốc độ cao hay xuất
xung
D
003 Dãy kết quả so sánh D
4.3.30 Lệnh Root (72) – Squre Root ( Căn bậc hai).
Kí hiệu dùng trong ch−ơng trình thang:
Trong đó: Sq: là word nguồn đầu;
C P PRV(62) D R Sq ROOT(72)
78 R: là word kết quả
DM6144 tới DM6655 không đ−ợc dùng trong R.
Khi trạng thái của ngõ vào là OFF lệnh ROOT(72) không thực hiện, khi trạng thái của ngõ vào là ON lệnh ROOT(72) sẽ khai căn của Sq rồi cất kết quả trong R.
Ví du:
Ví dụ trên mô tả sự khai căn của một số 8 số, kết quả của nó là một số 4 số và đ−ợc làm tròn.
Do: 63250561 = 7953.0221
Nên kết quả đ−ợc làm tròn là:
4.3.31 Lệnh END (01).
Kí hiệu dùng trong ch−ơng trình thang:
Lệnh này đ−ợc đặt ở cuối ch−ơng trình, nếu không có lệnh này trong ch−ơng trình thì toàn bộ ch−ơng trình sẽ không đ−ợc thực hiện.
Sau khi PLC gặp lệnh này thì ch−ơng trình lại đ−ợc lặp lại từ đầu chứ không phải hết ( hết một chu trình).
END(01) 00001 DM0001 DM0000 ROOT(72) DM0000 6 3 2 5 0 5 6 1 D M 0 0 0 1 9 7 5 3
79
4.4 Một số lệnh lập trình phổ biến khác của OMRON. 4.4.1 Bộ định thời TIMER:
Ví dụ: Timer có set value = 100x0.1=10 giây.
Khi bật khoá CH000.00 lên, Timer số 000 sẽ bắt đầu đếm thời gian, khi 10 giây trôi qua, tiếp điểm của Timer là TIM000 sẽ đ−ợc bật lên ON và
làm đầu ra CH010.00 cũng đ−ợc bật lên ON. Timer cũng sẽ bị reset về giá trị đặt khi đầu vào 00000 tắt.
Bộ Timer này có thời gian đ−ợc l−u trong DM 0000. PLC sẽ lấy giá trị trong DM0000 làm giá trị cài đặt cho Timer. Giả sử nội dung của
80
DM0000 là 150. Khi bật khoá CH000.00 lên, Timer số 000 sẽ bắt đầu đếm thời gian, khi đ−ợc 15 giây (150x0.1=15) tiếp điểm của timer là TIM 000 đ−ợc bật lên ON và làm đầu ra CH0100.00 cũng đ−ợc bật lên ON.
4.4.2Bộ đếm COUNTER.
Lúc khởi đầu giá trị hiện hành của bộ đếm đ−ợc bắt đầu tại SV. Bộ đếm sẽ giảm giá trị hiện hành của nó (CNT N) đi một đơn vị mỗi lần có s−ờn lên ở xung đầu vào CP và cờ báo hoàn thành CNT N sẽ bật lên giá trị hiện hành của bộ đếm giảm về 0. Bộ đếm sẽ bị reset về giá trị đặt SV khi có s−ờn lên của đầu vào R.
Mỗi lần bật khoá CH000.00 giá trị của Counter giảm đi một . khi bật khoá CH000.00 đủ 10 lần thì cờ báo CNT000 bật lên ON và do đó cũng
81
bật đầu ra CH0101.00 lên ON. Bộ đếm sẽ bị reset khi bật switch CH000.01.
Mở rộng khả năng của bộ đếm TIMER.
Do thời gian đặt tối đa của timer là 0.278 giờ nên để tăng thời gian đếm của timer, ta có thể dùng kết hợp với Counter nh− sau:
Ví dụ: Mở rộng thời gian đặt lên 10 giờ
Ví dụ ứng dụng của bộ đếm:
Trong ví dụ này ta sẽ lập trình PLC cho công đoạn đóng gói sản phẩm vào bao bì. Đây là công đoạn rất hay gặp trong các dây chuyền sản xuất. Trên hình ta thấy các sản phẩm hoàn thiện đ−ợc băng chuyền chuyển tới các thiết bị đóng bao. Cứ 5 sản phẩm đóng vào một bao. Có một cảm biến quang điện làm nhiệm vụ phát hiện sản phẩm trên băng chuyền và gửi tín hiệu xung về bộ đếm trong PLC. Mỗi khi đếm đủ 5 sản phẩm, bộ đếm gửi tín hiệu ra cho cuộn hút solenoid làm việc. Thời gian cuộn hút làm việc là hai giây. trong thời gian cuộn hút làm việc, băng truyền ngừng chạy.
Tr−ờng hợp này, ta có một đầu vào duy nhất là tín hiệu xung từ cảm biến, đặt là bit 00.2 đầu ra sẽ là tín hiệu gửi cuộn hút, đặt là 1001, và tín hiệu ngừng băng truyền đặt là 1000.
82 Ch−ơng trình cần lập sẽ nh− sơ đồ sau:
Bình th−ờng cuộn hút không làm việc, băng truyền chạy nhờ có tiếp điểm th−ờng đóng 1001 ở trạng thái OFF. Lúc này cảm biến sẽ gửi tín hiệu xung về PLC mỗi khi có sản phẩm đi qua và đầu vào lúc này đ−ợc dùng làm đầu vào đếm của bộ đếm CNT 0. Khi có đủ 5 sản phẩm tiếp
83
điểm CNT sẽ đóng, reset counter về giá trị ban đầu là 5, đồng thời gửi tín hiệu cho cuộn hút và timer làm việc trong mạch tự giữ. Lúc này băng truyền ngừng chạy do tiếp điểm 1001 ngắt mạch hoạt động của đầu ra 1000. Sau hai giây tiếp điểm TIM001 sẽ ngắt nguồn hoạt động của cuộn hút và băng truyền tiếp tục chạy, lặp lại chu trình.
Chú ý: Lệnh END ở cuối ch−ơng trình chỉ đánh dấu việc kết thúc chu trình làm việc hiện hành của PLC và bắt đầu chu trình mới từ lệnh đầu tiên chủa ch−ơng trình. Nó không có ý nghĩa là ch−ơng trình sẽ dừng. Ch−ơng trình chỉ dừng khi ta chuyển chế độ sang Program Mode hoặc có sự cố bên trong PLC.
4.5 Lập trình bằng phần mềm SYSWIN trên máy tính. 4.5.1 Phần mềm SYSWIN:
SYSWIN là một phần mềm lập trình cho PLC OMRON d−ới dạng Ledder Daigram thực thụ chạy trong WINDOW. Để cài đặt phần mềm này cần đảm bảo máy tính có cấu hình tối thiểu nh− sau:
Windows 3.1, 3.11 ,Windows95, Windows98
>486 DX50 CPU >8 M Byte Ram
>10 MB Free HDD (Đĩa cứng trống)
4.5.2 Lập trình với SYSWIN
1) chọn folder nơi l−u SYSWIN và khởi độnh ch−ơng trình
84 2) Từ menu File chọn New Project để tạo ch−ơng trình mới PLC Type chọn CPM1
CPU chọn ALL Series chọn C
Editor chọn Ladder
Project Type chọn Program
Interface chọn Serial Communications Bridge chọn Option Direct
Moden chọn Option Local
Codding Option chọn SYSWIN Way
Ta lựa chọn các mục trên ở hộp hội thoại New Project Setup tiếp theo là Click OK
3) Màn hình sẽ hiện ra một khung làm việc cho ch−ơng trình dạng Ladder Daigram.
Dùng chuột di đến thanh công cụ ( Drawing Tool ) và nhấn vào biểu t−ợng tiếp điểm (Contact) hoặc nhấn phím F2 để chọn lệnh này.
85 Di chuột đến nơi cần đặt tiếp điểm trên sơ đồ và nhấn nút trái chuột.
Đánh vào địa chỉ 000.00 ở ô Address và nhấn OK trên hộp thoại trên.