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