Đồ án Nghiên cứu, tìm hiểu về PLC S7-300

Lời nói đầu Nền công nghiệp thế giới đang trên đã phát triển ngày càng cao, trong đó vấn đề tự động điều khiển được đặt lên hàng đầu trong quá trình nghiên cứu cũng như ứng dụng công nghệ mới vào trong sản xuất. Nó đòi hỏi khả năng xử lý, mức độ hoàn hảo, sự chính xác của hệ thống ngày một cao hơn để có thể đáp ứng được nhu cầu về số lượng, chất lượng, thẩm mỹ ngày càng cao của xã hội. Nhận thức được tầm quan trọng đó nên chúng em nghiên cứu, tìm hiểu về PLC S7-300, nhằm góp phần vào công nghiệp hóa, hiện đại hóa đất nước. Nội dung dồ án bao gồm 4 chương, trong dó: - Chương I: Cấu hình cứng của hệ PLC S7-300 - Chương II: Kỹ thuật lập trình trên nền PLC S7-300 - Chương III: Giới thiệu và làm việc với phần mềm Step7 - Chương IV: Bài toán ứng dụng Trong qua trình thiết kế đồ án, chúng em xin cảm ơn sự giúp đỡ tận tình của giáo viên hướng dẫn, PGS.TS Phan Xuân Minh và dặc biệt là sự giúp đỡ của bộ môn đã cho chúng em sử dụng phòng Siemens để hoàn thành đồ án này. Mặc dù đã rất cố gắng nhưng trong quá trình làm đồ án vẫn không thể tránh khỏi những sai sót, chúng em mong sự đóng góp ý kiến và gúp đỡ của các thầy cô và các bạn sinh viên để đồ án của em được hoàn thiện hơn. Mục lục Chương I: Cấu hình cứng của hệ PLC S7-300 1.1. Cấu tạo chung của PLC S7-300 1.2. Các lĩnh vực ứng dụng của PLC S7-300 . 1.3. Phân loại PLC S7-300 theo cấu trúc . 1.3.1. PLC có cấu trúc Onboard . 1.3.2. PLC có cấu trúc module (Great PLC) . 1.3.2.1. Module nguồn (PS) . 1.3.2.2. Module CPU . 1.3.2.3. Module tín hiệu vào/ra (SM) . 1.3.2.4. Module chức năng (FM) 1.3.2.5. Module truyền thông CP 1.3.2.6. Module kết nối vào/ra phân tán (ET 200M) 1.4. Cấu hình tập trung 1.4.1. Kết nối hệ SIMATIC PLC S7-300 1.4.2. Phương pháp gán địa chỉ tự động 1.4.3. Trao đổi dữ liệu giữa CPU và Module mở rộng . 1.5. Cấu hình vào ra phân tán 1.5.1. Giới thiệu 1.5.2. Module CPU có cổng DP 1.5.3. Module CPU không có cổng DP 1.6. Mạng MPI (Multi-point-Capable-Interface) . 1.6.1. Giới thiệu về mạng MPI . 1.6.2. Các bước khai báo một mạng MPI . Chương II: kỹ thuât lập trình trên nền SIMATIC S7-300 . 2.1. Giới thiệu chung về ngôn ngữ lập trình S7-300 . 2.1.1 Kiểu dữ liệu 2.1.2. Sơ lược về ngôn ngữ lập trình STL (Statement list) . 2.1.3. Các lệnh cơ bản 2.1.4. Các lệnh toán học . 2.1.5. Lệnh logic tiếp điểm trên thanh ghi trạng thái . 2.2. Bộ thời gian (Timer) 2.3. Bộ đếm (counter) 2.4. Lập trình tuyến tính 2.5. Lập trình có cấu trúc . 2.5.1. Cơ sở lý thuyết 2.5.1.1. Khai báo local block cho FC . 2.5.1.2. Gọi khối FC và thủ tục truyền tham trị . 2.5.1.3. Local block của FB . 2.5.1.4. Instance block và thủ tục gọi khối FB 2.5.1.5. Sử dụng các khối OB . 2.5.1.5.1. Ngăn xếp I (I - Stack) . 2.5.1.5.2. Chương trình ứng dụng xử lý ngắt . 2.5.1.5.3. Chương trình khởi động (Initialization) 2.5.1.5.4. Xử lý lỗi hệ thống . 2.5.1.6. Những hàm chuẩn quản lý ngắt . 2.5.1.6.1. Che và bỏ mặt nạ che các tín hiệu ngắt . 2.5.1.6. 2. Che và bỏ mặt nạ che tín hiệu báo lỗi đồng bộ Chương III: Giới thiệu và làm việc với phần mềm Step7 . 3.1. Giới thiệu chung về phần mềm Step7 3.2. Cài đặt Step7 và chọn chế độ làm việc . 3.2.1. Cài Đặt Step7 3.2.2. Đặt tham số làm việc 3.3. Soạn Thảo Một Project 3.3.1. Khai báo và mở rộng một Project . 3.3.2. Xây dựng cấu hình cứng cho trạm PLC 3.3.3. Đặt tham số quy định chế độ làm việc cho module . 3.3.4. Soạn thảo chương trình cho các khối logic . 3.3.5. Sử dụng thư viện của Step7 3.3.6. Sử dụng tên hình thức 3.4. Làm Việc Với PLC S7 – 300 . 3.4.1. Quy định địa chỉ MPI cho module CPU 4.4.2. Ghi chương trình lên module CPU 4.4.3. Giám sát việc thực hiện chương trình . 4.4.4. Giám sát module CPU . 4.4.5. Quan sát nội dung ô nhớ . CHƯƠNG IV: Bài toán ứng dụng . 4.2. Bài toán điều khiển đèn đường giao thông . 4.2.1. Thiết lập bài toán điều khiển 4.2.2. Chọn các cổng vào ra . 4.2.3. Cấu trúc chương trình . 4.2.4. Chương trình điều khiển .

