【S7-200 Smart開(kāi)源標準化編程】之基礎----突破子程序的限制,讓子程序像FB一樣工作
就算看帖的小伙伴不考慮什么標準化編程,能突破子程序的一些限制也是好的。
先說(shuō)說(shuō)標準化程序的要求:對象化編程,程序中不使用M,T,C,子程序內邏輯程序不可出現全局變量,更多的規則以后再說(shuō),先解決最基本問(wèn)題。
我們首先看看200子程序有哪些限制:
1、最多128個(gè)子程序
這個(gè)限制是說(shuō)你可以有128個(gè)子程序,不是調用限制,所以調用多少次都可以,受PLC資源限制。這個(gè)限制沒(méi)法破。
2、子程序只能有16個(gè)腳
為什么會(huì )有這個(gè)限制呢?臨時(shí)變量一共64個(gè)字節,如果腳上都是最大的雙字數據類(lèi)型,64除以4等于16,所以就有了這個(gè)16腳限制。注意最后四個(gè)字節的臨時(shí)變量系統保留。咱也不知道干啥用了。那么這個(gè)限制如何破解呢,比如說(shuō)把bool數據類(lèi)型的變量整合成byte字節型的變量給子程序,比如連接的多個(gè)連續V區參數以指針的方式傳給子程序。
3、最多嵌套8層
這個(gè)沒(méi)啥說(shuō)的,沒(méi)法破,但一般情況下夠用了。
[ post]4、帶有計數器和定時(shí)器的子程序無(wú)法多次調用
高速計數器未試驗過(guò),先排除。普通的計數器其實(shí)就是整數加,整數減,破解無(wú)壓力。定時(shí)器,我們用時(shí)間間隔定時(shí)器BGN_ITIME和CAL_ITIME指令實(shí)現毫秒級計時(shí),多次調用無(wú)問(wèn)題,破解無(wú)壓力。
5、子程序內不能使用沿指令
雖然不能使用沿使令,但是通過(guò)梯形圖邏輯可以產(chǎn)生沿信號,使用不受限
6、置位,復位指令使用受限
這個(gè)破解沒(méi)問(wèn)題。
更多的限制網(wǎng)友提一提,我們看看能不能破解。
200子程序多次調用總是出問(wèn)題是因為什么的呢,200的子程序運行起來(lái)就是沒(méi)有靜態(tài)區的FC,問(wèn)題就出在temp區,因為temp不會(huì )保存啊,所以我們就要劃出V區來(lái)保存temp的數據,像建立FB背影數據塊那樣。這部分背景數區上電時(shí)清零,子程序內需要斷電保持的數據要記得用INOUT腳引出。工作起來(lái)也簡(jiǎn)單,進(jìn)入子程序后先將V區數據復制到temp,子程序邏輯運行完,把temp里的數據復制回V區。有伙伴會(huì )說(shuō),這不是就是帶庫的子程序嘛,應該是不同的。采用標準化方式的子程序必須全部無(wú)條件調用,就是每次掃描都得運行。
這里給出簡(jiǎn)單的例程:
例程中有嵌套,有標準化定時(shí)器、標準化計數器,子程序多次調用,沿信號的生成和使用
加我微信進(jìn)群交流:50586625
smart200標準化實(shí)踐modbus20220522.smart.zip (102 K) 下载次数:1325 [ 此帖被wlmissyou在2022-09-15 09:08重新編輯 ]