西門(mén)子: | 西門(mén)子代理商 |
西門(mén)子CPU: | 西門(mén)子plc |
德國(guó): | 全新原裝 |
單價(jià): | 888.00元/臺(tái) |
發(fā)貨期限: | 自買(mǎi)家付款之日起 天內(nèi)發(fā)貨 |
所在地: | 直轄市 上海 上海松江 |
有效期至: | 長(zhǎng)期有效 |
發(fā)布時(shí)間: | 2023-12-13 10:56 |
最后更新: | 2023-12-13 10:56 |
瀏覽次數(shù): | 74 |
采購(gòu)咨詢(xún): |
請(qǐng)賣(mài)家聯(lián)系我
|
西門(mén)子CPU1214C中央處理單元西門(mén)子中國(guó)總代理 西門(mén)子授權(quán)代理商
西門(mén)子CPU1214C中央處理單元西門(mén)子中國(guó)總代理 西門(mén)子授權(quán)代理商
西門(mén)子CPU1214C中央處理單元西門(mén)子中國(guó)總代理 西門(mén)子授權(quán)代理商
?初學(xué)PLC梯形圖編程,應(yīng)要遵循一定的規(guī)則,并養(yǎng)成良好的習(xí)慣。下面以西門(mén)子PLC為例,簡(jiǎn)單介紹一下PLC梯形圖編程時(shí)需要遵循的規(guī)則,希望對(duì)大家有所幫助。有一點(diǎn)需要說(shuō)明的是,本文雖以西門(mén)子PLC為例,但這些規(guī)則在其它PLC編程時(shí)也可同樣遵守。
??輸入采樣
??在輸入采樣階段,PLC以?huà)呙璺绞揭来蔚刈x入所有輸入狀態(tài)和數(shù)據(jù),并將它們存入I/O映象區(qū)中的相應(yīng)得單元內(nèi)。輸入采樣結(jié)束后,轉(zhuǎn)入用戶(hù)程序執(zhí)行和輸出刷新階段。在這兩個(gè)階段中,即使輸入狀態(tài)和數(shù)據(jù)發(fā)生變化,I/O映象區(qū)中的相應(yīng)單元的狀態(tài)和數(shù)據(jù)也不會(huì)改變。因此,如果輸入是脈沖信號(hào),則該脈沖信號(hào)的寬度必須大于一個(gè)掃描周期,才能保證在任何情況下,該輸入均能被讀入。
??用戶(hù)程序執(zhí)行
??在用戶(hù)程序執(zhí)行階段,PLC總是按由上而下的順序依次地掃描用戶(hù)程序(梯形圖)。在掃描每一條梯形圖時(shí),又總是先掃描梯形圖左邊的由各觸點(diǎn)構(gòu)成的控制線(xiàn)路,并按先左后右、先上后下的順序?qū)τ捎|點(diǎn)構(gòu)成的控制線(xiàn)路進(jìn)行邏輯運(yùn)算,然后根據(jù)邏輯運(yùn)算的結(jié)果,刷新該邏輯線(xiàn)圈在系統(tǒng)RAM存儲(chǔ)區(qū)中對(duì)應(yīng)位的狀態(tài);或者刷新該輸出線(xiàn)圈在I/O映象區(qū)中對(duì)應(yīng)位的狀態(tài);或者確定是否要執(zhí)行該梯形圖所規(guī)定的特殊功能指令。
??即,在用戶(hù)程序執(zhí)行過(guò)程中,只有輸入點(diǎn)在I/O映象區(qū)內(nèi)的狀態(tài)和數(shù)據(jù)不會(huì)發(fā)生變化,而其他輸出點(diǎn)和軟設(shè)備在I/O映象區(qū)或系統(tǒng)RAM存儲(chǔ)區(qū)內(nèi)的狀態(tài)和數(shù)據(jù)都有可能發(fā)生變化,而且排在上面的梯形圖,其程序執(zhí)行結(jié)果會(huì)對(duì)排在下面的凡是用到這些線(xiàn)圈或數(shù)據(jù)的梯形圖起作用;相反,排在下面的梯形圖,其被刷新的邏輯線(xiàn)圈的狀態(tài)或數(shù)據(jù)只能到下一個(gè)掃描周期才能對(duì)排在其上面的程序起作用。
??輸出刷新
??當(dāng)掃描用戶(hù)程序結(jié)束后,PLC就進(jìn)入輸出刷新階段。在此期間,CPU按照I/O映象區(qū)內(nèi)對(duì)應(yīng)的狀態(tài)和數(shù)據(jù)刷新所有的輸出鎖存電路,再經(jīng)輸出電路驅(qū)動(dòng)相應(yīng)的外設(shè)。這時(shí),才是PLC的真正輸出。
??同樣的若干條梯形圖,其排列次序不同,執(zhí)行的結(jié)果也不同。另外,采用掃描用戶(hù)程序的運(yùn)行結(jié)果與繼電器控制裝置的硬邏輯并行運(yùn)行的結(jié)果有所區(qū)別。當(dāng)然,如果掃描周期所占用的時(shí)間對(duì)整個(gè)運(yùn)行來(lái)說(shuō)可以忽略,那么二者之間就沒(méi)有什么區(qū)別了。
??西門(mén)子plc編程中應(yīng)該注意的問(wèn)題:
??1.中斷程序中可以調(diào)用子程序
??累加器和邏輯堆棧式的存蓄器在中斷程序和被調(diào)用的子程序中都是共用的
??2.中斷程序和主程序下數(shù)據(jù)是可以共享的
??中斷程序雖說(shuō)是可以共享的,但是我們要注意的是中斷事件中事情異步特性的因數(shù)影響,來(lái)解決共享數(shù)據(jù)的一致性問(wèn)題,在中斷事件中主程序執(zhí)行的任何一個(gè)地方都是有可能出現(xiàn)的。
??3.通信接口的中斷
??PLC的串行通信口是可以有梯形圖或者語(yǔ)句表程序控制的。通信口的這種操作模式稱(chēng)為自有端口的模式。在自由的情況下,就可以用程序定義波特率,每個(gè)字節(jié)的位數(shù)等等,在執(zhí)行主程序的過(guò)程中,申請(qǐng)中斷,才能定義自由端口模式,利用接收和發(fā)送中斷可以簡(jiǎn)化程序?qū)νㄐ诺目刂啤?/p>
??4.I/O中斷
??I/O中斷包括上升或下降沿中斷,告訴計(jì)數(shù)器中斷和脈沖串輸出中斷。
??S7-200CPU用輸入I0.0~I0.3的上升或下降產(chǎn)生了中斷,則發(fā)生的事件被輸入端子捕獲,這樣的上升沿或者下降可被用來(lái)指示當(dāng)某個(gè)事件發(fā)生時(shí)必須引起注意的條件。
??5.時(shí)基中斷
??6.中斷的優(yōu)先級(jí)和排隊(duì)
??7.中斷的限制
??8.中斷程序編程步驟
??局部變量表
??1.局部變量與全局變量
??程序中的每個(gè)POU(Program Organizational Unit,程序組織單元)均有白己的由64字節(jié)L存儲(chǔ)器組成的局部變量表。它們用來(lái)定義有范圍限制的變量,局部變量只在它被創(chuàng)建的POU中有效。與之相反,全局符號(hào)在各POU中均有效,只能在符號(hào)表/全局變量表中定義。全局符號(hào)與局部變量名稱(chēng)相同時(shí),在定義局部變量的POU中,該局部變量的定義優(yōu)先,該全局定義則在兒它POU中使用。
??局部變量適用于以下兩種情況:
??(1)在子程序中只用局部變量,不用juedui地址或全局符號(hào),子程序可移植到別的項(xiàng)目去。
??(2)如果使用臨時(shí)變量(TEMP),同一片物理存儲(chǔ)器可在不同的程序中重復(fù)使用。
??如果不是上述兩種情況,不需要使用局部變量。通過(guò)在符號(hào)表(SIMATIC)或全局變量表(IEC)中進(jìn)行定義,可使符號(hào)成為全局變量。
??2.局部變量的類(lèi)型
??TEMP(臨時(shí)變量):暫時(shí)保存在局部數(shù)據(jù)區(qū)中的變量。只有在執(zhí)行該P(yáng)OU時(shí),定義的臨時(shí)變量才被使用,POU執(zhí)行完后,不再使用臨時(shí)變量的數(shù)值。在主程序或中斷程序中.局部變量表只包含TEMP變量。子程序中的局部變量表還有下面的3種變量:
??IN(輸人變量):由調(diào)用它的POU提供的輸人參數(shù)。
??OUT(輸出變量);返回給調(diào)用它的POU的輸出參數(shù)。
??IN_OUT(輸人/輸出變量);其初始值由調(diào)用它的POU提供,被子程序修改后返問(wèn)給調(diào)用它的POU。
??3.局部變量的賦值
??在局部變量表中賦值時(shí),只需指定聲明局部變量的類(lèi)型(TEMP,IN,IN_OUT或OUT)和數(shù)據(jù)類(lèi)型(參見(jiàn)SIMATIC和IEC1131-3的數(shù)據(jù)類(lèi)型),但不指定存儲(chǔ)器地址,程序編輯器自動(dòng)地在L存儲(chǔ)區(qū)中為所有局部變量指定存儲(chǔ)器位置。
??4.在局部變量表中增加新的變量
??對(duì)于主程序與中斷程序,局部變量表顯示一組已被預(yù)先定義為T(mén)EMP(臨時(shí))變量的行。要向表中增加行,只需用右鍵單擊表中的某一行,選擇“插人→行"指令,在所選行的上部插人新的行,選擇“插人→行下"指令,在所選行的下部插人新的行。
??對(duì)于子程序,局部變量表顯示數(shù)據(jù)類(lèi)型被預(yù)先定義為IN、IN_OUT.OUT和TEMP的一系列行,不能改變它們的順序。如果要增加新的局部變量,必須用鼠標(biāo)右鍵單擊已有的行,并用彈出菜單在所擊行的上下插人相同類(lèi)型的另一局部變量。
??5.局部變量數(shù)據(jù)類(lèi)型檢查
??局部變量作為參數(shù)向子程序傳遞時(shí),在該子程序的局部變量表中指定的數(shù)據(jù)類(lèi)型必須調(diào)用POU中的數(shù)據(jù)類(lèi)型值匹配。
??例如從主程序0B1調(diào)用子程序SBR0,使用名為INPUT1的全局符號(hào)作為子程序的輸人參數(shù)。在SBRO的局部變量表中,已經(jīng)定義了一個(gè)名為FIRST的局部變量作為該輸入?yún)?shù),當(dāng)0B1調(diào)用SBR0時(shí),INPUTI的數(shù)值被傳人FIRST,INPUTI和FIRST的數(shù)據(jù)類(lèi)型必須匹配。
??6.顯示或隱藏局部變量表
??將水平分裂條拉至程序編輯器視窗的傾部,則不再疑示局部變量表,但它仍然存在。將分裂條下拉,將再次顯示局部變量表。
??7.在局部變量表中進(jìn)行賦值
??在程序中使用符號(hào)名時(shí),程序編輯器首先檢查有關(guān)POU的局部變量表,然后檢查符號(hào)表/全局變量表。如果某符號(hào)名在兩處都沒(méi)有定義,程序編輯器則將其視為全局符號(hào),程序編輯器指定一條綠色波浪狀下畫(huà)線(xiàn),并將名稱(chēng)括在雙引號(hào)中,例如"UndefinedLocalVar(未定義的局部變量)。如果后來(lái)對(duì)該符號(hào)名賦了值,程序編輯器不會(huì)自動(dòng)再次讀取局部變量表并修改它。為了將該符號(hào)名作為局部變量使用,必須手工刪除程序代碼中的引號(hào),并在符號(hào)名前插人#號(hào),例如改為#UndefinedLocalVar。
??各子程序最多可調(diào)用16個(gè)輸人/輸出參數(shù),如果超出16個(gè),將返回錯(cuò)誤。
??選擇希望的變量類(lèi)型所在的行,并在名稱(chēng)域中鍵人變量名稱(chēng),在數(shù)據(jù)類(lèi)型城中鍵人數(shù)據(jù)類(lèi)型。不需在局部變量表中的安量名稱(chēng)前加并號(hào),#號(hào)只在程序代碼中的局部變量名之前使用。
??局部變量名可包含數(shù)字、字母和下畫(huà)號(hào)(“_”),也可以包含擴(kuò)展字符(ASII128-ASCII255)。第一個(gè)字符必須是字可或擴(kuò)展字符,關(guān)鍵字不能作為符號(hào)名。
??局部變量表中的變量名被下載和存儲(chǔ)在CPU存儲(chǔ)器中,使用較長(zhǎng)的變量名將占用較多的存儲(chǔ)空問(wèn)。