MỤC LỤC
DANH MỤC CÁC HÌNH
LỜI NÓI ĐẦU
Chương 1: VI ĐIỀU KHIỂN 1
1.1. Giới thiệu chung về Vi Điều Khiển 2
1.1.1. Vi Điều Khiển 2
1.1.2. Giới thiệu họ AVR 3
1.2. Tìm hiểu về ATmega8 4
1.3. Truyền thông ATmega8 8
1.3.1 Giao tiếp RS232 8
1.3.2 Sơ đồ mạch 9
1.3.3 Phần mềm lập trình và cách khởi tạo 10
1.3.4 Chương trình 12
1.3.4.1. Phần khai báo. 12
1.3.4.2. Phần chương trình. 15
Chương 2: PLC 19
2.1. Giới thiệu chung về PLC 20
2.1.1. Khái niệm PLC 20
2.1.2. Lịch sử phát triển 21
2.1.3. Phạm vi ứng dụng 21
2.1.4. Vai trò của PLC trong quá trình tự động hóa sản xuất 21
2.1.5. Khả năng của PLC 21
2.1.6. Ưu điểm của PLC 22
2.1.7. Lập trình cho PLC 22
2.2. Cấu trúc phần cứng của bộ PLC S7-300 23
2.2.1. Các tín hiệu kết nối với PLC 23
2.2.2. Các modul của PLC S7-300 23
2.2.3. Kiểu dữ liệu và phân chia bộ nhớ 25
2.2.4. Cấu trúc bộ nhớ của CPU 25
2.2.5. Vòng quét chương trình 26
2.3. Điều khiển Đèn giao thông bằng PLC ( Sử dụng ngôn ngữ LAD) 26
2.3.1. Giới thiệu bộ Đèn giao thông 26
2.3.2. Linh kiện trong mạch điều khiển Đèn giao thông 27
2.3.3. Quét led 7 đoạn 28
2.3.4. Giải thuật điều khiển 29
2.3.5. Chương trình 30
KẾT LUẬN 38
TÀI LIỆU THAM KHẢO 39
42 trang |
Chia sẻ: lethao | Lượt xem: 7656 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Điều khiển đèn giao thông bằng PLC (sử dụng ngôn ngữ lad), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
vi như bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang tương tự và tương tự sang số,... Ở máy tính thì các mô đun thường được xây dựng bởi các chíp và mạch ngoài. Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động, v.v.
Hầu hết các vi điều khiển ngày nay được xây dựng dựa trên kiến trúc Harvard, kiến trúc này định nghĩa bốn thành phần cần thiết của một hệ thống nhúng. Những thành phần này là lõi CPU, bộ nhớ chương trình (thông thường là ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), một hoặc vài bộ định thời và các cổng vào/ra để giao tiếp với các thiết bị ngoại vi và các môi trường bên ngoài - tất cả các khối này được thiết kế trong một vi mạch tích hợp. Vi điều khiển khác với các bộ vi xử lý đa năng ở chỗ là nó có thể hoạt động chỉ với vài vi mạch hỗ trợ bên ngoài.
Các vi điều khiển thông dụng :
Họ vi điều khiển AMCC (do tập đoàn "Applied Micro Circuits Corporation" sản xuất). Từ tháng 5 năm 2004, họ vi điều khiển này được phát triển và tung ra thị trường bởi IBM.
403 PowerPC CPU
PPC 403GCX
405 PowerPC CPU
…
Họ vi điều khiển Atmel
Dòng Atmel AT91 (Kiến trúc ARM THUMB)
Dòng AT90, Tiny & Mega – AVR (Atmel Norway design)
Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51)
Dòng MARC4
Họ vi điều khiển Cypress MicroSystems
CY8C2xxxx (PSoC)
Họ vi điều khiển Freescale Semiconductor. Từ năm 2004, những vi điều khiển này được phát triển và tung ra thị trường bởi Motorola.
Dòng 8-bit : 68HC05 (CPU05), 68HC08 (CPU08).
Dòng 16-bit : 68HC12 (CPU12), 68HC16 (CPU16).
Dòng 32-bit : Freescale 683XX (CPU32), MPC500.
Họ vi điều khiển Fujitsu
F²MC Family (8/16 bit)
Họ vi điều khiển Intel
Dòng 8-bit : 8XC42, MCS48.
Dòng 16-bit : 80186/88, MCS96, MXS296
Dòng 32-bit : 386EX, i960
Họ vi điều khiển Microchip
12-bit instruction PIC
14-bit instruction PIC
PIC16F84
16-bit instruction PIC
Họ vi điều khiển National Semiconductor
COP8
CR16
Họ vi điều khiển STMicroelectronics
ST 62
ST 7
Họ vi điều khiển Philips Semiconductors
LPC2000
LPC900
LPC700
1.1.2. Giới thiệu họ AVR
AVR là một họ vi điều khiển do hãng Atmel sản xuất (Atmel cũng là nhà sản xuất dòng vi điều khiển 89C51). AVR là chip vi điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa-RISC ( Reduced Instruction Set Computer ), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí.
So với các chip vi điều khiển 8 bits khác, AVR có nhiều đặc tính hơn hẳn, hơn cả trong tính ứng dụng (dễ sử dụng) và đặc biệt là về chức năng :
Gần như chúng ta không cần mắc thêm bất kỳ linh kiện phụ nào khi sử dụng AVR, thậm chí không cần nguồn tạo xung clock cho chip (thường là các khối thạch anh).
Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ cần vài điện trở là có thể làm được. Một số AVR còn hỗ trợ lập trình on - chip bằng bootloader không cần mạch nạp…
Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích C.
Nguồn tài nguyên về source code, tài liệu, application note...rất lớn trên internet.
Hầu hết các chip AVR có những tính năng (features) sau :
Có thể sử dụng xung clock lên đến 16Mhz, hoặc sử dụng xung clock nội lên đến 8 MHz (sai số 3%)
Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn, có SRAM (Ram tĩnh) lớn, và đặc biệt có bộ nhớ lưu trữ lập trình được EEPROM.
Nhiều ngõ vào ra (I/O PORT) 2 hướng (bi-directional).
8 bits, 16 bits timer/counter tích hợp PWM.
Các bộ chuyển đổi Analog - Digital phân giải 10 bits, nhiều kênh.
Chức năng Analog comparator.
Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232)
Giao diện nối tiếp Tow - Wire - Serial (tương thích chuẩn I2C) Master và Slaver.
Giao diện nối tiếp Serial Peripheral Interface (SPI).
…
Một số chip AVR thông dụng :
AT90S1200
AT90S2313
AT90C8534
Attiny10, Attiny11, Attiny12, Attiny15, Attiny22, Attiny16, Attiny28.
ATmega8/8515/8535
ATmega16, ATmega161, ATmega162, ATmega163, ATmega169.
ATmega32, ATmega323, ATmega103.
ATmega64/128/2560/2561.
…
1.2. Tìm hiểu về ATmega8
Hình 1.1: ATmega8
Vi điều khiển ATmega8 thuộc họ AVR, là họ vi điều khiển 8 bits theo công nghệ mới, với những tính năng rất mạnh được tích hợp trong chip của hãng Atmel theo công nghệ RISC (viết tắt của Reduced Instructions Set Computer - Máy tính với tập lệnh đơn giản hóa ), nó mạnh ngang hàng với các họ vi điều khiển 8 bits khác như PIC, Pisoc. Do ra đời muộn hơn nên họ vi điều khiển AVR có nhiều tính năng mới đáp ứng tối đa nhu cầu của người sử dụng. So với họ 8051, 89xx thì nó có độ ổn định, khả năng tích hợp, sự mềm dẻo trong việc lập trình và tiện lợi hơn rất nhiều.
ATmega8 có đầy đủ tính năng của họ AVR, có giá thành vừa phải, rất phù hợp dùng để thiết kế những hệ thống vừa và nhỏ.
Hình 1.2: Sơ đồ chân của ATmega8
Một số đặc tính của Vi điều khiển ATmega8 :
+ Bộ nhớ 8K Bytes (Flash) .
+ Bộ nhớ 512 Bytes (EEPROM) .
+ Bộ nhớ 1K Bytes (SRAM) .
+ Đóng vỏ 28 chân, trong đó có 23 chân vào ra dữ liệu chia làm 3 PORT B, C, D. Các chân này đều có chế độ điện trở treo (pull_up resistors).
+ Các đường dẫn vào/ra (I/O) lập trình được .
+ Giao tiếp SPI.
+ Giao tiếp I2C.
+ Có 4 kênh ADC 10 bits (ADC0, ADC1, ADC2, ADC3), 2 kênh ADC 8 bits (ADC4, ADC5).
+ Bộ so sánh analog.
+ Ba kênh băm xung PWM .
+ Hai bộ timer/counter 8 bits, 1 bộ timer/counter1 16 bits .
+ Một bộ định thời Watchdog .
+ Một bộ truyền nhận USART lập trình được .
+ Các chế độ tiết kiệm năng lượng như sleep, stand by..vv .
*Các đặc tính của Vi điều khiển AVR cụ thể hơn tại Web site: www.atmel.com
Hình 1.3: Sơ đồ khối của ATmega8
1.3. Truyền thông ATmega8
1.3.1 Giao tiếp RS232
Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất. Người ta còn gọi cổng này là cổng COM1. Giống như cổng máy in cổng COM cũng được sử dụng một cách thuận tiện cho việc giao tiếp với thiết bị ngoại vi. Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp. Nghĩa là các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn. Loại truyền này có khả năng dùng cho những ứng dụng có yêu cầu truyền khoảng cách lớn hơn, bởi vì các khả năng gây nhiễu là nhỏ đáng kể hơn khi dùng một cổng song song (cổng máy in). Cổng COM không phải là một hệ thống bus nó cho phép dễ dàng tạo ra liên kết dưới hình thức điểm với điểm giữa hai máy cần trao đổi thông tin với nhau, một thành viên thứ ba không thể tham gia vào cuộc trao đổi thông tin này.
Các chân và đường dẫn được mô tả như sau:
Hình 1.4: Sơ đồ chân cổng RS232
Phích cắm COM có tổng cộng 8 đường dẫn, chưa kể đến đường nối đất. Trên thực tế có hai loại phích cắm, một loại 9 chân và một loại 25 chân. Cả hai loại này đều có chung một đặc điểm.
Việc truyền dữ liệu xảy ra ở trên hai đường dẫn. Qua chân cắm ra TXD máy tính gởi dữ liệu của nó đến KIT Vi điều khiển. Trong khi đó các dữ liệu mà máy tính nhận được, lại được dẫn đến chân RXD các tín hiệu khác đóng vai trò như là tín hiệu hổ trợ khi trao đổi thông tin, và vì thế không phải trong mọi trường hợp ứng dụng đều dùng hết.
Vì tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích với điện áp TTL nên để giao tiếp KIT Vi điều khiển ATmega8 với máy tính qua cổng COM ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ta chọn vi mạch MAX232 để thực hiện việc tương thích điện áp.
1.3.2 Sơ đồ mạch
a. Mạch nguồn
Hình 1.5: Mạch nguồn
b. Mạch giao tiếp MAX 232
Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong giao diện nối tiếp với máy tính. Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc –10V ở phía truyền và các mức +3…+15V hoặc -3…-15V thành mức TTL ở phía nhận.
Hình 1.6: Sơ đồ chân Max 232
Vi mạch MAX 232 có hai bộ đệm và hai bộ nhận. Đường dẫn điều khiển lối vào CTS, điều khiển việc xuất ra dữ liệu ở cổng nối tiếp khi cần thiết, được nối với chân 9 của vi mạch MAX 232. Còn chân RST (chân 10 của vi mạch MAX ) nối với đường dẫn bắt tay để điều khiển quá trình nhận. Thường thì các đường dẫn bắt tay được nối với cổng nối tiếp qua các cầu nối, để khi không dùng đến nữa có thể hở mạch các cầu này. Cách truyền dữ liệu đơn giản nhất là chỉ dùng ba đường dẫn TxD, RxD và GND (mass).
Sơ đồ mạch :
Hình 1.7: Mạch RS232
Hình 1.8: Mạch truyền thông Atmega8
1.3.3 Phần mềm lập trình và cách khởi tạo
a. Phần mềm lập trình
Sử dụng phần mềm CodeVisionAVR C Compiler viết trên nền ngôn ngữ C
Hình 1.9: Phần mềm CodeVisionAVR C Compiler
b. Cách khởi tạo
Chọn chip ATmega8, tần số thạch anh 11.0592MHz
Khởi tạo USART như hình vẽ :
Hình 1.10: Khởi tạo USART
Truyền nhận dữ liệu có sử dụng ngắt. Sử dụng bộ đệm 8bits, tốc độ truyền 9600, chế độ truyền đồng bộ: 8bits Data, 1bits Stop, No Parity.
1.3.4 Chương trình
1.3.4.1. Phần khai báo.
a. Master :
#include
#include
#define len_F 3
#define led PORTC
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
char ch,chon;
unsigned char index_F,start_F;
unsigned char frame_Rx[100];
unsigned char data1,data2,i;
// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
// USART Transmitter buffer
#define TX_BUFFER_SIZE 8
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
#include
….
PORTB=0x00;
DDRB=0x00;
PORTC=0xFF;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
ACSR=0x80;
SFIOR=0x00;
#asm("sei")
b. Slave 1 :
#define len_F 3
#define led PORTC
#define station 0x00
char ch;
unsigned char index_F,start_F,received;
unsigned char frame_Rx[100];
unsigned char data1,data2,i;
c. Slave 2 :
#define len_F 3
#define led PORTC
#define station 0x01
1.3.4.2. Phần chương trình.
a. Master :
void truyen (char station, char data1, char data2)
{
putchar('s');
putchar('t');
putchar(station);
putchar(data1);
putchar(data2);
}
void sent_frame(void)
{
truyen(0x00,1,2);
delay_ms(10);
truyen(0x01,3,4);
delay_ms(10);
}
void nhan_dulieu(void)
{
ch=getchar();
if( (index_F>=1) && (ch=='t') && (frame_Rx[index_F-1]=='s') )
{
index_F=0;
start_F=1;
}
else
frame_Rx[index_F++]=ch;
if( (start_F) && (index_F>len_F) )
{
start_F=0;
if (frame_Rx[0]==0x00)
{
chon=1;
}
if (frame_Rx[0]==0x01)
{
chon=2;
}
}
if(index_F>RX_BUFFER_SIZE)
{
frame_Rx[0]=frame_Rx[index_F-3];
frame_Rx[1]=frame_Rx[index_F-2];
frame_Rx[2]=frame_Rx[index_F-1];
index_F=3;
}
if(chon==1)
{
data1 = frame_Rx[1];
data2 = frame_Rx[2];
if( (data1==1)||(data2==2) )
{
led=0x00;
delay_ms(500);
}
}
if(chon==2)
{
data1 = frame_Rx[1];
data2 = frame_Rx[2];
if( (data1==3)||(data2==4) )
{
led=0xAA;
delay_ms(500);
}
}
}
void main(void)
{
while (1)
{
if(rx_counter!=0)
{
nhan_dulieu();
data1=data2=0;
}
if(rx_counter==0)
{
sent_frame();
UDR=0x00;
led=0xFF;
}
};
}
b. Slave 1 :
void sent_frame(void)
{
putchar('s');
putchar('t');
putchar(station);
putchar(1);
putchar(2);
}
void nhan(void)
{
ch=getchar();
if( (index_F>=1)&&(ch=='t')&&(frame_Rx[index_F-1]=='s') )
{
index_F=0;
start_F=1;
}
else
frame_Rx[index_F++]=ch;
if( (start_F)&&(index_F>len_F) )
{
if(frame_Rx[0]==station)
{
start_F=0;
received=1;
sent_frame();
}
}
if(index_F>RX_BUFFER_SIZE)
{
frame_Rx[0]=frame_Rx[index_F-3];
frame_Rx[1]=frame_Rx[index_F-2];
frame_Rx[2]=frame_Rx[index_F-1];
index_F=3;
}
if(received)
{
data1=frame_Rx[1];
data2=frame_Rx[2];
}
if(data1==1)
{
led=0x55;
delay_ms(500);
}
if(data2==2)
{
led=0xAB;
delay_ms(500);
}
}
void main(void)
{
while (1)
{
if(rx_counter)
{
nhan();
}
else
{
UDR=0x00;
received=data1=data2=0;
led=0xFF;
}
};
}
c. Slave 2 :
if(data1==3)
{
led=0xAB;
delay_ms(500);
}
if(data2==4)
{
led=0x55;
delay_ms(500);
}
Chương 2
PLC
(Điều khiển mô hình đèn giao thông)
2.1. Giới thiệu chung về PLC
2.1.1. Khái niệm PLC
PLC là viết tắt của tiếng Anh: Programmable Logic Controller là một bộ điều khiển logic lập trình được. PLC dùng để thay thế các mạch relay (rơ le) trong thực tế. PLC hoạt động theo phương thức quét các trạng thái trên đầu ra và đầu vào. Khi có sự thay đổi ở đầu vào thì đầu ra sẽ thay đổi theo. Ngôn ngữ lập trình của PLC có thể là Ladder hay State Logic. Hiện nay có nhiều hãng sản xuất ra PLC như Siemens, Allen-Bradley, Mitsubishi Electric, General Electric, Omron, Honeywell... Thiết bị này có các đầu vào logic, sau quá trình xử lý theo chương trình bên trong, nó cho đầu ra mức logic có quan hệ với các đầu vào. Các thiết bị PLC có ứng dụng rộng rãi và dần không thể thiếu được trong các dây truyền sản xuất hiện đại.
Chương trình của PLC thay đổi rất đơn giản và dễ dàng bằng một máy lập trình bằng tay hay một máy tính cá nhân có phần mềm trợ giúp. Khi đó nhân viên có thể vận hành và cũng có thể lập trình được. Sỡ dĩ PLC có vai trò quan trọng tới mức không thể thiếu được trong các dây truyền sản suất lớn chính là bởi tính mềm dẻo và tiện dụng của nó.
Tuy nhiên giá thành của bộ PLC khá cao nên nó không thích hợp cho những dây truyền sản xuất nhỏ.
Hình 2.1: Tổng quan bộ PLC
2.1.2. Lịch sử phát triển
1968: Richard Morley sáng tạo ý tưởng PLC cho General Motors.
1969: PLC đầu tiên (Allen Bradley và Bedford), được GM sử dụng trong công nghiệp ô-tô (128 DI/DO, 1kByte bộ nhớ).
1971: Ứng dụng PLC đầu tiên ngoài CN ô-tô.
1973: PLC “thông minh” với khả năng tính toán, điều khiển máy in, xử lý dữ liệu, giao diện màn hình.
1975: PLC với bộ điều khiển PID.
1976: Lần đầu tiên sử dụng trong hệ thống phân cấp điều khiển dây chuyền sản xuất.
1977: MP-based PLC.
1980: Các module vào/ra thông minh.
1981: PLC nối mạng, 16-bit PLC, các màn hình CRT màu.
1982: PLC với 8192 I/O (lớn nhất).
1992: Chuẩn IEC 61131 ra đời.
1996: Slot-PLC, Soft-PLC,...
2.1.3. Phạm vi ứng dụng
Lúc đầu chủ yếu trong các ngành công nghiệp chế tạo, điều khiển các quá trình rời rạc.
Ngày nay cả trong điều khiển trình tự và điều khiển quá trình liên tục, cạnh tranh với Compact Digital Controllers và các hệ DCS trong các ứng dụng “lai”.
Thiết bị thu thập dữ liệu trong các hệ SCADA.
2.1.4. Vai trò của PLC trong quá trình tự động hóa sản xuất
Như đã biết, nước ta hiện nay đang trong quá trình công nghiệp hóa, hiện đại hóa. Vì thế, tự động hóa sản xuất đóng vai trò quan trọng, tự động hóa giúp tăng năng suất, tăng độ chính xác và do đó tăng hiệu quả quá trình sản xuất. Để có thể thực hiện tự động hóa sản xuất, bên cạnh các máy móc cơ khí hay điện, các dây chuyền sản xuất…v.v, cũng cần thiết phải có các bộ điều khiển để điều khiển chúng. PLC là một trong các bộ điều khiển đáp ứng đươc yêu cầu đó.
2.1.5. Khả năng của PLC
PLC (Program Logical Controller) (hay bộ điều khiển Logic có thể lập trình được), là một thiết bị điều khiển đa năng được dùng rộng rãi trong công nghiệp để điều khiển hệ thống theo một chương trình được viết bởi người sử dụng. Nhờ họat động theo chương trình nên PLC có thể được ứng dụng để điều khiển nhiều thiết bị máy móc khác nhau. Chỉ cần thay đổi chương trình điều khiển và cách kết nối thì ta đã có thể dùng chính PLC đó để điều khiển thiết bị, hay máy móc khác. Cũng như vậy, nếu muốn tay đổi quy luật hoạt động của máy móc, thiết bị hay hệ thống sản xuất tự động, rất đơn giản, chỉ cần thay đổi chương trình điều khiển. Các đối tượng mà PLC có thể điều khiển được rất đa dạng, từ máy bơm, máy cắt, máy khoan, lò nhiệt…đến các hệ thống phức tạp như : băng tải, hệ thống chuyển mạch tự động (ATS), thang máy, dây chuyền sản xuất…v.v. PLC có thể điều khiển theo các quy luật khác nhau đối với các đối tượng của nó.
2.1.6. Ưu điểm của PLC
PLC có những ưu điểm mà các bộ điều khiển cổ điển dùng dây nối và Relay không thể nào sánh được :
- Lập trình dễ dàng, ngôn ngữ lập trình dễ học.
- Gọn nhẹ nên dễ dàng di chuyển, lắp đặt. Dễ bảo quản, sửachữa.
- Bộ nhớ có dung lượng lớn , nạp xóa dễ dàng, chứa được những chương trình phức tạp. Độ chính xác cao. Khả năng xử lý nhanh.
- Hoạt động tốt trong môi trường công nghiệp.
- Giao tiếp được với nhiều thiết bị khác, máy tính, mạng, các thiết bị điều khiển khác.
2.1.7. Lập trình cho PLC
Có thể lập trình cho PLC một các khá dễ dàng dực trên một tập lệnh mà nhà sản xuất cung cấp. Tập lệnh bao gồm nhiều lệnh, có thể cho phép người sử dụng kết hợp các lệnh này một cách logic để tạo nhiều chương trình điều khiển đa dạng, phức tạp. Ngoài các lệnh thông thường, nhà sản xuất còn cung cấp thêm các lệnh mở rộng (Expansion Instruction) làm phong phú thêm khả năng điều khiển PLC. Cùng với tập lệnh còn có nhiều cách lập trình cho PLC
Lập trình dạng phát biểu STL (Statement Lists) : Các lệnh được được biểu thị như các phát biểu, gần giống ngôn ngữ con người , nên cũng khá dễ hiểu. Tuy nhiên do không có dạng hình ảnh nên ta không thấy được cách liên kết các lệnh, do đó khó kiểm soát được chương trình. Để lập trình theo cách này, cần có một bộ lập trình bằng tay (Programing Console) hay một máy tính cá nhân với phần mềm hổ trợ. Programing console rất gọn nhẹ, thích hợp lập các chương trình nhỏ, đơn giản và thuận lợi cho việc thử nghiệm, kiểm tra tình trạng PLC tại hiện trường.
Hình 2.2: Ngôn ngữ STL
Lập trình theo ngôn ngữ LAD (Ladder Diagram) (còn gọi là ngôn ngữ hình thang) : là ngôn ngữ lập trình bằng đồ họa. Những thành phần cơ bản dùng trong LAD tương ứng với những thành phần cơ bản dùng trong bảng mạch rơle.
| |
| Low Level High Level Fill Valve |
|------[/]------|------[/]----------------------(OUT)---------|
| | |
| | |
| | |
| Fill Valve | |
|------[ ]------| |
| |
| |
Hình 2.3: Ngôn ngữ LAD
2.2. Cấu trúc phần cứng của bộ PLC S7-300
2.2.1. Các tín hiệu kết nối với PLC
Tín hiệu số : là các tín hiệu thuộc dạng hàm Boolean, dạng tín hiệu chỉ có trị là 0 hoặc 1. Đối với PLC Siemens : mức 0 tương ứng với 0V hoặc hở mạch, mức 1 tương ứng với 24V.
Tín hiệu tương tự : là tín hiệu liên tục từ 0-10V hoặc 4-20mA
2.2.2. Các modul của PLC S7-300
Modul CPU : là loại modul chứa vi xử lí, hệ điều hành, bộ nhớ, các bộ thời gian, bộ đếm, cổng truyền thông và cổng vào ra số ( cổng vào ra Onboard). Trong họ PLC S7-300 có nhiều loại CPU khác nhau : CPU312, CPU314...
Các modul mở rộng :
- Nguồn nuôi ( PS : Power Supply ): cung cấp nguồn cho CPU và các modul khác.
- SM ( Signal Module ) : Module tín hiệu vào ra, bao gồm :
+ DI : Digital Input
+ DO : Digital Output
+ DI/DO : Digital In/Output
+ AI : Analog Input
+ AO : Analog Output
+ AI/AO : Analog In/Output
- IM ( Interface Modul ) : Modul ghép nối.
- FM ( Function Modul ) : Modul điều khiển riêng : điều khiển Servo, ...
- CP ( Communication Modul ) : Modul truyền thông
Hình 2.4: Modul CPU
Hình 2.5: Các Modul của PLC
Hình 2.6: Mở rộng PLC
2.2.3. Kiểu dữ liệu và phân chia bộ nhớ
Kiểu Bool : dung lượng 1bit, có giá trị 0 hoặc 1
Kiểu Byte : gồm 8bits, được dùng để biểu diễn số nguyên dương trong khoảng từ 0-255.
Kiểu Word : gồm 2bytes, biểu diễn 1 số nguyên dương từ 0-65535.
Kiểu Int : gồm 2bytes, biểu diễn số nguyên trong khoảng từ -32678 đến 32677.
Kiểu DInt : gồm 4bytes, biểu diễn số nguyên từ 2147483648 đến 2147483647.
Kiểu S5T ( S5Time ) : khoảng thời gian được tính theo giờ/phút/giây/mili giây.
Kiểu TOD : biểu diễn giá trị thời gian tính theo năm/tháng/ngày.
Kiểu char : biểu diễn 1 hoặc nhiều kí tự ( nhiều nhất là 4 kí tự ).
2.2.4. Cấu trúc bộ nhớ của CPU
Vùng chứa chương trình ứng dụng, chia làm 3 miền :
- OB (Organization block ) : miền chứa chương trình tổ chức.
- FC (Function) : miền chứa chương trình con được tổ chức thành hàm có biến hình thức để thay đổi dữ liệu với chương trình đã gọi nó.
- FB (Function Block) : miền chứa chương trình con, được tổ chức thành hàm, có khả năng trao đổi dữ liệu với bất cứ một khối chương trình nào khác.
Vùng chứa tham số của hệ điều hành và chương trình ứng dụng
- I (Process image input) : miền bộ đệm các dữ liệu cổng vào số.
- Q (Process image output) : miền bộ đệm các dữ liệu cổng ra số.
- M : miền các biến cờ. Chương trình ứng dụng sử dụng vùng nhớ này để lưu trữ các tham số cần thiết và có thể truy nhập nó theo bit (M), byte (MB), từ (MW), từ kép (MD).
- T : miền nhớ phục vụ bộ thời gian (Timer), bao gồm việc lưu trữ giá trị thời gian đặt trước (PV : Preset value), giá trị đếm thời gian tức thời (CV : Current value).
- C : miền nhớ phục vụ bộ đếm (counter), bao gồm việc lưu trữ giá trị đặt trước, giá trị đếm tức thời, giá trị logic đầu ra của bộ đếm.
- PI : miền địa chỉ cổng vào của các modul tương tự.
- PQ : miền địa chỉ cổng ra cho các modul tương tự.
Vùng chứa các khối dữ liệu
- DB (Data Block): miền chứa các dữ liệu được tổ chức thành khối. Kích thước và số lượng khối do người sử dụng quy định, phù hợp với tuuwngf bài toán điều khiển.
- L (Local data Block) : miền dữ liệu địa phương, được các khối chương trình OB, FC, FB tổ chức, sử dụng cho các biến nháp tức thời và trao đổi dữ liệu của biến hình thức với những khối chương trình đã gọi nó. Nội dung của một số dữ liệu trong miền nhớ này sẽ bị xóa khi kết thúc chương trình tương ứng trong OB, FB, FC.
2.2.5. Vòng quét chương trình
PLC thực hiện chương trình theo chu trình lặp. Mỗi vòng lặp được gọi là vòng quét (scan). Mỗi vòng quét được bắt đầu bằng giai đoạn chuyển dữ liệu từ các cổng vào số tới vùng bộ đệm ảo I, tiếp theo là giai đoạn thực hiện chương trình.
Trong từng vòng quét chương trình được thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB1.
Sau giai đoạn thực hiện chương trình là giai đoạn chuyển các nội dung của bộ đệm ảo Q tới các cổng ra số.
Vòng quét được kết thúc bằng giai đoạn truyền thông nội bộ và kiểm lỗi.
Thời gian cần thiết để LPC thực hiện được một vòng quét được gọi là thời gian vòng quét ( Scan time ).
2.3. Điều khiển Đèn giao thông bằng PLC ( Sử dụng ngôn ngữ LAD)
2.3.1. Giới thiệu bộ Đèn giao thông
Đèn giao thông (còn được gọi tên khác là đèn tín hiệu giao thông hay đèn điều khiển giao thông) là một thiết bị được dùng để điều khiển giao thông ở những giao lộ có lượng phương tiện lưu thông lớn (thường là ngã ba, ngã tư đông xe qua lại). Đây là một thiết bị quan trọng không những an toàn cho các phương tiện mà còn giúp giảm ùn tắc giao thông vào giờ cao điểm. Nó được lắp ở tâm giao lộ hoặc trên vỉa hè. Đèn tín hiệu có thể hoạt động tự động hay cảnh sát giao thông điều khiển. Đèn giao thông có thể hoạt động hoàn toàn tự động hoặc cảnh sát giao thông điều khiển.
Hình 2.7: Mô hình đèn giao thông
Nguyên lý hoạt động :
Đèn tín hiệu thường hoạt động cả ngày, đến 0 giờ (12 giờ đêm) thì chuyển sang trạng thái nháy vàng hoặc ngừng hoạt động. Khi nháy vàng, xe cộ được đi và phải chú ý, người đi bộ được phép sang đư
Các file đính kèm theo tài liệu này:
- Điều khiển Đèn giao thông bằng PLC ( Sử dụng ngôn ngữ LAD).doc