BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP. HỒ CHÍ MINH KHOA CƠ KHÍ CÔNG NGHỆ Nguyễn Phước Thiên NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH GIAO TIẾP GIỮA PLC S7200 VỚI MÁY TÍNH Thành phố Hồ Chí Minh Tháng 08 năm 2007 i BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP. HỒ CHÍ MINH KHOA CƠ KHÍ CÔNG NGHỆ NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH GIAO TIẾP GIỮA PLC S7200 VỚI MÁY TÍNH Chuyên ngành Cơ khí Bảo quản và Chế biến Nông sản Thực phẩm Giáo viên hướng dẫn: Sinh viên thực hiện: TS Nguyễn Văn Hùng Nguyễn Phước Thiên Thành phố Hồ Chí Minh Tháng 08 năm 2007 ii MINISTRY OF EDUCATION AND TRAINING NÔNGLÂM UNIVERSITY, HOCHIMINH CITY Faculty of Engineering and Technology THE PROGRAM FOR COMMUNICATION BETWEEN PLC S7200 AND COMPUTER Major Engineering for Processing and Storage of Agricultural Products Advisors: Student: Nguyen Van Hung, Ph.D Nguyen Phuoc Thien HOCHIMINH CITY Agu 2007 iii LỜI CẢM TẠ Đầu tiên chúng con xin gởi ba mẹ lời kính trọng nhất Xin chân thành cảm ơn quý thầy cô Trường Đại Học Nông LâmTP.HCM, quý thầy cô Khoa Cơ Khí Công Nghệ đã dạy dỗ truyền thụ kiến thức cho chúng em trong suốt thời gian học ở trường. Xin gởi thầy Tiến Sĩ Nguyễn Văn Hùng lòng biết ơn chân thành và sâu sắc vì đã hướng dẫn giúp đỡ em nhiều mặt cần thiết để thực hiện đề tài này . Cuối cùng xin cảm ơn bạn bè đã luôn ở bên cạnh động viên, giúp đỡ trong suốt quá trình học tập và thực hiện đề tài này. Sinh viên thực hiện Nguyễn Phước Thiên iv TÓM TẮT LUẬN VĂN Luận văn này đã thực hiện chủ yếu phần giao tiếp máy tính với PLC S7200 điều khiển động cơ và các ngõ ra. Đặc biệt đề tài này cũng đề cập đến nhiều vấn đề mà nhiều nhà sản xuất quan tâm , đó là quản lý và điều khiển toàn bộ dây chuyền bằng máy tính. Để góp phần tạo nền tản cho việc học tập và nghiên cứu chúng tôi đã thực hiện đề tài “NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH GIAO TIẾP PLC S7200 VỚI MÁY TÍNH”. Nội dung chính của đề tài là viết giao diện mô phỏng điều khiển PLC S7200 điều khiển động cơ và các ngõ ra. Sinh viên thực hiện. v ABSTRACT The main content of this project communication between computer and PLC S7200,controlling motor and output led.This application can be used openning for automatic controlling the industrial lines. To develop the objectives,I have been done this project ”THE PROGRAM FOR COMMUNICATION BETWEEN PLC S7200 AND COMPUTER”. vi MỤC LỤC Trang Trang tựa i Cảm tạ iii Tóm tắt iv Mục lục vi CHƯƠNG 1. MỞ ĐẦU 1 Mục đích nội dung nghiên cứu 2 CHƯƠNG 2. TRA CỨU TÀI LIỆU 2.1 PLC S7200 3 2.1.1 Phần cứng PLC S7200 3 2.1.1.1 Chuẩn RS 232 35 2.1.1.2 Chuẩn RS 499, RS 423A 6 2.1.1.3 Chuẩn RS 422A 7 2.1.1.4 Chuẩn RS 485 8 2.1.2 Một số lệnh liên quan đến phần mềm 9 2.1.2.1 Các lệnh ngắt và xử lý ngắt 912 2.1.2.2 Các lệnh truyền thông nối tiếp 1213 2.1.2.3 Giới thiệu tập lệnh S7200 1420 2.2 Sơ lược về ngôn ngữ Delphi 2022 CHƯƠNG 3. PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN 23 CHƯƠNG 4 KẾT QUẢ VÀ THẢO LUẬN 24 4.1 Nghiên cứu PLC để thực hiện phần giao tiếp 24 4.1.1 Thanh ghi điều khiển đường truyền 25 4.1.2 Thanh ghi điều khiển Modem 26 4.1.3 Thanh ghi trạng thái đường dây 26 4.1.4Chân cắm của chuẩn RS 232 của PC 27 4.1.5 Mạch chuyển cổng PC RS 232 sang RS 485 28 4.1.6 Kết nối giữa máy tính với PLC 29 4.1.7 Sơ đồ nguyên lý 30 vii 4.2 Xây dựng phần mềm giao tiếp 31 4.2.1 Lưu đồ giải thuật gởi 1 byte 31 4.2.2 Lưu đồ giải thuật chương trình 32 4.2.3 Lưu đồ giải thuật điều khiển động cơ 33 4.3 Nội dung phần mềm 34 4.3.1Giải thuật viết cho giao diện 34 4.3.2 Các lệnh viết cho S7200 35 37 4.4 Chạy thử chương trình 38 4.4.1Mô phỏng điều khiển ngõ ra của PLC 38 4.4.2 Mô phỏng điều khiển động cơ 38 4.5 Khả năng ứng dụng điều khiển trên hệ thống sản xuất chế phẩm sinh học 39 CHƯƠNG 5 KẾT LUẬN VÀ ĐỀ NGHỊ 40 CHƯƠNG 6 TÀI LIỆU THAM KHẢO 41 CHƯƠNG 7 PHỤ LỤC 4254 1 Chương 1 MỞ ĐẦU Ngày nay, hầu hết các hệ thống điều khiển trong công nghiệp có khuynh hướng phát triển theo hướng tự động hóa. Điều này dễ thấy ở bất kỳ nhà máy lớn nào.Các hệ thống điều khiển tự động được ứng dụng rộng rải trong sản xuất và trong cuộc sống hằng ngày. Điều khiển máy trộn sinh học bằng PLC cũng không là một ngoại lệ. Bên cạnh đó , người ta thường sử dụng máy tính để có thể quản lý toàn hệ thống thiết bị trong nhà máy cũng như điều khiển và nối mạng.Từ đó, người vận hành có thể ngồi 1 chỗ nhưng vẫn có thể điều khiển nhiều nơi mà không cần phải trực tiếp tiếp xúc với máy.Vì vậy việc nghiên cứu vấn đề này là rất cần thiết. Luận văn này đã đề cập đến việc giao tiếp máy tính với PLC điều khiển động cơ và các ngõ ra. Đặc biệt đề tài này cũng đề cập đến nhiều vấn đề mà nhiều nhà sản xuất quan tâm , đó là quản lý và điều khiển toàn bộ dây chuyền bằng máy tính. Trên cơ sở phân tích, được sự chấp thuận của Ban chủ nhiệm Khoa Cơ khí – Công nghệ và sự hướng dẫn của thầy Tiến sĩ Nguyễn Văn Hùng, em tiến hành thực hiện đề tài “NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH GIAO TIẾP GIỮA PLC S7200 VỚI MÁY TÍNH “ Vì phạm vi đề tài tương đối rộng và mới, cộng với kiến thức về lập trình và PLC có giới hạn nhất định nên khó tránh khỏi những thiếu sót. Rất mong được sự đóng góp ý kiến quí báu của quý thầy cô và bạn bè để luận văn được hoàn thiện hơn và có thể ứng dụng trong thực tế. 2 MỤC ĐÍCH NỘI DUNG NGHIÊN CỨU Mục đích luận văn nhằm nghiên cứu xây dựng chương trình giao tiếp giữa PLC S7 200 với máy tính dựa trên ngôn ngữ delphi. Mở rộng khả năng ứng dụng để điều khiển hệ thống sản xuất chế phẩm sinh học. 3 Chương 2 TRA CỨU TÀI LIỆU 2.1 PLC S7200: 2.1.1 Phần cứng PLC S7200: Một hệ thống lập trình cơ bản phải gồm có hai phần: khối xử lí trung tâm (CPU: Central Processing Unit) và hệ thống giao tiếp vào ra (IO).Trong đó: Thiết bị đầu vào gồm có các thiết bị tạo ra tín hiệu điều khiển như nút nhấn, cảm biến công tắc hành trình. Input, Output các cổng nối phía đầu vào, ra của PLC hay cổng các modul mở rộng. Cơ cấu chấp hành: gồm các thiết bị điếu khiển như : chuông, đèn, công tắc, động cơ, van khí nén, heater, máy bơm, LED hiển thị…. Chương trình điều khiển: định ra qui luật thay đổi tín hiệu Output đầu ra theo tín hiệu Input đầu vào như mong muốn.các chương trình điều khiển được tạo ra bằng cách sử dụng bộ lập trình chuyên dùng cầm tay(Handhold programmer PG) hoặc chạy bằng phần mềm điều khiển trên máy vi tính sau đó được nạp vào PLC thông qua cổng nối giữa PLC và máy tính(hay PG). Có nhiều loại bộ nhớ để cho người sử dụng lựa chọn theo mục đích hay yêu cầu sử dụng: ROM (Read Only Memory): Bộ nhớ chỉ đọc không xoá dùng lưu trữ chương trình cố định, không thay đổi thường dùng cho nhà sản xuất PLC. RAM(Random Access Memory): Bộ nhớ truy xuất ngẫu nhiên dùng để lưu trữ dữ liệu vào chương trình cho người sử dụng. 2.1.1.1 Chuẩn RS 232: Chuẩn RS232 lần đầu tiên được giới thiệu vào năm 1962 do hiệp hội kỹ thuật điện tử EIA (Electronics industries Association) như là chuẩn giao tiếp truyền thông giữa máy tính và một thiết bị ngoại vi (modem, máy vẽ,mouse, máy tính khác…) Cổng giao tiếp RS232 là giao diện phổ biến rộng rãi nhất. người dùng máy tính PC còn gọi cổng này là COM 1, còn COM 2 để tự do cho các ứng dụng khách. giống như 4 cổng máy in, cổng nối tiếp RS232 được sử dụng một cách rất thuận tiện cho mục đích đo lường và điều khiển. Việc truyền dữ liệu qua RS232 được tiến hành theo cách nối tiếp, nghĩa là các bit dữ liệu được gửi đi nối tiếp nhau trên một đường truyền dẫn. Trước hết, loại tryền này có thể dùng cho những khoảng cách lớn hơn, bởi vì các khả năng gây nhiễu nhỏ đáng kể hơn là dùng cổng song song. Việc dùng cổng song song có một nhược điểm đáng kể là cáp truyền dùng quá nhiều sợi, và vì vậy rất đắt tiền. Hơn nữa tín hiệu nằm trong khoảng 0 – 5V tỏ ra không thích ứng với khoảng cách lớn. Cổng nối tiếp RS 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 nối điểm giữa hai máy cần trao đổi thông tin với nhau. Một thành phần thứ ba không thể tham gia vào cuộc trao đổi thông tin này. Bảng 2.1.1.1: Bảng sắp xếp chân của cống nối tiếp ở máy tính 9 chân 25 chân Chức năng 1 2 3 4 5 6 7 8 9 8 3 2 20 7 6 4 5 22 DCD_Data Carrier Detect (Lối vào) RxD_Receive Data (Lối vào) TxD_Transmit Data(Lối ra) DTR_Data Terminal Ready(Lối ra) GND_Ground(Nối đất) DSR_Data Set Ready (Lối vào) RTS_Request to Send(Lối ra) CTS_Clear to Send(Lối vào) RIRing Indicator Việc truyền dữ liệu xảy ra trên hai đường dẫn. Qua chân cắm qua TxD, máy tính gửi dữ liệu của nó đến các thiết bị khác.Trong khi đó dữ liệu mà máy tính nhận được, lại được dẫn đến chân nối 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ì vậy không phải trong mọi ứng dụng đều dùng đến. Các bit dữ liệu được gửi đi theo kiểu đảo ngược, nghĩa là các bit có giá trị “1” sẽ có mức điện áp LOW, các bit có giá trị “0” sẽ có mức điện áp HIGH. Mức tín hiệu nhận và truyền qua chân RxD và TxD thông thường nằm trong khoảng 12V đến +12V. 5 Ở trạng thái tĩnh điện đường dây vẫn có điện áp 12V. Mỗi bit khởi động (star bit) sẽ mở đầu việc truyền dữ liệu. tiếp sau đó là các bit riêng lẻ đến, trong đó các có giá trị thấp được gửi trước tiên. Con số của các bit dữ liệu thay đổi giữa 5 và 8. Ở cuối dòng dữ liệu còn có một bit dừng( stop bit) để đặt lại trạng thái lối ra (12V). Tốc độ Baud có giá trị thông thường là: 300, 600, 1200, 4800, 9600,19200 Baud. Ký hiệu Baud tương ứng với số bit truyền trong 1 giây ( bit per second_bps).Chẳng hạn như khi tốc độ Baud bằng 9600 có nghĩa là 9600 bit dữ liệu được truyền trong 1 giây. Vì mỗi bit dữ liệu có một bit bắt đầu và một bit được dùng gởi kèm theo, do đó khi truyền một byte dữ liệu đã có 10 bit được gởi đi. với tốc độ Baud thông thường, mỗi giây cho phép truyền truyền nhiều nhất từ 30 đến 1920 byte dữ liệu, vì vậy nhược điểm lớn nhất của cổng truyền nối tiếp là tốc độ truyền dữ liệu bị hạn chế. So sánh giữa TTL và RS232 ta thấy TTL sử dụng mức logic dương và 0,4V chống nhiễu. Trong khi RS232 sử dụng mức điện áp ±12V để đảm bảo truyền được trên đường dây dài. với khoảng chống nhiễu 12V cho phép tín hiệu đi qua môi trường nhiễu mạnh mà đối với TTL không thể có được. Một trong những yêu cầu quan trọng của RS232 là thời gian chuyển từ một mức logic này tớ một mức logic khác không vượt quá 4% thời gian một bit. Vì thế ở tốc độ 19200 Baud thời gian mức logic phải nhỏ hơn 0,0419200s. vấn đề này làm giới hạn chiều dài đường truyền. với tốc độ truyền 19200 Baud, ta có thể truyền xa nhất là 50 feet (15,24 m). Một trong những vấn đề quan trọng cần chú ý khi sử dụng RS232 là mạch thu phát không cân bằng (đơn cực). Điều này có ý nghĩa là tín hiệu vào ra được so với đất. Vì vậy nếu điện thế tại hai điểm đất của hai mạch thu phát không bằng nhau thì sẽ có dòng điện chay trên dây nối đất. Kết quả sẽ có áp rơi trên dây nối đất ( V=I.R) sẽ làm suy yếu tín hiệu logic. Nếu truyền tín hiệu đi xa, R sẽ tăng dần đến áp rơi trên đất sẽ lớn dần đến lúc tín hiệu logic sẽ rơi vào vùng không xác định và mạch thu sẽ không nhận đúng dữ liệu được truyền từ mạch phát. Chính sự không cân bằng trên mạch thu phát là một trong những nguyên nhân giới hạn đường truyền. 2.1.1.2 Chuẩn RS499, RS423A: Do chuẩn thông dụng RS232 có hạn chế như: Khi các mạch RS232 là không cân bằng, sự loại trừ nhiễu nhỏ hơn mức tối ưu. 6 Các điện áp RS232 quá cao đối với mật độ dòng điện của IC hiện nay. Trong nhiều ứng dụng, cần thiết phải có thêm các đường dây nối giữa các modem với các DTE để kiểm tra từ xa… Do vậy vào năm 1978 – 1979, EIA đưa ra hai chuẩn giao tiếp mới để khắc phục các nhược điểm trên của RS232 là RS499( cân bằng) và RS423 (không cân bằng). Sự lựa chọn giữa truyền cân bằng và không cân bằng được quyết định bởi tốc độ truyền tín hiệu. Khi tốc độ truyền vượt quá 20Kbps thì hầu hết các mạch sử dụng giao tiếp cân bằng. Với chuyển RS423A, tốc độ truyền có thể lên đến trên 20kbps. Khi tốc độ truyền lớn hơn Kbps thì người ta thường sử dụng đường truyền cân bằng. Ngược lại, ta sẽ được cho phép truyền không cân bằng. Với chuẩn RS499, tốc độ truyền có thể lên đến 100Kbps và khoảng cách đường truyền có thể lên đến 1km. Tiêu chuẩn này sử dụng cho các IC kích phát và thu MC3488 và MC3486. 7 2.1.1.3 Chuẩn RS422A.: Một cải tiến nữa của RS232 là chuẩn RS422A. Với chuẩn này, độ lợi được gia tăng và sử dụng việc truyền dữ liệu sai biệt( diffirential data) trên những đường truyền cân bằng.Một dữ liệu sai biệt yêu cầu hai dây, một cho dữ liệu không đảo (Moninverted) và một cho dữ liệu đảo (inverted). Dữ liệu được truyền trên đường dây cân bằng, thường là cặp dây xoắn với một trở ở đầu cuối. Một IC lái (driver) biến đổi các mức logic thông thường thành một cắp cắp tín hiệu sai biệt để truyền. Một bộ phận biếtn đổi tín hiệu sai biệt ngược lại thành cách mức logic. Dữ liệu nhận là phần khác nhau giữa dữ liệu không đảo và dữ liệu đảo. Chú ý rằng hết hoạt động với nguồn cung cấp +5V như các chip logic. Với chuẩn này, tốc độ truyền , khoảng cách truyền được cải thiện rất nhiều. Vùng điện áp cho mức logic của hai chuẩn RS422A và RS423A. Nhờ tính vi sai, RS422A có thể cho phép vùng chuyển tiếp nhỏ hơn so với RS232 là chỉ ±200mV. Điều này cho phéo tốc độ truyền cao hơn và khoảng cách truyền tăng lên. cụ thể là 100Kbps vởi khoảng cách truyền là 4000 feet(1.2km). 2.1.1.4 Chuẩn RS485: RS485 là một thể hệ cải tiến của RS422 và mở rộng số lượng ngoại vi giao tiếp. Nó cho phép kết nối truyền thông nhiều thiết bị theo cả hai hướng. RS422 và RS232 thì thích hợp cho truyền đơn giản, trong khi đó RS485 cho phép nhiều đâu thu trên một đường truyền halfduplex. Tốc độ truyền thì không giới hạn và được xác định bởi thời gian lên của xung, thường giới hạn ở 10Mbps. Một mạng sử dụng tiêu chuẩn RS485 cho phép 32 transmitterreceiver với khoảng cách tối đa là 1,2km. Bảng 2.1.1.4 : Bảng so sánh đặc tính giữa các chuẩn truyền EIA. Thông số RS232 RS422 RS423A RS485 Cable Length 15Km 1,2Km 1,2Km 1,2Km Baudrata 20Kbps 10Mbps12m 1Mbps120m 100 Kbps1,2Km 100Kbps9m 10Kbps90m 1kbps1,2Km 10Mbps12m 1Mbps120m 100Kbps1,2km Mode Không cân bằng Cân bằng vi sai Không cân bằng vi sai Cân bằng vi sai 8 Drive no. 1 1 1 32 Receive no. 1 10 10 32 Logic 0 +5V…+15V +2V…+5V +3.6V…+6V +1.5v…+5V Logic 1 5v…15v 2V…5V 3.6V…6V 1.5V…5V Community 2V 1.8V 3.4V 1.3V CableSignal 1 2 2 2 Methode Simplex Half – duplex Full Duplex Simplex Halfduplex Fullduplex Simplex Halfduplex Fullduplex Simplex Halfduplex Fullduplex Short circuit current 500mA 150mA 150mA 150mA Chuẩn RS—232 chỉ cho phép nối 2 thiết bị với nhau, muốn nối nhiều thiết bị hơn ta dùng chuẩn RS485. Muốn vậy ta phải có mạch chuyển đổi từ RS232 sang RS485. Nguyên tắc cơ bản là chuyển mức điện áp và kiều không cân bằng của RS232 sang mức điện áp và kiều cân bằng của RS485. Mức điện áp: RS232:9V≥logic 1,+9V≥logic 0 RS485 VaVb=5…1.5V≥logic1, VaVb=+1.5…+5V≥logic 0 Kiểu không cân bằng: điện áp so với đất. Kiểu cân bằng: điện áp vi sai giữa 2 dây. Có sự khác biệt cơ bản giữa 2 chuẩn trên là: Rs232 có phương pháp truyền thông là Fullduplex RS485 có phương pháp truyền thông là Halfduplex, nghĩa là tại một thời điểm chỉ có một trạm là phát và các trạm còn lại là thu. Như vậy ở một trạm khi phát thì phải cấm thu và ngược lại. Có hai phương pháp điều khiển việc thu phát: 1. Dùng tín hiệu RTS để cho phép thu phát 2. Dùng mạch phát hiện: 9 Bình thường khi chưa có tín hiệu phát TXD có mức là 1, lúc này cho phép phát sẽ tạo ra một xung có độ dài tối thiểu là thời tian phát một ký tự. Giả sử ứng với tốc độ 9600 Baud(1starbit,8ký tự, 1 bitstop) thì T=1.04ms. Phương pháp này đơn giản phẩn mềm nhưng có hạn chế là sau khi phát, muốn thu thì có thể đợi tới 1.04ms. 2.1.2 Một số lệnh liên quan đến phần mềm: 2.1.2.1 Các lệnh ngắt và xử lý ngắt: a) Ngắt và xử lý ngắt: Các chế độ ngắt cho phép thực hiện các quá trình xử lý tốc độ cao phản ứng kịp thời với các sự kiện bên ngoài.Nguyên tắc cơ bản của một chế độ ngắt cũng giống như lệnh gọi một chương trình con được chủ động bằng lệnh cònh chương trình xử lý ngắt bị gọi bị động bởi tín hiệu báo ngắt.Khi có tín hiệu báo ngắt hệ thống sẽ gọi chương trình con báo ngắt tương ứng với tín hiệu báo ngắt đó.Chương trình con xử lý ngắt có một nhãn riêng được đánh dấu ở đầu chương trình.Trước khi bị ngắt, thì hệ thống sẽ cất giữ nội dung ngăn xếp, nội dung thanh ghi AC và các bit nhớ đặc biệt vào tổ chức xếp hàng báo ngắt(khi có nhiều tín hiệu báo ngắt).Sau khi ngắt thực hiện xong việc xử lý ngắt thì nội dung ngăn xếp, nội dung thanh ghi AC và các bit nhớ đặc biệt được lưu giữ trước đó được lấy ra để xử lý tiếp. b) Thứ tự ưu tiên các tín hiệu báo ngắt: 1.Hai ngắt truyền thông nối tiếp(nhận và truyền) 2.Tám ngắt theo sườn lên hoặc xuống của các cổng I0.0 đến I0.3 3. Bảy ngắt bộ đếm tốc độ cao 4.Hai ngắt đầu ra truyền xung là PT00 và PT01 5.Hai ngắt thời gian Chú ý: tại một thời điểm chỉ có một chương trình xử lý ngắt được thực hiện.Trong khi thực hiện chương trình xử lý ngắt thì các tín hiệu báo ngắt phải chờ cho đến khi chương rình xử lý ngắt được thực hiện xong.Chiều dài tối đa của hàng ghi nhận tín hiệu báo ngắt chờ xử lý là 10 (CPU 212) và 24 (CPU 214).Khi số tín hiệu báo ngắt phải chờ lớn hơn độ dài tối đa của hàng ghi nhận tín hiệu báo ngắt thì bit báo tràn có giá trị logic 1. 10 Bảng 2.1.2.1b:Thứ tự của các bit báo tràn. Nhóm ưư tiên Ngắt truyền thông Ngắt HSC,PLS,vào ra Ngắt Timer Bit SM 0:không tràn 1:tràn SM4.0 SM4.1 SM4.2 Riêng đối với tín hiệu báo ngắt truyền thông, mặc dù chưa được xử lý, nhưng ký tự nhận được cùng với bit kiểm tra chẵn lẽ cho ký tự đó vẫn được ghi nhớ lại theo đúng thứ tự của tín hiệu báo ngắt. Khi viết 1 chương trình ngắt phải tuân thủ các quy tắc sau: + Càng ngắn càng tốt +Chương trình xử lý ngắt phải đặt sau chương trình chính + Không được sử dụng các lệnh DISI,ENI,CALL,FOR…NEXT và END trong chương trình xử lý ngắt. +Khi kết thúc chương trình xử lý ngắt thì phải có lệnh quay về không điều kiện. c) Mô tả ngắt: Bảng 2.1.2.1c: Các tín hiệu ngắt của CPU 222 Mô tả ngắt Số hiệu ngắt (kiểu) Tín hiệu ngắt nhạn dữ liệu truyền thông 8 Tín hiệu báo ngắt báo hoàn tất việc gửi dữ liệu 9 Ngắt theo sườn lên của I0.0 0 Ngắt theo sườn lên của I0.1 2 Ngắt theo sườn lên của I0.2 4 Ngắt theo sườn lên của I0.3 6 Ngắt theo sườn xuống của I0.0 1 Ngắt theo sườn xuống của I0.1 3 Ngắt theo sườn xuống của I0.2 5 Ngắt theo sườn xuống của I0.3 7 Ngắt theoHSC0 khi giá trị tức thời bằng giá trị đặt trước 12 11 Ngắt theoHSC1 khi giá trị tức thời bằng giá trị đặt trước 13 Ngắt theoHSC1 khi có tín hiệu báo đổi hướng bên ngoài 14 Ngắt theoHSC1 khi có tín hiệu reset bên ngoài 15 Ngắt theoHSC2 khi giá trị tức thời bằng giá trị đặt trước 16 Ngắt theoHSC2 khi giá trị tức thời bằng giá trị đặt trước 17 Ngắt theo HSC2 khi có tín hiệu reset bên ngoài 18 Ngắt theo PTO 0 báo hiệu hoàn tất việc đếm xung 19 Ngắt theo PTO 1 báo hiệu hoàn tất việc đếm xung 20 Ngắt theo thời gian 0 10 Ngắt theo thời gian 1 11 Chú ý: Nếu khai báo ngắt kiểu 12 ngắt HSC0 khi có giá trị tức thời bằng giá trị đặt trước(PVCV) thì hai kiểu ngắt 0 và ngắt 1 vô hiệu hoá.Cũng tương tự như vậy nếu khai báo sử dụng ngắt kiểu 0 hoặc kiểu 1 thì ngắt kiểu 12 bị vô hiệu hoá. d) Chức năng lệnh ngắt: Bảng 2.1.2.1d: Cú pháp sử dụng lệnh ngắt. Dạng lệnh Mô tả chức năng lệnh L A D Khai báo sử dụng một chế độ ngắt với kiểu được xác định bởi toán hạng Event.Chương trình xử lý ngắt tương ứng được xác định bởi INT,sau khi khai báo chế độ ngắt cũng được kích theo. STL ATCH INT EVEN L A D Lệnh này dùng để huỷ bỏ một chế độ ngắt mà kiểu của nó được xác định bởi toán hạng Event STL DTCH INT EVEN 12 L A D Lệnh khai báo chế độ toàn cục ngắt hoặc kích hoạt tất cả các chế độ ngắt đã bị huỷ bởi lệnh DISI, đặt sau ATCH STL ENI L A D Lệnh huỷ bỏ toàn bộ chế độ ngắt đã khai báo sử dụng trước đó,lệnh chỉ có tác dụng với các tín hiệu báo ngắt lên,nhưng các ngắt vẫn nằm trong hàng chờ. STL DISI L A D Lệnh kết thúc chương trình xử lý ngắt không điều kiện và bao giờ cũng nằm cuối chương trình xử lý ngắt. STL RETI 2.1.2.2 Các lệnh truyền thông nối tiếp: Sử dụng các lệnh truyền thông để trao đổi dữ liệu giữa PLC và máy tính cũng như các thiết bị lập trình hay thiết bị hiển thị. Bảng 2.1.2.2: Các lệnh truyền thông Dạng lệnh Mô tả chức năng lệnh L A D Truyền một chuổi byte dữ liệu từ bảng table với chiều dài nằm trong byte đầu của bảng ra port Toán hạng:TBL IB,MB,VB,SB,QB,VD PORT 0,1 STL XMT TABLE PORT 13 L A D Nhận một chuổi byte dữ liệu từ ngoài vào bảng table ở port Toán hạng:TBL IB.MB.VB.SB.QB.VD PORT 0,1 STL RCV TABLE PORT 2.1.2.3Giới thiệu về tập lệnh S7200: Bảng 2.1.2.3 Các lệnh PLC Dạng lệnh Mô tả chức năng lệnh L A D Tiếp điểm thường đóng sẽ đóng khi có giá trị logic bit bằng 0,và sẽ mở khi có giá trị logic bằng 1. STL LDN n Toán hạng:Bit I,Q,M,SM,T,C,V(n) L A D Tiếp điểm thường hở sẽ được đóng nếu giá trị logic bằng và sẽ hở nếu giá trị logic bằng 0. STL LD n Toán hạng : Bit I,Q,M,SM,T,C,V(n) L A D Tiếp điểm thường hở sẽ được đóng tức thời khi giá trị bit bằng 1 và sẽ mở tức thời nếu giá trị logic bằng 0. STL LDI n L A D Tiếp điểm đảo trạng thái của dòng cung cấp.Nếu dòng cung cấp có tiếp đểm đảo thì nó ngắt mạch,và ngược lại. STL NOT L A D Lệnh nhận biết trạng thái chuyển từ 0 lên 1 trong một chu kỳ quét.Khi chuyển từ 0 lên 1 thì sẽ cho thong mạch. 14 STL EU L A D Cuộn dây ở đầu ra sẽ được kích thích tức thời khi có dòng điều khiển đi qua. STL =n Toán hạng: Bit I,Q,M,SM,T,C,V(n) L A D Lệnh so sánh bằng sẽ làm cho tiếp điểm đóng khi IN1 bằng IN2(IN1,N2 kiểu byte Toánhạng: IN1,IN2:VB,IB,QB,B,SMB,AC,Const,T,C,AIW,VD ,AC STL LDB=IN1 IN2 L A D Lệnh END dung để kết thúc chương trình chính hiện hành có điều kiện STL END L A D Lệnh STOP dùng để dừng chương trình hiện hành và chuyển sang chế độ STOP STL STOP L A D Lệnh WDR dùng để khởi tạo lại đồng hồ quan sát. STL WDR L A D Lệnh nhảy thực hiện việc chuyển điều khiển đến nhãn n trong một chương trình. STL JMP Kn 15 L A D Lệnh trởvề chương trình đã gọi chương trình con. STL RET L A D Sao chép nội dung của byte IN sang byte OUT. Toán hạng: IN:VB,IB,QB,MB,SMB,SB,AC,Const,VD,AC. OUT: VB,IB,QB,MB,SMB,SB,AC,Const,VD,AC. STL MOVB IN OUT L A D Sao chép nội dung của Word IN sang Word OUT. Toánhạng: IN:VW,T,C,IW,QW,MW,SMW,SW,AC,Const,VD, AC. OUT:VW,T,C,IW,QW,MW,SMW,SW,AC,Const,V D,AC. STL MOVW IN OUT L A D Sao chép nội dung của Dword(Double Word)IN sang OUT. Toán hạng: IN:VD,ID,QD,MD,SD,SMD,HC,VD,AC,VB,I B,QB,MB,T,C,SB,Const. OUT:VD,ID,QD,MD,SD,SMD,AC,AC,VD. STL MOVD IN OUT 16 L A D Sao chép nội dung của Read(số thực) IN sang OUT. Toán hạng: IN:VD,ID,QD,MD,SD,SMD,AC,Const,VD,AC. OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL MOVR IN OUT L A D Lệnh cộng hai số nguyên 16 bit IN1 và IN2 kết quả là một số nguyên OUT 16 bit.Trong STL thì kết quả ghi vào IN1. Toán hạng: IN1,IN2:VW,T,C,IW,QW,MW,SMW,SW AC,AIW,Constan,VD,8AC. OUT:VW,T,C,IW,QW,MW,SMW,SW AC,VD,AC. STL +I IN1 IN2 L A D Lệnh cộng hai số nguyên 32 bit IN1 và IN2 kết quả là một số nguyên OUT 32 bit.Trong STL thì kết quả ghi vào IN1. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD .OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL +D IN1 IN2 L A D Lệnh cộng hai số thực 32 bit IN1 và IN2 kết quả là một số thực OUT 32 bit.Trong STL thì kết quả ghi vào IN1. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD 17 . OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL +R IN1 IN2 L A D Lệnh trừ hai số nguyên 16 bit IN1 và IN2 kết quả là một số nguyên OUT 16 bit.Trong STL thì kết quả ghi vào IN1. Toán hạng: IN1,IN2:VW,T,C,IW,QW,MW,SMW,SW AC,AIW,Constan,VD,8AC. OUT:VW,T,C,IW,QW,MW,SMW,SW STL I IN1 IN2 AC,VD,AC. L A D Lệnh trừ hai số nguyên 32 bit IN1 và IN2 kết quả là một số nguyên OUT 32 bit.Trong STL thì kết quả ghi vào IN1. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD . STL D IN1 IN2 OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. L A D Lệnh trừ hai số thực 32 bit IN1 và IN2 kết quả là một số thực OUT 32 bit.Trong STL thì kết quả ghi vào IN1. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL R IN1 IN2 L A D Lệnh nhân hai số nguyên 16 bit IN1 và IN2 kết quả 32 bit ghi vào từ kép 32 bit OUT.Trong STL thì kết quả ghi vào IN2. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD 18 . OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL MUL IN1 IN2 L A D Lệnh nhân hai số thực 32 bit IN1 và IN2 kết quả 32 bit ghi vào từ kép 32 bit OUT.Trong STL thì kết quả ghi vào IN2. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD .OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL R IN1 IN2 L A D Lệnh chia hai số nguyên 16 bit IN1 và IN2 kết quả 32 bit ghi vào từ kép 32 bit OUT.Trong STL thì kết quả ghi vào IN2. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD .OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL DIV IN1 IN2 L A D Lệnh chia hai số thực 32 bit IN1 và IN2 kết quả 32 bit ghi vào từ kép 32 bit OUT.Trong STL thì kết quả ghi vào IN2. Toán hạng: IN1,IN2:VD,ID,QD,MD,SMD,SD,AC,HC,AC,VD OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL R IN1 IN2 L A D Lệnh tăng giá trị Bit IN lên một đơn vị kết quả ghi vào OUT.Trong STL kết quả ghi vào IN luôn. Toán hạng: IN:VB,IB,QB,MB,SMB,SB,AC,Const,V,AC. OUT:VB,IB,QB,MB,SMB,SB,AC,AC,VD,AC. STL INCB IN 19 L A D Lệnh tăng giá trị Word IN lên một đơn vị kết quả ghi vào OUT.Trong STL kết quả ghi vào IN luôn. Toán hạng:IN:VW,T,C,IW,QW,MW,SMW,SW AC,AIW,Constan,VD,AC. OUT:VW,T,C,IW,QW,MW,SMW,SW AC,VD,AC. STL INCW IN L A D Lệnh tăng giá trị Double word IN lên một đơn vị kết quả ghi vào OUT.Trong STL kết quả ghi vào IN luôn. Toán hạng: IN:VD,ID,QD,MD,SMD,SD,AC,HC,Const,VD,A C. OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL INCD IN L A D Lệnh giảm giá trị Bit IN lên một đơn vị kết quả ghi vào OUT.Trong STL kết quả ghi vào IN luôn. Toán hạng: IN:VB,IB,QB,MB,SMB,SB,AC,Const,V,AC. OUT:VB,IB,QB,MB,SMB,SB,AC,AC,VD,AC. STL DECB IN L A D Lệnh giảm giá trị Word IN lên một đơn vị kết quả ghi vào OUT.Trong STL kết quả ghi vào IN luôn. Toán hạng:IN:VW,T,C,IW,QW,MW,SMW,SW AC,AIW,Constan,VD,AC. OUT:VW,T,C,IW,QW,MW,SMW,SW STL DECW IN AC,VD,AC. L A D Lệnh giảm giá trị Double word IN lên một đơn vị kết quả ghi vào OUT.Trong STL kết quả ghi vào IN luôn. Toán hạng: IN:VD,ID,QD,MD,SMD,SD,AC,HC,Const,VD,A C. 20 OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL DECD IN L A D Lệnh thực hiện việc lấy căn bậc hai của một số IN kết quả ghi vào số OUT 32 bit. Toán hạng: IN:VD,ID,QD,MD,SMD,SD,AC,HC,Const,VD,A C. OUT:VD,ID,QD,MD,SMD,SD,AC,AC,VD. STL SQRT IN OUT 2.2 Sơ lược về ngôn ngữ Delphi: Cài chương trình Delphi giống như các chương trình khác bằng file setup rồi chọn các thuộc tính cho đến khi kết thúc. Khởi động Delphi:Màn hình sau khi khởi động xong gồm có 4 thành phần:thành phần menu như hình 2.2a, thành phần thuộc tính và sự kiện như hình 2.2b, thành phần form mặc nhiên hình 2.2c và thành phần unit chứa lệnh như hình 2.2d Hình 2.2a Thành phần menu. 21 Hình 2.2b:Thành phần thuộc tính và sự kiện Hình 2.2c: Thành phần form. 22 Hình 2.2d: Thành phần biên soạn lệnh. Các thành phần của delphiđó chính là các công cụ để xây dựng chương trình. Các công cụ component bao gồm: .Standard,Addition,Win32,System,Internet,Data Access,Data controls,Dialog,…mỗi trang chứa các đối tượng được phân loại theo chức năng. .Công cụ TnN_Rs232_PortDriver1ReceiveData:dùng để truyền nhận dữ liệu giữa máy tính và PLC. Hình 2.2e: TnN_Rs232_PortDriver1ReceiveData 23 Chương 3 PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN 3.1 Phương pháp nghiên cứu: Cơ sở nghiên cứu của đề tài dựa trên cấu trúc phần cứng của PLC S7200 và ngôn ngữ lập trình delphi. Dùng truyền thông free port giao tiếp giữa máy vi tính và PLC 3.2Phương tiện thực hiện đề tài: Máy vi tính Bộ mô phỏng PLC S7200 Động cơ DC 24V Bộ kết nối RS 232RS485. 24 Chương 4 KẾT QUẢ VÀ THẢO LUẬN 4.1 Nghiên cứu PLC S7200 để thực hiện phần giao tiếp: Khối điền khiển trung tâm(CPU: Central Processing Unit) gồm ba phần: bộ xử lý, hệ thống bộ nhớ và hệ thống nguồn cung cấp. ` Hình 4.1.1: Sơ đồ tổng quát khối CPU 4.1.1 Thanh ghi điều khiển đường truyền (line control register): Bit cao của thanh ghi này gọi là bit chốt truy xuất hệ số chia.Nếu bit này được đặt lên 1 thì giá trị ở thanh ghi cơ sở +1 sẽ được truy xuất làm byte cao của thanh ghi hệ số chia tốc độ truyền.Nếu bit này được xóa về 0 thì thanh ghi cơ sở sẽ thành thanh ghi đệm thu phát. Bảng 4.1.1 :Thanh ghi điều khiển đường truyền 7 6 5 4 3 2 1 0 Bit Nội dung Bit 0 Bit 1 00: 5 bit data ; 01: 6 bit data 10: 7 bit data ; 11: 8 bit data Bit 2 0: 1 bit stop Processor Memory Power Supply 25 1: 1,5 hay 2 bit stop Bit 3 0: không kiểm tra parity 1: kiểm tra parity Bit 4 1:kiểm tra parity chẵn 0:kiểm tra parity lẻ Bit 5 1: nếu bit 4=1 0: nếu bit 4=0 Bit 6 Cho phép cấm đường truyền nối tiếp 1:ngõ ra bị xóa trắng 0: cấm Bit 7 1: chọn hệ số chia 0: bộ đệm thu phát . 4.1.2 Thanh ghi điều khiển Modem: Thanh ghi điều khiển MODEM dùng để đặt giao thức bắt tay khi sự truyền thông sử dụng MODEM. Bảng 4.1.1.2: Thanh ghi điều khiển MODEM 7 6 5 4 3 2 1 0 Bit Nội dung Bit 0 Data terminal ready 1: DTR active, 0: DTR inactive Bit 1 Request to send 26 1: RTS active,0 : RTS inactive Bit 2 Output 1(spare signal) 1: OUT 1:active , 0:OUT 1 inactive Bit 3 Output 2 ( interrupt enable signal) 1: Communication interrupt active 0: Communicaton interrupt inactive Bit 4 Loopback feature 1: Transmitter output looped back to receiver register 0:Normal operation Bit 5,6,7 000 4.1.3.Thanh ghi trạng thái đường dây (Line status register): Báo cho máy tính biết thông tin trạng thái của dữ liệu truyền đi. Bảng 4.1.3 : Thanh ghi trạng thái đường truyền 7 6 5 4 3 2 1 0 Bit Nội dung Bit 0 1: Có dữ liệu trong bộ đệm nhận Bit 1 1: Overrun error:dữ liệu bị chồng Bit 2 1:Sai paraty Bit 3 1: Framing error ( bit stop không hợp lệ) Bit 4 1: Báo ngắt đường truyền trống Bit 5 1: Thanh ghi phát trống Bit 6 1:Thanh ghi dịch và thanh ghi phát trống 0: Thanh ghi dịch còn chứa dữ liệu Bit 7 0 4.1.4 Chân cắm của chuẩn RS232 của PC. Có hai loại đầu cắm DB25 và DB9. Ở PC đầu DB25 và DB9 đều là đầu cắm đực (phân biệt với cổng máy in LPT là đầu cái) . 27 Hình 4.1.4 Hình dáng cổng COM ở PC Khung truyền (hay SDU) trong truyền nối tiếp không đồng bộ. Một khung truyền bao gồm: 1 bit start: luôn ở mức logic thấp. 1 hoặc 1,5 đến 2 bit stop: luôn ở mức logic cao. 1 bit chẵn lẻ. 5,6,7 hoặc 8 bit số liệu. 4.1.5 Mạch chuyển cổng PCRS 232 sang RS 485: Hình 4.1.5a: Sơ đồ mạch của bộ chuyển RS 232RS 485 28 Hình 4.1.5b : RS 232RS 485 cổng giao tiếp giữa máy tính và PLC 4.1.6 Kết nối giữa máy tính với PLC Các giao thức dựa trên cơ sở kế nối hệ thống mở (OSI),các giao thức này bất đồng bộ,cơ sở là chuẩn a bit khởi đầu,8 bit dữ liệu,parity chẵn,và 1 bit stop. Hình 4.1.6a: Kết nối máy vi tính với PLC 29 Hình 4.1.6b:Chọn chuẩn PCPPI cable(PPI) Hình 4.1.6c: Chọn tốc độ truyền. 30 4.1.7 Sơ đồ nguyên lý : Hình 4.1.7 Sơ đồ nguyên lý Dữ liệu gởi được nhập từ bàn phím ,chương trình trên máy sẽ xử lý dữ liệu và gởi tới cổng Com.PLC nhận dữ liệu từ cổng Com sẽ xử lý dữ liệu nhận được.Sau đó tuỳ vào dữ liệu khác nhau mà PLC sẽ hiện thị ra các ngõ ra của Led hoặc điều khiển động cơ.PLC cũng gởi 1 dữ liệu trả về cổng Com để máy tính nhận và hiển thị trên màn hình những gì mà ở PLC điều khiển. 4.2 Xây dựng phần mềm giao tiếp : Để nghiên cứu giao tiếp giữa máy tính và PLC ta phải gửi, nhận dữ liệu từ máy tính đến PLC.Từ đó PLC nhận các mã lệnh do máy vi tính gửi xuống PLC mà thực hiện các công việc điều khiển theo các lưu đồ. Dữ liệu cần gởi Máy tính Cổng Com PLC Led hiển thị Động cơ Màn Hình 31 4.2.1 Lưu đồ giải thuật gửi 1 byte: Hình 4.2.1:Lưu đồ giải thuật chương trình gửi một byte dữ liệu. Bắt đầu Gửi 1 byte Port 0 PLC Ngõ ra Kết thúc No Yes 32 4.2.2 Lưu đồ giải thuật chương trình: Hình 4.2.2 Sơ đồ giải thuật gởi dữ liệu. Bắt đầu Nhập dữ liệu điều khiển Port 0 PLC Ngõ ra của PLC Kết thúc Yes No 33 4.2.3 Sơ đồ giải thuật điều khiển động cơ: Hình 4.2.3 Sơ đồ giải thuật điều khiển động cơ Bắt đầu Mã điều khiển Động cơ quay chiều thuận So sánh Động cơ quay chiều nghịch Dừng động cơ Kết thúc 1 3 0 34 4.3 Nội dung phần mềm: Hình 4.3 : Giao diện chương trình 4.3.1Giải thuật viết cho giao diện: begin y:= 255; C:=0; Cho nội dung của textbox2 và textbox4 rỗng edit4.Text:= ; edit2.Text:= ; Chuyển đổi dữ liệu kiểu chuỗi thành kiểu số nguyên x:= strtointdef(edit1.text,01); Gởi dữ liệu đến Port 0 com.SendByte(x); com.SendByte(64); Đọc dữ liệu trong 5 lần repeat 35 com.ReadByte(y); Đọc dữ liệu từ Port 0 edit4.Text:=edit4.Text+inttostr(y); C:= c+1; UNTIL (C=5) OR (Y255); com.ReadByte(y) Gán dữ liệu cho text box 2 edit2.Text:= inttostr(y); 4.3.2 Các lệnh viết cho S7200: Chọn kiểu kết nối truyền thông freeport,tốc độ truyền là 9600,8 bit dữ liệu và không kiểm tra tính chẵn lẻ. Gán giá trị ban đầu cho byte điều khiển,dò tìm ký tự cuối cùng Gán ký tự cuối cùng sang mã hexa. 36 Thời gian nghỉ mỗi lần truyền là 5ms Gán ký tự truyền tối đa là 10 ký tự Khai báo sử dụng ngắt nhận Khai báo sử dụng ngắt truyền. 37 Dữ liệu nhận được gắn vào bắt đầu từ ô nhớ VB100. Khi PLC nhận dữ liệu từ máy tính xong thì sau 10 ms dữ liệu sẽ được trả về bộ đệm. Dữ liệu được lấy từ ô nhớ VB 100 được truyền lên bộ đệm của Port 0. 38 4.4 Chạy thử chương trình: 4.4.1 Mô phỏng điều khiển ngõ ra của PLC: Hình 4.4.1 Gởi dữ liệu từ 1 đến 4. 4.4.2 Mô phỏng điều khiển động cơ: Điều khiển động cơ quay theo chiều thuận:Các hình tròn sẽ chạy theo chiều kim đồng hồ tượng trưng cho động cơ quay cùng chiều kim đồng hồ. Hình 4.4.2a Động cơ quay cùng chiều kim đồng hồ Điều khiển động cơ theo chiều nghịch: các hình tròn sẽ chạy ngược chiều kim đồng hồ. 39 Hình 4.4.2b Động cơ quay ngược chiều kim đồng hồ 4.5 Khả năng ứng dụng điều khiển trên hệ thống sản xuất chế phẩm sinh học: Điều khiển trực tiếp bằng máy vi tính, theo dõi động cơ của hệ thống đang hoạt động hay không. Điều khiển động cơ cánh khuấy 5, có thể đảo chiều động cơ. Đóng mở động cơ của máy nén 7. Đóng mở động cơ máy bơm nước 3. 1 2 4 5 3 6 7 ON OFF 500L Hình 4.5: Dây chuyền lên men và sấy chế phẩm sinh học (Nguồn: Trần Ngọc Vũ ,2007) 40 Chương 5 KẾT LUẬNĐỀ NGHỊ 5.1 Kết luận:Từ mục đích của đề tài là có phần mềm riêng giao tiếp với PLC để điều khiển các hệ thống đặc biệt như hệ thống sản xuất chế phẩm sinh học, đề tài đã thực hiện được: Xây dựng được phần mềm giao tiếp. Đã thử nghiệm mô phỏng và cho thấy có thể ứng dụng trên các hệ thống sản xuất thực tế. 5.2 Đề nghị: Tiếp tục nghiên cứu phát triển đề tài ứng dụng điều khiển hệ thống máy chế phẩm sinh học trong thực tế. 41 Chương 6 TÀI LIỆU THAM KHẢO 1. Ts Nguyễn Tấn Dũng và Tăng Văn Mùi, 2003.Điều khiển logic lập trình.Nhà xuất bản Đà Nẵng. 2. Vũ Văn Hà và Nguyễn Doãn Phước,2006.Tự động hóa với Simatic S7300.Nhà xuất bản khoa học kỹ thuật. 3. Hoàng Đức Hải,2001.Giáo trình lý thuyết và bài tập Borland Delphi.Nhà xuất bản lao động và xã hội. 4. Ts.Nguyễn Ngọc Phương,2005.Hướng dẫn thiết kế mạch và lập trình PLC.Nhà xuất bản Đà Nẵng. 5. Nguyễn Đình Phú, 2001.Giao tiếp máy tính.Trường ĐH SPKT 6. Ngô Biên Tập, 2001.Lập trình ghép nối máy tính trong windows.Nhà xuất bản khoa học và kỹ thuật. 7.Trần Ngọc Vũ, 2007.Dây chuyền lên men và sấy chế phẩm sinh học.Luận văn tốt nghiệp Kỹ Sư Cơ Khí, Đại Học Nông Lâm, Tp HCM, Việt Nam. 42 Chương 7 PHỤ LỤC Chương trình cho giao diện: unit bai1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, TnNDrv32; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit4: TEdit; com: TTnN_Rs232_PortDriver; Shape1: TShape; Shape2: TShape; Shape3: TShape; Shape4: TShape; Shape5: TShape; Shape6: TShape; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Button3: TButton; Label9: TLabel; Label10: TLabel; Shape7: TShape; Shape8: TShape; Shape9: TShape; Shape10: TShape; Timer1: TTimer; Button4: TButton; Button5: TButton; Label11: TLabel; Label12: TLabel; Shape11: TShape; Button6: TButton; Button7: TButton; Label13: TLabel; Button8: TButton; Button9: TButton; Label14: TLabel; Shape12: TShape; 43 procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure xoacacshape(Sender:TObject); procedure so1(Sender:TObject); procedure so2(Sender:TObject); procedure so3(Sender:TObject); procedure so4(Sender:TObject); procedure so5(Sender:TObject); procedure so6(Sender:TObject); procedure so7(Sender:TObject); procedure so8(Sender:TObject); procedure so9(Sender:TObject); procedure so10(Sender:TObject); procedure so11(Sender:TObject); procedure so12(Sender:TObject); procedure so13(Sender:TObject); procedure so14(Sender:TObject); procedure so15(Sender:TObject); procedure so16(Sender:TObject); procedure so17(Sender:TObject); procedure so18(Sender:TObject); procedure so19(Sender:TObject); procedure so20(Sender:TObject); procedure so21(Sender:TObject); procedure so22(Sender:TObject); procedure so23(Sender:TObject); procedure so24(Sender:TObject); procedure so25(Sender:TObject); procedure so26(Sender:TObject); procedure so27(Sender:TObject); procedure so28(Sender:TObject); procedure so29(Sender:TObject); procedure so30(Sender:TObject); procedure so31(Sender:TObject); procedure so32(Sender:TObject); procedure so33(Sender:TObject); procedure so34(Sender:TObject); procedure so35(Sender:TObject); procedure so36(Sender:TObject); procedure so37(Sender:TObject); procedure so38(Sender:TObject); procedure so39(Sender:TObject); procedure so40(Sender:TObject); procedure so41(Sender:TObject); procedure so42(Sender:TObject); procedure so43(Sender:TObject); procedure so44(Sender:TObject); procedure so45(Sender:TObject); procedure so46(Sender:TObject); procedure so47(Sender:TObject); procedure so48(Sender:TObject); procedure so49(Sender:TObject); procedure so50(Sender:TObject); procedure so51(Sender:TObject); procedure so52(Sender:TObject); procedure so53(Sender:TObject); procedure so54(Sender:TObject); 44 procedure so55(Sender:TObject); procedure so56(Sender:TObject); procedure so57(Sender:TObject); procedure so58(Sender:TObject); procedure so59(Sender:TObject); procedure so60(Sender:TObject); procedure so61(Sender:TObject); procedure so62(Sender:TObject); procedure so63(Sender:TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Dongco(Sender: TObject); procedure Dongco1(Sender: TObject); procedure Dongco2(Sender: TObject); procedure Dongco3(Sender: TObject); procedure Dongco4(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; y,y1,y2,y3,y4,y5,Y6,Y7,Y8,Y9,Y10:by te; tt:boolean; DEM:byte; lenxuong:byte; implementation {R .DFM} procedure TForm1.Button1Click(Sender: TObject); var x,c:byte; k:boolean; z:integer; begin 45 y:= 255;y1:= 255;y2:= 255;y3:= 255;y4:= 255;y5:= 255; C:=0; edit4.Text:=; edit2.Text:= ; x:= strtointdef(edit1.text,01); com.SendByte(X); com.SendByte(X+1); com.SendByte(X+2); com.SendByte(X+3); com.SendByte(64); SHOWMESSAGE(XONG); repeat com.ReadByte(y); edit4.Text:=edit4.Text+inttostr(y); label7.Caption:=inttostr(y); C:= c+1; UNTIL (C=5) OR (Y255); com.ReadByte(y1); com.ReadByte(y2); com.ReadByte(y3); com.ReadByte(y4); com.ReadByte(y5); edit2.Text:= inttostr(y)+ +inttostr(y1) ++ inttostr(y2) ++inttostr(y3)++inttostr(y4); chuong trinh hienthi led z:=strtoint(edit1.text); xoacacshape(Sender); case x of 0: xoacacshape(Sender); 1: so1(sender); 2: so2(sender); 3: so3(sender); 4: so4(sender); 5: so5(sender); 6: so6(sender); 7: so7(sender); 8: so8(sender); 9: so9(sender); 10: so10(sender); 11: so11(sender); 12: so12(sender); 13: so13(sender); 14: so14(sender); 15: so15(sender); 16: so16(sender); 46 17: so17(sender); 18: so18(sender); 19: so19(sender); 20: so20(sender); 21: so21(sender); 22: so22(sender); 23: so23(sender); 24: so24(sender); 25: so25(sender); 26: so26(sender); 27: so27(sender); 28: so28(sender); 29: so29(sender); 30: so30(sender); 31: so31(sender); 32: so32(sender); 33: so33(sender); 34: so34(sender); 35: so35(sender); 36: so36(sender); 37: so37(sender); 38: so38(sender); 39: so39(sender); 40: so40(sender); 41: so41(sender); 42: so42(sender); 43: so43(sender); 44: so44(sender); 45: so45(sender); 46: so46(sender); 47: so47(sender); 48: so48(sender); 49: so49(sender); 50: so50(sender); 51: so51(sender); 52: so52(sender); 53: so53(sender); 54: so54(sender); 55: so55(sender); 56: so56(sender); 57: so57(sender); 58: so58(sender); 59: so59(sender); 60: so60(sender); 61: so61(sender); 62: so62(sender); 63: so63(sender); else showmessage(Ban hay nhap gia tri