redrock99
級別: 家園常客
|
今天用到2個200的熱電偶模塊231,是K型的, 模塊通道信號變換成0-32000的值,變換成實數(shù)除以10就是實際溫度,但是,若偶斷線,變成最高溫度或是最低溫度是不是 0或32000?有個樣例程序, MAIN Network 1 // 在S7-200CPU上使用熱電偶模塊EM231 // 初始化,清除四路熱電偶輸入映像及存放模塊錯誤信息的字 LD SM0.1 // Load SM0.1. FILL +0, VW0, 6 // Clear VW0 to VW10. FILL +0, MW0, 1 // Clear MW0. Network 2 // 調(diào)用子程序THER_CHK,在該子程序中定義了五個輸出點,分別與M0.2,M0.3,M0.5,M0.6,M0.7相對應(yīng) LD SM0.0 // Load SM0.0 CALL SBR0, 0, M0.2, M0.3, M0.5, M0.7, M0.6 // Call subroutine SBR0. Network 3 // 無錯誤 // 如果M0.6置位,說明熱電偶模塊沒有錯誤。從熱電偶0的AIWO開始讀取四路模擬量輸入值 LD M0.6 //Load M0.6. BMW AIW0, VW0, 4 //Move good values to new location. Network 4 // 有錯誤 // 如果M0.6沒有置位,說明熱電偶模塊有錯誤,此時,把記錄熱電偶錯誤的MB0中的值放到存放錯誤信息的VB10中。此時有兩種選擇:一是什么都不做來凍結(jié)熱電偶信息,二是傳送一個常數(shù)到熱電偶信息中 // 如下是通過將常數(shù)0放到VW4和VW6中來清除熱電偶2和3的輸入映像 LDN M0.6 //Load M0.6 as a Normally Closed contact. MOVB MB0, VB10 //Latch error information. //Freeze Thermocouple0 //Freeze Thermocouple1 MOVW +0, VW4 //Clear Thermocouple2. MOVW +0, VW6 //Clear Thermocouple3. //NETWORK TITLE (single line) // //NETWORK COMMENTS // Network 5 子程序THER_CHK TITLE=***SUBROUTINE*** THER_CHK // 處理錯誤信息 Network 1 // LB0中存放的是子程序0的輸入點。如果LB0為0,則把特殊寄存器SMW8中的值放到LW2中。SMB8是擴展模塊0的類型記錄,SMB9是擴展模塊0的錯誤記錄 LDB= 0, LB0 //Compare slot number to 0. MOVW SMW8, LW2 //Copy ID and Error info to LW2. Network 2 // 如果LB0等于1,把特殊寄存字SMW10的值放到LW2中,SMB10中存放的是擴展模塊1的類型記錄,SMB11是擴展模塊1的錯誤記錄 LDB= 1, LB0 //Compare slot number to 1. MOVW SMW10, LW2 //Copy ID and Error info to LW2. Network 3 // 如果LB0等于2,把特殊寄存字SMW12的值放到LW2中,SMB12中存放的是擴展模塊2的類型記錄,SMB13是擴展模塊2的錯誤記錄 LDB= 2, LB0 //Compare slot number to 2. MOVW SMW12, LW2 //Copy ID and Error info to LW2. Network 4 // 如果LB0等于3,把特殊寄存字SMW14的值放到LW2中,SMB14中存放的是擴展模塊3的類型記錄,SMB15是擴展模塊3的錯誤記錄 LDB= 3, LB0 //Compare slot number to 3. MOVW SMW14, LW2 //Copy ID and Error info to LW2. Network 5 // 如果LB0等于4,把特殊寄存字SMW16的值放到LW2中,SMB16中存放的是擴展模塊4的類型記錄,SMB17是擴展模塊4的錯誤記錄 LDB= 4, LB0 //Compare slot number to 4. MOVW SMW16, LW2 //Copy ID and Error info to LW2. Network 6 // 如果LB0等于5,把特殊寄存字SMW18的值放到LW2中,SMB18中存放的是擴展模塊5的類型記錄,SMB19是擴展模塊5的錯誤記錄 LDB= 5, LB0 //Compare slot number to 5. MOVW SMW18, LW2 //Copy ID and Error info to LW2. Network 7 // 如果LB0等于6,把特殊寄存字SMW20的值放到LW2中,SMB20中存放的是擴展模塊6的類型記錄,SMB21是擴展模塊6的錯誤記錄 LDB= 6, LB0 //Compare slot number to 6. MOVW SMW20, LW2 //Copy ID and Error info to LW2. //Check for Module Errors Supported by Thermocouple Network 8 // 如果L3.2置位,則說明沒有使用的電源/模塊錯誤,把L1.0置1(子程序復(fù)制L1.0的值,并將其放到子程序第一個輸出M0.2中) LD L3.2 = L1.0 Network 9 // 如果L3.3置位,則說明有輸出范圍錯誤,把L1.1置1(子程序復(fù)制L1.1的值,并將其放到子程序第二個輸出M0.3中) LD L3.3 = L1.1 Network 10 // LB2與十六進制數(shù)18進行比較,(十六進制數(shù)18相當于二進制數(shù)00011000。從右至左,這個二進制數(shù)與當前擴展模塊7到0的標記相符。這些位提供了如下信息: // 位7=0:說明有模塊 // 位6和5=00:模塊是非智能I/O模塊 // 位4=1:模塊是一個模擬量模塊 // 位3和2=10:模塊有四路模擬量輸入 // 位1和0=00:模塊沒有輸出) // 如果LB2和十六進制數(shù)18不相等,說明有模塊識別錯誤。將L1.2置1.(子程序復(fù)制L1.2的值,將其放到子程序第三個輸出M0.5中) LDB<> LB2, 16#18 = L1.2 Network 11 // 如果L3.7置位,說明有配置錯誤,將L1.3置位(子程序復(fù)制L1.3的值放到子程序的第四個輸出M0.7中) LD L3.7 = L1.3 Network 12 // 如果沒有以上提到的錯誤,置位L1.4,子程序復(fù)制L1.4的值,將其放到子程序第五個輸出M0.6中 LDN L1.0 AN L1.1 AN L1.2 AN L1.3 = L1.4 有點看不懂,是不是把問題搞復(fù)雜了? // |
---|---|
|