doc41 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3758 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu, tìm hiểu về PLC S7-300, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nã. Xo¸ OB1 vµ gi¶i phãng local block trong Work memory. Thùc hiÖn OB1 trong Work memory System memory Share DB Instance DB vßng quÐt H×nh 2.1. Thùc hiÖn mét ch­¬ng tr×nh tuyÕn tÝnh Local block cña OB1 Khi thùc hiÖn khèi OB1, hÖ ®iÒu hµnh lu«n cÊp cña mét Local block cã kÝch th­íc mÆc ®Þnh lµ 20 bytes trong Work memory ®Ó OB1 cã thÓ lÊy nh÷ng d÷ liÖu tõ hÖ ®iÒu hµnh, nh÷ng d÷ liÖu nµy gåm: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB1_EV_CLASS Byte Bits 0-3=1(Coming event). Bits 4-7=1(Event class 1) OB1_SCAN_1 Byte 1=vßng quÐt ®Çu, 3=tõ vßng quÐt thø 2 OB1_PRIORITY Byte Møc ­u tiªn 1(Møc ­u tiªn thø nhÊt) OB1_OB_NUMBR Byte 1=ChØ sè cña khèi OB OB1_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB1_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB1_PREV_CYCLE Int Thêi gian vßng quÐt tr­íc (miliseconds) OB1_MIN_ CYCLE Int Thêi gian vßng quÐt ng¾n nhÊt ®· cã (miliseconds) OB1_MAX_ CYCLE Int Thêi gian vßng quÐt lín nhÊt ®· cã (miliseconds) OB1_DATE_TIME Date_And_Time Thêi ®iÓm OB1 b¾t ®Çu ®­îc thùc hiÖn MÆc dï kÝch th­íc chØ lµ 20 bytes mÆc ®Þnh nh­ng ng­ê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 (h×nh d­íi), tuy nhiªn ph¶i ®Ó ý r»ng do Local block ®­îc gi¶i phãng ë cuèi mçi vßng quÐt vµ ®­îc cÊp l¹i ë 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. Do ®ã tèt nhÊt chØ nªn sö dông Local block cho viÖc l­u gi÷ biÕn nh¸p t¹m thêi trong tÝnh to¸n cña mét vßng quÐt. Address Decl. Name Type 0.0 temp. OB1_EV_CLASS 1.0 temp. OB1_SCAN_1 2.0 temp. OB1_PRIORITY 3.0 temp. OB1_OB_NUMBR 4.0 temp. OB1_RESERVED_1 5.0 temp. OB1_RESERVED_2 6.0 temp. OB1_PREV_CYCLE 8.0 temp. OB1_MIN_ CYCLE 10.0 temp. OB1_MAX_ CYCLE 12.0 temp. OB1_DATE_TIME 20.0 temp. Temp1 24.0 temp. Temp2 28.0 temp. Temp3 30.0 temp. Temp4 31.0 temp. Temp5 31.1 temp. Temp6 Ng­êi sö dông kh«ng ®­îc thay ®æi c¸c biÕn nµy. PhÇn ng­êi sö dông ®Þnh nghÜa thªm ®Ó sö dông. Cßn l¹i c¸ch sö dông local block còng kh«ng kh¸c g× nh­ sö dông vïng biÕn cê M (Bit memory). Ch¼ng h¹n, ®Ó ®äc kho¶ng thêi gian thùc hiÖn vßng quÐt tr­íc ®· ®­îc hÖ ®iÒu hµnh chuyÓn vµo « nhí 2 bytes gåm byte 6 vµ byte 7 trong local block d­íi d¹ng sè nguyªn 16 bits, ta dïng lÖnh. L LW6 //§äc néi dung 2 bytes kÓ tõ ®Þa chØ 6 cña local block vµo ACCU1 Bªn c¹nh viÖc truy nhËp theo ®Þa chØ « nhí nh­ ®· lµm, ta cßn cã thÓ sö dông tªn biÕn h×nh thøc OB1_PREV_CYCLE ®· cã cña « nhí LW6 nh­ sau: L #OB1_PREV_CYCLE 2.5. LËp tr×nh cã cÊu tróc 2.5.1. C¬ së lý thuyÕt LËp tr×nh cã cÊu tróc (structure programming) lµ kü thuËt cµi ®Æt thuËt to¸n ®iÒu khiÓn b»ng c¸ch chia nhá thµnh c¸c khèi ch­¬ng tr×nh con FC hay FB víi mçi khèi thùc hiÖn mét nhiÖm vô cô thÓ cña bµi to¸n ®iÒu khiÓn chung vµ toµn bé c¸c khèi ch­¬ng tr×nh nµy l¹i ®­îc qu¶n lý mét c¸ch thèng nhÊt bëi khèi OB1. Trong OB1 cã c¸c lÖnh gäi nh÷ng khèi ch­¬ng tr×nh con theo thø tù phï hîp víi bµi to¸n ®iÒu khiÓn ®Æt ra. Hoµn toµn t­¬ng tù, mét nhiÖm vô ®iÒu khiÓn con cã thÓ cßn ®­îc chia nhá thµnh nhiÒu nhiÖm vô nhá vµ cô thÓ h¬n n÷a, do ®ã mét khèi ch­¬ng tr×nh con còng cã thÓ ®­îc gäi tõ mét khèi ch­¬ng tr×nh con kh¸c. Duy cã ®iÒu cÊm kþ ta cÇn ph¶i tr¸nh lµ kh«ng bao giê mét khèi ch­¬ng tr×nh con l¹i gäi ®Õn chÝnh nã. Ngoµi ra do cã sù h¹n chÕ vÒ ng¨n xÕp cña c¸c module CPU nªn kh«ng ®­îc tæ chøc ch­¬ng tr×nh con gäi lång nhau qu¸ sè lÇn mµ module CPU ®­îc sö dông cho phÐp. §Ó ®¬n gi¶n trong tr×nh bµy, khi mét khèi ch­¬ng tr×nh con nµy gäi mét khèi ch­¬ng tr×nh con kh¸c, ta sÏ ký hiÖu khèi chøa lÖnh gäi lµ khèi mÑ vµ khèi ®­îc gäi lµ khèi con. H×nh d­íi ®©y m« t¶ quy tr×nh thùc hiÖn viÖc gäi mét khèi con FC10 tõ khèi mÑ OB1. ChuyÓn FC10 vµo Work memory, cÊp ph¸t local block vµ g¸n tham trÞ tõ OB1 FC10 BE OB1 call FC10 Tr¶ tham trÞ vÒ OB1. Xo¸ FC10 vµ local block trong Work memory H×nh 2.2. Thùc hiÖn gäi khèi FC10 Gi÷a khèi mÑ vµ khèi con cã sù liªn kÕt thÓ hiÖn qua viÖc trao ®æi c¸c gi¸ trÞ, khi gäi khèi con khèi mÑ cÇn cho nh÷ng s¬ kiÖn th«ng qua c¸c tham trÞ ®Çu vµo ®Ó khèi con thùc hiÖn nhiÖm vô. Sau khi thùc hiÖn xong nhiÖm vô, khèi con ph¶i tr¶ l¹i cho khèi mÑ kÕt qu¶ b»ng nh÷ng tham trÞ ®Çu ra, hÖ ®iÒu hµnh cña CPU tæ chøc viÖc truyÒn tham trÞ th«ng qua local block cña tõng khèi con. Nh­ vËy, khi thùc hiÖn lÖnh gäi khèi con, hÖ ®iÒu hµnh sÏ : ChuyÓn khèi con ®­îc gäi tõ vïng Load memory vµo vïng Work memory. CÊp ph¸t cho khèi con mét phÇn bé nhí trong Work memory ®Ó lµm local block. CÊu tróc local block ®­îc qui ®Þnh khi so¹n th¶o c¸c khèi. 3) TruyÒn c¸c tham trÞ tõ khèi mÑ cho biÕn h×nh thøc IN, IN-OUT cña local block. Sau khi khèi con thùc hiÖn xong nhiÖm vô vµ ghi kÕt qu¶ d­íi d¹ng tham trÞ ®Çu ra cho biÕn OUT,IN-OUT cña local block , hÖ ®iÒu hµnh sÏ chuyÓn c¸c tham trÞ nµy cho khèi mÑ vµ gi¶i phãng khèi con cïng local block ra khái vïng Work memory. 2.5.1.1. Khai b¸o local block cho FC Local block cña khèi con ®­îc chia thµnh hai phÇn: - PhÇn c¸c biÕn h×nh thøc ®Ó khèi con nhËn vµ truyÒn tham trÞ víi khèi mÑ. BiÕn h×nh thøc trong local block cña FC cã ba lo¹i cho trong b¶ng d­íi: Lo¹i biÕn h×nh thøc ý nghÜa IN BiÕn h×nh thøc nhËn tham trÞ tõ khèi mÑ lµm s¬ kiÖn cho ch­¬ng tr×nh trong khèi con OUT BiÕn h×nh thøc truyÒn tham trÞ tõ khèi con vÒ khèi mÑ IN- OUT BiÕn h×nh thøc võa cã kh¶ n¨ng nhËn võa cã kh¶ n¨ng truyÒn tham trÞ gi÷a khèi con víi khèi mÑ. - PhÇn chøa c¸c biÕn t¹m thêi ®­îc ký hiÖu lµ TEMP (ch÷ viÕt t¾t cña temporary) chøa c¸c gi¸ trÞ tÝnh to¸n tøc thêi. Do local block sÏ ®­îc gi¶i phãng khi kÕt thóc ch­¬ng tr×nh, gi¸ trÞ c¸c biÕn t¹m thêi nµy còng sÏ bÞ mÊt theo ngay sau khi ch­¬ng tr×nh trong khèi con ®­îc thùc hiÖn xong. ViÖc khai b¸o local block ®ång nghÜa víi viÖc ®Æt tªn biÕn, ®Þnh nghÜa lo¹i biÕn (biÕn h×nh thøc hay biÕn t¹m thêi) vµ kiÓu d÷ liÖu (nguyªn, thùc,ký tù…) cho tõng biÕn, trong ®ã tªn biÕn lµ nh÷ng d·y ký tù hoÆc sè vµ kh«ng thuéc nhãm ký tù kho¸ (®· ®­îc dïng bëi hÖ ®iÒu hµnh). Ch­¬ng tr×nh truy nhËp local block th«ng qua c¸c tªn biÕn d­íi d¹ng to¸n h¹ng cña lÖnh theo cÊu tróc: # VÝ dô: L # receive // §äc néi dung cña « nhí cã tªn lµ receive trong local block vµo ACCU1. T # transit // ChuyÓn ACCU1 tíi « nhí cã tªn lµ transit trong local block. Chó ý: Mét ®iÒu cÇn ph¶i ®­îc ®Æc biÖt chó ý lµ b¾t ®Çu tõ miÒn c¸c biÕn t¹m thêi TEMP, ®Þa chØ ®­îc ®¸nh l¹i tõ ®Çu. MiÒn biÕn h×nh thøc kh«ng ®­îc cÊp « nhí mµ chØ cã con trá ®Þa chØ. Do ®ã nÕu trong tr­¬ng tr×nh, to¸n h¹ng cña nh÷ng lÖnh truy nhËp « nhí cña local block cã cÊu tróc: L# Th× ®ã sÏ lµ « nhí thuéc miÒn c¸c biÕn TEMP . Nh÷ng kiÓu d÷ liÖu hîp lÖ cho tÊt c¶ c¸c lo¹i biÕn (kÕ c¶ biÕn h×nh thøc vµ biÕn t¹m thêi) ®­îc tæng kÕt trong b¶ng sau: KiÓu d÷ liÖu KÝch th­íc (bit) Tham trÞ thÝch hîp BOOL 1 KiÓu biÕn logic v¬Ý hai gi¸ trÞ 0 hoÆc 1.Tham trÞ cã thÓ lµ mét gi¸ trÞ logic (TRUE/FALSE) hoÆc lµ néi dung mét bit BYTE 8 Tham trÞ ph¶i lµ néi dung cña mét byte WORD 16 Tham trÞ ph¶i lµ néi dung cña mét tõ (2 byte) DWORD 32 Tham trÞ ph¶i lµ néi dung cña mét tõ kÐp (4 byte ) CHAR 8 Tham trÞ ®­îc truyÒn cã thÓ lµ mét m· ASCII hoÆc néi dung cña mét byte INT 16 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ(2 byte) hoÆc lµ mét sè nguyªn trong kho¶ng -32768 ¸32767 DINT 32 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ kÐp (4 byte) hoÆc lµ mét sè nguyªn trong kho¶ng -231¸231 –1 REAL 32 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ kÐp (4 byte) hoÆc lµ mét sè thùc dÊu ph¶y ®éng.VÝ dô:3.1416. TIME 32 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ kÐp hoÆc lµ mét sè ®o kho¶ng thêi gian d¹ng T# ngµy D_giêH_phótM_gi©yS_mili gi©yMS DATE 32 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ kÐp (4 byte) hoÆclµ mét gi¸ trÞ ngµy th¸ng d¹ng D#n¨m-th¸ng-ngµy TOD 32 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ kÐp (4 byte) hoÆc lµ mét gi¸ trÞ thêi gian d¹ng TOD# ngµy D_giêH_phótM_gi©yS_mili gi©yMS S5TIME 32 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña mét tõ kÐp (4 byte) hoÆc lµ mét gi¸ trÞ thêi gian d¹ng S5T# ngµy D_giêH_phótM_gi©yS_mili gi©yMS Date_And_Time 64 Tham trÞ ®­îc truyÒn vµo cã thÓ lµ néi dung cña « nhí cã kiÓu Date_And_Time(DT) hoÆc lµ mét gi¸ trÞ d¹ng DT # n¨m-th¸ng-ngµy-giê:phót:gi©y:mili gi©y ANY 80 §©y lµ kiÓu biÕn tæng qu¸t, thay thÕ ®­îc cho c¸c kiÓu ë trªn.Ngoµi ra tham trÞ cña kiÓu biÕn nµy cßn cã thÓ lµ thanh ghi CV,T_Bit,C_Bit,tªn cña Timer, tªn cña Counter; tªn c¸c logic block nh­ FB10, FC2… tªn biÕn h×nh thøc 2.5.1.2. Gäi khèi FC vµ thñ tôc truyÒn tham trÞ LÖnh gäi mét khèi con vµ truyÒn tham trÞ cho nã tõ khèi mÑ cã d¹ng: Có ph¸p CALL FCx Trong ®ã FCx lµ tªn khèi con ®­îc gäi. Ngay khi gÆp lÖnh gäi mét khèi con, ch­¬ng tr×nh so¹n th¶o Step7 sÏ c¨n cø vµo cÊu tróc cña local block, cô thÓ lµ nh÷ng biÕn h×nh thøc cña khèi con (biÕn IN, OUT, IN_OUT), mµ cho hiÖn t¹i nh÷ng biÕn nµy chê ng­êi sö dông khai b¸o tham trÞ. KiÓu tham trÞ truyÒn tõ khèi con th«ng qua biÕn h×nh thøc IN hay IN_OUT phô thuéc vµo kiÓu ®· g¸n, cô thÓ lµ: - NÕu biÕn ®­îc khai b¸o mét trong c¸c kiÓu BOOL, CHAR, INT, DINT, TIME, BOOL, DATE, TOD, S5TIME th× tham trÞ truyÒn cã thÓ lµ mét gi¸ trÞ cô thÓ hoÆc lµ néi dung cña mét « nhí cã kÝch th­íc t­¬ng øng. - NÕu biÕn ®­îc khai b¸o theo kiÓu BYTE, WORD, DWORD, DINT th× ph¶i lµ néi dung cña « nhí cã kÝch th­íc phï hîp. Riªng ®èi víi tham trÞ ®­îc khèi con tr¶ vÒ cho khèi mÑ qua biÕn h×nh thøc OUT hay IN-OUT th× lu«n ph¶i lµ mét « nhí cã kÝch th­íc cïng víi biÕn. 2.5.1.3. Local block cña FB Nh­îc ®iÓm cña cña kiÓu khèi FC lµ néi dung c¸c biÕn t¹m thêi theo TEMP kh«ng ®­îc l­u gi÷ l¹i cho nh÷ng vßng quÐt sau. §iÒu nµy b¾t buéc nh÷ng khèi FC sö dông biÕn kiÓu TEMP trong local block ph¶i ®­îc thùc hiÖn xong trong mét vßng quÐt vµ do ®ã h¹n chÕ miÒn sö dông cña chóng. Kh¾c phôc nh­îc ®iÓm trªn, S7-300/400 cung cÊp mét lo¹i khèi cã tÝnh n¨ng t­¬ng tù nh­ khèi FC nh­ng l¹i cã kh¶ n¨ng l­u gi÷ l¹i ®­îc néi dung c¸c biÕn t¹m thêi cho c¸c vßng quÐt kÕ tiÕp, ®­îc gäi lµ khèi hµm FB. Lo¹i biÕn t¹m thêi cã néi dung ®­îc l­u gi÷ nµy cã tªn lµ STAT (viÕt t¾t cña static). Ph­¬ng thøc l­u gi÷ l¹i néi dung c¸c biÕn lo¹i STAT ®­îc hÖ ®iÒu hµnh thùc hiÖn nhê mét khèi d÷ liÖu nh­ sau: OB1 call FB1, DB2 ChuyÓn FB1 vµo Work memory, cÊp ph¸t local block g¾n tham trÞ cho biÕn h×nh thøc tõ OB1 vµ cho biÕn lo¹i STAT tõ DB2 DB22 Tr¶ tham trÞ vÒ OB1 ghi l¹i biÕn lo¹i STAT vµo DB2. Xo¸ FB1 vµ local block cña nã khái Work memory FB1 BE BD2 H×nh 2.3. Thùc hiÖn gäi khèi FB1 kÌm cïng víi DB2 vµ OB1. - Khi thùc hiÖn lÖnh gäi, hÖ ®iÒu hµnh chuyÓn khèi FB ®­îc gäi vµo Work memory cÊp ph¸t cho nã trong Work memory mét local block nh­ yªu cÇu. Ghi c¸c tham trÞ tõ khèi mÑ vµo c¸c biÕn h×nh thøc lo¹i IN, IN-OUT, vµ néi dung c¸c « nhí t­¬ng øng trong DB kÌm theo biÕn lo¹i STAT trong local block. - Khi ch­¬ng tr×nh trong khèi FB kÕt thóc, hÖ ®iÒu hµnh chuyÓn néi dung cña biÕn h×nh thøc lo¹i OUT, IN-OUT vÒ cho khèi mÑ vµ ghi l¹i c¸c gi¸ trÞ biÕn théc lo¹i STAT trong local block vµo khèi d÷ liÖu kÌm theo, sau ®ã gi¶i phãng local block cïng khèi FB ra khái Work memory. VÒ c¬ b¶n local block cña khèi FB còng gièng nh­ cña khèi FC, nh­ng cã thªm biÕn lo¹i STAT. C¸c lo¹i biÕn cña khèi FB cho trong b¶ng d­íi: Lo¹i biÕn ý nghÜa IN BiÕn h×nh thøc sö dông ®Ó nhËn tham trÞ tõ khèi mÑ lµm s¬ kiÖn cho ch­¬ng tr×nh trong khèi con OUT BiÕn h×nh thøc dïng ®Ó tr¶ tham trÞ tõ khèi con vÒ khèi mÑ IN-OUT BiÕn h×nh thøc, lo¹i biÕn nµy võa cã kh¶ n¨ng nhËn võa cã kh¶ n¨ng tr¶ tham trÞ cho khèi mÑ. STAT Néi dung cña biÕn lo¹i nµy cã kh¶ n¨ng l­u gi÷ l¹i khi kÕt thóc ch­¬ng tr×nh trong FB TEMP BiÕn t¹m thêi.Néi dung sÏ bÞ mÊt khi ch­¬ng tr×nh trong FB kÕt thóc ViÖc khai b¸o local block cho FB còng hoµn toµn t­¬ng tù nh­ cho FC gåm ®Æt tªn biÕn, x¸c ®Þnh, x¸c ®Þnh lo¹i biÕn (biÕn h×nh thøc hay, STAT hay TEMP) vµ kiÓu d÷ liÖu (nguyªn, thùc, ký tù) cho tõng biÕn. Tªn biÕn ph¶i lµ nh÷ng d·y ký tù hoÆc sè vµ kh«ng thuéc nhãm ký tù kho¸ (®· ®­îc dïng bëi hÖ ®iÒu hµnh). 2.5.1.4. Instance block vµ thñ tôc gäi khèi FB Kh¸c víi khèi FC, khèi hµm FB bao giê còng lµm viÖc víi mét khèi d÷ liÖu DB dïng ®Ó l­u gi÷ néi dung c¸c biÕn kiÓu STAT local block. Khèi DB nµy cã tªn khèi d÷ liÖu lµ Instance, lý do lµ khi ta thùc hiÖn lÖnh gäi khèi hµm FB, hÖ ®iÒu hµnh còng më lu«n khèi d÷ liÖu nµy b»ng lÖnh “OPN DI”. Nh­ vËy kÌm víi lÖnh gäi khèi FB ta ph¶i chØ thÞ lu«n c¶ lu«n c¶ tªn khèi d÷ liÖu DB t­¬ng øng. LÖnh gäi khèi hµm FB cã cÊu tróc nh­ sau: Có ph¸p CALL FBx , DBy Trong ®ã FBx lµ tªn khèi hµm ®­îc gäi, vµ DBy lµ tªn khèi d÷ liÖu kÌm theo, khèi d÷ liÖu DBy ph¶i cã cÊu tróc phï hîp víi local block cña FBx ®· ®­îc so¹n th¶o. PhÇn mÒm Step7 hç trî ng­êi so¹n th¶o viÖc t¹o lËp khèi d÷ liÖu DB cã cÊu tróc phï hîp víi local block cña khèi hµm FB ®­îc gäi, ngay sau khi viÕt lÖnh gäi mét khèi hµm FB vµ nÕu khèi DB kÌm theo ch­a ®­îc so¹n th¶o tr­íc, Step7 sÏ sÏ t¹o lËp mét DB míi cã cÊu tróc phï hîp víi local block cña khèi hµm FB ®ã. 2.5.1.5. Sö dông c¸c khèi OB C¸c khèi OB cã thÓ ®­îc xÕp theo lo¹i c«ng dông thµnh 3 nhãm: Nhãm c¸c khèi OB chøa ch­¬ng tr×nh øng dông xö lý ng¾t, Nhãm c¸c khèi OB chøa ch­¬ng tr×nh khëi ®éng, Nhãm c¸c khèi OB xö lý lçi trong hÖ thèng. Còng nh­ FC, FB, khèi OB lµ khèi chøa ch­¬ng tr×nh, do ®ã còng lµ mét logic block. §iÓm kh¸c biÖt c¬ b¶n gi÷a OB vµ c¸c khèi kh¸c thuéc logic block lµ OB kh«ng ®­îc gäi chñ ®éng ®Ó thùc hiÖn (vÝ dô b»ng lÖnh CALL) mµ bÞ ®éng bëi c¸c tÝn hiÖu ng¾t. Kh¸i niÖm “bäi bÞ ®éng” ®­îc hiÓu lµ vÞ trÝ còng nh­ thêi ®iÓm ph¸t lÖnh gäi kh«ng ®­îc lËp tr×nh tõ tr­íc mµ hoµn toµn mang tÝnh ngÉu nhiªn. Ch­¬ng tr×nh trong c¸c khèi OB nµy còng cã thÓ cã c¸c lÖnh gäi khèi FC hoÆc khèi FB nh­ng tÊt nhiªn kh«ng thÓ gäi mét khèi OB kh¸c. Mçi khèi OB ®­îc gäi b»ng mét lo¹i tÝn hiÖu ng¾t, nÕu x¶y ra hiÖn t­îng xuÊt hiÖn cïng mét lóc nhiÒu tÝn hiÖu ng¾t th× sao? Trong tr­êng hîp nh­ vËy, khèi OB nµo cã thø tù ­u tiªn cao h¬n sÏ ®­îc xö lý tr­íc vµ ch­¬ng tr×nh trong khèi OB cã thø tù ­u tiªn thÊp h¬n ph¶i chê cho tíi khi tÊt c¶ c¸c khèi cã ­u tiªn cao h¬n ®­îc xö lý xong míi ®Õn l­ît ®­îc thùc hiÖn. Khèi OB1 lµ khèi cã møc ­u tiªn thÊp nhÊt vµ do ®ã mäi tÝn hiÖu ng¾t ®Òu ng¾t ®­îc qu¸ tr×nh thùc hiÖn ch­¬ng tr×nh cña khèi OB1. 2.5.1.5.1. Ng¨n xÕp I (I - Stack) Do còng ®­îc gäi (bÞ ®éng b»ng tÝn hiÖu ng¾t) nªn gièng nh­ viÖc xö lý lÖnh CALL, hÖ ®iÒu hµnh cÇn ph¶i cÊt gi÷ vÞ trÝ quay vÒ, c¸c d÷ liÖu cµn thiÕt ®Ó tiÕp tôc c«ng viÖc trong khèi mÑ. Ng¨n xÕp cÊt nh÷ng d÷ liÖu nµy cã tªn lµ I-Stack (h×nh d­íi), ®é s©u cña ng¨n xÕp I quyÕt ®Þnh sè c¸c khèi ch­¬ng tr×nh xö lý ng¾t (OB) ®­îc lång nhau vµ ®é s©u nµy phô thuéc vµo chñng lo¹i cña tõng module CPU. I- Stack Néi dung thanh ghi ACCU1,ACCU2 Néi dung thanh ghi AR1,AR2 Néi dung thanh ghi DI,DB Con trá chØ vµo L-Stack chøa néi dung local block cña khèi mÑ Néi dung thanh ghi tr¹ng th¸i Tªn khèi mÑ §Þa chØ quay vÒ OB1 OB35 TÝn hiÖu ng¾t gäi khèi OB35 H×nh 2.4. CÊt gi÷ d÷ liÖu cÇn thiÕt cho viÖc quay vÒ khi xö lý xong ng¾t vµo 2.5.1.5.2. Ch­¬ng tr×nh øng dông xö lý ng¾t Ch­¬ng tr×nh øng dông xö lý ng¾t ®­îc hiÓu lµ lo¹i ch­¬ng tr×nh viÕt cho c¸c khèi OB vµ ®­îc gäi bëi c¸c tÝn hiÖu b¸o ng¾t thuéc lo¹i: §­îc ph¸t ra ®Òu ®Æn c¸ch ®Òu nhau mét kho¶ng thêi gian ®Þnh tr­íc. §­îc ph¸t ra t¹i mét ®iÓm thêi gian ®Þnh tr­íc §­îc ph¸t ra tõ c¸c modul (ng¾t cøng) * Ng¾t tuÇn tù theo thêi gian (OB30 ¸OB38) Ngay khi nhËn thÊy trong ch­¬ng tr×nh cã mét trong c¸c khèi OB30 ¸OB38, hÖ thèng sÏ tù ®éng tÝch cùc chÕ ®é ph¸t tÝn hiÖu b¸o ng¾t gäi c¸c khèi nµy víi kho¶ng thêi gian c¸ch ®Òu nhau. Gi¸ trÞ mÆc ®Þnh cho chu kú ph¸t tÝn hiÖu b¸o ng¾t nµy lµ 100ms, nãi c¸ch kh¸c cø 100ms th× c¸c khèi OB nµy ®­îc gäi vµ thùc hiÖn mét lÇn. Tæng hîp th× tÊt c¶ c¸c khèi trong kho¶ng OB30 ¸ OB38 ®Òu thuéc nhãm. khèi ch­¬ng tr×nh xö lý ng¾t theo chu kú thêi gian. Song kh«ng ph¶i module nµo còng cho phÐp sö dông tÊt c¶ c¸c khèi OB ®ã, ch¼ng h¹n CPU 314 chØ cho phÐp sö dông OB35. Tr­êng hîp cã nhiÒu khèi OB cïng xö lý mét tÝn hiÖu b¸o ng¾t th× ta cã thÓ ph©n biÖt chóng víi nhau theo thø tù ­u tiªn. ChØ sè thø tù ­u tiªn ®­îc g¾n cho tõng khèi nhê phÇn mÒm Step7. Ta còng cã thÓ sö dông Step7 ®Ó thay ®æi chu kú ph¸t tÝn hiÖu b¸o ng¾t. Local block cña c¸c khèi OB30 ¸ OB38 cã d¹ng chung gièng nh­ cña OB35 cho trong b¶ng sau: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB35_EV_CLASS Byte Bits 0-3=1(Coming event), Bits 4-7=1(Event class 1) OB35_SCAN_1 Byte B¸o OB35 ®· ®­îc thùc hiÖn b»ng gi¸ trÞ 16#36 OB35_PRIORITY Byte Cã gi¸ trÞ lµ 11(thø tù ­u tiªn) OB35_OB_NUMBR Byte 35 lµ chØ sè cña khèi OB35 OB35_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB35_ RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB35_PHASE_OFFSET Word Thêi gian trÔ (miliseconds) OB35_ RESERVED_3 Int Dù tr÷ (cña hÖ ®iÒu hµnh) OB35_ EXC_FREQ Int Chu kú thêi gian thùc hiÖn (miliseconds) OB35_DATE_TIME Date_And_Time Thêi ®iÓm OB35 b¾t ®Çu ®­îc thùc hiÖn So víi c¸c biÕn trong local block cña OB1 th× biÕn OB35_EXC_FREQ vµ OB35_PHASE_OFFSET lµ h¬i kh¸c vÒ mÆt ý nghÜa sö dông vµ cÇn ®­îc gi¶i thÝch râ thªm : OB35_EXC_FREQ chøa chu kú ph¸t tÝn hiÖu ng¾t (mÆc ®Þnh lµ 100ms hoÆc ®· ®­îc qui ®Þnh l¹i thµnh Ta nhê Step7). OB35_PHASE_OFFSET chøa kho¶ng thêi gian trÔ kÓ tõ khi xuÊt hiÖn tÝn hiÖu b¸o ng¾t cho tíi khi OB35 ®­îc gäi. Th«ng th­êng « nhí nµy cã néi dung b»ng 0, song trong mét sè tr­êng hîp øng dông ng­êi ta vÉn ph¶i g¸n cho nã mét gi¸ trÞ d­¬ng kh¸c 0 nh»m tr¸nh nguy c¬ nhiÒu khèi OB30 ¸ OB38 cïng ®­îc thùc hiÖn mét lóc dÔ g©y ra lçi vÒ thêi gian cho hÖ thèng. Nh­ ®· nãi, ngay khi ph¸t hÖn thÊy mét trong c¸c khèi OB30 ¸ OB38 cã trong Load memory hÖ th«ng sÏ tù ®éng tÝch cùc chÕ ®é ph¸t tÝn hiÖu b¸o ng¾t theo chu kú 100ms. Chu kú Ta =100ms mÆc ®Þnh cã thÓ söa l¹i ®­îc nhê c«ng cô phÇn mÒm Simatic Manager nh­ng gi¸ trÞ söa l¹i ®ã lµ cè ®Þnh trong suèt qu¸ tr×nh thùc hiÖn ch­¬ng tr×nh øng dông sau nµy, tøc lµ ta chØ cã thÓ söa l¹i chu kú Ta ph¸t tÝn hiÖu ng¾t khi CPU ë chÕ ®é STOP vµ ph¶i sö dông Simatic Manager ®Ó n¹p tham sè míi cho module CPU. Linh ho¹t h¬n so víi viÖc söa ®æi l¹i T, ta cã thÓ tÝch cùc hoÆc huû bá chÕ ®é ng¾t theo chu kú b»ng nh÷ng hµm cã s½n trong hÖ ®iÒu hµnh vµ do ®ã kh«ng cÇn ph¶I chuyÓn vÒ tr¹ng th¸i STOP cô thÓ lµ: Hµm SFC39 (tªn h×nh thøc DIS_IRT) cã t¸c dông che ng¾t. Hµm SFC40 (tªn h×nh thøc EN_IRT) cã t¸c dông bá mÆt n¹ che ng¾t. Hµm SFC41 (tªn h×nh thøc DIS_AIRT) cã t¸c dông che tÊt c¶ c¸c ng¾t cã. møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc sö lý. Hµm SFC42 (tªn h×nh thøc EN_AIRT) cã t¸c dông bá mÆt n¹ che tÊt c¶, c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc sö lý ng¾t t¹i mét thêi ®iÓm ®Þnh tr­íc (OB10 ¸ OB17). Khèi OB10 nãi riªng (vÝ dô cho module CPU 314) vµ c¸c khèi OB10 ¸ OB17 nãi chung (phô thuéc chñng lo¹i cña module CPU) sÏ ®­îc hÖ ®iÒu hµnh gäi mét lÇn t¹i mét thêi ®iÓm ®Þnh tr­íc ho¨c nhiÒu lÇn kÓ tõ thêi ®iÓm ®· cho. Khi ®­îc gäi nhiÒu lÇn kÓ tõ thêi ®iÓm ®· ®­îc x¸c ®Þnh ta cã thÓ qui ®Þnh: Mçi phót mét lÇn, Mçi tiÕng mét lÇn, Mçi ngµy mét lÇn, Mçi tuÇn mét lÇn, Mçi th¸ng mét lÇn, Mçi n¨m mét lÇn. Khèi OB10 cã local block (t­¬ng tù cho c¶ c¸c khèi OB11 ¸ OB17) Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB10_EV_CLASS Byte B#16#11=ng¾t ®ang ®­îc tÝch cùc OB10_STRT_INFO Byte B#16#11=OB10 ®· ®­îc gäi vµ thùc hiÖn OB10_ PRIORITY Byte Cã gi¸ trÞ lµ 2(thø tù ­u tiªn) OB10_OB_NUMBR Byte 10 lµ chØ sè cña khèi OB10 OB10_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB10_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB10_PERIOD_EXE Word M· qui ®Þnh vÒ chÕ ®é thùc hiÖn sö lý ng¾t W#16#0000 : mét lÇn W#16#0201: mçi phót mét lÇn W#16#0401: mçi giê mét lÇn W#16#1001: mçi ngµy mét lÇn W#16#1201: mçi tuÇn mét lÇn W#16#1401: mçi th¸ng mét lÇn W#16#1801: mçi n¨m mét lÇn OB10_RESERVED_3 Int Dù tr÷ (cña hÖ ®iÒu hµnh) OB10_RESERVED_4 Int Dù tr÷ (cña hÖ ®iÒu hµnh) OB10_DATE_TIME Date_And_Time Thêi ®iÓm OB10 b¾t ®Çu ®­îc thùc hiÖn. Cã hai c¸ch ®Ó ®Þnh nghÜa thêi ®iÓm ph¸t tÝn hiÖu ng¾t vµ quy ®Þnh chÕ ®é lµm viÖc (mét lÇn hay nhiÒu lÇn) cho OB10 ¸ OB17, c¸ch thø nhÊt lµ sö dông c«ng cô phÇn mÒm Simatic Manager vµ c¸ch thø hai lµ sö dông hµm SFC28 cã tªn h×nh thøc SET_ TINT cña hÖ thèng. Sau khi ®Þnh nghÜa thêi ®iÓm gäi OB10, b¶n th©n khèi OB10 còng cÇn ph¶i ®­îc tÝch cùc. Ta còng cã hai c¸ch ®Ó tÝch cùc khèi OB10 hoÆc b»ng c«ng cô phÇn mÒm Simatic Manager hoÆc nhê hµm SFC30 (cã tªn h×nh thøc CAN_TINT) cña hÖ thèng. §Ó huû bá tr¹ng th¸i tÝch cùc cña khèi OB10 ta sö dông hoÆc c«ng cô phÇn mÒm Simatic Manager hoÆc nhê hµm SFC29 (cã tªn h×nh thøc CAN_TINT). TÝn hiÖu b¸o ng¾t t¹i thêi ®iÓm ®Þnh tr­íc nµy cã thÓ ®­îc che nhê hµm SFC39 (cã tªn h×nh thøc DIS_IRT) hay bãc mÆt n¹ che nhê hµm SFC40 (cã tªn h×nh thøc EN_IRT). Ngoµi ra ta còng cã thÓ sö dông hµm SFC41 (cã tªn h×nh thøc DIS_AIRT) ®Ó che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý hoÆc hµm SFC42 (cã tªn h×nh thøc EN_AIRT) ®Ó bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Ng¾t cøng (OB40 ¸ OB47) §©y lµ lo¹i tÝn hiÖu b¸o ng¾t ®­îc ph¸t tõ module më réng (module I/O, AI/AO, CP hay FM) hoÆc tõ c¸c cæng vµo ra sè onboard (cña module CPU IFM) ChÕ ®é b¸o ng¾t cøng nµy th­êng ®­îc sö dông trong c¸c ch­¬ng tr×nh ®iÒu khiÓn mµ ë ®ã ®ßi hái ph¶i cã sù ®¸p øng nhanh víi tÝn hiÖu tõ ngoµi ®­a vµo. 2.5.1.5.3. Ch­¬ng tr×nh khëi ®éng (Initialization) §äc DI vµo Process image input table (I) OB1 ChuyÓn Process image output table (Q) tíi DO KiÓm tra lçi vµ truyÒn th«ng OB100 H×nh 2.5. M« t¶ qu¸ tr×nh khëi ®éng ch­¬ng tr×nh ®iÒu khiÓn víi khèi OB100 cña S7-300 STOPRUN Khi cµi ®Æt ch­¬ng tr×nh øng dông, rÊt nhiÒu thuËt to¸n ®ßi hái ph¶i cã nh÷ng gi¸ trÞ, tham sè hay s¬ kiÖn ban ®Çu nh÷ng gi¸ trÞ, tham sè nµy kh«ng thÓ ®­îc khai b¸o trong khèi OB1 v× nh­ vËy cø ®Çu vßng quÐt lµ ch­¬ng tr×nh ®iÒu khiÓn sÏ l¹i trë vÒ tr¹ng th¸i khëi ®éng. HÖ ®iÒu hµnh cña CPU S7-300 cung cÊp khèi OB100 cho phÐp ta thùc hiÖn ®­îc c¸c c«ng viÖc khëi ®éng cho ch­¬ng tr×nh ®iÒu khiÓn. Khi chuyÓn CPU tõ tr¹ng th¸i tõ STOP sang RUN ®Ó thùc hiÖn ch­¬ng tr×nh ®iÒu khiÓn, hÖ ®iÒu hµnh bao giê còng gäi vµ thùc hiÖn ch­¬ng tr×nh trong khèi OB100 tr­íc, sau ®ã míi thùc sù b¾t ®Çu vßng quÐt víi viÖc gäi OB1. Mçi khi CPU chuyÓn tr¹ng th¸i tõ STOP sang RUN lµ OB100 ®­îc gäi vµ thùc hiÖn, kh«ng ph©n biÖt viÖc chuyÓn tr¹ng th¸i ®ã ®­îc tiÕn hµnh trùc tiÕp b»ng kho¸ chuyÓn c«ng t¾c trªn module CPU hay nhê phÇn mÒm Simatic Manager. Khèi OB100 cã local block nh­ sau: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB100_EV_CLASS Byte B#16#13 OB100_STRTUP Byte ChÕ ®é gäi OB1 * B#16#81=®­îc gäi khi chuyÓn tõ STOP sang RUN * B#16#82=®­îc gäi tù ®éng khi chuyÓn tõ STOP sang RUN hoÆc khi chuyÓn tõ OFF sang ON vµ CPU vÉn ®ang ë tr¹ng th¸i RUN. OB100_PRIORITY Byte 27 (thø tù ­u tiªn) OB100_OB_NUMBR Byte 100 lµ chØ sè cña khèi OB100 OB100_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB100_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB100_STOP Word M· hiÖu ng¾t lµm cho CPU chuyÓn vÒ tr¹ng th¸i STOP.Th«ng tin vÒ viÖc thùc hiÖn chÕ ®é khëi ®éng. OB100_STRT_INFO Dword Th«ng tin vÒ viÖc thùc hiÖn chÕ ®é khëi ®éng. OB100_DATE_TIME Date_And_Time Thêi ®iÓm OB100 b¾t ®Çu ®­îc thùc hiÖn. 2.5.1.5.4. Xö lý lçi hÖ thèng Lçi hÖ thèng cã hai lo¹i: Lçi asynchronous (lçi kh«ng ®ång bé), bao gåm: + Lçi v­ît qu¸ thêi gian xoay vßng cho phÐp – OB80, + Lçi sù cè nguån nu«i (vÝ dô kh«ng cã pin) – OB81, + Lçi sù cè module (vÝ dô chËp m¹ch trªn module vµo) – OB82, + Lçi thiÕu khèi OB chøa ch­¬ng tr×nh xö lý ng¾t – OB85, + Lçi truyÒn th«ng – OB87. Lçi synchronous (lçi ®ång bé), bao gåm: + Lçi lËp tr×nh (vÝ dô thiÕu khèi DB, FC hoÆc FB) –OB121, + Lçi truy nhËp module (vÝ dô cã lÖnh truy nhËp module më réng nh­ng l¹i kh«ng t×m thÊy module ®ã) – OB122. Khi gÆp lçi kh«ng ®ång bé, hÖ thèng sÏ chuyÓn CPU vÒ tr¹ng th¸i STOP. TÊt c¶ c¸c tÝn hiÖu b¸o ng¾t lçi kh«ng ®ång bé ®Òu cã thÓ ®­îc che hoÆc bá mÆt n¹ che nhê sö dông: Hµm SFC39 (tªn h×nh thøc DIS_IRT) cã t¸c dông che ng¾t. Hµm SFC40 (tªn h×nh thøc EN_IRT) cã t¸c dông bá mÆt n¹ che ng¾t. Hµm SFC41 (tªn h×nh thøc DIS_AIRT) cã t¸c dông che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Hµm SFC42 (tªn h×nh thøc EN_AIRT) cã t¸c dông bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. * Xö lý lçi vÒ thêi gian thùc hiÖn ch­¬ng tr×nh (OB80) Khèi OB80 sÏ ®­îc hÖ thèng gäi khi: Thêi gian thùc hiÖn ch­¬ng tr×nh v­ît qu¸ thêi gian vßng quÐt cùc ®¹i cho phÐp. MÆc ®Þnh mçi vßng quÐt ®­îc quy ®Þnh lµ ph¶i thùc hiÖn kh«ng qu¸ 150ms. Sù quy ®Þnh nµy lµ cÇc thiÕt ®Ó cã thÓ ®¶m b¶o tÝnh thêi gian thùc cña ch­¬ng tr×nh ®iÒu khiÓn. MÆc dï ta cã thÓ sö dông phÇn mÒm Simatic Manager ®Ó t¨ng kho¶ng thêi gian vßng quÐt cùc ®¹i cho phÐp, song ®iÒu nµy lµ hoµn toµn kh«ng nªn, nhÊt lµ khi ph¶i ®iÒu khiÓn ®èi t­îng biÕn ®æi nhanh. Theo thiÕt kÕ, mét trong sè OB10 ¸ OB17 ®¸ng ra ph¶i ®­îc gäi t¹i mét thêi ®iÓm ®Þnh tr­íc, song v× mét lý do nµo ®ã, vÝ dô nh­ do ®ång hå thêi gian thùc hiÖn cña CPU ®· bÞ chØnh l¹i, mµ ®iÒu ®ã kh«ng ®­îc thùc hiÖn. HÖ thèng ®ang ph¶i xö lý mét tÝn hiÑu ng¾t ch­a xong mµ ®· gÆp ph¶i tÝn hiÖu b¸o ng¾t cïng lo¹i. VÝ dô nÕu thêi gian cÇn thiÕt ®Ó thùc hiÖn OB35 l¹i l©u h¬n chu kú ph¸t tÝn hiÖu b¸o ng¾t Ta ®· khai b¸o th× sÏ x¶y ra tr­êng hîp OB35 ch­a ®­îc xö lý xong hÖ thèng ®· l¹i ph¶i gäi OB35 ®Ó xö lý cho lÇn tiÕp theo. GÆp ph¶i lçi trong ch­¬ng tr×nh cña mét khèi OB, ch¼ng h¹n nh­ lçi logic, lçi thuËt to¸n ngay c¶ trong tr­êng hîp gÆp mét tÝn hiÖu ng¾t cøng hoÆc ng¾t theo chu kú thêi gian nh­ng l¹i kh«ng cã khèi OB t­¬ng øng (OB40 hay OB35) cña tÝn hiÖu ng¾t ®ã, hÖ thèng còng chuyÓn sang gäi khèi OB80 ®ång thêi ®­a CPU vÒ tr¹ng th¸i STOP. Nh­ vËy, sÏ cã nhiÒu lo¹i tÝn hiÖu b¸o ng¾t lçi kh¸c nhau cïng gäi ®Õn OB80, chóng sÏ ®­îc OB80 ph©n biÖt víi nhau trong qu¸ tr×nh xö lý b»ng m· nhËn biÕt kiÓu lçi, t­¬ng øng víi nh÷ng m· nhËn biÕt kiÓu lçi kh¸c nhau, khèi OB sÏ tù tæ chøc cho m×nh c¸c local block kh¸c nhau. Local block cña khèi OB80 cho trong tr­êng hîp a) cã cÊu tróc nh­ sau: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB80_EV_CLASS Byte B#16#35.M· nhËn biÕt thø nhÊt OB80_FLT_ID Byte B#16#01. M· nhËn biÕt thø hai OB80_PRIORITY Byte 26 (thø tù ­u tiªn). OB80_OB_NUMBR Byte 80. Lµ chØ sè cña khèi OB80 OB80_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB80_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB80_LAST_CYL Word Thêi gian vßng quÐt võa thùc hiÖn. OB80_MIN_CYL Word Thêi gian vßng quÐt ng¾n nhÊt ®· thùc hiÖn. OB80_MAX_CYL Word Thêi gian vßng quÐt l©u nhÊt ®· thùc hiÖn. OB80_DATE_TIME Date_And_Time Thêi ®iÓm OB80 b¾t ®Çu thùc hiÖn. Local block cña khèi OB80 cho c¸c tr­êng hîp b), c), d) nh­ sau: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB80_EV_CLASS Byte B#16#35. M· nhËn biÕt thø nhÊt OB80_FLT_ID Byte M· nhËn biÕt thø hai B#16#02. B#16#03. B#16#07. OB80_PRIORITY Byte 26 (thø tù ­u tiªn). OB80_OB_NUMR Byte 80. Lµ chØ sè cña khèi OB80. OB80_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB80_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB80_ERR_INFO Word KiÓu lçi ph¸t hiÖn ®­îc. OB80_ERR_EV_CLA Byte KiÓu tÝn hiÖu ng¾t. OB80_ERR_EV_NUM Byte Sè hiÖu tÝn hiÖu ng¾t. OB80_OB_PRIORIT Byte Thø tù ­u tiªn cña khèi OB ®ang ®­îc thùc hiÖn th× xuÊt hiÖn tÝn hiÖu b¸o ng¾t. OB80_OB_NUM Byte Tªn khèi OB ®ang ®­îc thùc hiÖn th× xuÊt hiÖn tÝn hiÖu b¸o ng¾t. OB80_DATE_TIME Date_And_Time Thêi ®iÓm OB80 b¾t ®Çu ®­îc thùc hiÖn. Xö lý lçi nguån nu«i (OB81) HÖ thèng sÏ gäi khèi OB81 khi ph¸t hiÖn cã lçi kh«ng ®ång bé b¸o sù cè vÒ nguån nu«i hoÆc pin nu«i miÒn nhí non-volatile. Kh¸c víi viÖc xö lý nh÷ng lçi kh«ng ®ång bé kh¸c, khi xö lý sù cè nguån nu«i hÖ thèng sÏ kh«ng chuyÓn CPU vÒ tr¹ng th¸i STOP. TÝn hiÖu ng¾t b¸o lçi nguån nu«i cã thÓ ®­îc che hoÆc bá mÆt n¹ che nhê: Hµm SFC39 (tªn h×nh thøc DIS_IRT) cã t¸c dông che ng¾t. Hµm SFC40 (tªn h×nh thøc EN_IRT) cã t¸c dông bá mÆt n¹ che ng¾t. Hµm SFC41 (tªn h×nh thøc DIS_AIRT) cã t¸c dông che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Hµm SFC42 (tªn h×nh thøc EN_AIRT) cã t¸c dông bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Local block cña khèi OB81 cã d¹ng: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB81_EV_CLASS Byte B#16#39. OB81_FLT_ID Byte B#16#22. M· nhËn biÕt lçi. OB81_PRIORITY Byte 26/28 (thø tù ­u tiªn). OB81_OB_NUMR Byte 81. lµ chØ sè cña khèi OB81. OB81_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB81_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB81_MDL_A§R Int KiÓu lçi ph¸t hiÖn ®­îc. OB81_RESERVED_3 Byte KiÓu tÝn hiÖu ng¾t. OB81_ER_EV_NUM Byte Sè hiÖu tÝn hiÖu ng¾t. OB81_RESERVED_4 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB81_RESERVED_5 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB81_RESERVED_6 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB81_DATE_TIME Date_And_Time Thêi ®iÓm OB81 b¾t ®Çu ®­îc thùc hiÖn. Xö lý lçi module (OB82) HÖ thèng sÏ gäi khèi OB82 khi ph¸t hiÖn lçi kh«ng ®ång bé vÒ sù cè trªn module më réng. Nh÷ng module nµy ph¶i lµ c¸c module cã kh¶ n¨ng tù kiÓm tra lçi, nÕu kh«ng t×m thÊy OB82, hÖ thèng sÏ chuyÓn CPU vÒ tr¹ng th¸i STOP. TÝn hiÖu ng¾t b¸o lçi module cã thÓ ®­îc che hoÆc bá mÆt n¹ che nhê: Hµm SFC39 (tªn h×nh thøc DIS_IRT) cã t¸c dông che ng¾t. Hµm SFC40 (tªn h×nh thøc EN_IRT) cã t¸c dông bá mÆt n¹ che ng¾t. Hµm SFC41 (tªn h×nh thøc DIS_AIRT) cã t¸c dông che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Hµm SFC42 (tªn h×nh thøc EN_AIRT) cã t¸c dông bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Local block cña khèi OB82 cã d¹ng: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB82_EV_CLASS Byte B#16#38 hoÆc B#16#39 OB82_FLT_ID Byte B#16#42 m· nhËn biÕt cã lçi module OB82_PRIORITY Byte 26/28 (thø tù ­u tiªn) OB82_OB_NUMR Byte 82: Lµ chØ sè cña khèi OB82 OB82_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh) OB82_IO_FLAG Byte 01010100 Module vµo 01010101 Module ra OB82_MDL_ADDR Int §Þa chØ module cã lçi OB82_MDL_DEFECT Bool Tr¹ng th¸i module: Lçi OB82_INT_FAULT Bool Lçi bªn trong module OB82_EXT_INFO Bool Lçi bªn ngoµi module OB82_FLD_CONNCT Bool Lçi nèi víi bus dÉn néi OB82_NO_CONFIG Bool Module kh«ng cã tham sè cÊu h×nh OB82_CONFIG_ERR Bool Tham sè cÊu h×nh cña module sai OB82_MDL_TYPE Byte KiÓu module OB82_SUP_MDL_ER Bool PhÇn phô cña module bÞ lçi hoÆc kh«ng cã OB82_COMM_FAULT Bool Lçi truyÒn th«ng víi module OB82_MDL_STOP Bool Module ë tr¹ng th¸I STOP OB82_WTCH_DOG_F Bool Module dõng bëi Watch-dog-Timer OB82_INT_PS_FLT Bool Lçi do nguån trong OB82_PRIM_BATT Bool Lçi do pin nu«i chÝnh OB82_BCKUP_BATT Bool Lçi do pin nu«i phô OB82_RESERVED_2 Bool Dù tr÷ (cña hÖ ®iÒu hµnh) OB82_RACK_FLT Bool Lçi bëi thanh ray OB82_PROC_FLT Bool Lçi bé vi xö lý cña module OB82_EPROM_FLT Bool Lçi bé nhí EPROM cña module OB82_RAM_FLT Bool Lçi bé nhí Ram cña module OB82_ADU_FLT Bool Lçi ADU cña module OB82_FUSE_FLT Bool Lçi cÊu ch× cña module OB82_HW_INTR_FL Bool Lçi tÝn hiÖu ng¾t cøng ®Çu vµo OB82_RESERVED_3 Bool Kh«ng sö dông. OB82_DATE_TIME Date_And_Time Thêi ®iÓm OB82 b¾t ®Çu ®­îc thùc hiÖn. Xö lý lçi thiÕu khèi OB (OB85) HÖ thèng sÏ gäi khèi OB85 khi gÆp lçi ®ång bé còng nh­ tÝn hiÖu b¸o ng¾t t¹i thêi ®iÓm ®Þnh tr­íc nh­ng l¹i kh«ng t×m thÊy c¸c khèi OB t­¬ng øng ®Ó xö lý nh÷ng tÝn hiÖu ng¾t nµy (vÝ dô thiÕu khèi OB10, OB82). Khèi OB85 còng ®­îc hÖ thèng gäi nÕu trong ch­¬ng tr×nh øng dông cã sö dông c¸c hµm chuÈn cña hÖ thèng (SFC) mµ nh÷ng hµm nµy l¹i truy nhËp ®Õn khèi OB kh«ng cã trong bé nhí, vÝ dô ch­¬ng tr×nh sö dông hµm SFC30 ®Ó tÝch cùc OB10 nh­ng kh«ng t×m thÊy OB10 trong bé nhí. NÕu kh«ng t×m thÊy OB85, hÖ thèng sÏ chuyÓn CPU vÒ tr¹ng th¸i STOP. TÝn hiÖu ng¾t b¸o lçi thiÕu khèi OB nµy cã thÓ ®­îc che nhê hµm SFC39 (tªn h×nh thøc DIS_IRT) hoÆc bá mÆt n¹ che nhê hµm SFC40 (tªn h×nh thøc EN_IRT), ta còng cã thÓ sö dông hµm SFC41 (tªn h×nh thøc DIS_AIRT) ®Ó che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý hoÆc hµm SFC42 (tªn h×nh thøc EN_AIRT) ®Ó bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Local block cña khèi OB85 cã d¹ng: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB85_EV_CLASS Byte B#16#35. OB85_FLT_ID Byte M· b¸o kiÓu lçi B#16#A1: Ch­¬ng tr×nh SFC kh«ng t×m thÊy khèi OB. B#16#A1: HÖ ®iÒu hµnh kh«ng t×m thÊy khèi OB (vÝ dô nh­ khi ®Æt tham sè cÊu h×nh). OB85_PRIORITY Byte 26 (thø tù ­u tiªn). OB85_OB_NUMR Byte 85. Lµ chØ sè cña khèi OB85. OB85_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB85_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB85_RESERVED_3 Word Dù tr÷ (cña hÖ ®iÒu hµnh). OB85_ERR_EV_CLA Byte D¹ng tÝn hiÖu b¸o lçi. OB85_ERREV_NUM Byte ChØ sè tÝn hiÖu b¸o lçi. OB85_OB_PRIORIT Byte Thø tù ­u tiªn cña OB ®ang ®­îc thùc hiÖn khi cã lçi OB85_OB_NUM Byte Tªn khèi OB ®ang thùc hiÖn khi cã lçi. OB85_DATE_TIME Date_And_Time Thêi ®iÓm OB85 b¾t ®Çu ®­îc thùc hiÖn. Xö lý lçi truyÒn th«ng (OB87) HÖ thèng sÏ gäi khèi OB87 khi cã lçi truyÒn th«ng, vÝ dô nh­ lçi time out. kh«ng t×m thÊy thÊy OB87 ®Ó xö lý lçi, hÖ thèng sÏ chuyÓn CPU vÒ tr¹ng th¸i STOP. TÝn hiÖu ng¾t b¸o lçi truyÒn th«ng cã thÓ ®­îc che hoÆc bá mÆt n¹ che nhê: Hµm SFC39 (tªn h×nh thøc DIS_IRT) cã t¸c dông che ng¾t. Hµm SFC40 (tªn h×nh thøc EN_IRT) cã t¸c dông bá mÆt n¹ che ng¾t. Hµm SFC41 (tªn h×nh thøc DIS_AIRT) cã t¸c dông che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Hµm SFC42 (tªn h×nh thøc EN_AIRT) cã t¸c dông bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Local block cña khèi OB87 cã d¹ng: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB87_EV_CLASS Byte B#16#35. OB87_FLT_ID Byte M· b¸o kiÓu lçi: B#16#D2: kh«ng ph¸t ®­îc tÝn hiÖu yªu CPU kiÓm tra (diagnostic). B#16#E1: Sai cÊu trróc ID khi truyÒn th«ng víi global data (GD). B#16#E2: Kh«ng ®­a ®­îc th«ng tin tr¹ng th¸i cña GD vµo DB. B#16#E6: Nhãm th«ng tin tr¹ng th¸I cña GD kh«ng chuyÓn ®­îc vµo DB. OB87_PRIORITY Byte 26 (thø tù ­u tiªn). OB87_OB_NUMR Byte 87. Lµ chØ sè cña khèi OB87. OB87_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB87_RESERVED_2 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB87_RESERVED_3 Word Dù tr÷ (cña hÖ ®iÒu hµnh). OB87_RESERVED_4 Dword Dù tr÷ (cña hÖ ®iÒu hµnh). OB87_DATE_TIME Date_And_Time Thêi ®iÓm OB87 b¾t ®Çu ®­îc thùc hiÖn. Xö lý lçi lËp tr×nh (OB121) Khèi OB121 sÏ ®­îc gäi b»ng tÝn hiÖu b¸o lçi lËp tr×nh, vÝ dô nh­ lçi chuyÓn ®æi sai kiÓu d÷ liÖu BCD lçi truy nhËp khèi DB hay gäi mét khèi FC kh«ng cã trong bé nhí… Khèi OB121 cã cïng thø tù ­u tiªn gièng nh­ khèi OB bÞ ng¾t (th­êng lµ OB1). §iÒu nµy gióp cho ch­¬ng tr×nh trong OB121 sö dông ®­îc néi dung cã trong c¸c thanh ghi tr­íc khi xuÊt hiÖn tÝn hiÖu b¸o lçi. T­¬ng tù khi thùc hiÖn xong ch­¬ng tr×nh trong OB121 vµ trë vÒ khèi OB bÞ ng¾t, ch­¬ng tr×nh øng dông trong khèi OB nµy sö dông néi dung c¸c thanh ghi ®· söa ®æi bëi OB121. TÝn hiÖu ng¾t b¸o lçi lËp tr×nh cã thÓ ®­îc che hoÆc bá mÆt n¹ che nhê: Hµm SFC36 (tªn h×nh thøc MSK_FLT) cã t¸c dông che ng¾t. Hµm SFC37 (tªn h×nh thøc DMSK_FLT) cã t¸c dông bá mÆt n¹ che ng¾t. Ch­¬ng tr×nh øng dông còng cã thÓ sö dông hµm SFC38 (tªn h×nh thøc READ_ERR) ®Ó ®äc néi dung thanh ghi b¸o kiÓu lçi lËp tr×nh gÆp ph¶i. Local block cña khèi OB121 cã d¹ng: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB121_EV_CLASS Byte B#16#25. OB121_SW_FLT Byte M· b¸o kiÓu lçi: B#16#21:Lçi biÕn ®æi BCD B#16#22:Lçi ®äc « nhí ngoµi miÒn cho phÐp. B#16#23:Lçi ghi vµo « nhí ngoµi miÒn cho phÐp B#16#24:Lçi ®äc « nhí cã ®Þa chØ kh«ng ®óng cÊu tróc B#16#25:Lçi ghi vµo « nhí cã ®Þ chØ sai cÊu tróc B#16#26:Lçi sai tªn Timer B#16#27:Lçi sai tªn Counter B#16#28:Lçi ®äc « nhí qua con trá cã ®Þa chØ sai B#16#29:Lçi ghi vµo « nhí qua con trá cã ®Þa chØ sai B#16#30:Lçi ghi vµo DB chØ cho phÐp ®äc B#16#31:Lçi ghi vµo DI chØ cho phÐp ®äc B#16#32:Lçi më mét DB cã tªn qu¸ lín B#16#33:Lçi më mét DI cã tªn qu¸ lín B#16#34:Lçi gäi 1 khèi FC cã tªn qu¸ lín B#16#35:Lçi gäi 1 khèi FB cã tªn qu¸ lín B#16#3A:Kh«ng t×m thÊy DB B#16#3C:Kh«ng t×m thÊy Fc B#16#3E:K«ng t×m thÊy FB OB121_PRIORITY Byte Thø tù ­u tiªn cña khèi OB bÞ ng¾t (th­êng lµ OB1) OB121_OB_NUMBR Byte 121 OB121_BLK_TYPE Byte KiÓu khèi mµ t¹i ®ã xuÊt hiÖn lçi OB121_RESERVED_1 Byte Dù tr÷ (cña hÖ ®iÒu hµnh). OB121_FLT_REG Word KiÓu lçi OB121_BLK_NUM Word Tªn khèi mµ t¹i ®ã xuÊt hiÖn lçi OB121_PRG_ADDR Dword §Þa chØ c©u lÖnh sinh ra lçi OB121_DATE_TIME Date_And_Time Thêi ®iÓm OB121 b¾t ®Çu ®­îc thùc hiÖn. Xö lý lçi truy nhËp module (OB122) HÖ thèng sÏ gäi khèi OB122 khi gÆp sù cè truy nhËp c¸c module më réng, vÝ dô gÆp sù cè ®äc tÝn hiÖu t¹i cæng cña mét module I/O. Khèi OB122 cã cïng thø tù ­u tiªn gièng nh­ khèi OB bÞ ng¾t nªn ch­¬ng tr×nh trong OB122 cã thÓ sö dông ®­îc néi dung cò cã trong c¸c thanh ghi tr­íc khi xuÊt hiÖn tÝn hiÖu b¸o sù cè. T­¬ng tù khi thùc hiÖn xong ch­¬ng tr×nh trong OB122 vµ trë vÒ khèi bÞ ng¾t, ch­¬ng tr×nh øng dông trong khèi OB nµy sö dông ®­îc néi dung c¸c thanh ghi ®· ®­îc söa ®æi bëi OB122. TÝn hiÖu b¸o ng¾t sù cè truy nhËp module cã thÓ ®­îc nhê hµm SFC (víi tªn h×nh thøc MSK_FLT) hoÆc bá mÆt n¹ che ng¾t nhê hµm SFC37 (tªn h×nh thøc MSK_FLT). Ch­¬ng tr×nh øng dông còng cã thÓ sö dông hµm SFC38 (tªn h×nh thøc READ_ERR) ®Ó ®äc néi dung thanh ghi b¸o kiÓu lçi truy nhËp module gÆp ph¶i. Local block cña khèi OB122 cã d¹ng: Tªn h×nh thøc KiÓu Gi¸ trÞ vµ ý nghÜa OB122_EV_CLASS Byte B#16#29. OB122_FLT_ID Byte M· b¸o kiÓu lçi B#16#42:Lçi ®äc B#16#43:Lçi ghi OB122_PRIORITY Byte Thø tù ­u tiªn cña khèi OB bÞ ng¾t (th­êng lµ OB1) OB122_ OB_NUMBR Byte 122 OB122_ BLK_TYPE Byte KiÓu khèi mµ t¹i ®ã xuÊt hiÖn lçi OB122_MEM_AREA Byte Vïng bé nhí mµ t¹i ®ã xuÊt hiÖn lçi OB122_MEM_ADDR Word §Þa chØ « nhí mµ t¹i ®ã xuÊt hiÖn lçi OB122_BLK_NUM Word Tªn khèi mµ t¹i ®ã xuÊt hiÖn lçi OB122_PRG_ADDR Dword §Þa chØ c©u lÖnh gÆp ph¶i lçi OB122_DATE_TIME Date_And_Time Thêi ®iÓm OB122 b¾t ®Çu ®­îc thùc hiÖn 2.8.1.6. Nh÷ng hµm chuÈn qu¶n lý ng¾t 2.8.1.6.1. Che vµ bá mÆt n¹ che c¸c tÝn hiÖu ng¾t, tÝn hiÖu b¸o lçi kh«ng ®ång bé C¸c hµm hÖ thèng dïng ®Ó che hoÆc bá mÆt n¹ che c¸c tÝn hiÖu ng¾t, c¸c tÝn hiÖu b¸o lçi, cô thÓ lµ: Hµm SFC39 (tªn h×nh thøc DIS_IRT) cã t¸c dông che ng¾t. Hµm SFC40 (tªn h×nh thøc EN_IRT) cã t¸c dông bá mÆt n¹ che ng¾t. Hµm SFC41 (tªn h×nh thøc DIS_AIRT) cã t¸c dông che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. Hµm SFC42 (tªn h×nh thøc EN_AIRT) cã t¸c dông bá mÆt n¹ che tÊt c¶ c¸c ng¾t cã møc ­u tiªn cao h¬n tÝn hiÖu ng¾t ®ang ®­îc xö lý. C¸c tÝn hiÖu ng¾t, b¸o lçi ®­îc xÕp theo tõng nhãm nh­ sau: Nhãm tÝn hiÖu b¸o ng¾t t¹i mét thêi ®iÓm ®Þnh tr­íc. Ch­¬ng tr×nh xö lý c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB10¸OB17. Nhãm tÝn hiÖu b¸o ng¾t trÔ so víi thêi ®iÓm ®Þnh tr­íc. Ch­¬ng tr×nh xö lý tÝn c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB30 ¸OB23. Nhãm tÝn hiÖu b¸o ng¾t theo chu kú thêi gian Ta . Ch­¬ng tr×nh xö lý c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB30¸OB38. Nhãm tÝn hiÖu b¸o ng¾t cøng tõ bªn ngoµi. Ch­¬ng tr×nh xö lý c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB40¸OB47. Nhãm tÝn hiÖu b¸o ng¾t truyÒn th«ng. Ch­¬ng tr×nh xö lý c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB50, OB51. Nhãm tÝn hiÖu ng¾t b¸o lçi kh«ng ®ång bé. Ch­¬ng tr×nh xö lý c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB80¸OB87. Nhãm tÝn hiÖu ng¾t b¸o lçi ®ång bé. Ch­¬ng tr×nh xö lý c¸c tÝn hiÖu ng¾t nµy ph¶i n»m trong c¸c khèi OB121, OB122. §Æc biÖt cña nhãm nµy lµ ngoµi c¸c hµm SFC39, SFC40, SFC41, SFC42, chóng cßn cã thÓ ®­îc che ng¾t hoÆc bá mÆt n¹ che nhê c¸c hµm SFC36 (tªn h×nh thøc MSK_FLT) vµ SFC37 (tªn h×nh thøc DMSK _FLT). Hµm SFC39 (DIS_IRT) Hµm cã t¸c dông d­¬ng mÆt n¹ che: mét tÝn hiÖu ng¾t nhÊt ®Þnh, mét nhãm c¸ tÝn hiÖu ng¾t hoÆc che tÊt c¶ c¸c tÝn hiÖu ng¾t vµ tÝn hiÖu b¸o lçi kh«ng ®ång bé. Khi mét tÝn hiÖu ng¾t hay b¸o lçi ®­îc d­¬ng mÆt n¹ che, hÖ thèng sÏ kh«ng ®Ó ý tíi tÝn hiÖu ®ã n÷a, tøc lµ kh«ng gäi khèi OB t­¬ng øng chøa ch­¬ng tr×nh xö lý tÝn hiÖu ng¾t, b¸o lçi nµy cho tíi khi mÆt n¹ che ®­îc bá ®i. Hµm SFC39 cã c¸c tham biÕn h×nh thøc vµo-ra nh­ sau: Lo¹i biÕn Tªn biÕn KiÓu d÷ liÖu ý nghÜa IN MODE Byte X¸c ®Þnh lo¹i tÝn hiÖu ng¾t, b¸o lçi ®­îc che: B#16#0: Che tÊt c¶ c¸c tÝn hiÖu ng¾t vµ tÝn hiÖu b¸o lçi kh«ng ®ång bé. Kh«ng che tÝn hiÖu b¸o lçi ®ång bé. B#16#1: Che c¸c tÝn hiÖu ng¾t, b¸o lçi thuéc mét nhãm nhÊt ®Þnh. Nhãm c¸c tÝn hiÖu ®­îc che ®­îc chØ thÞ bëi tªn khèi OB ®Çu tiªn cña nhãm cho biÕn OB_NR. B#16#2: Che mét tÝn hiÖu ng¾t. TÝn hiÖu ng¾t ®­îc che ®­îc chØ thÞ bëi tªn khèi OB t­¬ng øng cho biÕn OB_NR. IN OB_NR Int Tªn khèi OB cña tÝn hiÖu ng¾t, b¸o lçi ®­îc che. OUT RET_VAL Int Gi¸ trÞ tr¶ vÒ cña hµm : W#16#0000: Hµm lµm viÖc b×nh th­êng. W#16#8090: D÷ liÖu cho OB_NR bÞ sai. W#16#8091: D÷ liÖu cho MODE bÞ sai. Hµm SFC 40 (EN_IRT) Hµm cã t¸c dông gì bá mÆt n¹ che: Cña mét tÝn hiÖu ng¾t Cña mét nhãm c¸c tÝn hiÖu ng¾t Cña tÊt c¶ c¸c tÝn hiÖu ng¾t vµ tÝn hiÖu b¸o lçi kh«ng ®ång bé. Khi mét tÝn hiÖu ng¾t hoÆc b¸o lçi kh«ng ®ång bé ®­îc gì bá mÆt n¹ che, hÖ thèng sÏ gäi khèi OB t­¬ng øng chøa ch­¬ng tr×ng xö lÝ mçi khi xuÊt hiÖn tÝn hiÖu ng¾t, b¸o lçi nµy. Hµm SFC40 cã c¸c tham biÕn h×nh thøc vµo - ra nh­ sau: Lo¹i biÕn Tªn biÕn KiÓu d÷ liÖu ý nghÜa IN MODE Byte X¸c ®Þnh lo¹i tÝn hiÖu ng¾t, b¸o lçi ®­îc bá mÆt n¹ che: B#16#0: Bá mÆt n¹ che cho tÊt c¶ c¸c tÝn hiÖu ng¾t vµ tÝn hiÖu b¸o lçi kh«ng ®ång bé. B#16#1: Bá mÆt n¹ che cho c¸c tÝn hiÖu ng¾t , b¸o lçi thuéc mét nhãm nhÊt ®Þnh. Nhãm c¸c tÝn hiÖu nµy ph¶i ®­îc chØ thÞ bëi tªn khèi OB ®Çu tiªn cña nhãm cho biÕn OB_NR B#16#2: Bá mÆt n¹ che cho mét tÝn hiÖu ng¾t. TÝn hiÖu ng¾t ®­îc bá mÆt n¹ ph¶I ®­îc chØ thÞ bëi tªn khèi OB t­¬ng øng cho biÕn OB_NR IN OB_NR Int Tªn khèi OB cña tÝn hiÖu ng¾t b¸o lçi ®­îc bá mÆt n¹ che. OUT RET_VAL Int Gi¸ tri tr¶ vÒ cña hµm: W#16#0000: Hµm lµm viÖc b×nh th­êng. W#16#8090: D÷ liÖu cho OB_NR bÞ sai. W#16#8091: D÷ liÖu cho MODE bÞ sai. Hµm SFC 41 (DIS_AIRT): Hµm cã t¸c dông d­¬ng mÆt n¹ che cho tÊt c¶ c¸c tÝn hiÖu ng¾t, tÝn hiÖu b¸o lçi kh«ng ®ång bé cã thø tù ­u tiªn cao h¬n ®é ­u tiªn cña khèi OB chøa lÖnh gäi hµm nµy. Trong mét khèi ch­¬ng tr×nh, hµm SFC41 cã thÓ ®­îc gäi nhiÒu lÇn, sè lÇn gäi ®­îc hÖ ®iÒu hµnh ®Õm vµ ghi nhËn l¹i d­íi d¹ng tham trÞ tr¶ vÒ cña hµm. Hµm chØ cã mét biÕn h×nh thøc d­íi tªn RET_VAL thuéc lo¹i biÕn OUT vµ cã kiÓu d÷ liÖu lµ INT. Tham trÞ cña hµm tr¶ vÒ qua biÕn nµy lµ sè lÇn hµm ®· ®­îc gäi. C¸c tÝn hiÖu ng¾t, b¸o lçi ®· ®­îc che sÏ kh«ng ®­îc hÖ ®iÒu hµnh xö lý cho ®Õn khi chóng ®­îc tÝch cùc l¹i nhê hµm SFC42 (EN_AIRT) hoÆc khi khèi ch­¬ng tr×nh chøa lÖnh gäi hµm ®· ®­îc thùc hiÖn xong, hµm SFC42 (EN_AIRT). Hµm cã t¸c dông bá mÆt n¹ che cña tÊt c¶ c¸c tÝn hiÖu ng¾t, tÝn hiÖu b¸o lçi kh«ng ®ång bé cã thø tù ­u tiªn cao h¬n ®é ­u tiªn cña khèi OB chøa lÖnh gäi hµm nµy. Trong mét khèi ch­¬ng tr×nh, hµm SFC42 cã thÓ ®­îc gäi nhiÒu lÇn, c¸c tÝn ng¾t b¸o lçi chØ thùc sù ®­îc bá mÆt n¹ che nÕu sè lÇn gäi hµm SFC42 ®óng b»ng sè lÇn ®· gäi hµm SFC41 tr­íc ®ã. VÝ dô nÕu tr­íc ®ã ta ®· gäi hµm SFC41 3 lÇn th× ®Ó bá ®­îc mÆt n¹ che ng¾t cho c¸c tÝn hiÖu b¸o ng¾t, b¸o lçi kh«ng ®ång bé, ta còng ph¶I gäi hµm SFC42 ®óng 3 lÇn. Hµm chØ cã mét biÕn h×nh thøc víi tªn RET_VAL thuéc lo¹i biÕn OUT vµ cã kiÓu d÷ liÖu lµ INT. Tham trÞ cña hµm tr¶ vÒ qua biÕn nµy lµ: Sè lÇn hµm cßn cÇn ph¶I gäi ®Ó cã thÓ thùc sù bá ®­îc mÆt n¹ che cña tÊt c¶ c¸c tÝn hiÖu ng¾t, tÝn hiÖu b¸o lçi kh«ng ®ång bé, HoÆc lµ gi¸ trÞ W#16#8080 nÕu hµm SFC42 ®­îc gäi khi tÊt c¶ c¸c tÝn hiÖu ng¾t vµ tÝn hiÖu b¸o lçi kh«ng ®ång bé ®ang ë tr¹ng th¸i tÝch cùc. Hµm SFC kh«ng bÞ ng¾t. 2.5.1.6. 2. Che vµ bá mÆt n¹ che tÝn hiÖu b¸o lçi ®ång bé §èi víi c¸c tÝn hiÖu b¸o lçi ®ång bé ta cã 3 hµm hÖ thèng sau ®Î quy ®Þnh chÕ ®é lµm viÖc cho ch­¬ng tr×nh xö lý (khèi OB121, OB122): SFC36 (tªn h×nh thøc MSK_FLT) dïng ®Ó ®Æt mÆt n¹ che, SFC37 (tªn h×nh thøc DMSK_FLT) dïng ®Ó bá mÆt n¹ che, SFC38 (tªn h×nh thøc READ_ERR) dïng ®Ó ®äc néi dung thanh ghi b¸o lçi tÝn hiÖu. Th«ng th­êng khi gÆp mét tÝn hiÖu b¸o lçi ®ång bé (lçi lËp tr×nh, lçi truy nhËp module), hÖ ®iÒu hµnh sÏ kiÓm tra tÝn hiÖu ®ã cã bÞ che ng¾t hay kh«ng: NÕu kh«ng bÞ che, hÖ thèng sÏ gäi khèi OB chøa ch­¬ng tr×nh xö lý lçi t­¬ng øng. Khèi nµy do ng­êi sö dông viÕt tuú theo yªu cÇu cña bµi to¸n ®iÒu khiÓn. Trong tr­êng hîp kh«ng t×m thÊy nh÷ng khèi OB nµy, hÖ ®iÒu hµnh sÏ chuyÓn CPU vÒ tr¹ng th¸i STOP. NÕu bÞ che, hÖ thèng kh«ng gäi OB xö lý lçi. M· b¸o kiÓu lçi ®­îc hÖ ®iÒu hµnh vµo thanh ghi b¸o lçi ®ång bé. Néi dung thanh ghi nµy ta cã thÓ ®äc ®­îc nhê hµm SFC38 (READ_ERR). BÞ che? Ghi nhí m· tÝn hiÖu lçi Cã khèi OB? Gäi khèi OB ChuyÓn CPU vÒ STOP TÝn hiÖu b¸o lçi ®ång bé No yes No yes H×nh 2.6. C¸c b­íc hÖ ®iÒu hµnh xö lý tÝn hiÖu b¸o lçi ®ång bé C¸c b­íc xö lý tÝn hiÖu b¸o lçi ®ång bé cña hÖ ®iÒu hµnh Lçi ®ång bé cã hai lo¹i: Lo¹i lçi lËp tr×nh (xö lý bëi OB121) Lo¹i lçi truy nhËp module (xö lý bëi OB122), Trong ®ã mçi lo¹i cã nhiÒu kiÓu lçi, nÕu ta cã mét c¸ch nh×n tæng qu¸t vÒ c¸c kiÓu lçi ®ã sÏ rÊt cÇn thiÕt cho viÖc sö dông c¸c hµm SFC36, SFC37. * C¸c kiÓu lçi lËp tr×nh (OB121) Lçi biÕn ®æi BCD: TÝn hiÖu b¸o lçi nµy sÏ ®­îc ph¸t khhi hÖ thèng gÆp ph¶i lÖnh ®æi kiÓu d÷ liÖu cã cÊu tróc BCD víi mét ch÷ sè ngoµi kho¶ng 0¸9. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÊu gÆp lÖnh: L W#16#2E BTI //Lçi, v× ch÷ E n»m ngoµi kho¶ng 0¸9 Lçi ®äc « nhí ngoµi miÒn cho phÐp: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ®äc néi dung mét « nhí cã ®Þa chØ n»m ngoµi miÒn cho phÐp. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu gÆp lÖnh: L MW300 //Lçi, v× miÒn biÕn cê (M) chØ cã 256 byte Lçi ghi vµo « nhí ngoµi miÒn cho phÐp: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ghi vµo « nhí cã ®Þa chØ n»m ngoµi miÒn cho phÐp. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu gÆp lÖnh: T MW320 // Lçi, v× miÒn biÕn cê (M) chØ cã 256 byte Lçi ®äc « nhí cã ®Þa chØ sai cÊu tróc: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ®äc mét « nhí nh­ng ®Þa chØ l¹i sai cÊu tróc. Th«ng th­êng viÖc truy nhËp « nhí cã cÊu tróc ®Þa chØ sai mµ kh«ng bÞ ph¸t hiÖn sai có ph¸p khi so¹n th¶o lµ nh÷ng lÖnh truy nhËp th«ng qua con trá. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu gÆp lÖnh: LAR1 P#0.0 L W[AR1,P#0.0] //Lçi, v× ®Þa chØ ®óng ph¶i lµ IW[AR1, P#0.0] Lçi ghi vµo « nhí cã ®Þa chØ sai cÊu tróc: TÝn hiÖu b¸o lçi khiÓu nµy sÏ ®­îc ph¸t hiÖn khi hÖ thèng gÆp ph¶i lÖnh ghi vµo mét « nhí cã ®Þa chØ sai cÊu tróc. Th«ng th­êng viÖc truy nhËp « nhí cã cÊu tróc sai ®Þa chØ mµ kh«ng bÞ ph¸t hiÖn sai có ph¸p khi so¹n th¶o lµ nh÷ng lÖnh truy nhËp th«ng qua con trá. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu gÆp lÖnh: LAR1 P#4.0 T W[AR1,P#0.0] //Lçi, v× ®Þa chØ ®óng ph¶i lµ QW[AR1, P#0.0] Lçi sai tªn Timer: TÝn hiÖu b¸o lçi kiÓu nµy sÏ xuÊt hiÖn khi gÆp ph¶i lÖnh lµm viÖc víi Timer cã tªn n»m ngoµi kho¶ng mµ CPU cho phÐp. VÝ dô CPU 312 chØ cã 128 Timer nªn hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕuMW0=129 vµ gÆp lÖnh : SP T[MW0] //Lçi , nÕu MW0 cã gi¸ trÞ lµ 129 Lçi sai tªn Counter : TÝn hiÖu b¸o lçi nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh lµm viÖc víi Counter cã tªn n»m ngoµi kho¶ng CPU cho phÐp. VÝ dô CPU312 chØ cã 64 Counter nªn hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu MW0 = 100 gÆp lÖnh CU C[MW0] //Lçi ,nÕu MW0 cã gi¸ trÞ lµ 100 Lçi ®äc « nhí qua con trá cã ®Þa chØ sai: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ®äc néi dung « nhí cã kÝch th­íc bytes,word hay dword nh­ng con trá l¹i cã phÇn ®Þa chØ bit ¹ 0. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu gÆp lÖnh: LAR1 P#M0 .2 L B[AR1, P# 0.0] // Lçi v× mét bytes ®­îc tÝnh tõ bit thø 0 Lçi ®äc « nhí qua con trá cã ®Þa chØ sai: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ®äc néi dung « nhí cã kÝch th­íc bytes, word hay dword nh­ng con trá l¹i cã phÇn ®Þa chØ bit ¹ 0. VÝ dô hÖ thèng sÏ ph¸t tÝn hiÖu b¸o lçi kiÓu nµy nÕu gÆp lÖnh: LAR1 P#M0 .2 T B[AR1, P# 0.0] // Lçi v× mét bytes ®­îc tÝnh tõ bit thø 0 Lçi lµm viÖc víi DB: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ghi d÷ liÖu vµo mét DB (share) chØ cho phÐp ®äc Lçi lµm viÖc víi DI: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh ghi d÷ liÖu vµo mét DI (Instance) chØ cho phÐp ®äc. Lçi më mét DB cã tªn qu¸ lín: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh më mét DB (share) cã tªn n»m ngoµi miÒn mµ CPU cho phÐp. Lçi më mét DI cã tªn qu¸ lín: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh më mét DI (Instance) cã tªn n»m ngoµi miÒn mµ CPU cho phÐp. Lçi gäi mét khèi FC cã tªn qua lín: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh gäi mét khèi FC cã tªn n»m ngoµi miÒn mµ CPU cho phÐp. Lçi gäi mét khèi FB cã tªn qua lín: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh gäi mét khèi FB cã tªn n»m ngoµi miÒn mµ CPU cho phÐp. Lçi më mét khèi DB kh«ng cã trong bé nhí: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh më mét khèi DB nh­ng khèi nµy l¹i ch­a ®­îc n¹p vµo bé nhí (Load memory) cña CPU Lçi më mét khèi FC kh«ng cã trong bé nhí: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh më mét khèi FC nh­ng khèi nµy l¹i ch­a ®­îc n¹p vµo bé nhí (Load memory) cña CPU. Lçi më mét khèi FB kh«ng cã trong bé nhí: TÝn hiÖu b¸o lçi kiÓu nµy sÏ ®­îc ph¸t khi hÖ thèng gÆp ph¶i lÖnh më mét khèi FB nh­ng khèi nµy l¹i ch­a ®­îc n¹p vµo bé nhí (Load memory) cña CPU.

Các file đính kèm theo tài liệu này:

  • docChuong II.doc
  • docbia.doc
  • docchuong III.doc
  • docchuongI.doc
  • docdenduong.doc
  • docLêi nãi.doc
  • docMucluc.doc
  • docVD.doc
Luận văn liên quan