引用
引用第7樓wwcwwc于2010-05-15 08:00發(fā)表的 :
看了你的程序我說說個人觀點,盡供參考。
因為我這里現(xiàn)在沒有實體進(jìn)行測試,可能程序還存在一些問題,望見諒!
1) 子程序結(jié)構(gòu)不夠嚴(yán)緊,同樣的功能占用字節(jié)稍稍偏大(可能是編程習(xí)慣問題)。相同的功能用這樣調(diào)用子程序做法是可行的。程序盡量采用指令方式編寫。直接能夠使用輸出條件的網(wǎng)絡(luò)段程序盡量少用(寄存)跳轉(zhuǎn)等方法,這樣對于程序的閱讀有幫助。手/自動轉(zhuǎn)換條件功能最好不要寫到子程序的調(diào)用中。
2) 主程序(OB1)中功能的啟動條件既然用上升沿脈沖控制位,則子程序中應(yīng)該用相應(yīng)的置/復(fù)位指令。我是沿用你的主程序編法進(jìn)行。特別是一些手動操作時正反轉(zhuǎn)頻繁的場所,需要解決置位后的復(fù)位問題。同時可能會造成調(diào)用自動操作時,相關(guān)的輸出位不能有效復(fù)位。補(bǔ)救措施見第4項內(nèi)容。啟動信號條件最好用變址方式,把必要的程序邏輯關(guān)系做在一起,緊湊程序。
3) 急停按鈕必須使用B接點(常閉接點,這樣可以在平時建立一個檢測急;芈氛Ec否的功能)。
.......
謝謝wwcwwc的回復(fù)
我設(shè)計這個子程序的初衷就是為了方便一鍵啟停的操作,像C語言似的,只要把一些相關(guān)的輸入輸出信號都列出來,因為這些設(shè)備基本類似,所以不要再多考慮,直接調(diào)用子程序。
但現(xiàn)在遇到這樣一個問題,(原來我發(fā)的那個是有連鎖條件的),只要第一個啟停按鈕一按下,后滿所有的設(shè)備就立即啟動了,按照我的理解,應(yīng)該不會出現(xiàn)這樣的情況,我的子程序調(diào)用的條件里面有個啟停的上升沿的,沒有按那個上升沿后面的設(shè)備應(yīng)該是啟動不了的,后來我推斷應(yīng)該是子程序的問題,我猜想因為每個都調(diào)用的一個子程序,第一個調(diào)用只有,輸出局部變量變化了,第二調(diào)用的時候,直接把這個輸出局部變量給輸出呢?按照S7-200的說法,對這個局部變量還不是很吃得透。
我的急停按鈕在電路上是,常閉接的二次回路,常開接的PLC,選用的是1NO1NC的按鈕。
還請WWCWWC網(wǎng)友幫忙考慮考慮我以上描述的問題!
前面有一位網(wǎng)友修改的程序我也實際測試了一下,確實符合我的要求,但是我移植到我的項目中就不行了。也不明白是什么原因。