S7-200的子程序SUB,一旦寫好,用在程序中之后, 是不可以修改其輸入輸出管腳的。 因?yàn)槟阋坏﹦?dòng)了管腳接口,調(diào)用這個(gè)子程序的地方,就會(huì)報(bào)錯(cuò)。
報(bào)錯(cuò)以后還沒(méi)法和STEP7一樣可以通過(guò)更新只更新改動(dòng)部分。正常處理的只有把原本的調(diào)用刪掉,從頭重新調(diào)用,并為每個(gè)接口逐個(gè)分配變量。
這相當(dāng)討厭。
比方說(shuō)我一個(gè)底層的設(shè)備,如果調(diào)試中發(fā)現(xiàn)需要增加些功能,實(shí)在不可避免決定要增加接口。而我主程序中已經(jīng)對(duì)這個(gè)設(shè)備調(diào)用了幾十次,那就必須幾十個(gè)實(shí)例都重來(lái)一遍。
而這還不算完。
誰(shuí)敢保證這一次接口的變更就是最后一次了呢?下一次如果還需要修改,就需要原樣再來(lái)一次。
估計(jì)換誰(shuí),都受不了這種折騰。
而這也是標(biāo)準(zhǔn)化編程的大忌。
貌似許多人對(duì)標(biāo)準(zhǔn)二字有誤解,看到我提出的標(biāo)準(zhǔn)化,就有些不服氣。你萬(wàn)某有何德何能提出標(biāo)準(zhǔn),俺們智力才藝都不比你差,憑什么要遵循你提出的標(biāo)準(zhǔn),憑什么用你的標(biāo)準(zhǔn)而不是我自己的標(biāo)準(zhǔn)?我們國(guó)家歷史上因?yàn)榧夹g(shù)標(biāo)準(zhǔn)落后一步而受制于人,吃的虧大了去了。可不能重蹈這樣的覆轍!
而另外有一些人,則強(qiáng)調(diào)沒(méi)有辦法做到整齊劃一的標(biāo)準(zhǔn)。理由是設(shè)備配置千差萬(wàn)別,沒(méi)有一模一樣的設(shè)備,所以做不到標(biāo)準(zhǔn)化。
錯(cuò)啦!都是屬于對(duì)標(biāo)準(zhǔn)化的誤解。我們追求的標(biāo)準(zhǔn)化,是把系統(tǒng)做成搭積木一樣的標(biāo)準(zhǔn)模塊,每個(gè)模塊自成體系,邏輯互不干擾。通過(guò)接口與其他系統(tǒng)模塊對(duì)接,不同的系統(tǒng)設(shè)計(jì),在接口不變的情況下,只需要更換相應(yīng)的模塊,即可以實(shí)現(xiàn)快速組裝。
而接口,也不是一塵不變的,可以根據(jù)需要隨時(shí)改進(jìn),而在接口改動(dòng)的時(shí)候,也只是對(duì)接的模塊之間局部變更,不要影響到整個(gè)系統(tǒng)。不會(huì)因?yàn)榻涌诘母膭?dòng),而需要系統(tǒng)重新調(diào)試。
甚至,我現(xiàn)在推廣了二期標(biāo)準(zhǔn)化示例項(xiàng)目之后,下一步的計(jì)劃就是對(duì)接口的優(yōu)化升級(jí)。過(guò)去,我在開發(fā)階段,采用的接口只是借用的別人以前做的,現(xiàn)在終于有精力,騰出手來(lái),把接口改造為我滿意的樣子。
而我和我的團(tuán)隊(duì)成員,絲毫不需要擔(dān)心接口的更改會(huì)導(dǎo)致影響到已有邏輯模塊的運(yùn)行,甚至帶來(lái)bug。
這就是標(biāo)準(zhǔn)化設(shè)計(jì)的優(yōu)勢(shì)。心不累。不需要和以前一樣,程序中改動(dòng)一點(diǎn)點(diǎn)就緊張萬(wàn)分,就擔(dān)心把整個(gè)系統(tǒng)原本正常運(yùn)行的功能搞崩潰。
所以,我在開發(fā)SMART 200標(biāo)準(zhǔn)化架構(gòu)的時(shí)候,首先就意識(shí)到子程序(庫(kù)函數(shù))接口不能更改的這個(gè)問(wèn)題很嚴(yán)重。并認(rèn)為有可能是眾多人都不愿意投入精力在SMART 200系統(tǒng)做標(biāo)準(zhǔn)化的主要原因。
所以首當(dāng)其沖必須解決這個(gè)問(wèn)題。
而實(shí)現(xiàn)方法,其實(shí)很簡(jiǎn)單。
即利用程序塊的導(dǎo)出功能,把調(diào)用被改動(dòng)的子程序?qū)С鰹锳WL的文本文件:
然后在文本文件的調(diào)用中,修改到符合新版本的函數(shù)的語(yǔ)法,再重新導(dǎo)入即可。
這里存在的問(wèn)題是,不管是導(dǎo)入還是導(dǎo)出,操作之前軟件都會(huì)自動(dòng)編譯,編譯通過(guò)后才可以進(jìn)行。所以導(dǎo)出必須在修改接口之前,而在修改接口之后,導(dǎo)入之前,需要把相應(yīng)的SUB內(nèi)發(fā)紅的段落先刪除。
因而實(shí)時(shí)的存盤備份非常重要。千萬(wàn)不能上來(lái)就改接口改子程序的邏輯,改過(guò)之后發(fā)現(xiàn)既不能導(dǎo)出又不能導(dǎo)入,那就尷尬了。
由于AWL文件中是絕對(duì)值尋址的,所以界面非常不夠友好。我通常是在文本修改階段,只管語(yǔ)法正確,比如增加的數(shù)值變量,就先填上AC0,如果是離散變量,則暫時(shí)輸入L0.0,等導(dǎo)入成功之后,在梯形圖界面下,根據(jù)實(shí)際需求,更改為正確的變量。
當(dāng)然啦,如果有可能,盡量直接用搜索替換比如把原有的”AC0”替換為“AC0,AC0”。速度會(huì)快很多。
所以,在使用標(biāo)準(zhǔn)規(guī)范中也包含了同一個(gè)類型的設(shè)備對(duì)象,盡量在同一個(gè)SUB中調(diào)用。這樣導(dǎo)出修改接口的時(shí)候只搞這一個(gè)文件即可。而不必在整個(gè)程序范圍去找,去把整個(gè)程序的SUB都導(dǎo)出來(lái)手工修改。
那樣兒,仍然會(huì)很累。
-
plc
+關(guān)注
關(guān)注
5037文章
13921瀏覽量
474768 -
接口
+關(guān)注
關(guān)注
33文章
9005瀏覽量
153780 -
S7-200
+關(guān)注
關(guān)注
13文章
411瀏覽量
51431
原文標(biāo)題:【萬(wàn)泉河】S7-200 SMART 子程序修改技巧
文章出處:【微信號(hào):gongkongBBS,微信公眾號(hào):工控網(wǎng)智造工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
S7-200西門子PLC視頻教程大全
S7-200簡(jiǎn)單模擬量編程程序
S7-200模擬器使用說(shuō)明

基于S7-200的PLC系統(tǒng)手冊(cè)

PLC S7-200進(jìn)行發(fā)動(dòng)機(jī)控制的實(shí)例資料說(shuō)明

S7-200 SMART PLC的應(yīng)用案例
西門子S7-200 Smart PLC加密設(shè)置全面指南

S7協(xié)議讀取西門子S7-200 Smart PLC數(shù)據(jù)

評(píng)論