Bài giảng môn Siemens PLC S7-300

pdf 135 trang huongle 3970
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng môn Siemens PLC S7-300", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_mon_siemens_plc_s7_300.pdf

Nội dung text: Bài giảng môn Siemens PLC S7-300

  1. BÀI GIẢNG MƠN HỌC SIEMENS PLC S7 – 300 Chương mở đầu: Giới thiệu dịng sản phẩm Siemens Chương 1: Nhập mơn PLC S7 – 300 Chương 2: Cấu trúc PLC S7 – 300 Chương 3: Hướng dẫn sử dụng phần mềm lập trình PLC S7-300 Chương 4: Ngơn ngữ lập trình STL Chương 5: Kỹ thuật lập trình Chương 6: Bài tập thực hành
  2. CHCHƯƠƯƠNGNG M MỞỞ ĐĐẦẦUU:: GI GIỚỚII THITHIỆỆUU DỊNG DỊNG S SẢẢNN PH PHẨẨMM SIEMENSSIEMENS • PLC S7 – 200: loại cực nhỏ, thích hợp cho những ứng dụng riêng lẽ, với số lượng I/O vừa phải. • PLC S7 – 300: loại trung bình, thích hợp cho những ứng dụng vừa phải. • PLC S7 – 400: tiêu chuẩn ở mức cao đáp ứng được các bài tốn điều khiển ở mức cao nhất.
  3. CHCHƯƠƯƠNGNG 11:: NHNHẬẬPP MƠN MƠN PLC PLC S7 S7 –– 300300 2.1. Đại số Boolean 2.2. Biểu diễn số nguyên dương 2.3. Biểu diễn số nguyên cĩ dấu
  4. 2.1.2.1. ĐĐạạii ssốố BooleanBoolean 2.1.1. Biến và hàm hai trị - Biến 2 trị (Biến Boolean): là loại hàm số mà miền giá trị của nĩ chỉ cĩ hai phần tử, đĩ là 0 và 1 - Hai biến Boole được gọi là độc lập với nhau nếu sự thay đổi giá trị của biến này khơng ảnh hưởng tới giá trị của biến kia - Ngược lại, nếu giá trị của biến này phụ thuộc vào giá trị của biến kia thì gọi là biến phụ thuộc - Hàm hai trị là mơ hình tốn học mơ tả sự phụ thuộc của một biến Boole vào các biến Boole khác
  5. 2.1.1. Biến và hàm hai trị (tt) Ví dụ minh họa: x y z Cơng tắc x, y: là biến Boole hai trị (0 và 1) Đèn z: cũng là biến Boole hai trị x và y là hai biến Boole độc lập nhau Đèn z là biến Boole phụ thuộc vào hai biến cơng tắc
  6. 2.1.2.2.1.2. CCáácc phphéépp totốánn trêntrên hhààmm haihai trtrịị a. Phép Not (y = Not(x)) xx yy 00 11 11 00
  7. b.b. PhPhéépp ccộộngng (z(z == xx ++ y)y) XX YY ZZ 00 00 00 00 11 11 11 00 11 11 11 11
  8. c.c. PhPhéépp giaogiao (z(z == x^yx^y)) XX YY ZZ 00 00 00 00 11 00 11 00 00 11 11 11
  9. 2.2.2.2. BiBiểểuu didiễễnn ssốố nguyênnguyên ddươươngng 2.2.1. Trong hệ cơ số 10 (hệ thập phân) Một số nguyên dương un bất kỳ, trong hệ cơ số 10 bao giờ cũng được biểu diễn đầy đủ bằng dãy con số nguyên từ 0 đến 9 Ví dụ: un = 515 được biểu diễn trong cơ số 10 515 = 5.102 + 1.101 + 5.100
  10. 2.2.2.2.2.2. TrongTrong hhệệ cơcơ ssốố 22 ((hhệệ nhnhịị phânphân)) Cách biểu diễn un trong hệ cơ số 10 chưa phù hợp với nguyên tắc mạch điện (hay nguyên tắc hàm 2 trị). Để sử dụng nguyên tắc hàm 2 trị, ta đưa ra khái niệm bit. Ví dụ: un = 205 Được biểu diễn như sau: 11001101 205 = 1.27 + 1.26 + 0.25 + 0.24 + 1.23 + 1.22 + 0.21 + 1.20
  11. 2.2.3.2.2.3. TrongTrong hhệệ cơcơ ssốố 1616 ((hhệệ Hexadecimal)Hexadecimal) Cũng giống như hệ cơ số 10, một số nguyên dương bất kỳ cũng cĩ thể biểu diễn trong hệ cơ số 16 như sau: Ví dụ: 7723 trong hệ cơ số 10 được biểu diễn thành 1E2B trong hệ cơ số 16 1E2B = 1.163 + 14.162 + 2.161 + 11.160 2.2.4.2.2.4. MãMã BCDBCD trongtrong ssốố nguyênnguyên dươngdương Số 259 trong hệ thập phân được biểu diễn dưới dạng mã BCD như sau: 0010 0101 1001 2 5 9
  12. 2.3. Biểu diễn số nguyên cĩ dấu Số nguyên cĩ dấu uk được biểu diễn theo quy tắc bù loại 2 gồm các bước sau: -Biểu diễn |uk| trong hệ cơ số 2 thành dãy các bit xk -Đảo giá trị từng bit xk, thành -Cộng thêm 1 Ví dụ: biểu diễn uk=-15 trong hệ cĩ số 2 với độ dài 8 bit? Lần lượt thực hiện theo 3 bước trên.
  13. CHCHƯƠƯƠNGNG 22:C:CẤẤUU TRTRÚÚCC PLCPLC S7 S7 –– 300300 2.1. Định nghĩa 2.2. Các tín hiệu kết nối với PLC 2.3. Các module của PLC S7-300 2.4. Kiểu dữ liệu và phân chia bộ nhớ 2.5. Cấu trúc bộ nhớ của CPU 2.6. Vịng quét chương trình 2.7. Cấu trúc chương trình 2.8. Các khối OB đặc biệt
  14. 2.1. Định nghĩa Thiết bị điều khiển logic khả trình PLC (Programmable Logic Controller) là loại thiết bị cho phép thực hiện linh hoạt các thuật toán điều khiển số thông qua một ngôn ngữ lập trình, thay cho việc phải thể hiện thuật toán đó bằng mạch số. Ưu điểm: + Nhỏ gọn + Dễ thay đổi thuật toán + Dễ trao đổi thông tin với môi trường xung quanh (với PLC khác hoặc với máy tính)
  15. *> Các bộ phận chính của PLC: - Bộ vi xử lí trung tâm (CPU) - Hệ điều hành - Bộ nhớ chương trình - Các cổng vào ra,
  16. 2.2. 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ó 2 trị 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 Ví dụ: Các tín hiệu từ nút nhấn, từ các công tắc hành trình, đều là những tín hiệu số. + Tín hiệu tương tự: Là tín hiệu liên tục từ 0-10V hoặc 4-20mA. Ví dụ: tín hiệu đọc từ cảm biến loadcell,
  17. 2.3.2.3. CCáácc modulemodule ccủủaa PLCPLC S7 S7 300300 2.3.1. Module CPU Modul CPU là loại Module 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ác cổng vào ra số trên CPU được gọi là cổng vào ra Onboard. Trong họ PLC S7 – 300 cĩ nhiều loại CPU khác nhau: CPU312, CPU314, CPU315,
  18. 2.3.2.2.3.2. CCáácc modulemodule mmởở rrộộngng:: ĐưĐượợcc chiachia ththàànhnh 55 loloạạii chchíínhnh sausau:: - NguNguồồnn nuơinuơi (PS:(PS: PowerPower Supply):Supply): cungcung ccấấpp ngunguồồnn chocho CPUCPU vvàà ccáácc modulemodule khkháácc - SMSM (Signal(Signal Module):Module): ModuleModule ttíínn hihiệệuu vvààoo rara,, baobao ggồồmm:: ++ DI:DI: DigitalDigital InputInput ++ DO:DO: DigitalDigital OutputOutput ++ DI/DO:DI/DO: DigitalDigital In/OutputIn/Output ++ AI:AI: AnalogAnalog InputInput ++ AO:AO: AnalogAnalog OutputOutput ++ AI/AO:AI/AO: AnalogAnalog In/OutputIn/Output - IMIM (Interface(Interface Module):Module): ModuleModule ghghéépp nnốốii - FMFM (Function(Function Module):Module): ModuleModule điđiềềuu khikhiểểnn riêngriêng:: điđiềềuu khikhiểểnn Servo,Servo, - CPCP (Communication(Communication Module):Module): ModuleModule truytruyềềnn thơngthơng
  19. 2.4.2.4. KiKiểểuu ddữữ liliệệuu vvàà phânphân chiachia bbộộ nhnhớớ  KiKiểểuu BOOL:BOOL: dungdung lưlượợngng mmộộtt bit,bit, ccĩĩ gigiáá trtrịị 00 hohoặặcc 11  KiKiểểuu BYTE:BYTE: ggồồmm 88 bits,bits, đưđượợcc ddùùngng đđểể bibiểểuu didiễễnn ssốố nguyênnguyên dươngdương trongtrong khokhoảảngng ttừừ 00 đđếếnn 255.255.  KiKiểểuu WORD:WORD: ggồồmm 22 bytes,bytes, bibiểểuu didiễễnn mmộộtt ssốố nguyênnguyên dươngdương ttừừ 00 đđếếnn 65535.65535.  KiKiểểuu INT:INT: 22 bytes,bytes, bibiểểuu didiễễnn ssốố nguyênnguyên trongtrong khokhoảảngng ttừừ 3276832768 đđếếnn 32767.32767.  KiKiểểuu DINT:DINT: 44 bytes,bytes, bibiểểuu didiễễnn ssốố nguyênnguyên ttừừ 21474836482147483648 đđếếnn 2147483647.2147483647.
  20. 2.4.2.4. KiKiểểuu ddữữ liliệệuu vvàà phânphân chiachia bbộộ nhnhớớ ((tttt))  KiKiểểuu S5TS5T (hay(hay S5TIME):S5TIME): khokhoảảngng ththờờii giangian,, đưđượợcc ttíínhnh theotheo gigiờờ/ph/phúút/giây/milit/giây/mili giâygiây  KiKiểểuu TOD:TOD: bibiểểuu didiễễnn gigiáá trtrịị ththờờii giangian ttíínhnh theotheo gigiờờ/ph/phúút/giâyt/giây  KiKiểểuu DATE:DATE: bibiểểuu didiễễnn gigiáá trtrịị ththờờii giangian ttíínhnh theotheo nămnăm //ththááng/ngng/ngààyy  KiKiểểuu CHAR:CHAR: bibiểểuu didiễễnn mmộộtt hohoặặcc nhinhiềềuu kýký ttựự ((nhinhiềềuu nhnhấấtt llàà 44 kýký ttựự).).
  21. 2.5.2.5. CCấấuu trtrúúcc bbộộ nhnhớớ ccủủaa CPUCPU BBộộ nhnhớớ ccủủaa S7S7 –– 300300 đưđượợcc chiachia llààmm 33 vvùùngng chchíínhnh::  VVùùngng chchứứaa chươngchương trtrììnhnh ứứngng ddụụngng:: đưđượợcc chiachia llààmm 33 mimiềềnn:: ++ OBOB (Organization(Organization block):block): mimiềềnn chchứứaa chươngchương trtrììnhnh ttổổ chchứứcc ++ FCFC (Function):(Function): mimiềềnn chchứứaa chươngchương trtrììnhnh concon đưđượợcc ttổổ chchứứcc ththàànhnh hhààmm ccĩĩ bibiếếnn hhììnhnh ththứứcc đđểể traotrao đđổổii ddữữ liliệệuu vvớớii chươngchương trtrììnhnh đđãã ggọọii nnĩĩ ++ FBFB (Function(Function block):block): mimiềềnn chchứứaa chươngchương trtrììnhnh con,con, đưđượợcc ttổổ chchứứcc ththàànhnh hhààmm,, ccĩĩ khkhảả năngnăng traotrao đđổổii ddữữ liliệệuu vvớớii bbấấtt ccứứ mmộộtt khkhốốii chươngchương trtrììnhnh nnààoo khkháácc
  22.  VVùùngng chchứứaa thamtham ssốố ccủủaa hhệệ điđiềềuu hhàànhnh vvàà chươngchương trtrììnhnh ứứngng ddụụngng ++ II (Process(Process imageimage input):input): mimiềềnn bbộộ đđệệmm ccáácc ddữữ liliệệuu ccổổngng vvààoo ssốố ++ QQ (Process(Process imageimage output):output): mimiềềnn bbộộ đđệệmm ccáácc ddữữ liliệệuu ccổổngng rara ssốố ++ M:M: mimiềềnn ccáácc bibiếếnn ccờờ ChươngChương trtrììnhnh ứứngng ddụụngng ssửử ddụụngng vvùùngng nhnhớớ nnààyy đđểể lưulưu gigiữữ ccáácc thamtham ssốố ccầầnn thithiếếtt vvàà ccĩĩ ththểể truytruy nhnhậậpp nnĩĩ theotheo bitbit (M),(M), bytebyte (MB),(MB), ttừừ (MW)(MW) hayhay ttừừ kkéépp (MD).(MD). ++ T:T: mimiềềnn nhnhớớ phphụụcc vvụụ bbộộ ththờờii giangian (Timer)(Timer) baobao ggồồmm viviệệcc lưulưu gigiữữ gigiáá trtrịị ththờờii giangian đđặặtt trưtrướớcc (PV:(PV: PresetPreset value),value), gigiáá trtrịị đđếếmm ththờờii giangian ttứứcc ththờờii (CV:(CV: CurrentCurrent value)value) ++ C:C: mimiềềnn nhnhớớ phphụụcc vvụụ bbộộ đđếếmm (Counter),(Counter), baobao ggồồmm viviệệcc lưulưu gigiữữ gigiáá trtrịị đđặặtt trưtrướớcc,, gigiáá trtrịị đđếếmm ttứứcc ththờờii,, gigiáá trtrịị logiclogic đđầầuu rara ccủủaa bbộộ đđếếmm ++ PI:PI: MiMiềềnn đđịịaa chchỉỉ ccổổngng vvààoo ccủủaa ccáácc modulemodule tươngtương ttựự ++ PQ:PQ: mimiềềnn đđịịaa chchỉỉ ccổổngng rara chocho ccáácc modulemodule tươngtương ttựự
  23.  VVùùngng chchứứaa ccáácc khkhốốii ddữữ liliệệuu:: ĐưĐượợcc chiachia ththàànhnh 22 loloạạii ++ DBDB (Data(Data block):block): MiMiềềnn chchứứaa ccáácc ddữữ liliệệuu đưđượợcc ttổổ chchứứcc ththàànhnh khkhốốii KKíínhnh thưthướớcc vvàà ssốố lưlượợngng khkhốốii dodo ngưngườờii ssửử ddụụngng quyquy đđịịnhnh,, phphùù hhợợpp vvớớii ttừừngng bbààii totốánn điđiềềuu khikhiểểnn ++ LL (Local(Local datadata block):block): MiMiềềnn ddữữ liliệệuu đđịịaa phươngphương,, đưđượợcc ccáácc khkhốốii chươngchương trtrììnhnh OB,OB, FC,FC, FBFB ttổổ chchứứcc,, ssửử ddụụngng chocho ccáácc bibiếếnn nhnháápp ttứứcc ththờờii vvàà traotrao đđổổii ddữữ liliệệuu ccủủaa bibiếếnn hhììnhnh ththứứcc vvớớii nhnhữữngng khkhốốii chươngchương trtrììnhnh đđãã ggọọii nnĩĩ NNộộii dungdung ccủủaa mmộộtt ssốố ddữữ liliệệuu trongtrong mimiềềnn nhnhớớ nnààyy ssẽẽ bbịị xxĩĩaa khikhi kkếếtt ththúúcc chươngchương trtrììnhnh tươngtương ứứngng trongtrong OB,OB, FC,FC, FB.FB.
  24. 2.6.2.6. VịngVịng ququéétt chươngchương trtrììnhnh  PLCPLC ththựựcc hihiệệnn chươngchương trtrììnhnh theotheo chuchu trtrììnhnh llặặpp MMỗỗii vịngvịng llặặpp đưđượợcc ggọọii llàà vịngvịng ququéétt (scan).(scan). MMỗỗii vịngvịng ququéétt đưđượợcc bbắắtt đđầầuu bbằằngng giaigiai đođoạạnn chuychuyểểnn ddữữ liliệệuu ttừừ ccáácc ccổổngng vvààoo ssốố ttớớii vvùùngng bbộộ đđệệmm ảảoo I,I, titiếếpp theotheo llàà giaigiai đođoạạnn ththựựcc hihiệệnn chươngchương trtrììnhnh  TrongTrong ttừừngng vịngvịng ququéétt,, chươngchương trtrììnhnh đưđượợcc ththựựcc hihiệệnn ttừừ llệệnhnh đđầầuu tiêntiên đđếếnn llệệnhnh kkếếtt ththúúcc ccủủaa khkhốốii OB1.OB1.  SauSau giaigiai đođoạạnn ththựựcc hihiệệnn chươngchương trtrììnhnh llàà giaigiai đođoạạnn chuychuyểểnn ccáácc nnộộii dungdung ccủủaa bbộộ đđệệmm ảảoo QQ ttớớii ccáácc ccổổngng rara ssốố  VịngVịng ququéétt đưđượợcc kkếếtt ththúúcc bbằằngng giaigiai đođoạạnn truytruyềềnn thơngthơng nnộộii bbộộ vvàà kikiểểmm llỗỗii  ThThờờii giangian ccầầnn thithiếếtt đđểể PLCPLC ththựựcc hihiệệnn đưđượợcc mmộộtt vịngvịng ququéétt ggọọii llàà ththờờii giangian vịngvịng ququéétt (Scan(Scan time)time)
  25. 2.7.2.7. CCấấuu trtrúúcc chchươươngng trtrììnhnh CCĩĩ 22 ddạạngng ccấấuu trtrúúcc chươngchương trtrììnhnh sausau::  LLậậpp trtrììnhnh tuytuyếếnn ttíínhnh:: ToTồànn bbộộ chươngchương trtrììnhnh điđiềềuu khikhiểểnn nnằằmm trongtrong mmộộtt khkhốốii trongtrong bbộộ nhnhớớ LoLoạạii hhììnhnh ccấấuu trtrúúcc tuytuyếếnn ttíínhnh nnààyy phphùù hhợợpp vvớớii nhnhũũngng bbààii totốánn ttựự đđộộngng nhnhỏỏ,, khơngkhơng phphứứcc ttạạpp KhKhốốii đưđượợcc chchọọnn phphảảii llàà khkhốốii OB1,OB1, llàà khkhốốii mmàà PLCPLC luơnluơn ququéétt vvàà ththựựcc hihiệệnn ccáácc llệệnhnh trongtrong nnĩĩ thưthườờngng xuyênxuyên,, ttừừ llệệnhnh đđầầuu tiêntiên đđếếnn llệệnhnh cucuốốii ccùùngng vvàà quayquay llạạii llệệnhnh đđầầuu tiêntiên  LLậậpp trtrììnhnh ccĩĩ ccấấuu trtrúúcc:: ChươngChương trtrììnhnh đưđượợcc chiachia ththàànhnh nhnhữữngng phphầầnn nhnhỏỏ vvớớii ttừừngng nhinhiệệmm vvụụ riêngriêng vvàà ccáácc phphầầnn nnààyy nnằằmm trongtrong nhnhữữngng khkhốốii chươngchương trtrììnhnh khkháácc nhaunhau LoLoạạii hhììnhnh ccấấuu trtrúúcc nnààyy phphùù hhợợpp vvớớii nhnhữữngng bbààii totốánn điđiềềuu khikhiểểnn nhinhiềềuu nhinhiệệmm vvụụ vvàà phphứứcc ttạạpp
  26. 2.7.2.7. CCấấuu trtrúúcc chchươươngng trtrììnhnh ((tttt)) PLCPLC S7S7 –– 300300 ccĩĩ 44 loloạạii khkhốốii cơcơ bbảảnn sausau:: - LoLoạạii khkhốốii OBOB (Organization(Organization block):block): khkhốốii ttổổ chchứứcc vvàà ququảảnn lýlý chươngchương trtrììnhnh điđiềềuu khikhiểểnn CCĩĩ ccáácc loloạạii khkhốốii OBOB ccĩĩ chchứứcc năngnăng khkháácc nhaunhau nhưnhư:: OB1,OB1, OB35,OB35, OB40,OB40, - LoLoạạii khkhốốii FCFC (Program(Program block):block): khkhốốii chươngchương trtrììnhnh vvớớii nhnhữữngng chchứứcc năngnăng riêngriêng gigiốốngng nhưnhư mmộộtt chươngchương trtrììnhnh concon hohoặặcc mmộộtt hhààmm MMộộtt chươngchương trtrììnhnh ứứngng ddụụngng ccĩĩ ththểể ccĩĩ nhinhiềềuu khkhốốii FC.FC. - LoLoạạii khkhốốii FBFB (Function(Function block):block): llàà loloạạii khkhốốii FCFC đđặặcc bibiệệtt ccĩĩ khkhảả năngnăng traotrao đđổổii mmộộtt lưlượợngng ddữữ liliệệuu llớớnn vvớớii ccáácc khkhốốii chươngchương trtrììnhnh khkháácc nhaunhau - LoLoạạii khkhốốii DBDB (Data(Data block):block): khkhốốii chchứứaa ccáácc ddữữ liliệệuu ccầầnn thithiếếtt đđểể ththựựcc hihiệệnn chươngchương trtrììnhnh CCáácc thamtham ssốố ccủủaa khkhốốii dodo ngưngườờii ddùùngng ttựự đđặặtt ChươngChương trtrììnhnh trongtrong ccáácc khkhốốii đưđượợcc liênliên kkếếtt vvớớii nhaunhau bbằằngng ccáácc llệệnhnh ggọọii khkhốốii,, chuychuyểểnn khkhốốii S7S7 –– 300300 chocho phphéépp ggọọii chươngchương trtrììnhnh concon llồồngng nhaunhau
  27. 2.8.2.8. NhNhữữngng khkhốốii OBOB đđặặcc bibiệệtt CCáácc khkhốốii OBOB nnààyy chchỉỉ ththựựcc hihiệệnn khikhi xuxuấấtt hihiệệnn ttíínn hihiệệuu bbááoo ngngắắtt ttươươngng ứứngng  OB10OB10 (Time(Time ofof DayDay Interrupt):Interrupt): ChChươươngng trtrììnhnh trongtrong khkhốốii OB10OB10 ssẽẽ đđưượợcc ththựựcc hihiệệnn khikhi gigiáá trtrịị ccủủaa đđồồngng hhồồ ththờờii giangian ththựựcc nnằằmm trongtrong mmộộtt khokhoảảngng ththờờii giangian đđãã đđưượợcc quyquy đđịịnhnh ViViệệcc quyquy đđịịnhnh khokhoảảngng ththờờii giangian hayhay ssốố llầầnn ggọọii OB10OB10 đđưượợcc ththựựcc hihiệệnn nhnhờờ chchươươngng trtrììnhnh hhệệ ththốốngng SFC28SFC28  OB20OB20 (Time(Time DelayDelay Interrupt):Interrupt): ChChươươngng trtrììnhnh trongtrong khkhốốii OB20OB20 ssẽẽ đđưượợcc ththựựcc hihiệệnn sausau mmộộtt khokhoảảngng ththờờii giangian trtrễễ đđặặtt trtrưướớcc kkểể ttừừ khikhi ggọọii chchươươngng trtrììnhnh hhệệ ththốốngng SFC32SFC32 đđểể đđặặtt ththờờii giangian trtrễễ  OB35OB35 (Cyclic(Cyclic Interrupt):Interrupt): ChChươươngng trtrììnhnh trongtrong OB35OB35 ssẽẽ đđưượợcc ththựựcc hihiệệnn ccáchách đđềềuu nhaunhau mmộộtt khokhoảảngng ththờờii giangian ccốố đđịịnhnh MMặặcc đđịịnhnh,, khokhoảảngng ththờờii giangian nnàyày ssẽẽ llàà 100ms100ms vvàà ccĩĩ ththểể thaythay đđổổii gigiáá trtrịị nnàyày
  28.  OB40OB40 (Hardware(Hardware Interrupt):Interrupt): ChươngChương trtrììnhnh trongtrong OB40OB40 ssẽẽ đưđượợcc ththựựcc hihiệệnn khikhi xuxuấấtt hihiệệnn mmộộtt ttíínn hihiệệuu bbááoo ngngắắtt ttừừ ngongoạạii vivi đưađưa vvààoo modulemodule CPUCPU thơngthơng quaqua ccáácc ccổổngng vvààoo rara ssốố onboardonboard đđặặcc bibiệệtt hohoặặcc thơngthơng quaqua ccáácc modulemodule SM,SM, CP,CP, FM.FM.  OB80OB80 (Cycle(Cycle TimeTime Fault):Fault): ĐưĐượợcc ththựựcc hihiệệnn khikhi ththờờii giangian vịngvịng ququéétt (scan(scan time)time) vưvượợtt ququáá khokhoảảngng ththờờii giangian ccựựcc đđạạii đđãã quyquy đđịịnhnh hohoặặcc khikhi ccĩĩ mmộộtt ttíínn hihiệệuu ngngắắtt ggọọii mmộộtt khkhốốii OBOB nnààoo đđĩĩ mmàà khkhốốii OBOB nnààyy chưachưa kkếếtt ththúúcc ởở llầầnn ggọọii trưtrướớcc MMặặcc đđịịnhnh,, scanscan timetime ccựựcc đđạạii llàà 150ms.150ms.  OB81OB81 (Power(Power SupplySupply Fault):Fault): ModuleModule CPUCPU ssẽẽ ggọọii chươngchương trtrììnhnh trongtrong khkhốốii OB81OB81 khikhi phpháátt hihiệệnn ththấấyy ccĩĩ llỗỗii vvềề ngunguồồnn nuơinuơi
  29.  OB82OB82 (Diagnostic(Diagnostic Interrupt):Interrupt): ĐưĐượợcc ggọọii khikhi CPUCPU phpháátt hihiệệnn ccĩĩ ssựự ccốố ttừừ ccáácc modulemodule vvààoo rara mmởở rrộộngng CCáácc modulemodule mmởở rrộộngng nnààyy phphảảii llàà nhnhữữngng modulemodule ccĩĩ khkhảả năngnăng ttựự kikiểểmm tratra mmììnhnh  OB85OB85 (Not(Not LoadLoad Fault):Fault): ĐưĐượợcc ggọọii khikhi phpháátt hihiệệnn ththấấyy chươngchương trtrììnhnh ứứngng ddụụngng ccĩĩ ssửử ddụụngng chchếế đđộộ ngngắắtt nhưngnhưng chươngchương trtrììnhnh xxửử lýlý ttíínn hihiệệuu ngngắắtt llạạii khơngkhơng ccĩĩ trongtrong khkhốốii OBOB tươngtương ứứngng  OB87OB87 (Communication(Communication Fault):Fault): ĐưĐượợcc ggọọii khikhi CPUCPU phpháátt hihiệệnn ththấấyy llỗỗii trongtrong truytruyềềnn thơngthơng,, vvíí ddụụ nhưnhư khơngkhơng ccĩĩ ttíínn hihiệệuu trtrảả llờờii ttừừ đđốốii ttáácc
  30.  OB100OB100 (Start(Start UpUp Information):Information): ĐưĐượợcc ththựựcc hihiệệnn mmộộtt llầầnn khikhi CPUCPU chuychuyểểnn trtrạạngng ththááii ttừừ STOPSTOP sangsang RUN.RUN.  OB121OB121 (Synchronous):(Synchronous): ĐưĐượợcc ththựựcc hihiệệnn khikhi CPUCPU phpháátt hihiệệnn ththấấyy llỗỗii trongtrong chươngchương trtrììnhnh nhưnhư đđổổii saisai kikiểểuu ddữữ liliệệuu hohoặặcc llỗỗii truytruy nhnhậậpp khkhốốii DB,DB, FC,FC, FBFB khơngkhơng ccĩĩ trongtrong bbộộ nhnhớớ ccủủaa CPU.CPU.  OB122OB122 (Synchronous(Synchronous error):error): ĐưĐượợcc ththựựcc hihiệệnn khikhi CPUCPU phpháátt hihiệệnn ththấấyy llỗỗii truytruy nhnhậậpp modulemodule trongtrong chươngchương trtrììnn,, vvíí ddụụ chươngchương trtrììnhnh ccĩĩ llệệnhnh truytruy nhnhậậpp modulemodule vvààoo rara mmởở rrộộngng nhưngnhưng llạạii khơngkhơng ttììmm ththấấyy modulemodule nnààyy
  31. CHCHƯƠƯƠNGNG 33:: HHƯƯỚỚNGNG D DẪẪNSNSỬỬ DDỤỤNGNG PHPHẦẦNMNMỀỀMLMLẬẬPP TRÌNH TRÌNH PLC PLC S7 S7 300300 3.1. Cài đặt Step7 V5.4 3.2. Khái niệm về một Project 3.3. Các bước soạn thảo một Project 3.4. Làm việc với PLC S7-300
  32. 3.1. Cài đặt Step7 V5.4: Làm việc trên máy 3.2. Khái niệm về một project Một project gồm cĩ các thành phần sau:  Bảng cấu hình cứng về tất cả các module của từng trạm PLC.  Bảng tham số xác định chế độ làm việc cho từng module  Các logic block chứa chương trình ứng dụng  Cấu hình ghép nối và truyền thơng giữa các trạm PLC  Các màn hình giao diện phục vụ việc giám sát tồn bộ mạng hoặc giám sát từng trạm PLC của mạng
  33. 3.3.3.3. CCáácc bưbướớcc sosoạạnn ththảảoo mmộộtt projectproject -Mở cửa sổ Step7 V5.4 - Khai báo cấu hình phần cứng cho trạm PLC -Mặc định cĩ sẵn khối OB1, nếu muốn sử dụng thêm khối nào thì tiếp tục khai báo khối đĩ - Đặt tên các đầu vào ra, các bit tương ứng (nếu cần) trong “library” - Viết chương trình trong khối OB1 bằng cách vào S7 program -> OB1
  34. 3.4. Làm việc với PLC S7 – 300 - Quy định địa chỉ MPI cho module CPU - Ghi chương trình lên module CPU - Giám sát việc thực hiện chương trình - Giám sát module CPU - Quan sát nội dung ơ nhớ Các thao tác trên được hướng dẫn và thao tác trực tiếp trên máy tính.
  35. CHCHƯƠƯƠNGNG 44:: NGƠN NGƠN NG NGỮỮ LLẬẬPP TRÌNH TRÌNH STL STL 4.1. Thanh ghi trạng thái (Status word) Thanh ghi gồm 16 bits, chỉ sử dụng 9 bits với cấu trúc sau: - FC: FC=0 khi dãy lệnh logic tiếp điểm vừa được kết thúc, ngược lại FC = 1 - RLO: kết quả tức thời của phép tính logic vừa được thực hiện - STA: Cĩ giá trị logic của tiếp điểm được chỉ định trong lệnh
  36. 4.1. Thanh ghi trạng thái (tt) - OR: Ghi lại giá trị của phép tính logic ^ cuối cùng được thực hiện để phụ giúp cho việc thực hiện phép tínhⅴsau đó. - OS (Stored overflow bit): Ghi lại giá trị Bit bị tràn ra ngoài mảng ô nhớ. - OV(Overflow Bit): Bit báo cáo kết quả phép tính bị tràn ra ngoài mảng ô nhớ. - CC0 và CC1 (Condition code): Hai bit báo trạng thái của kết quả phép tính với số nguyên, số thực phép dịch chuyển hoặc phép tính logic trong ACCU
  37. + Khi thực hiện lệnh toán học như cộng trừ nhân chia với số nguyên hoặc số thực: + Khi thực hiện lệnh dịch chuyển: + Khi thực hiện lệnh logic trong ACCU
  38. 4.1. Thanh ghi trạng thái (tt) - BR (Binary result bit): Bit trạng thái cho phép liên kết hai loại ngôn ngữ lập trình STL và LAD. Chẳng hạn cho phép người sử dụng có thể viết một khối chương trình FB hoặc FC trên ngôn ngữ STL nhưng gọi và sử dụng chúng trong một chương trình khác viết trên LAD. Để tạo ra được mối liên kết đó, ta cần phải kết thúc chương trình trong FB, FC bằng lệnh ghi: + BR = 1 nếu chương trình chạy không có lỗi + BR = 0 nếu chương trình chạy có lỗi
  39. 4.2.4.2. NhNhĩĩmm llệệnhnh logiclogic titiếếpp điđiểểmm 4.2.1.4.2.1. LLệệnhnh ggáánn:: CCúú phpháápp:: == > ToTốánn hhạạngng llàà đđịịaa chchỉỉ bitbit I,I, Q,Q, L,L, M,M, DD LLệệnhnh ggáánn gigiáá trtrịị logiclogic ccảả RLORLO ttớớii ơơ nhnhớớ ccĩĩ đđịịaa chchỉỉ đưđượợcc chchỉỉ ththịị trongtrong totốánn hhạạngng LLệệnhnh ttáácc đđộộngng vvààoo thanhthanh ghighi trtrạạngng ththááii nhưnhư sausau::
  40. 4.2.2.4.2.2. LLệệnhnh ththựựcc hihiệệnn phphéépp ttíínhnh ^^ CCúú phpháápp:: AA > ToTốánn hhạạngng llàà ddữữ liliệệuu kikiểểuu BOOLBOOL hohoặặcc đđịịaa chchỉỉ bitbit I,I, Q,Q, M,M, L,L, D,D, T,T, C.C. NNếếuu FCFC == 0,0, llệệnhnh ssẽẽ ggáánn gigiáá trtrịị logiclogic ccủủaa totốánn hhạạngng vvààoo RLO.RLO. NgưNgượợcc llạạii ssẽẽ ththựựcc hihiệệnn phphéépp ttíínhnh ^^ gigiữữaa RLORLO vvớớii totốánn hhạạngng vvàà ghighi llạạii kkếếtt ququảả vvààoo RLO.RLO. LLệệnhnh ttáácc đđộộngng vvààoo thanhthanh ghighi trtrạạngng ththááii nhưnhư sausau::
  41. 4.2.3.4.2.3. LLệệnhnh ththựựcc hihiệệnn phphéépp ttíínhnh ^^ vvớớii gigiáá trtrịị nghnghịịchch đđảảoo CCúú phpháápp:: ANAN > ToTốánn hhạạngng llàà ddữữ liliệệuu kikiểểuu BOOLBOOL hohoặặcc đđịịaa chchỉỉ bitbit I,I, Q,Q, M,M, L,L, D,D, T,T, CC NNếếuu FC=0,FC=0, llệệnhnh ssẽẽ ggáánn gigiáá trtrịị logiclogic nghnghịịchch đđảảoo ccủủaa totốánn hhạạngng vvààoo RLO.RLO. NgưNgượợcc llạạii,, ssẽẽ ththựựcc hihiệệnn phphéépp ttíínhnh ^^ gigiữữaa RLORLO vvớớii gigiáá trtrịị nghnghịịchch đđảảoo ccủủaa totốánn hhạạngng vvàà ghighi kkếếtt ququảả vvààoo RLO.RLO. LLệệnhnh ttáácc đđộộngng vvààoo thanhthanh ghighi trtrạạngng ththááii nhưnhư sausau::
  42. 4.2.4. Lệnh thực hiện phép tính hợp: Cú pháp: O Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic của toán hạng vào RLO. Ngược lại sẽ thực hiện phép tính hợp giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO. Lệnh tác động vào thanh ghi trạng thái như sau:
  43. 4.2.5. Lệnh thực hiện phép tính hợp với giá trị nghịch đảo Cú pháp: ON Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO. Ngược lại sẽ thực hiện phép tính hợp giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO. Lệnh tác động vao thanh ghi trạng thái như sau:
  44. 4.2.6. Lệnh thực hiện phép tính giao với giá trị một biểu thức Cú pháp: A ( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO. Ngược lại sẽ thực hiện phép tính giao giữa RLO với giá trị logic của biểu thức trong dấu ngoặc sau nó ghi lại kết quả vào RLO. Lệnh sẽ tác động vào thanh ghi trạng thái như sau:
  45. 4.2.7. Lệnh thực hiện phép tính hợp với giá trị một biểu thức Cú pháp: O ( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO. Ngược lại sẽ thực hiện phép tính hợp giữa RLO với giá trị logic của biểu thức trong dấu ngoặc sau nó ghi lại kết quả vào RLO. Lệnh tác động vào thanh ghi trạng thái như sau:
  46. 4.2.8. Lệnh thực hiện phép tính giao với giá trị nghịch đảo của một biểu thức Cú pháp: AN ( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO. Ngược lại sẽ thực hiện phép tính giao giữa RLO với giá trị nghịch đảo logic của biểu thức trong dấu ngoặc sau đó ghi lại kết quả vào RLO. Lệnh tác động vào thanh ghi trạng thái như sau:
  47. 4.2.9. Lệnh thực hiện phép tính hợp với giá trị nghịch đảo một biểu thức Cú pháp: ON ( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của biểu thức trong dấu ngoặc sau nó vào RLO. Ngược lại sẽ thực hiện phép tính hợp giữa RLO với giá trị nghịch đảo logic nghịch đảo của biểu thức trong dấu ngoặc sau đó ghi lại kết quả vào RLO. Lệnh tác động vào thanh ghi trạng thái như sau:
  48. 4.2.10. Lệnh thực hiện phép exclusive or Cú pháp: x Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic của toán hạng vào RLO. Ngược lại sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có khác nhau không .Trong trường hợp khác nhau thì ghí vào RLO, ngược lại thì ghi 0. Nói cách khác, lệnh sẽ đảo nội dung của RLO nếu toán hạng có giá trị là1.
  49. 4.2.11. Lệnh thực hiện phép exclusive or not Cú pháp: XN Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO. Ngược lại sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có khác nhau không. Trong trường hợp khác nhau thì ghi 1 vào RLO, ngược lại thì ghi 0. Nói cách khác, lệnh sẽ đảo nội dung của RLO nếu toán hạng có giá trị là 0.
  50. 4.2.12. Lệnh thực hiện phép exclusive or với giá trị của biểu thức Cú pháp: X( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc vào RLO. Ngược lại sẽ đảo nội dung của RLO khi biểu thức trong dấu ngoặc sau nó có giá trị 1. Lệnh tác động vào thanh ghi trạng thái như sau:
  51. 4.2.13. Lệnh thực hiện phép exclusive or not với giá trị của biểu thức Cú pháp: XN( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của biểu thức trong dấu ngoặc vào RLO. Ngược lại sẽ đảo nội dung của RLO khi biểu thức trong dấu ngoặc sau nó có giá trị 0. Lệnh tác động vào thanh ghi trạng thái như sau:
  52. 4.2.14. Lệnh ghi giá trị logic 1 vào RLO Cú pháp: SET Lệnh không có toán hạng và có tác dụng ghi 1 vào RLO 4.2.15. Lệnh ghi giá trị logic 0 vào RLO Cú pháp: CLR Lệnh không có toán hạng và có tác dụng ghi 0 vào RLO 4.2.16. Lệnh đảo giá trị RLO Cú pháp: NOT Lệnh không có toán hạng và có tác dụng đảo nội dung của RLO
  53. 4.2.17. Lệnh gán có điều kiện giá trị logic 1 vào ô nhớ Cú pháp: S Toán hạng là địa chỉ Bit I,Q,M,L,D Nếu RLO =1, lệnh sẽ ghi giá trị 1 vào ô nhớ có địa chỉ trong toán hạng 4.2.18. Lệnh gán có điều kiện giá trị logic 0 vào ô nhớ Cú pháp: R Toán hạng là địa chỉ Bit I,Q,M,L,D Nếu RLO =1, lệnh sẽ ghi giá trị 0 vào ô nhớ có địa chỉ trong toán hạng
  54. 4.2.19. Lệnh phát hiện sườn lên Cú pháp FP Toán hạng là địa chỉ bit I, Q, M, L, D và được sử dụng như một biến cờ để ghi nhận lại giá trị của RLO tại vị trí này trong chương trình nhưng của vòng quét trước. Tại mỗi vòng quét lệnh sẽ kiểm tra: nếu biến cờ ( toán hạng)có giá trị 0 và RLO có giá trị 1 thì sẽ ghi 1 vào RLO, các trường hợp khác thì ghi 0, đồng thời chuyển nội dung của RLO vào lại biến cờ. Như vậy RLO sẽ có giá trị 1 trong vòng quét khi có sườn lên trong RLO. Nếu RLO =1, lệnh sẽ ghi giá trị 0 vào ô nhớ có địa chỉ trong toán hạng
  55. 4.2.20. Lệnh phát hiện sườn xuống Cú pháp: FN Toán hạng là địa chỉ bit I, Q, M, L, D và được sử dụng như một biến cờ để ghi nhận lại giá trị của RLO tại vị trí này trong chương trình nhưng của vòng quét trước. Tại mỗi vòng quét lệnh sẽ kiểm tra: nếu biến cờ ( toán hạng) có giá trị 1 và RLO có giá trị 0 thì sẽ ghi 1 vào RLO, các trường hợp khác thì ghi 0, đồng thời chuyển nội dung của RLO vào lại biến cờ. Như vậy RLO sẽ có giá trị 1 trong vòng quét khi có sườn xuống trong RLO.
  56. 4.3. Lệnh đọc, ghi và đảo vị trí bytes trong thanh ghi ACCU Các CPU của S7-300 thường có hai thanh ghi Accumulator (ACCU), kí hiệu là ACCU1 và ACCU2. Hai thanh ghi ACCU có cùng kích thước 32 bits (1 từ kép). Mọi phép tính toán trên số thực, số nguyên, các phép tính logic với mảng nhiều bit đều được thực hiện trên hai thanh ghi này
  57. 4.3.1. Lệnh đọc vào ACCU Cú pháp: L Toán hạng là dữ liệu (số nguyên, thực, nhị phân) hoặc địa chỉ Tác dụng: chuyển nội dung của ô nhớ có địa chỉ là toán hạng vào thanh ghi ACCU1. Nội dung cũ của ACCU1 được chuyển vào ACCU2. Trong trường hợp giá trị chuyển vào nhỏ hơn từ kép thì chúng sẽ được ghi vào theo thứ tự Byte thấp của từ thấp, Byte thấp của từ cao, Byte cao của từ cao. Những Bit còn trống trong ACCU1 được ghi 0.
  58. 4.3.2. Lệnh chuyển nội dung của ACCU tới ô nhớ Cú pháp: T Toán hạng là địa chỉ: - Byte IB,QB,PIB,MB,LB,DBB,DIB trong khoảng 0 - 255 - Từ IW,QW,PIW,MW,LW,DBW,DIW trong khoảng 0 - 216 - 1 - Từ kép ID,QD,PID,MD,LD,DBD,DID trong khoảng 0 – 232-1 Tác dụng: Lệnh chuyển nội dung của ACCU1 vào ô nhớ có địa chỉ là toán hạng
  59. 4.3.3. Lệnh đọc nội dung thanh ghi trạng thái vào ACCU1 Cú pháp: L STW Tác dụng: Lệnh chuyển nội dung thanh ghi trạng thái vào từ thấp của ACCU1 4.3.4. Lệnh ghi nội dung của ACCU1 vào thanh ghi trạng thái Cú pháp: T STW Tác dụng: Lệnh chuyển 9 bits của từ thấp của ACCU1 vào thanh ghi trạng thái
  60. 4.3.5. Lệnh chuyển nội dung của ACCU2 vào ACCU1 Cú pháp: POP Tác dụng: Lệnh chuyển nội dung của ACCU2 vào ACCU1, nội dung của thanh ghi ACCU2 không đổi. 4.3.6. Lệnh chuyển nội dung của ACCU1 vào ACCU2 Cú pháp: PUSH Tác dụng: Lệnh chuyển nội dung của ACCU1 vào ACCU2, nội dung của thanh ghi ACCU1 không đổi. 4.3.7. Lệnh đảo nội dung của hai thanh ghi ACCU1 và ACCU2 Cú pháp: TAK Tác dụng: Lệnh chuyển nội dung của ACCU1 vào ACCU2 và ngược lại.
  61. 4.3.8. Lệnh đảo nội dung hai Byte của từ thấp trong thanh ghi ACCU1 Cú pháp: CAW Tác dụng: Đảo nội dung hai byte của từ thấp trong thanh ghi ACCU1. 4.3.9. Lệnh đảo nội dung các Byte trong thanh ghi ACCU1 Cú pháp: CAD Tác dụng:Đảo nội dung tất cả 4 Byte trong thanh ghi ACCU1.
  62. 4.3.10. Lệnh đảo giá trị các Bits trong từ thấp của thanh ghi ACCU1 Cú pháp: INVI Tác dụng: Đảo nội dung tất cả các Bits trong từ thấp của thanh ghi ACCU1. 4.3.11. Lệnh đảo giá trị các Bits trong thanh ghi ACCU1 Cú pháp: INVD Tác dụng: Đảo nội dung tất cả các Bits trong thanh ghi ACCU1.
  63. 4.4. Các lệnh Logic thực hiện trên thanh ghi ACCU 4.4.1. Lệnh thực hiện phép giao giữa các bits trong từ thấp của ACCU1, ACCU2 Cú pháp: AW [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng, lệnh thực hiện phép tính giao giữa các bits thuộc từ thấp của hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào từ thấp của thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 16 bits. Khi đó lệnh thực hiện phép tính giao giữa dữ liệu với từ thấp của ACCU1. Kết quả được ghi lại vào từ thấp của ACCU1
  64. 4.4.2. Lệnh thực hiện phép giao giữa các bits của hai thanh ghi ACCU1,ACCU2 Cú pháp: AD [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng, lệnh thực hiện phép tính giao giữa hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 32 bits. Khi đó lệnh thực hiện phép tính giao giữa dữ liệu với thanh ghi ACCU1. Kết quả được ghi lại vào thanh ghi ACCU1.
  65. 4.4.3. Lệnh thực hiện phép hợp giữa các bits trong từ thấp của ACCU1,ACCU2 Cú pháp: OW [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng, lệnh thực hiện phép tính hợp giữa các bits thuộc từ thấp của hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào từ thấp của thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 16 bits. Khi đó lệnh thực hiện phép tính hợp giữa dữ liệu với từ thấp của ACCU1. Kết quả được ghi lại vào từ thấp của ACCU1
  66. 4.4.4. Lệnh thực hiện phép giao giữa các bits của hai thanh ghi ACCU1, ACCU2 Cú pháp: OD [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng, lệnh thực hiện phép tính hợp giữa hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 32 bits. Khi đó lệnh thực hiện phép tính hợp giữa dữ liệu với thanh ghi ACCU1. Kết quả được ghi lại vào thanh ghi ACCU1.
  67. 4.4.5. Lệnh thực hiện phép tính exclusive or 16 bits Cú pháp: XOW [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng, lệnh thực hiện phép tính exclusive or giữa các bits của hai từ thấp của hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào từ thấp của thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 16 bits. Khi đó lệnh thực hiện phép tính exclusive giữa dữ liệu với từ thấp của ACCU1. Kết quả được ghi lại vào từ thấp của ACCU1.
  68. 4.4.6. Lệnh thực hiện phép tính exclusive or 16 bits Cú pháp: XOD [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng, lệnh thực hiện phép tính exclusive or giữa các bits của hai hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 32 bits. Khi đó lệnh thực hiện phép tính exclusive giữa dữ liệu với thanh ghi ACCU1. Kết quả được ghi lại vào thanh ghi ACCU1
  69. 4.5. Nhóm lệnh tăng giảm nội dung thanh ghi ACCU 4.5.1. Lệnh tăng nội dung thanh ghi ACCU1 Cú pháp: INC Toán hạng là số nguyên 8 bits. Lệnh thực hiện phép cộng giữa byte thấp trong ACCU1 với toán hạng. Kết quả được ghi vào byte thấp của từ thấp của ACCU1. Nội dung của các Byte khác không thay đổi. 4.5.2. Lệnh giảm nội dung thanh ghi ACCU1 Cú pháp: DEC Toán hạng là số nguyên 8 bits. Lệnh thực hiện phép trừ giữa byte thấp trong ACCU1 với toán hạng. Kết quả được ghi vào byte thấp của từ thấp của ACCU1. Nội dung của các Byte khác không thay đổi.
  70. 4.6. Nhóm lệnh dịch chuyển nội dung thanh ghi ACCU 4.6.1. Lệnh xoay tròn các bits của ACCU1 theo chiều trái Cú pháp: RLD [ ] Lệnh cĩ thể cĩ hoặc khơng cĩ tốn hạng +Nếu cĩ tốn hạng +Nếu khơng cĩ tốn hạng
  71. 4.6.2. Lệnh xoay tròn ACCU1 theo chiều trái 1 bit Cú pháp: RLDA Lệnh không có toán hạng Lệnh thực hiện xoay tròn theo chiều trái 1 bit. Bit thứ 31 (bit cuối) bị đẩy ra khỏi ACCU1 được ghi vào CC1, nội dung bit CC1 được chuyển vào bit 0 (bit đầu tiên).
  72. 4.6.3. Lệnh xoay tròn các bits của ACCU1 theo chiều phải Cú pháp: RRD [ ] Lệnh có thể có hoặc không có toán hạng 4.6.4. Lệnh xoay tròn ACCU1 theo chiều phải 1 bit Cú pháp: RRDA Lệnh không có toán hạng
  73. 4.6.5. Lệnh dịch trái các bits của từ thấp của ACCU1 Cú pháp: SLW [ ] Lệnh có thể có hoặc không có toán hạng 4.6.6. Lệnh dịch trái các bits của ACCU1 Cú pháp: SLD [ ] Lệnh có thể có hoặc không có toán hạng
  74. 4.6.7. Lệnh dịch phải các bits của từ thấp của ACCU1 Cú pháp: SRW [ ] Lệnh có thể có hoặc không có toán hạng. 4.6.8. Lệnh dịch phải các bits của ACCU1 Cú pháp: SRD [ ] Lệnh có thể có hoặc không có toán hạng.
  75. 4.6.9. Lệnh dịch phải số nguyên 16 bit trong ACCU1 Cú pháp: SSI [ ] Lệnh có thể có hoặc không có toán hạng. 4.6.10. Lệnh dịch phải số nguyên 32 bit trong ACCU1 Cú pháp: SSD [ ] Lệnh có thể có hoặc không có toán hạng.
  76. 4.7. Nhóm lệnh so sánh số nguyên 16 bits Nhĩm lệnh này tác động vào thanh ghi trạng thái như sau:
  77. 4.7.1. Lệnh so sánh 2 số nguyên 16 bits Cú pháp: = = I Lệnh không có toán hạng . Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong từ thấp của ACCU1 có nội dung giống như số nguyên trong từ thấp của ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại, sẽ có giá trị 0.
  78. 4.7.2. Lệnh so sánh không bằng nhau 2 số nguyên 16 bits Cú pháp: <> I Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong từ thấp của ACCU1 có nội dung khác số nguyên trong từ thấp của ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1. + Ngược lại, sẽ có giá trị 0.
  79. 4.7.3. Lệnh so sánh lớn hơn 2 số nguyên 16 bits Cú pháp: >I Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong từ thấp của ACCU2 lớn hơn số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1. + Ngược lại, sẽ có giá trị 0.
  80. 4.7.4. Lệnh so sánh nhỏ hơn 2 số nguyên 16 bits Cú pháp: < I Lệnh không có toán hạng. Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong từ thấp của ACCU2 nhỏ hơn số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  81. 4.7.5. Lệnh so sánh lớn hơn hoặc bằng 2 số nguyên 16 bits Cú pháp: >= I Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong từ thấp của ACCU2 lớn hơn hoặc bằng số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  82. 4.7.6. Lệnh so sánh bé hơn hoặc bằng 2 số nguyên 16 bits Cú pháp: <= I Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong từ thấp của ACCU2 bé hơn hoặc bằng số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  83. 4.8. Nhóm lệnh so sánh số nguyên 32 bits Nhĩm lệnh này tác động vào thanh ghi trạng thái như sau:
  84. 4.8.1. Lệnh so sánh 2 số nguyên 32 bits Cú pháp: = = D Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong thanh ghi ACCU1 có nội dung giống như số nguyên trong thanh ghi ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  85. 4.8.2. Lệnh so sánh không bằng nhau 2 số nguyên 32 bits Cú pháp: <> D Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong thanh ghi ACCU1 có nội dung khác số nguyên trong thanh ghi ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  86. 4.8.3. Lệnh so sánh lớn hơn 2 số nguyên 32 bits Cú pháp: >D Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong thanh ghi ACCU2 lớn hơn số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  87. 4.8.4. Lệnh so sánh nhỏ hơn 2 số nguyên 32 bits Cú pháp: < D Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong thanh ghi ACCU2 nhỏ hơn số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  88. 4.8.5. Lệnh so sánh lớn hơn hoặc bằng 2 số nguyên 32 bits Cú pháp: >= D Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong thanh ghi ACCU2 lớn hơn hoặc bằng số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  89. 4.8.6. Lệnh so sánh bé hơn hoặc bằng 2 số nguyên 32 bits Cú pháp: <= D Lệnh không có toán hạng. Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số nguyên trong thanh ghi ACCU2 bé hơn hoặc bằng số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  90. 4.9. Nhóm lệnh so sánh số thực 32 bits Nhĩm lệnh này tác động vào thanh ghi trạng thái như sau:
  91. 4.9.1. Lệnh so sánh 2 số thực 32 bits Cú pháp: = = R Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số thực trong thanh ghi ACCU1 có nội dung giống như số thực trong thanh ghi ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  92. 4.9.2. Lệnh so sánh không bằng nhau 2 số thực 32 bits Cú pháp: <> R Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số thực trong thanh ghi ACCU1 có nội dung khác số thực trong thanh ghi ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  93. 4.9.3. Lệnh so sánh lớn hơn 2 số thực 32 bits Cú pháp: >R Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số thực trong thanh ghi ACCU2 lớn hơn số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  94. 4.9.4. Lệnh so sánh nhỏ hơn 2 số thực 32 bits Cú pháp: < R Lệnh không có toán hạng . Tác dụng: Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số thực trong thanh ghi ACCU2 nhỏ hơn số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  95. 4.9.5. Lệnh so sánh lớn hơn hoặc bằng 2 số thực 32 bits Cú pháp: >= R Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số thực trong thanh ghi ACCU2 lớn hơn hoặc bằng số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  96. 4.9.6. Lệnh so sánh bé hơn hoặc bằng 2 số thực 32 bits Cú pháp: <= R Lệnh không có toán hạng. Tác dụng: Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2. + Nếu số thực trong thanh ghi ACCU2 bé hơn hoặc bằng số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1 + Ngược lại sẽ có giá trị 0.
  97. 4.10. Các lệnh toán học Nhĩm lệnh tốn học này tác động vào thanh ghi trạng thái như sau:
  98. 4.10.1. Nhóm lệnh làm việc với số nguyên 16 bits Lệnh cộng: Cú pháp: + I Tác dụng: Lệnh thực hiện phép cộng hai số nguyên nằm trong từ thấp của ACCU1 và ACCU2. Kết quả được ghi lại vào từ thấp của ACCU1. Nội dung của thanh ghi ACCU2 không bị thay đổi. Nếu giá trị vượt tầm -32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị 1. Lệnh trừ: Cú pháp: - I Tác dụng: Lệnh thực hiện phép trừ hai số nguyên nằm trong từ thấp của ACCU1 và ACCU2. Kết quả được ghi lại vào từ thấp của ACCU1. Nội dung của thanh ghi ACCU2 không bị thay đổi. Nếu giá trị vượt tầm -32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị 1.
  99. Lệnh nhân: Cú pháp: * I Tác dụng: Lệnh thực hiện phép nhân hai số nguyên nằm trong từ thấp của ACCU1 và ACCU2. Kết quả là số nguyên 32 Bits được ghi lại vào thanh ghi ACCU1. Nội dung của thanh ghi ACCU2 không bị thay đổi. Nếu giá trị vượt tầm -32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị 1. Lệnh chia: Cú pháp: / I Tác dụng: Lệnh thực hiện phép chia hai số nguyên nằm trong từ thấp của ACCU2 cho từ thấp của ACCU1. Kết quả được ghi lại vào từ thấp của ACCU1, phần dư được ghi vào từ cao thanh ghi ACCU1. Nếu giá trị vượt tầm -32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị 1.
  100. 4.10.2. Nhóm lệnh làm việc với số nguyên 32 bits Lệnh cộng: Cú pháp: + D Tác dụng: Lệnh thực hiện phép cộng hai số nguyên 32 bit nằm trong hai thanh ghi ACCU1 và ACCU2. Kết quả được ghi lại vào thanh ghi ACCU1. Nội dung của thanh ghi ACCU2 không bị thay đổi. Nếu giá trị vượt tầm (-2147483648, 2147483648) thì OV và OS sẽ Lệnhcùng nhận trừ: giá trị là 1. Cú pháp: - D Tác dụng: Lệnh thực hiện phép trừ hai số nguyên 32 bit nằm trong hai thanh ghi ACCU1 và ACCU2. Kết quả được ghi lại vào thanh ghi ACCU1. Nội dung của thanh ghi ACCU2 không bị thay đổi. Nếu giá trị vượt tầm (-2147483648, 2147483648) thì OV và OS sẽ cùng nhận giá trị là 1.
  101. Lệnh nhân: Cú pháp: * D Lệnh thực hiện phép nhân hai số nguyên 32 bits trong hai thanh ghi ACCU1 và ACCU2. Kết quả là số nguyên 32 Bits được ghi lại vào thanh ghi ACCU1. Nội dung của thanh ghi ACCU2 không bị thay đổi. Nếu giá trị vượt tầm (-2147483648, 2147483648) thì OV và OS sẽ cùng nhận giá trị là 1. Lệnh chia: Cú pháp: / D Lệnh thực hiện phép chia hai số nguyên 32 bits trong ACCU2 cho số nguyên 32 bits trong thanh ghi ACCU1. Kết quả là số nguyên 32 bits sẽ được ghi lại vào thanh ghi ACCU1. Nếu giá trị vượt tầm (-2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1.
  102. Lệnh lấy phần dư: Cú pháp: MOD Lệnh không có toán hạng Tác dụng: Xác định phần dư của phép chia số nguyên 32 bits trong ACCU2 cho số nguyên 32 bits trong ACCU1. Kết quả là số nguyên 32 bits được ghi lại vào ACCU1. Nếu giá trị vượt tầm (-2147483648, 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1.
  103. 4.11. Các lệnh điều khiển chương trình 4.11.1. Nhóm lệnh kết thúc chương trình Lệnh kết thúc vô điều kiện: Cú pháp: BEU Lệnh không có toán hạng Tác dụng: Thực hiện kết thúc chương trình trong khối một cách vô điều kiện. Lệnh kết thúc có điều kiện: Cú pháp: BEC Lệnh không có toán hạng Tác dụng: Thực hiện kết thúc chương trình trong khối nếu như RLO có giá trị bằng 1.
  104. 4.12.1. Nhóm lệnh rẽ nhánh theo bit trạng thái Tác dụng: Nhằm bỏ qua một đoạn chương trình để tới đoạn chương trình khác được đánh dấu bằng nhãn nếu điều kiện kiểm tra trong thanh ghi trạng thái được thoả mãn. Nơi lệnh nhảy tới phải thuộc cùng một khối chương trình với lệnh. Nhãn là một dãy với nhiều nhất 4 kí tự hoặc số và phải được bắt đầu bằng một kí tự. Khoảng cách bước nhảy tính theo ô nhớ chương trình phải ít hơn 32767 từ. Nơi nhảy đến có thể nằm trước hay nằm sau lệnh nhảy.
  105. Rẽ nhánh khi BR=1 Cú pháp: JBI Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit BR trong thanh ghi trạng thái bằng 1 Rẽ nhánh khi BR=0 Cú pháp: JNBI Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit BR trong thanh ghi trạng thái bằng 0 Rẽ nhánh khi RLO=1 Cú pháp: JC Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit RLO trong thanh ghi trạng thái bằng 1
  106. Rẽ nhánh khi RLO=0 Cú pháp: JCN Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit RLO trong thanh ghi trạng thái bằng 0 Rẽ nhánh khi CC1=0 và CC0=1 Cú pháp: JM Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit ( CC1 = 0 và CC0 = 1). Nó được sử dụng để rẽ nhánh nếu như phép tính trước đó có kết quả âm. Rẽ nhánh khi CC1=1 và CC0=0 Cú pháp: JP Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit ( CC1 = 1 và CC0 = 0). Nó được sử dụng để rẽ nhánh nếu như phép tính trước đó có kết quả dương.
  107. Rẽ nhánh khi CC1=0 và CC0=0 Cú pháp: JZ Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit ( CC1 = 0 và CC0 = 0). Nó được sử dụng để rẽ nhánh nếu như phép tính trước đó có kết quả bằng 0. Rẽ nhánh khi CC1 khác CC0 Cú pháp: JN Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit ( CC1 khác CC0). Nó được sử dụng để rẽ nhánh nếu như phép tính trước đó có kết quả khác 0. Rẽ nhánh khi CC1=CC0=0 hoặc (CC1=0 và CC0=1) Cú pháp: JMZ Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit ( CC1 =CC0= 0 hoặc (CC1=0 và CC0 = 1)). Nó được sử dụng để rẽ nhánh nếu như phép tính trước đó có kết quả là một số không dương.
  108. Rẽ nhánh khi CC1=CC0=0 hoặc (CC1=1 và CC0=0) Cú pháp: JPZ Lệnh sẽ thực hiện việc nhảy tới Nhãn nếu như Bit ( CC1 =CC0= 0 hoặc (CC1=1 và CC0 = 0)). Nó được sử dụng để rẽ nhánh nếu như phép tính trước đó có kết quả là một số không âm. Rẽ nhánh vô điều kiện Cú pháp: JU Lệnh sẽ thực hiện việc nhảy tới Nhãn vô điều kiện không phụ thuộc vào bit trạng thái nào.
  109. 4.12. Lệnh xoay vòng Cú pháp: LOOP Khi gặp lệnh LOOP, CPU sẽ tự giảm nội dung của từ thấp trong thanh ghi ACCU1 đi một đơn vị và kiểm tra xem kết quả có bằng 0 hay không. Nếu kết quả khác 0, CPU sẽ thực hiện bước nhảy đến đoạn chương trình được đánh dấu bởi “nhãn”. Ngược lại CPU sẽ thực hiện lệnh kế tiếp. Đoạn chương trình nằm giữa nhãn và lệnh LOOP sẽ được thực hiện cho tới khi nội dung thanh ghi ACCU1 bằng 0. Lệnh không làm thay đổi nội dung của thanh ghi trạng thái
  110. 4.13. Lệnh đổi kiểu dữ liệu: 4.13.1. Chuyển đổi số BCD thành số nguyên và ngược lại Lệnh chuyển đổi BCD thành số nguyên 16 bits: Cú pháp: BTI Lệnh không có toán hạng Tác dụng: Chuyển đổi một số BCD có 3 chữ số nằm trong 12 Bits đầu của ACCU1 thành số nguyên 16 bits. Kết quả được cất lại vào 16 bits cuối (từ thấp) của ACCU1. Lệnh không làm thay đổi nội dung của thanh ghi trạng thái.
  111. Nếu số BCD cần chuyển đổi có cấu trúc sai, ví dụ như có 1 chữ số 4 bits nhị phân không nằm trong khoảng từ 0 đến 9, CPU sẽ gọi chương trình ngắt xử lí lỗi OB121 hoặc chuyển qua chế độ Stop (nếu OB121 không có chương trình).
  112. Lệnh chuyển đổi BCD thành số nguyên 32 bits: Cú pháp: BTD Lệnh không có toán hạng Tác dụng: Chuyển đổi một số BCD có 7 chữ số nằm trong 28 Bits đầu của ACCU1 thành số nguyên 32 bits. Kết quả được cất lại vào thanh ghi ACCU1. Lệnh không làm thay đổi nội dung của thanh ghi trạng thái.
  113. Lệnh chuyển đổi số nguyên 16 bits thành số BCD: Cú pháp: ITB Lệnh không có toán hạng Tác dụng: Chuyển đổi một số nguyên 16 bits thành số BCD có 3 chữ số. Kết quả được cất lại vào từ thấp của thanh ghi ACCU1. Nếu số nguyên 16 bits cần chuyển đổi có giá trị tuyệt đối lớn hơn 999, CPU sẽ thông báo trong thanh ghi trạng thái dưới dạng kết quả tràn.
  114. Lệnh chuyển đổi số nguyên 32 bits thành số BCD: Cú pháp: DTB Lệnh không có toán hạng Tác dụng: Chuyển đổi một số nguyên 32 bits thành số BCD có 7 chữ số. Kết quả được cất lại vào thanh ghi ACCU1. Nếu số nguyên 32 bits cần chuyển đổi có giá trị tuyệt đối lớn hơn 9999999, CPU sẽ thông báo trong thanh ghi trạng thái dưới dạng kết quả tràn.
  115. 4.13.2. Chuyển đổi số nguyên 16 bits thành số nguyên 32 bits Cú pháp: ITD Lệnh không có toán hạng Tác dụng: Thực hiện việc chuyển đổi một số nguyên 16 bits trong từ thấp của ACCU1 thành số nguyên 32 bits. Kết quả được cất vào lại ACCU1. Lệnh không làm thay đổi nội dung của thanh ghi trạng thái.
  116. 4.13.3. Chuyển đổi số nguyên 32 bits thành số thực Cú pháp: DTR Lệnh không có toán hạng Tác dụng: Thực hiện việc chuyển đổi một số nguyên 32 bits trong thanh ghi ACCU1 thành số thực. Kết quả được cất vào lại ACCU1. Lệnh không làm thay đổi nội dung của thanh ghi trạng thái.
  117. 4.14. Bộ thời gian ( Timer) 4.14.1. Nguyên tắc làm việc Bộ thời gian (Timer) là bộ tạo thời gian trễ τ mong muốn giữa tín hiệu logic đầu vào u(t) và tín hiệu logic đầu ra y(t). Thời gian trễ τ mong muốn được khai báo với Timer bằng một giá trị 16 bits, bao gồm hai thành phần: - Độ phân giải với đơn vị ms. -Một số nguyên (BCD) trong khoảng 0 – 999 được gọi là PV (Preset Value) Như vậy, thời gian τ mong muốn: τ = Độ phân giải*PV
  118. 4.14.2. Khai báo sử dụng: Việc khai báo sử dụng Timer bao gồm các bước: -Khai báo tín hiệu enable nếu muốn sử dụng tín hiệu chủ động kích -Khai báo tín hiệu đầu vào u(t) -Khai báo thời gian trễ mong muốn -Khai báo loại Timer được sử dụng (SD,SS,SP,SE,SF) -Khai báo tín hiệu xoá Timer nếu muốn sử dụng chế độ reset chủ động Trong tất cả 5 bước trên, các bước 2, 3, 4 là bắt buộc.
  119. 1. Khai báo tín hiệu enable (chủ động kích) Cú pháp: A FR Tốn hạng thứ nhất “Địa chỉ bit” xác định tín hiệu sẽ được sử dụng làm tín hiệu chủ động kích cho Timer có tên trong toán hạng thứ hai. 2. Khai báo tín đầu vào Cú pháp: A “Địa chỉ bit” trong tốn hạng xác định tín hiệu đầu vào u(t) cho Timer.
  120. 3. Khai báo thời gian trễ mong muốn Cú pháp: L “Hằng số” trong tốn hạng xác định giá trị thời gian trễ τ đặt trước cho Timer. Hằng số này có 2 dạng: - S5T#giờH_phútM_giâyS_miligiâyMS. Đây là dạng dữ liệu thời gian trực tiếp. - Dạng một số nguyên 16 bits có cấu trúc như sau:
  121. 4. Khai báo loại Timer S7_300 có 5 loại timer được khai báo bằng các lệnh: - SD: trễ có sườn lên không có nhớ - SS: Trễ theo sườn lên có nhớ - SP: Tạo xung không có nhớ - SE: Tạo xung có nhớ - SF : Trễ theo sườn xuống. Những lệnh này tác động vào thanh ghi trạng thái như sau:
  122. 5. Khai báo tín hiệu xoá (Reset) Cú pháp: A R Tốn hạng thứ nhất “Địa chỉ bit” xác định tín hiệu sẽ được sử dụng làm tín hiệu chủ động xoá cho timer có tên trong toán hạng thứ 2. Khi tín hiệu xoá bằng 1, T-Word (Thanh ghi CV) và T- bit cùng đồng thời được đưa về 0. Nếu tín hiệu xoá về 0, Timer sẽ chờ được kích lại.
  123. 4.15. Bộ đếm ( Counter) 4.15.1. Nguyên tắc làm việc Couter là bộ đếm thực hiện chức năng đếm sườn xung của các tín hiệu đầu vào. Ký hiệu: Cx Trong đĩ, x là số nguyên trong khoảng từ 0-255
  124. 4.15.2. Khai báo sử dụng Việc khai báo sử dụng Counter bao gồm các bước: - Khai báo tín hiệu enable nếu muốn sử dụng tín hiệu chủ động kích. - Khai báo tín hiệu đầu vào CU được đếm tiến - Khai báo tín hiệu đầu vào CD được đếm lùi - Khai báo tín hiệu đặt (set) và giá trị đặt trước (PV) - Khai báo tín hiệu xoá (reset). Trong tất cả 5 bước trên,các bước 2,3 là bắt buộc
  125. 1. Khai báo tín hiệu enable (kích đếm) Cú pháp: A FR Tốn hạng thứ nhất “Địa chỉ bit” xác định tín hiệu sẽ được sử dụng làm tín hiệu kích đếm cho bộ đếm có tên cho trong toán hạng thứ hai. 2. Khai báo tín hiệu được đếm tiến theo sườn lên Cú pháp: A CU Tốn hạng thứ nhất “Địa chỉ bit” xác định tín hiệu mà sườn lên của nó được bộ đếm với tên cho trong toán hạng thứ hai đếm tiến. Mỗi khi xuất hiện một sườn lên của tín hiệu ,bộ đếm sẽ tăng nội dung của thanh ghi C Word (CV) lên 1 đơn vị.
  126. 3. Khai báo tín hiệu được đếm lùi theo sườn lên Cú pháp: A CD Tốn hạng thứ nhất “Địa chỉ bit” xác định tín hiệu mà sườn lên của nó được bộ đếm với tên cho trong toán hạng thứ hai đếm lùi. Mỗi khi xuất hiện một sườn lên của tín hiệu, bộ đếm sẽ giảm nội dung của thanh ghi C-Word đi 1 đơn vị. 4. Khai báo tín hiệu đặt (set) giá trị đặt trước (PV) Cú pháp: A L C# S
  127. 5. Khai báo tín hiệu xoá (reset) Cú pháp: A R Tốn hạng thứ nhất “Địa chỉ bit”xác định tín hiệu mà mỗi khi xuất hiện sườn lên của nó, thanh ghi C-Word của bộ đếm có tên trong toán hạng của lệnh thứ hai sẽ được xoá về 0.
  128. CHƯƠNG 5:KỸ THUẬTLẬP TRÌNH 5.1. Lập trình tuyến tính 5.2. Lập trình cĩ cấu trúc
  129. 5.1. Lập trình tuyến tính Kỹ thuật lập trình tuyến tính là phương pháp lập trình mà tồn bộ chương trình ứng dụng sẽ chỉ nằm trong một khối OB1.
  130. Local block của OB1 Khi thực hiện khối OB1, hệ điều hành luơn cấp một local block cĩ kích thước mặc định là 20bytes trong Work memory để OB1 cĩ thể lấy được những dữ liệu từ hệ điều hành. Mặc dù kích thước chỉ là 20 bytes mặc định, nhưng nguời sử dụng cĩ thể mở rộng local block để sử dụng thêm các biến nhớ cho chương trình. Local block được giải phĩng ở cuối mỗi vịng quét và được cấp lại ở đầu vịng quét sau nên các giá trị cĩ trong local block của vịng quét trước cũng bị mất khi bắt đầu vịng quét mới.
  131. 5.2. Lập trình cĩ cấu trúc Ngồi khối chương trình chính OB1, ta cịn sử dụng thêm các khối chương trình con OB, FB, FC.  Trong một chương trình, khối OB1 luơn được quét qua, cịn các khối chương trình con khác chỉ được quét khi cĩ lệnh gọi đến nĩ.  Khi cĩ lệnh gọi, chương trình chính OB1 dừng tạm thời, và chương trình con được gọi sẽ được thực hiện. Sau khi thực hiện xong chương trình con, chu trình tiếp tục quét dịng lệnh tiếp theo của OB1.
  132. CHCHƯƠƯƠNGNG 66:B:BÀÀITITẬẬPP TH THỰỰCHCHÀÀNHNH 6.1.6.1. PhânPhân loloạạii ssảảnn phphẩẩmm ddùùngng mmộộtt ccảảmm bibiếếnn 6.2.6.2. PhânPhân loloạạii ssảảnn phphẩẩmm ddùùngng haihai ccảảmm bibiếếnn 6.3.6.3. ĐĐếếmm ssốố ssảảnn phphẩẩmm ddùùngng mmộộtt ccảảmm bibiếếnn 6.4.6.4. PhânPhân loloạạii vvàà đđếếmm ssảảnn phphẩẩmm ddùùngng haihai ccảảmm bibiếếnn 6.5.6.5. HiHiểểnn ththịị ssốố ssảảnn phphẩẩmm trêntrên ledled 77 đođoạạnn 6.6.6.6. ĐiĐiềềuu khikhiểểnn đđèènn giaogiao thơngthơng