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