Lệnh LOAD và LOAD NOT
Lệnh AND và AND NOT
Lệnh AND LOAD
Lệnh OR và OR NOT
Lệnh OUTPUT và OUTPUT NOT
Các lệnh điều khiển BIT
Lệnh SET và RESET- SET và RSET
Lệnh SET sẽ bật bit đi kèm lên ON khi điều kiện thực thi của chúng là ON. Sau đó, Bit sẽ vẫn ở trạng thái ON không phụ thuộc vào lệnh SET có điều kiện thực thi là ON hoặc OFF cho đến khi lệnh RESET (RSET) xóa chúng về OFF.
Lệnh KEEP- KEEP(11)
Lệnh KEEP(11) hoạt động như một relay chốt với hai đầu vào là SET (S) và RESET (R). Bit sẽ đựợc set lên ON khi đầu vào là S là ON và sẽ vẫn giữ ở ON cho đến khi bit B bị reset về OFF khi đầu vào R là ON.
Lệnh DIFFERENTIATE UP và DIFFERENTIATE DOWN-DIFU(13) và DIFD(14)
Lệnh DIFU(13) sẽ bật bit đi kèm lên 1 trong vòng một chu kỳ quét (scan/cycle) khi điều kiện thực thi chuyển từ OF ở chu kỳ quét trước sang ON ở chu kỳ quét lần này. Sau đó, bit trở về trạng thái OFF.
Lệnh SIFD(14) sẽ bật bit đi kèm lên 1 trong vòng một chu kỳ quét (scan/cycle) khi điều kiện thực thi chuyển từ ON ở chu kỳ quét trước sang OFF ở chu kỳ quét lần này. Sau đó, bit trở về trạng thái OFF.
Lệnh INTERLOCK và lệnh INTERLOCK CLEAR – IL(02) và ILC(03)
điều khiển điều kiện thực thi của toàn bộ các lệnh bắt đầu từ sau lệnh IL(02) cho đến lệnh ILC(03) đầu tiên sau lệnh IL(02) này.
Khi điều kiện thực thi của lệnh IL(02) ON, thì chương trình vẫn thực hiện bình thường. Còn khi điều kiện thực thi của lệnh ILC(03) đầu tiên đều được thi hành với điều kiện thực thi là OFF nghĩa là các lệnh OUTPUT nằm giữa IL(02) và ILC(03) sẽ là OFF.
Chương trình sẽ trở lại hoạt động bình thường sau lệnh ILC(03).
Lệnh INTERLOCK và INTERLOCK CLEAR – IL(02) và ILC(03)
Lệnh JUMP và JUMP END – JMP(04) và JME(05)
Mỗi lệnh JUMP gồm cặp lệnh JMP và JME có số từ 00 đến 49. Lệnh JMP và JME luôn đi chung với nhau.
Nếu ngõ vào của JMP là OFF, khi chương trình gặp lệnh JMP N thì chúng sẽ bỏ qua không thực hiện các lệnh theo sau lệnh này cho đến lệnh JME N có cùng số.
Khi gặp lệnh JME , thì chương trình sau đó lại thực thi bình thường.
Khi ngõ vào của JMP là ON, khi chương trình gặp lệnh JMP N thì các lệnh theo sau lệnh này sẽ thực thi bình thường.
Chú ý: mỗi số N của lệnh JMP và JME chỉ được dùng một lần duy nhất
trong chương trình.
Các lệnh TIMER
Timer- TIM
SV thuộc khoảng giá trị từ 0000 đến 9999 (BCD). N nằm trong đoạn từ 000 đến 127 trong PLC CPM1/CPM1A/SRM1
Lệnh TIM trì hoãn khoảng thời gian (ON Delay) đến 0 tùy theo giá trị đặt SV. Chú ý, độ phân giải của lệnh TIM là 0.1s. Do đó, thời gian hoạt động thực tế của timer là SV x0.1(s)
High-speed timer – TIMH
SV thuộc khoảng giá trị từ 0000 đến 9999 (BCD). N nằm trong đoạn từ 000 đến 127 trong PLC CPM1/CPM1A/SRM1
Giống như lệnh TIM. Chú ý, độ phần giải lệnh TIMH(15) là 0.001s. Do đó, thời gian hoạt động thực tế của timer là SVx0.001(s).
SV thuộc khoảng giá trị từ 0000 đến 9999 (BCD). N nằm trong đoạn từ 000 đến 127 trong PLC CPM1/CPM1A/SRM1.
Giống như lệnh TIM. Chú ý, độ phân giải của lệnh TIMHH(--) là 0.001s. Do đó, thời gian hoạt động thực tế của timer là SVx0.001(s)
Các lệnh COUNTER
Counter- CNT
SV thuộc khoảng giá trị từ 0000 đến 9999 (BCD). N nằm trong đoạn từ 000 đến 127 trong PLC CPM1/CPM1A/SRM1
Lệnh CNT dùng để đếm xuống từ giá trị đặt SV khi điều kiện thực thi CP chuyển từ OFF lên ON, khi đó, giá trị đặt trước PV(Preset value) sẽ giảm 1. Giá trị SV sẽ bằng 0 khi CP luôn đổi trạng thái từ OFF lên ON trong SV lần. Cờ của CNT ON khi PV=0 và vẫn cho đến khi CNT bị reset.
Counter bị reset bởi ngõ vào (input) reset. Khi P từ OFF lên ON, thì giá trị PV sẽ reset đến SV. Giá PV sẽ không giảm khi R ON.
Reversible Counter – CNTR(12)
SV thuộc khoảng giá trị từ 0000 đến 9999 (BCD). N nằm trong đoạn từ 000 đến 127 trong PLC CPM1/CPM1A/SRM1
Lệnh CNTR(12) dùng để đếm xuống hoặc đếm lên từ giá trị đặc SV khi điều kiện thực thi của ngõ vào II hoặc DI chuyển từ OFF lên ON, khi đó giá trị đặt trước PV sẽ giảm 1 hoặc tăng 1. Giá trị của SV sẽ đếm tăng khi ngõ vào II chuyển từ OFF lên ON và giá trị PV sẽ đếm giảm khi ngõ vào DI chuyển từ OFF lên ON. Khi II và DI cùng chuyển trạng thái từ OFF lên ON, thì giá trị PV sẽ không thay đổi.
CNTR(12) bị reset bởi ngõ vào (input) reset. Khi R từ OFF lên ON, thì giá trị PV sẽ reset đến 0. Giá trị PV sẽ không giảm khi R ON.
Ví dụ : Xe chạy thuận nghịch
Giai đoạn 0: Nhấn công tắc khởi động bắt đầu giai đoạn 1
Giai đoạn 1: Motor quay thuận làm xe di chuyển theo hướng bên phải đến vị trí cảm biến 2. Khi cảm biến LS2 phát hiện xe thì chuyển qua giai đoạn 2.
Giai đoạn 2: Motor quay nghịch làm xe di chuyển theo hướng bên trái đến vị trí cảm biến 1. Khi cảm biến LS1 phát hiện xe thì chu trình lặp lại cho đến khi nhấn Stop, động cơ ngừng lại.
Hình 2.14 Sơ đồ Grafcet và chương trình ladder: 2.3 Khảo sát PLC CP1L
PLC CP1L đa năng là dòng sản phẩm mới của Omron với giá thành thấp.
Hình 2.15 PLC CP1L Các tính năng chính của PLC CP1L:
• CPU có sẵn 14, 20, 30, hoặc 40 I/O, mở rộng tối đa 160 I/O, có khả năng truyền thông RS-232 / 485 / 422.
• Kết nối với modul mở rộng CPM1 hiện có (modul I/O, đầu vào nhiệt độ, vào/ ra tương tự, mạng CompoBus/ S, DeviceNet).
• Đầu vào analog 0-10V (độ phân giải 256 bit).
• Bộ nhớ 5 đến 10Kstep (CPM1A có bộ nhớ 2 Kstep, còn CPM2A là 4 Kstep), có bộ nhớ ngoài.
• Lập trình thuận tiện thông qua cổng USB bằng CX-P V7.1, hỗ trợ lập trình bằng FB (Function Block).
• Hỗ trợ chạy mô phỏng bằng CX-Simulator (CPM1/2A không cho phép mô phỏng).
Dòng CP1L hỗ trợ khả năng kết nối dễ dàng trực tiếp tới các thiết bị khác như biến tần (qua Modbus), điều khiển nhiệt độ ,…
Hình 2.16 Kết nối PLC với một số thiết bị
Bảng 2.3 Các modul CPU
Môđun CPU 14 đầu (8 vào, 6 ra), 20 đầu (12 vào, 8 ra) 30 đầu (18 vào, 12 ra) 40 đầu (24 vào, 16 ra) Nối được 1 modul mở rộng Nối được 3 modul mở rộng Nguồn AC, vào
DC, ra relay CP1L-L14DR-A CP1L-L20DR-A CP1L-M30DR-ACP1L-M40DR-A Nguồn DC, vào DC, ra relay CP1L-L14DR-D CP1L-L20DR-D CP1L-M30DR-DCP1L-M40DR-D Nguồn DC, vào DC, ra transistor (NPN) CP1L-L14DT- D CP1L-L20DT-D CP1L-M30DT-DCP1L-M40DT-D Nguồn DC, vào DC, ra transistor (PNP) CP1L- L14DT1-D CP1L-L20DT1-D CP1L-M30DT1-D CP1L-M40DT1-D
Bảng 2.4 Đặc tính với đầu ra rơle
Ngõ vào CP1L-L14:
Chương 3: GIỚI THIỆU VỀ PHẦN MỀM CODEVISIONAVR, PHẦN MỀM CX-PROGRAMER VÀ MỤC TIÊU ĐỀ TÀI
3.1 Phần mềm lập trình codevision
Đây là phần mềm được sử dụng rất rộng rãi bởi nó được xây dựng trên nền ngôn ngữ lập trình C, phần mềm được viết chuyên nghiệp hướng tới người sử dụng bởi sự đơn giản, sự hỗ trợ cao các thư viện có sẵn.
3.1.1 Thiết lập cổng vào/ ra:
Khi xem xét đến các cổng I/O của AVR thì ta phải xét tới 3 thanh ghi bit
DDxn,PORTxn,PINxn.
Các bit DDxn để truy cập cho địa chỉ xuất nhập DDRx. Bit DDxn trong thanh ghi DDRx dùng để điều khiển hướng dữ liệu của các chân của cổng này. Khi ghi giá trị logic ‘0’ vào bất kì bit nào của thanh ghi này thì nó sẽ trở thành lối vào, còn ghi ‘1’ vào bit đó thì nó trở thành lối ra.
Các bit PORTxn để truy cập tại địa chỉ xuất nhập PORTx. Khi PORTx được ghi giá trị 1 khi các chân có cấu tạo như cổng ra thì điện trở kéo là chủ động (được nối với cổng). Ngắt điện trở kéo ra, PORTx được ghi giá trị 0 hoặc các chân có dạng như cổng ra. Các chân của cổng là 3 trạng thái khi 1 điều kiện reset là tích cực thậm chí xung đồng hồ không hoạt động.
Các bit PINxn để truy cập tại địa chỉ xuất nhập PINx. PINx là các cổng chỉ để đọc, các cổng này có thể đọc trạng thái logic của PORTx. PINx không phải là thanh ghi, việc đọc PINx cho phép ta đọc giá trị logic trên các chân của PORTx.
Nếu PORTxn được ghi giá trị logic ‘1’ khi các chân của cổng có dạng như chân ra, các chân có giá trị ‘1’. Nếu PORTxn ghi giá trị ‘0’ khi các chân của cổng
có dạng như chân ra thì các chân đó có giá trị ‘0’.
Các cổng của AVR đều có thể đọc, ghi. Để thiết lập 1 cổng là cổng vào, ra thì ta tác động tới các bit DDxn, PORTxn,PINxn. Ta có thể thiết lập để từng bit làm cổng vào, như vậy ta có thể xử lý tới từng bit, đây chính là điểm mạnh của các dòng Vi điều khiển 8 bit.
Hình 3.1 Khởi tạo ban đầu trước khi viết chương trình trong codevision
Ta có thể sử dụng CodeWizardAVR để thiết lập cho các PORTx và Pinx. Ví dụ như trên hình: các bit 0,1,2,4,7 của PORTA làm chân ra có trở kéo, còn các bit còn lại làm chân vào. Khi đã thiết lập xong thì các bit 0,1,2,4,7 sẽ có thể xuất dữ liệu ra còn các bit còn lại có thể nhận dữ liệu vào.
Ví dụ :
Ta muốn ghi dữ liệu giá trị logic ’0’ ra PORTA.0 để bật tắt một Led thì: PORTA.0=1;
Ta muốn đọc dữ liệu là một bit từ chân 3 của PORTA: Bit x;
x=PINA.3;
Cũng như vậy khi ta thiết lập PORTA làm cổng ra thì ta có thể xuất dữ liệu ra từ PORTA:
PORTA=0xAA; PORTA
Còn nếu ta thiết lập PORTA làm cổng vào và giá trị hiện thời của PORTA:
PORTA
Thì sau câu lệnh đọc giá trị từ PORTA: x=PORTA thì x=0x55. Khi thiết lập PORTA làm cổng ra thì khi reset giá trị của PORTA là PORTA=0xFF;
Khi thiết lập PORTA làm cổng vào thì khi reset giá trị của PORTA là
PORTA=0x00; PORTA
Việc thiết lập cổng vào ra là một việc quan trọng vì tùy theo mục đích sử dụng các cổng nào làm cổng vào ra, thì ta phải thiết lập đúng thì mới có thể sử dụng được, động tác này khác với họ vi điều khiển 8051- AT8951.
3.1.2 Cách sử dụng phần mềm CodeVision:
Chạy CodeVision bằng cách click chuột vào ICON của CodeVision trên Desktop được cửa sổ như hình 3.2:
Hình 3.2
Chọn Project sau đó click chuột vào OK được cửa sổ hỏi xem có sử dụng Code Winzard không( hình 3.4):
Hình 3.4
Chọn Yes được cửa sổ CodeWinzardAVR như hình 3.5:
Hình 3.5
Sử dụng chíp AVR nào và thạch anh tần số bao nhiêu ta nhập vào tab Chip. Để khởi tạo cho các cổng IO ta chuyển qua tab Ports.
Các chân IO của AVR mặc định trạng thái IN, muốn chuyển thành trạng thái OUT để có thể đưa các mức logic ra ta click chuột vào các nút IN (mầu trắng) để nó chuyển thành OUT trong các Tab Port. Sau đó chọn File -> Generate, Save and Exit.(hình 3.6)
Hình 3.6
Được cửa sổ yêu cầu nhớ các file của Project. Đây là ví dụ IO nên ta save tên là IO.(hình 3.7)
hình 3.7
Hình 3.8
Ta đã được code vision khởi tạo code. Trong đó có đầy đủ code cần thiết mà ta cấu hình cho cổng IO.
Ta bắt đầu soạn code.
Sau khi ta viết code xong Để dịch và kiểm tra chương trình ấn F9 hoặc vào menu : Project -> Compile.
Được cửa sổ Information như hình 3.9:
Hình 3.9
Để nạp chương trình các bạn cần cấu hình cho mạch nạp. Vào menu: Settings -> Programmer.
Mạch nạp ta dùng STK 200 do đó các bạn chọn Kanda Systems STK200+/300. Nhấp OK. Sau đó các bạn chọn trên menu: Projects -> Configure, trong tab After Make các bạn đánh dấu vào Program the Chip và nhấp OK.
Nhấn tổ hợp phím Shift + F9 được cửa sổ như hình 3.10:
Hình 3.10
Cắm Jump mạch nạp vào. Click vào Program. Đợi nạp xong nhổ jump nạp ra thế là chương trình đã được nạp.
Khởi tạo một số tab chức năng trong codevisionAVR:
Hình 3.11 Khởi tạo LCD
Hình 3.12 Khởi tạo ADC
Trong tab ADC check vào ADC enable.
Nếu ta dùng ADC 8 bit thì check vào Use 8 bit, không thì mặc định ADC 10 bit. Dùng ngắt check vào Interrupt, điện áp tham khảo thì lấy điện áp của chân AREF.
3.2 Phần mềm CX-programer
3.2.1 Giới thiệu phần mềm CX-Programmer
CX-Programmer là phần mềm Không chỉ dùng để lập trình cho PLC,
CX-Programmer còn là công cụ để các kỹ sư quản lý 1 dự án tự động hóa với PLC làm bộ não hệ thống. Các chức năng chính của CX-Programmer bao gồm : Tạo và quản lý các dự án (project) tự động hóa
Kết nối với PLC qua nhiều đường giao tiếp Cho phép thực hiện các thao tác chỉnh sửa & theo dõi khi đang online (như
force set/ reset, online edit, monitoring (..,
Đặt thông số hoạt động cho PLC Cấu hình đường truyền mạng Hỗ trợ nhiều chương trình, nhiều PLC trong 1 cùng project & nhiều section
3.2.2
Cách sử dụng phầm mềm CX-Programmer Tạo một project mới
Khi chạy chương trình CX-Programmer muốn tạo một project mới ta làm theo các bước:
Hình 3.13 Các thành phần trên cửa sổ project:
Các thao tác trên cửa sổ project:
Thêm tiếp điểm
Hình 3.15 Thêm cuộn dây
Hình 3.16
Thêm function
Mỗi chương trình đều cần có ít nhất 1 lệnh End để đánh dấu điểm kết thúc
của chương trình. Lệnh End và nhiều khối chức năng khác (function) có thể nhập vào dùng công cụ Instruction .
Hình 3.17
Thêm hàng vào Rung
Hình 3.18
Chèn thêm một Rung
Hình 3.20
Các thao tác Copy và Paste
Ta có thể áp dụng thao tác Copy và Paste như với 1 chương trình Windows
thông thường khác. Đồng thời có thể áp dụng Undo và Redo với các thao tác vừa làm .
Xóa Rung
Hình 3.22 Cấu hình CX-Simulator
Chọn loại CPU trong CX-Simulator phải trùng với loại CPU trong CX-
Programmer
Chạy mô phỏng
Việc chạy mô phỏng với CX-Simulator để nhằm kiểm tra phát hiện các lỗi
do sai cú pháp, thiếu/ thừa các phần tử,… trong chương trình và tiến hành xử lý khắc phục các lỗi này trước khi tiến hành nạp vào PLC .
Hình 3.24 Biên dịch chương trình
Bấm vào nút Work online để kết nối với PLC sau khi đã kết nối cáp giữa máy tính với PLC. Sau khi kết nối được thiết lập, CX-Programer sẽ ở chế độ làm việc online.
Bấm lại nút Work online sẽ chuyển sang chế độ offline để có thể sửa chương trình.
Kết quả biên dịch được hiển thị trong tab compile của cửa sổ Ouput .
Kiểm tra lỗi
Khi đang online có thể kiểm tra và xóa các lỗi trong PLC bằng cách nhấn đúp
vào Error Log
Nạp chương trình
Việc nạp chương trình vào PLC cũng sẽ xóa nội dung hiện đang có trong
PLC. Vì thế cần thận trọng trong việc này .
Chương 4 MỤC TIÊU ĐỀ TÀI VÀ ỨNG DỤNG 4.1 Mục tiêu của đề tài.
Đề tài Thiết kế mạch điều khiển ổn nhiệt và hiển thị nhiệt trong mô hình máy ấp trứng.
Để ấp trứng thành công thì điều kiện đầu tiên là ta cần cung cấp nhiệt ổn định ở 37oC trong suốt thời gian ấp (khoảng 20-22 ngày), độ ẩm, đảm bảo thông thoáng cho trứng, và một số điều kiện phụ khác thì trứng mới đảm bảo được nở