Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
1,01 MB
Nội dung
Tập lệnh S7-200 NOVAS Tech Co.,Ltd 384 Dien Bien Phu St, Danang Tel: 0511.736.909 Fax: 0511.736.789 Email: novas@vnn.vn GIÁO TRÌNH TẬP LỆNH PLC S7-200 Bộ tài liệu giảng dạy S7-200 NOVAS bao gồm: Giáo trình lý thuyết S7-200 Giáo trình tập lệnh S7-200 Giáo trình tập S7-200 Hướng dẫn sử dụng NOVAS Training Kit S7-200 System Manual CD phần mềm Step7-MicroWin v4.0 NOVAS mong nhận góp ý từ bạn đọc để giáo trình hoàn thiện Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 MỤC LỤC Lệnh logic với bit 1.1 Contact 1.1.1 Công tắc 1.1.2 Công tắc tức khắc 1.1.3 Lệnh đảo bit, lệnh sườn 1.2 Coil 1.2.1 Lệnh 1.2.2 Lệnh tức khắc 1.2.3 Lệnh Set, Reset 1.2.4 Lệnh Set, Reset Immediat 1.2.5 Lệnh không làm Lệnh so sánh Lệnh chuyển đổi Lệnh định thời 11 Lệnh đếm 13 Lệnh dịch chuyển ô nhớ 15 Lệnh với Bảng 16 7.1 7.2 7.3 8.1 8.2 8.3 Lệnh thêm vào bảng 16 Lệnh Memory Fill 17 Lệnh tìm kiếm bảng 17 Lệnh toán số học 19 Cộng, Trừ, Nhân, Chia số nguyên, số thực 19 Lệnh tăng giảm đơn vị 22 Các lệnh hàm số học 22 Lệnh vòng lặp PID 22 10 Lệnh phép toán logic 29 10.1 10.2 11 11.1 11.2 11.3 11.4 12 12.1 12.2 12.3 12.4 12.5 Lệnh đảo byte, word, doubleword 29 Lệnh AND, OR, XOR 30 Lệnh dịch quay 30 Dịch trái hay phải 30 Quay trái hay phải 31 Lệnh dịch ghi bit (Shift Register Bit): 32 Lệnh SWAP 33 Các lệnh điều khiển chương trình 33 END có điều kiện 33 STOP 33 Lệnh Watchdog Reset 34 Lệnh nhảy 34 Lệnh SCR 35 13 Lệnh chương trình 36 14 Lệnh ngắt 38 Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Một số qui định tra cứu lệnh sử dụng lệnh: - Trên phần tên lệnh nhóm lệnh - Tiếp theo cú pháp lệnh, LAD, FBD STL - Dưới loại CPU S7-200 cho phép sử dụng lệnh, lưu ý bao gồm 03 loại CPU mới: 221, 222 224 Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 - Bên cạnh phần mô tả hoạt động lệnh Các trường hợp lỗi trường hợp gây lỗi khiến đầu ENO = 0, bình thường lệnh thực ENO = - Các bit đặc biệt vùng SM có giá trị thay đổi tùy theo kết thực lệnh - Bảng toán hạng thông số hợp lệ lệnh - Sau ký hiệu gõ lệnh STEP 7: o Trong LAD: -> nghĩa nối tiếp lệnh khác (nhưng không bắt buộc) o Trong LAD: ->> nghĩa bắt buộc phải nối tiếp lệnh khác o Tên biến nằm ngoặc kép (ví dụ “var”) biến toàn cục o Tên biến có ký hiệu # đằng trước biến cục o Ký hiệu ? hay ???? nghĩa yêu cầu toán hạng o Ký hiệu > yêu cầu toán hạng nối lệnh khác o Ký hiệu >I cho biết đầu ENO o Ký tự % trước tên biến nghĩa biến trực tiếp IEC o Trong FBD, dấu tròn nhỏ đầu vào đánh dấu đảo (như điện tử); gạch dọc ngắn (|) đầu vào đánh dấu giá trị tức khắc (đầu vào trực tiếp) Lệnh logic với bit 1.1 Contact 1.1.1 Công tắc Công tắc thường mở (Normally Open, viết tắt NO) công tắc thường đóng (Normally Closed, viết tắt NC) Đối với PLC, công tắc đại diện cho trạng thái bit nhớ liệu hay vùng ảnh đầu vào, Công tắc thường mở đóng (ON - nghĩa cho dòng điện qua) bit công tắc thường đóng đóng (ON) bit Trong LAD, lệnh biểu diễn công tắc thường mở thường đóng Trong FBD, công tắc thường mở biểu diễn đầu vào khối chức AND OR Công tắc thường đóng thêm dấu đảo (vòng tròn nhỏ) đầu vào tương ứng Trong STL, công tắc thường mở sử dụng lệnh LOAD, AND OR Lệnh LOAD ghi giá trị bit đánh địa toán hạng lệnh vào đỉnh ngăn xếp, giá trị cũ ngăn xếp bị đẩy xuống bậc (giá trị mất) Các lệnh AND OR thực phép toán logic AND hay OR giá trị trỏ đến toán hạng với đỉnh ngăn xếp, kết ghi vào đỉnh ngăn xếp, giá trị cũ ngăn xếp bị đẩy xuống bậc Hoàn toàn tương tự công tắc thường đóng, sử dụng lệnh LOAD NOT, AND NOT OR NOT (giá trị trỏ đến toán hạng bị đảo) 1.1.2 Công tắc tức khắc Trong STL, công tắc thường mở tức khắc sử dụng lệnh LOAD IMMEDIATE (ghi giá trị đầu vào vật lý vào đỉnh ngăn xếp, giá trị cũ ngăn xếp bị đẩy xuống bậc (giá trị mất)), AND IMMEDIATE OR IMMEDIATE (thực phép toán lô gic And hay Or giá trị đầu vào vật lý với đỉnh ngăn xếp, kết ghi vào đỉnh ngăn xếp, giá trị cũ ngăn xếp bị đẩy xuống bậc) Hoàn toàn tương tự công tắc thường đóng tức khắc, sử dụng lệnh LOAD NOT IMMEDIATE, AND NOT IMMEDIATE OR NOT IMMEDIATE (giá trị đầu vào vật lý bị đảo) 1.1.3 Lệnh đảo bit, lệnh sườn Lệnh đảo thay đổi dòng lượng (Power Flow) Nếu dòng lượng gặp lệnh này, bị chặn lại Ngược lại phía trước lệnh dòng lượng, trở thành nguồn cung cấp dòng lượng Trong LAD, lệnh biểu diễn công tắc Trong FBD, lệnh đảo biểu tượng riêng Nó tích hợp đầu vào đảo khối chức khác (với vòng tròn nhỏ đầu vào Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 khối chức đó) Trong STL, lệnh đảo đảo giá trị đỉnh ngăn xếp: thành thành Lệnh toán hạng Lệnh sườn: Đều thuộc nhóm lệnh công tắc, ghi nhận trạng thái bit liệu (0 hay 1), quen thuộc với khái niệm “mức” Các lệnh sườn ghi nhận mức đơn mà biến đổi mức Lệnh sườn dương (Positive Transition) cho dòng lượng qua khoảng thời gian thời gian vòng quét đầu vào có thay đổi mức từ lên Lệnh sườn âm (Negative Transition) cho dòng lượng qua khoảng thời gian thời gian vòng quét đầu vào có thay đổi mức từ xuống Trong LAD, lệnh biểu diễn công tắc Trong FBD, lệnh biểu diễn khối chức P N Trong STL, lệnh Edge Up, phát có thay đổi mức đỉnh ngăn xếp từ lên 1, đặt vào đỉnh ngăn xếp giá trị Trong trường hợp ngược lại, đặt vào giá trị Tương tự, lệnh Edge Down, phát có thay đổi mức đỉnh ngăn xếp từ xuống 0, đặt vào đỉnh ngăn xếp giá trị Trong trường hợp ngược lại, đặt vào giá trị Chú ý: Theo cấu trúc hoạt động PLC, thay đổi mức tất nhiên phát vòng quét liên tiếp Do lệnh sườn cần bit nhớ để nhớ trạng thái đầu vào vòng quét kế trước Vì đặc tính mà tổng số lệnh sườn sử dụng chương trình bị hạn chế (do dung lượng nhớ dành cho chúng có hạn) Ví dụ cho lệnh NOT, P, N: Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 1.2 Coil 1.2.1 Lệnh Giá trị bit định địa toán hạng lệnh phản ảnh trạng thái dòng lượng (Power Flow) đầu vào lệnh Trong LAD FBD, lệnh đặt giá trị bit trỏ đến toán hạng giá trị dòng lượng đầu vào lệnh Trong STL, lệnh chép giá trị đỉnh ngăn xếp giá trị bit trỏ đến toán hạng lệnh 1.2.2 Lệnh tức khắc Giá trị đầu rời rạc (digital) vật lý định địa toán hạng lệnh trực tiếp phản ảnh trạng thái dòng lượng (Power Flow) đầu vào lệnh Trong LAD FBD, lệnh trực tiếp đặt đồng thời giá trị đầu vật lý trỏ đến toán hạng bit ảnh đầu giá trị dòng lượng đầu vào lệnh Điều khác với lệnh thông thường chỗ lệnh thông thường ghi giá trị vào bit ảnh đầu Trong STL, lệnh trực tiếp chép giá trị đỉnh ngăn xếp đồng thời giá trị đầu vật lý trỏ đến toán hạng lệnh bit ảnh đầu 1.2.3 Lệnh Set, Reset Các lệnh SET RESET đặt số bit liên tiếp nhớ liệu thành (Set) hay (Reset) Số lượng bit định toán hạng [N] bit định địa toán hạng [bit] Số lượng bit Set Reset nằm khoảng từ đến 255 Trong trường hợp sử dụng lệnh Reset với bit nằm vùng T hay C, định thời hay đếm tương ứng bị reset Nghĩa bit trạng thái chúng đưa số đếm bị xóa (sẽ có giá trị 0) Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp + Lỗi 0091: toán hạng vượt giới hạn cho phép 1.2.4 Lệnh Set, Reset Immediat Các lệnh SET IMMEDIATE RESET IMMEDIATE đặt số đầu rời rạc (digital) vật lý liên tiếp thành (Set) hay (Reset) Số lượng đầu định toán hạng [N] đầu định địa toán hạng [bit] Số lượng đầu vật lý Set Reset nằm khoảng từ đến 12 Ký tự “I” lệnh (Immediate) nói lên tính tức thời Các lệnh ghi giá trị đầu vật lý đồng thời ghi vào giá trị ảnh chúng Điều khác với lệnh Set Reset thông thường ghi giá trị vào vùng ảnh đầu Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp + Lỗi 0091: toán hạng vượt giới hạn cho phép Ví dụ: Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 1.2.5 Lệnh không làm Lệnh không làm (No Operation) không tác động đến chương trình Mặc dù có toán hạng [N] dạng Byte, hằìng số khoảng từ đến 255 Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Lệnh so sánh So sánh Byte: Lệnh so sánh Byte dùng để so sánh 02 giá trị dạng byte định địa hai toán hạng đầu vào lệnh: [IN1] [IN2] Có tất 06 phép so sánh thực hiện: [IN1] = [IN2], [IN1] >= [IN2], [IN1] [IN2], [IN1] < [IN2], [IN1] [IN2] Các byte đem so sánh giá trị không dấu Trong LAD, lệnh có dạng công tắc công tắc đóng (ON) điều kiện đem so sánh có giá trị Trong FBD, đầu có giá trị điều kiện đem so sánh Trong STL, lệnh thực ghi giá trị vào đỉnh ngăn xếp (với lệnh Load) thực phép toán lô gic AND hay OR (tùy theo lệnh cụ thể) giá trị với đỉnh ngăn xếp điều kiện so sánh So sánh số nguyên (Integer): Lệnh so sánh số nguyên dùng để so sánh 02 giá trị dạng Integer định địa hai toán hạng đầu vào lệnh: [IN1] [IN2] Có tất 06 phép so sánh thực hiện: [IN1] = [IN2], [IN1] >= [IN2], [IN1] [IN2], [IN1] < [IN2], [IN1] [IN2] Các số nguyên đem so sánh giá trị có dấu: 16#7FFF > 16#8000 So sánh từ kép (Double Word): Lệnh so sánh từ kép dùng để so sánh 02 giá trị dạng Double Word định địa hai toán hạng đầu vào lệnh: [IN1] [IN2] Có tất 06 phép so sánh thực hiện: [IN1] = [IN2], [IN1] >= [IN2], [IN1] [IN2], [IN1] < [IN2], [IN1] [IN2] Các giá trị từ kép đem so sánh giá trị có dấu: 16#7FFFFFFF > 16#80000000 So sánh số thực (Real): Lệnh so sánh số thực dùng để so sánh 02 giá trị dạng Real định địa hai toán hạng đầu vào lệnh: [IN1] [IN2] Có tất 06 phép so sánh thực hiện: [IN1] = [IN2], [IN1] >= [IN2], [IN1] [IN2], [IN1] < [IN2], [IN1] [IN2] Các số thực đem so sánh giá trị có dấu theo kiểu dấu phẩy động Ví dụ sử dụng lệnh so sánh: Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Lệnh chuyển đổi Ví dụ Round Truncate: Trang PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Ví dụ SEG (Segment): Ngoài có lệnh chuyển đổi sang mã ASCII Trang 10 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 en-1: sai số thời điểm lấy mẫu trước (n-1) en-1 = SPn-1 - PVn-1 Ki: số khuếch đại thành phần tích phân MX: giá trị thành phần tích phân thời điểm lấy mẫu kế trước (n-1) Kd: số khuếch đại thành phần vi phân Một cách viết khác phương trình: Mn = MPn + MIn + MDn output = proportional + integral + differential đó: Mn: đầu PID (đại lượng xử lý) thời điểm lấy mẫu n MPn: thành phần tỉ lệ đầu PID thời điểm lấy mẫu n MIn: thành phần tích phân đầu PID thời điểm lấy mẫu n MDn: thành phần vi phân đầu PID thời điểm lấy mẫu n Ta xét đến thành phần đại lượng xử lý: Thành phần tỉ lệ (proportional) MP tích số khuếch đại Kc với sai số e Trong Kc đặc trưng cho độ nhạy đầu PID (Kc lớn, điều khiển PID nhạy) e sai số đại lượng yêu cầu (setpoint SP) đại lượng thực tế (process variable PV) Phương trình biểu diễn: MPn = Kc * (SPn - PVn) đó: MPn: thành phần tỉ lệ đầu PID thời điểm lấy mẫu n Kc: số khuếch đại SPn: đại lượng yêu cầu thời điểm lấy mẫu n PVn: đại lượng thực tế thời điểm lấy mẫu n Thành phần tích phân (integral) MI tỉ lệ với tổng sai số qua thời gian, thể phương trình: MIn = KC * Ts / Ti * (SPn - PVn ) + MX đó: MIn: thành phần tích phân đầu PID thời điểm lấy mẫu n Kc: số khuếch đại Ts: thời gian lấy mẫu Ti: hệ số tích phân SPn: đại lượng yêu cầu thời điểm lấy mẫu n PVn: đại lượng thực tế thời điểm lấy mẫu n MX: giá trị thành phần tích phân thời điểm lấy mẫu kế trước (n-1), gọi integral sum hay bias Sau tính toán giá trị MIn, bias MX thay giá trị MIn với khả bị điều chỉnh cắt (chặn giới hạn), điều nói rõ phần sau Giá trị ban đầu bias MX, Mi thường lấy giá trị đầu PID trước thời điểm thực lệnh PID lần Các số khác ảnh hưởng đến thành phần là: Kc - số khuếch đại, Ts - thời gian lấy mẫu Ti - hệ số tích phân đặc trưng cho ảnh hưởng thành phần lên toàn đại lượng xử lý Thành phần vi phân (differential) MD tỉ lệ với độ thay đổi sai sô, thể qua phương trình: MDn = KC * Td / Ts * ((SPn - PVn ) - (SPn - - PVn - )) Với đặc tính có quán tính hệ vật chất, giả thiết đại lượng thực tế PV thay đổi cách gián đoạn Tuy nhiên đại lương yêu cầu tăng giảm gãy khúc (do tính lý thuyết) Về chất toán học, thành phần vi phân phép lấy đạo hàm nên thay đổi gián đoạn gây nên giá trị vô lớn đầu Để tránh tượng này, phương trình ta giả thiết SPn = SPn - viết: MDn = KC * Td / Ts * (PVn - - PVn) đó: MDn: thành phần vi phân đầu PID thời điểm lấy mẫu n Kc: số khuếch đại Ts: thời gian lấy mẫu Td: hệ số vi phân SPn: đại lượng yêu cầu thời điểm lấy mẫu n SPn-1: đại lượng yêu cầu thời điểm lấy mẫu n-1 PVn: đại lượng thực tế thời điểm lấy mẫu n Trang 24 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 PVn-1: đại lượng thực tế thời điểm lấy mẫu n-1 Như thực tế không cần nhớ sai số thời điểm lấy mẫu kế trước mà cần nhớ đại lượng thực tế Trong lần tính toán PVn-1 lấy PVn Tùy theo ứng dụng thực tế, bỏ bớt thành phần điều khiển PID không thiết phải bao gồm đủ ba thành phần, chẳng hạn tạo điều khiển tỉ lệ (P) hay điều khiển chứa thành phần tỉ lệ tích phân (PI) Sự lựa chọn dựa cách đặt tham số Nếu muốn bỏ thành phần tích phân (bỏ I), ta chọn hệ số tích phân vô (Ti = () Trong trường hợp này, thành phần tích phân không thiết không mà giá trị không đổi thông qua giá trị bias MX ban đầu Nếu muốn bỏ thành phần vi phân (bỏ D), ta chọn hệ số vi phân không (Td = 0.0) Nếu muốn bỏ thành phần tỉ lệ (bỏ P), ta chọn hệ số khuếch đại không (Kc = 0.0) Trong trường hợp này, số thành phần tích phân vi phân có tính theo Kc nên thành phần ấy, Kc hiểu 1.0 Một điều khiển PID có hai đầu vào: đại lượng yêu cầu đại lượng thực tế Đây đại lượng thật ứng dụng nhiệt độ, áp suất, tốc độ, Để đưa vào tính toán điầu khiển, chúng phải đo, chuyển đổi giá trị thích hợp chuẩn hóa (nếu cần) Các bước cần thiết cho điều khiển PID, đòi hỏi giá trị đầu vào giá trị số thực (dấu phẩy động) nằm khoảng từ 0.0 đến 1.0 Thông thường, giá trị đo được đưa vào PLC qua đầu vào tương tự (qui điện áp khoảng - 10VDC dòng điện - 20mADC) thành giá trị số nguyên 16 bit có dấu Trước hết giá trị phải đổi thành số thực 32 bit (dấu phẩy động), chẳng hạn theo thuật toán sau: XORD AC0, AC0 //Clear the accumulator MOVW AIW0, AC0 //Save the analog value in the accumulator LDW>= AC0, //If the analog value is positive, JMP //then convert to a real number NOT //Else, ORD 16#FFFF0000, AC0 //sign extend the value in AC0 LBL DTR AC0, AC0 //Convert the 32-bit integer to a real number Bước chuẩn hóa khoảng [0.0 - 1.0] theo phương trình: NNorm = (NRaw / Span) + Offset đó: NNorm giá trị chuẩn hóa, đại diện cho đại lượng thật NRaw giá trị thực chưa chuẩn hóa, đại diện cho đại lượng thật Span hiệu giá trị lớn có trừ giá trị nhỏ có giá trị chưa chuẩn hóa Trong S7-200 thường 32000 - = 32000 đại lượng không đổi dấu (unipolar) Offset = 0.0, hay 32000 - (-32000) = 64000 đại lượng vừa có giá trị dương vừa có giá trị âm (bipolar) Offset = 0.5 Đoạn lệnh sau minh họa cho thuật toán trường hợp đại lượng có dấu (bipolar): /R 64000.0, AC0 //Normalize the value in the accumulator +R 0.5, AC0 //Offset the value to the range from 0.0 to 1.0 MOVR AC0, VD100 //Store the normalized value in the loop TABLE Một cách lô gic thấy cần phải có trình ngược lại với trình giá trị đầu điều khiển PID Nghĩa biến đổi đưa thang giá trị thích hợp cho đầu từ giá trị đầu chuẩn hóa khoảng 0.0 đến 1.0 Phương trình thuật toán: RScale = (MNorm - Offset) * Span đó: RScale giá trị thích hợp cho đầu ra, đại diện cho đại lượng thật MNorm giá trị đầu chuẩn hóa, đại diện cho đại lượng thật Span hiệu giá trị lớn có trừ giá trị nhỏ có giá trị chưa chuẩn hóa Trong S7-200 thường 32000 - = 32000 đại lượng không đổi dấu (unipolar) Offset = 0.0, hay 32000 - (-32000) = 64000 đại lượng vừa có giá trị dương vừa có giá trị âm (bipolar) Offset = 0.5 Đoạn lệnh minh họa cho thuật toán: MOVR VD108, AC0 //Move the loop output to the accumulator Trang 25 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 -R 0.5, AC0 //Include this statement only if the value is //bipolar *R 64000.0, AC0 //Scale the value in the accumulator ROUND AC0 AC0 //Convert the real number to a 32-bit integer MOVW AC0, AQW0 //Write the 16-bit integer value to the analog //output Chúng ta thường nói vòng lặp điều khiển thuận hệ số khuếch đại dương (Kc > 0) hay vòng lặp điều khiển đảo (nghịch) hệ số khuếch đại âm (Kc < 0) Trong trường hợp thành phần P (Kc = 0), ta xét dấu hệ số Ti Td Các giá trị yêu cầu giá trị thực tế (biến điều khiển) đầu vào điều khiển PID, trường tương ứng với chúng bảng liệu PID không bị thay đổi lệnh Ngược lại trường tương ứng với đầu cập nhật PID Nó bị cắt (chặn) vượt khoảng cho phép [0.0 - 1.0] Nếu có sử dụng thành phần tích phân (I), bias cập nhật lại dùng làm đầu vào cho lần lấy mẫu Tuy nhiên điều chỉnh trường hợp đầu bị chặn (vì vượt khoảng [0.0 - 1.0]) theo phương trình sau: MX = 1.0 - (MPn + MDn ) đầu lớn 1.0, hay MX = - (MPn + MDn ) đầu nhỏ 0.0, đó: MX giá trị bias điều chỉnh MPn giá trị thành phần tỉ lệ (P) đầu thời điểm lấy mẫu n MDn giá trị thành phần vi phân (D) đầu thời điểm lấy mẫu n Mn giá trị đầu thời điểm lấy mẫu n Bằng điều chỉnh này, giá trị đầu đưa khoảng hợp lệ Giá trị bias bị chặn khoảng [0.0 - 1.0] ghi vào bảng liệu cho lần lấy mẫu sử dụng Giá trị bias bảng liệu thay đổi trước thực lệnh PID phải ý số thực nằm khoảng [0.0 - 1.0] Giá trị đại lượng thực tế lần lấy mẫu trước lưu lại bảng liệu để tính toán thành phần vi phân, không thay đổi giá trị Một điều khiển PID hoạt động hai chế độ: Auto Manual Thực chế độ hoạt động xây dựng sẵn cho PID S7-200 Sự tính toán thực có dòng lượng (powerflow) đến đầu EN (enable) PID PID xem hoạt động chế độ Auto thực tính toán cách tuần hoàn liên tục Trong trường hợp ngược lại, PID xem hoạt động chế độ Manual Vấn đề cần xét đến chuyển đổi đảm bảo tính liên tục từ chế độ Manual sang chế độ Auto Điều đòi hỏi đầu tính chế độ Manual phải ghi vào đầu vào thời điểm chuyển đổi sang chế độ Auto Tương tự cách hoạt động đếm, CPU sử dụng bit nhớ để xác định thời điểm chuyển đổi: dòng lượng thay đổi từ lên Lúc CPU thực loạt thao tác cần thiết: Đặt giá trị yêu cầu giá trị thực tế: SPn = PVn Đặt giá trị kế trước giá trị thực tế: PVn-1 = PVn Đặt Bias giá trị đầu ra: MX = Mn Bit nhớ PID có giá trị mặc định (ON), đặt CPU khởi động hay chuyển từ chế độ STOP sang chế độ RUN Điều có nghĩa PID thực lần đầu tiên, CPU không nhận biết chuyển đổi trạng thái dòng lượng từ lên không thực thao tác nêu Lệnh PID lệnh đơn giản mạnh việc tính toán thuật toán PID Nếu cần số tính khác, ví dụ báo động hay thay đổi đặc biệt, sử dụng lệnh khác để can thiệp Khi chương trình sử dụng biên dịch, lỗi biên dịch xuất địa bảng tham số [TBL] toán hạng [LOOP] PID vượt phạm vi cho phép (out of range) Một số phạm vi cho phép không kiểm tra, người lập trình phải ý Chẳng hạn giá trị yêu cầu thực tế phải số thực nằm khoảng từ 0.0 đến 1.0, giá trị thực tế kế trước hay Bias, sử dụng, không vượt khoảng [0.0 - 1.0] Trang 26 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Nếu lỗi xuất trình tính toán thuật toán PID, bit đặc biệt SM1.1 (overflow) trình tính toán bị dừng lại Trong trường hợp vậy, đầu PID chưa hoàn thành, người lập trình phải ý kiểm tra bit đặc biệt để sử dụng đầu cách hợp lý điều chỉnh dầu vào cần thiết Định dạng bảng tham số PID bao gồm 36 bytes sau: Một ví dụ dùng điều khiển PID: Một bể nước dùng để giữ áp lực cột nước cố định Nước chảy khỏi bể với tốc độ thay đổi không xác định Để đạt mục đích người ta sử dụng bơm nước có lưu lượng điều chỉnh cách liên tục để bơm nước vào bể Giá trị yêu cầu ví dụ phải giữ mức nước bể 75% Giá trị thực tế mức nước đo được, thay đổi từ 0% (khi bể cạn) đến 100% (khi bể đầy) Giá trị xử lý (đầu điều khiển PID) vận tốc bơm, điều chỉnh từ 0% đến 100% lưu lượng danh định Giá trị yêu cầu, không thay đổi, ghi trực tiếp vào bảng tham số PID Giá trị thực tế giá trị không đổi dấu (chỉ dương - unipolar) giá trị tương tự đọc vào từ đo mức Giá trị đầu PID giá trị tương tự, unipolar, dùng để diều khiển tốc độ bơm Cả hai giá trị tương tự này, S7-200, nằm khoảng từ đến 32000 Ta sử dụng điều khiển PI (chỉ bao gồm thành phần tỉ lệ tích phân, không chứa thành phần vi phân) Các số điều khiển tính toán dựa thông số kỹ thuật hệ điều khiển điều chỉnh trình khai thác thực tế Ở ta không sâu vào vấn đề Kc = 0.25 Ts = 0.1 s Ti = 30 Bơm điều khiển tay mức nước bể đạt 75% chuyển sang chế độ tự động mở van cho nước chảy khỏi bể Đầu vào I0.0 sử dụng để đổi chế độ: I0.0 = Manual; I0.0 = Auto Khi chế độ Manual, tốc độ bơm xác định số thực khoảng [0.0 - 1.0] ghi VD10 Chương trình: Trang 27 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Trang 28 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 10 Lệnh phép toán logic 10.1 Lệnh đảo byte, word, doubleword Trang 29 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 10.2 Lệnh AND, OR, XOR AND bytes, OR bytes, EXCLUSIVE OR bytes: Lệnh AND Bytes thực phép toán lô gic AND bit tương ứng byte đầu vào định địa đầu vào IN1 IN2, kết lưu vào byte định địa đầu OUT Lệnh OR Bytes thực phép toán lô gic OR bit tương ứng byte đầu vào định địa đầu vào IN1 IN2, kết lưu vào byte định địa đầu OUT Lệnh EXCLUSIVE OR Bytes thực phép toán lô gic XOR bit tương ứng byte đầu vào định địa đầu vào IN1 IN2, kết lưu vào byte định địa đầu OUT Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp Những bit nhớ đặc biệt có nội dung bị ảnh hưởng lệnh này: + SM1.0 (Zero): kết Tương tự cho câu lệnh AND words, OR words, EXCLUSIVE OR words AND double words, OR double words, EXCLUSIVE OR double words Ví dụ lệnh lô gic: 11 Lệnh dịch quay 11.1 Dịch trái hay phải Những lệnh ghi dịch (shift) nội dung byte định địa đầu vào IN [N] lần (định toán hạng N), lần bit sang phải (Shift Right Byte) sang trái (Shift Left Byte), kết lưu vào byte định địa đầu OUT Phép ghi dịch (shift) điền giá trị (OFF) vào bit bị dịch Như số lần dịch [N] lớn 8, thực tế cần dịch tối đa lần sau kết chắn Nếu số lần dịch [N] lớn 0, bit cuối byte bị dịch ghi vào bit đặc biệt SM1.1 (overflow) Bit đặc biệt SM1.0 Trang 30 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 (zero) có giá trị (ON) kết cuối sau phép dịch Các lệnh ghi dịch byte xem byte số không dấu (unsigned) Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp Những bit nhớ đặc biệt có nội dung bị ảnh hưởng lệnh này: + SM1.0 (Zero): kết + SM1.1 (Overflow): bit cuối bị dịch 11.2 Quay trái hay phải Những lệnh quay (rotate) nội dung byte định địa đầu vào IN [N] lần (định toán hạng N), lần bit sang phải (Rotate Right Byte) sang trái (Rotate Left Byte), kết lưu vào byte định địa đầu OUT Phép quay (rotate) điền giá trị bit cuối (bị quay ngoài) vào bit Như số lần quay [N] lớn 8, thực tế cần quay số lần số dư phép chia [N] cho sau trình lặp lại Do số lần quay thực tế nằm khoảng từ đến Nếu số lần quay (hay số lần quay chia hết cho 8), phép quay không thực Trong trường hợp phép quay thực hiện, bit cuối byte bị quay ghi vào bit đặc biệt SM1.1 (overflow) Bit đặc biệt SM1.0 (zero) có giá trị (ON) kết cuối sau phép quay Các lệnh ghi quay byte xem byte số không dấu (unsigned) Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp Những bit nhớ đặc biệt có nội dung bị ảnh hưởng lệnh này: + SM1.0 (Zero): kết + SM1.1 (Overflow): bit cuối bị quay Ví dụ sử dụng phép dịch quay: Trang 31 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 11.3 Lệnh dịch ghi bit (Shift Register Bit): Lệnh dịch (shift) nội dung khối bit liên tiếp bit, với bit bị dịch thay giá trị bit trỏ đến toán hạng DATA bit cuối bị dịch ghi vào bit đặc biệt SM1.1 Khối bit liên tiếp xác định với bit (bit thấp nhất) có địa định toán hạng S_BIT có độ dài giá trị tuyệt đối toán hạng [N] Điều có nghĩa [N] số có dấu, dấu [N] xác định chiều dịch chuyển: [N] dương dịch lên [N] âm dịch xuống Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp + Lỗi 0091: toán hạng vượt giới hạn cho phép + Lỗi 0092: lỗi trường số (count field) Những bit nhớ đặc biệt có nội dung bị ảnh hưởng lệnh này: + SM1.1 (Overflow): bit cuối bị quay Minh họa lệnh với khối bit V33.4 có độ dài 14 bit: Ví dụ khác: Trang 32 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 11.4 Lệnh SWAP Lệnh (Swap Bytes) có toán hạng từ đơn (Word) định địa đầu vào IN Lệnh Swap tráo đổi nội dung hai byte nhớ từ đơn: byte cao thành byte thấp byte thấp thành byte cao Kết ghi vào từ đơn toán hạng lệnh Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa gián tiếp Ví dụ lệnh dịch chuyển lệnh Swap: 12 Các lệnh điều khiển chương trình 12.1 END có điều kiện Lệnh END có điều kiện dùng để kết thúc chương trình thỏa mãn điều kiện trước Lệnh END toán hạng, không sử dụng chương trình hay chương trình xử lý ngắt Phần mềm STEP Micro / Win 32 tự động thêm lệnh END không điều kiện (lệnh END điều kiện trước nó) vào cuối chương trình 12.2 STOP Lệnh STOP dừng chương trình thực cách chuyển CPU từ chế độ hoạt động (RUN) sang chế độ STOP Nếu lệnh STOP thực từ chương trình xử lý ngắt chương trình xử lý ngắt bị kết thúc đồng thời tất ngắt Trang 33 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 chờ xử lý (nếu có) bị hủy Tuy nhiên CPU xử lý nốt lệnh lại vòng quét chương trình bị ngắt dừng chương trình cuối vòng quét cách chuyển chế độ từ RUN sang STOP 12.3 Lệnh Watchdog Reset Lệnh khởi động lại đồng hồ canh hệ thống (System Watchdog) Điều cho phép kéo dài thời gian thực vòng quét mà không bị lỗi “watchdog” Chú ý cẩn thận sử dụng lệnh nằm vòng lặp (không kết thúc vòng quét) hay kéo dài vòng quét ảnh hưởng tới hệ thống, chẳng hạn việc thực thi tính năng: § § § § § § § Truyền thông (trừ chế độ FreePort) Cập nhật đầu vào (trừ lệnh truy xuất trực tiếp) Cập nhật “Forcing” Cập nhật bit đặc biệt, SM0, SM5 đến SM29 Chẩn đoán lỗi Run-Time Các định thời có độ phân giải 10 ms 100ms hoạt động sai lệch (đặc biệt thời gian vòng quét vượt 25s) Lệnh STOP sử dụng chương trình xử lý ngắt Nếu mong muốn thời gian vòng quét 500ms, mong chờ ngắt 300ms phải dùng lệnh WDR Việc chuyển công tắc CPU sang vị trí STOP dừng chương trình vòng 1.4 giây 12.4 Lệnh nhảy Lệnh nhảy (Jump to Label) rẽ nhánh chương trình đến đoạn lệnh đánh dấu nhãn Khi lệnh nhảy thực hiện, đỉnh ngăn xếp luôn có giá trị Nhãn dùng để đánh dấu vị trí cho lệnh nhảy Cả hai lệnh có toán hạng số nguyên khoảng từ đến 255 (số nhãn) Đối với CPU 212 từ đến 63 Lệnh nhảy phép rẽ nhánh chương trình đến nhãn chương trình chính, chương trình hay chương trình xử lý ngắt Trang 34 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 12.5 Lệnh SCR Ví dụ: Trang 35 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Xem thêm: Điều khiển hội tụ, phân tán, có điều kiện, Lệnh vòng lặp For-Next 13 Lệnh chương trình Lệnh gọi (CALL) chương trình chuyển quyền điều khiển đến cho chương trình S7-200 gọi chương trình có tham số Trong STEP Micro / Win 32, ta thêm chương trình vào chương trình từ Menu Edit > Insert > Subroutine Lệnh kết thúc chương trình (Return) có điều kiện kết thúc việc thực chương trình trở chương trình thỏa mãn điều kiện trước Một việc thực chương trình kết thúc, quyền điều khiển chuyển cho lệnh lệnh gọi chương trình Toán hạng lệnh gọi chương trình định danh chương trình con, số nguyên khoảng từ đến 255 Những lỗi gây nên lệnh (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0008: số lần gọi chương trình vượt số cho phép STEP Micro / Win 32 tự động gắn lệnh kết thúc trở từ chương trình (RET) vào cuối chương trình thêm vào Một chương trình gọi từ chương trình con, tượng gọi Nesting Độ sâu Nesting tối đa 08 lần gọi Việc gọi đến chương trình từ (đệ qui - Recursion) không bị cấm người lập trình phải thật cẩn trọng với cách dùng Khi gọi chương trình con, CPU lưu lại toàn ngăn xếp, ghi giá trị vào đỉnh ngăn xếp vào giá trị lại ngăn xếp chuyển quyền điều khiển cho chương trình Khi việc thực Trang 36 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 chương trình hoàn tất, ngăn xếp phục hồi lại trạng thái trước quyền điều khiển chuyển cho chương trình gọi Lưu ý ghi đa (Accumulators) không lưu hay phục hồi trình Việc gọi chương trình với tham số thực thông qua việc định nghĩa cho chương trình bảng tham số cục Mỗi tham số bao gồm tên tham số (tối đa 08 ký tự), kiểu biến (vào, hay tạm thời) kiểu liệu (Bool, Byte, INT, ) Mỗi chương trình có nhiều 16 tham số Kiểu biến tham số xác định tham số vào cho chương trình (IN), vừa vào vừa (IN_OUT) tham số từ chương trình (OUT) Cụ thể sau: § Tham số dạng vào (IN) truyền đến cho chương trình con: Nếu tham số địa trực tiếp (ví dụ VB10), nội dung ô nhớ địa truyền vào cho chương trình con; Nếu tham số địa gián tiếp (ví dụ *AC1), nội dung ô nhớ trỏ đến truyền vào cho chương trình con; Nếu tham số số (ví dụ 16#9A8B) địa (ví dụ &VB100), số hay địa truyền vào cho chương trình § Tham số dạng vào - (IN_OUT): chương trình sử dụng số liệu từ địa xác định tham số đồng thời xuất liệu địa Hiển nhiên tham số dạng số (như 16#1234) hay địa (như &VB100) § Tham số dạng (OUT): chương trình xuất liệu địa Tham số dạng số (như 16#1234) hay địa (như &VB100) § Tham số cục (TEMP): tham số chương trình sử dụng phạm vi chương trình Local variable tabble: Để thêm vào tham số cho chương trình con, bảng tham số đầu chương trình (hình phía trên) đặt trỏ vào kiểu biến ta muốn thêm (IN, IN/OUT, OUT hay TEMP), nhấn phím phải chuột chọn Insert > Row below để thêm vào tham số vị trí trỏ với dạng tham số thích hợp Kiểu liệu tham số xác định kích thước định dạng nó: § Kiểu dòng lượng (Boolean Power Flow): xem kiểu bit lô gic dạng vào (IN) phải khai báo trước tất kiểu khác (như tham số EN IN1 ví dụ trên) § Kiểu bit lô gic (Boolean): đại diện cho bit, dạng (OUT) vào (IN), IN3 § Kiểu Byte, Word, DWord: tham số vào, 1, hay bytes đại diện cho số không dấu § Kiểu Int, DInt: tham số vào, hay bytes đại diện cho số nguyên có dấu (signed) § Kiểu Real: tham số vào, đại diện cho số thực dấu phẩy động bytes (theo chuẩn IEEE) Một ví dụ gọi chương trình với tham số khai báo trên: Trang 37 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7-200 Trong ví dụ trên, tham số IN4 = &VB100 chứa vào từ kép (double word unsigned) Nếu gán cho tham số giá trị số, 16#1234 chẳng hạn phải xác định kiểu liệu cho cách viết DW#16#1234 Khi chương trình gọi, bao gồm vùng liệu cục chứa tham số (được đánh địa cột bảng tham số) Những tham số dạng vào chép vào vùng liệu cục trước chương trình thực tham số dạng lại chép từ vùng sau việc thực chương trình hoàn thành Lưu ý chương trình không kiểm tra kiểu liệu nên người lập chương trình phải ý sử dụng kiểu khai báo Tất nhiên thứ tự tham số phải phù hợp khai báo (đặc biệt STL): dạng vào (IN) đến dạng vào - (IN/OUT) dạng (OUT) Ví dụ sử dụng chương trình con: 14 Lệnh ngắt Xem giáo trình lí thuyết Trang 38 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com [...]... Chương trình: Trang 27 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 Trang 28 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 10 Lệnh phép toán logic 10.1 Lệnh đảo byte, word, doubleword Trang 29 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 10.2 Lệnh. .. kiện, Lệnh vòng lặp For-Next 13 Lệnh chương trình con Lệnh gọi (CALL) một chương trình con chuyển quyền điều khiển đến cho chương trình con đó S7- 200 có thể gọi một chương trình con có hoặc không có tham số Trong STEP 7 Micro / Win 32, ta thêm chương trình con vào chương trình từ Menu chính Edit > Insert > Subroutine Lệnh kết thúc chương trình con (Return) có điều kiện kết thúc việc thực hiện chương trình. .. được phép rẽ nhánh chương trình đến một nhãn hoặc ở cùng trong chương trình chính, hoặc ở cùng trong một chương trình con hay chương trình xử lý ngắt Trang 34 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 12.5 Lệnh SCR Ví dụ: Trang 35 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 Xem thêm: Điều khiển... nên bởi lệnh này (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa chỉ gián tiếp + Lỗi 0091: toán hạng vượt quá giới hạn cho phép Ví dụ: 7.3 Lệnh tìm kiếm trong bảng Trang 17 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 Trang 18 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 8 Lệnh toán... gián tiếp Ví dụ về lệnh dịch chuyển và lệnh Swap: 12 Các lệnh điều khiển chương trình 12.1 END có điều kiện Lệnh END có điều kiện dùng để kết thúc chương trình chính khi thỏa mãn điều kiện trước nó Lệnh END không có toán hạng, không được sử dụng trong các chương trình con hay trong các chương trình xử lý ngắt Phần mềm STEP 7 Micro / Win 32 tự động thêm lệnh END không điều kiện (lệnh END không có bất... chương trình chính 12.2 STOP Lệnh STOP dừng chương trình đang được thực hiện ngay lập tức bằng cách chuyển CPU từ chế độ hoạt động (RUN) sang chế độ STOP Nếu lệnh STOP được thực hiện từ một chương trình xử lý ngắt thì chương trình xử lý ngắt ấy sẽ bị kết thúc ngay đồng thời tất cả những ngắt đang Trang 33 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200. .. 1 đến 255 Những lỗi có thể được gây nên bởi các lệnh này (ENO = 0): + Bit đặc biệt SM4.3 = 1: lỗi Run - Time + Lỗi 0006: địa chỉ gián tiếp + Lỗi 0091: toán hạng vượt quá giới hạn cho phép 7 Lệnh với Bảng 7.1 Lệnh thêm vào bảng Trang 16 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 7.2 Lệnh Memory Fill Lệnh này điền đầy một khoảng nhớ bao gồm một số... sẽ dừng chương trình trong vòng 1.4 giây 12.4 Lệnh nhảy Lệnh nhảy (Jump to Label) rẽ nhánh chương trình đến một đoạn lệnh được đánh dấu bằng một nhãn Khi một lệnh nhảy được thực hiện, đỉnh ngăn xếp luôn luôn có giá trị 1 Nhãn dùng để đánh dấu vị trí cho các lệnh nhảy Cả hai lệnh trên có toán hạng là một số nguyên trong khoảng từ 0 đến 255 (số nhãn) Đối với CPU 212 chỉ được từ 0 đến 63 Lệnh nhảy chỉ... Pro trial version http://www.fineprint.com Tập lệnh S7- 200 11.4 Lệnh SWAP Lệnh này (Swap Bytes) có toán hạng là một từ đơn (Word) được định địa chỉ bởi đầu vào IN Lệnh Swap tráo đổi nội dung hai byte nhớ của một từ đơn: byte cao thành byte thấp và byte thấp thành byte cao Kết quả được ghi vào chính từ đơn là toán hạng của lệnh Những lỗi có thể được gây nên bởi lệnh này (ENO = 0): + Bit đặc biệt SM4.3... dụ sử dụng bộ đếm: Trang 14 PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com Tập lệnh S7- 200 Các bộ đếm tốc độ cao xem giáo trình lí thuyết 6 Lệnh dịch chuyển ô nhớ Các lệnh dịch chuyển một Byte, một từ đơn (Word), một từ kép (Double Word) hay một số thực (Real): Lệnh dịch chuyển một Byte, Move Byte, sao chép nội dung ô nhớ kích thước một byte được định địa chỉ ở đầu vào