前一段時(shí)間遇到以前老西門(mén)子s7-200程序移植到smart200 plc的一些問(wèn)題。這個(gè)程序是幾年前我用西門(mén)子s7-200 226cn plc編寫(xiě)的程序,出過(guò)貨機(jī)器使用幾年都正常,軟件沒(méi)什么問(wèn)題。2019年年底這家客戶(hù)有訂購(gòu)這臺(tái)機(jī)器,現(xiàn)在老款226cn的plc不好賣(mài),價(jià)格也貴,我將plc改成smart200 st60plc。在去年9月份機(jī)器安裝好后我去調(diào)試這移植到smart200 plc程序時(shí),也是一開(kāi)始很順利。結(jié)果等機(jī)器在送檢到品質(zhì)部門(mén)進(jìn)行出貨前系統(tǒng)檢測(cè)時(shí)就出問(wèn)題。機(jī)器控制上面是兩個(gè)變頻器和一個(gè)伺服控制再加一個(gè)壓縮器制冷,幾個(gè)溫度控制。機(jī)器其實(shí)不算復(fù)制,出現(xiàn)問(wèn)題就是伺服做往復(fù)運(yùn)動(dòng)會(huì)向一邊偏移,伺服運(yùn)行一兩個(gè)小時(shí)后就會(huì)偏移到一邊的極限,而且是一個(gè)方向偏移。我想了很多辦法,第一一開(kāi)始我就懷疑我程序轉(zhuǎn)換沒(méi)有轉(zhuǎn)換好,我仔細(xì)看了程序,做了很多修改都沒(méi)有效果,我就在此時(shí)將程序問(wèn)題排查。在接下來(lái)我就去排查硬件接線(xiàn)和干擾問(wèn)題,要求將脈沖控制線(xiàn)改短,屏蔽線(xiàn)用雙絞屏蔽線(xiàn),在屏蔽線(xiàn)上加磁環(huán),檢測(cè)接地,檢查伺服走線(xiàn)是否強(qiáng)弱分家等,還要接線(xiàn)端子焊接都都查了,還有機(jī)械部分是否有間隙,安裝是否達(dá)到要求,要求現(xiàn)成人員都整改好了,就是沒(méi)辦法解決問(wèn)題。后來(lái)實(shí)在沒(méi)辦法就拿出電話(huà)撥打西門(mén)子熱線(xiàn)技術(shù)支持,將我現(xiàn)成問(wèn)題和技術(shù)支持的工程師說(shuō)了一遍,工程師回復(fù)說(shuō),你是一直像一個(gè)方向偏移,可能就是機(jī)械間隙造成,建議在組態(tài)里面填寫(xiě)這個(gè)機(jī)械間隙值。后來(lái)我就找到機(jī)械工程師去研究問(wèn)題,仔細(xì)看了機(jī)械部分,覺(jué)得沒(méi)問(wèn)題,伺服直接帶動(dòng)同步輪工作,安裝也很緊,我覺(jué)得不是機(jī)械間隙問(wèn)題。得出機(jī)械也沒(méi)問(wèn)題,我被這機(jī)器折磨的一點(diǎn)脾氣都沒(méi)有了。后來(lái)實(shí)在想不到很好的辦法,就直接拿電腦在現(xiàn)成監(jiān)控,看到底是哪里問(wèn)題。把程序調(diào)整后,將速度改小讓機(jī)器慢速運(yùn)行看plc發(fā)送脈沖和伺服接收脈沖是否一致,好家伙監(jiān)控一段時(shí)間問(wèn)題就出現(xiàn)了,伺服接收大脈沖數(shù)和plc發(fā)出來(lái)的脈沖數(shù)一致。通過(guò)監(jiān)控發(fā)現(xiàn)plc脈沖數(shù)正方向突然多出一個(gè)脈沖,這時(shí)我就想,我有沒(méi)改變目標(biāo)設(shè)定值,怎么會(huì)突然正方向多一個(gè)脈沖數(shù)。我以前老款plc控制都很好,計(jì)算程序也沒(méi)有改動(dòng)是直接移植過(guò)來(lái)不會(huì)有問(wèn)題才對(duì)。我順著這個(gè)方向去查就發(fā)現(xiàn)問(wèn)題,目標(biāo)中脈沖數(shù)計(jì)數(shù)是通過(guò)兩個(gè)浮點(diǎn)數(shù)相加后的結(jié)果再去取整,問(wèn)題就出現(xiàn)這里。工藝要求是原點(diǎn)在中間,向左右給偏移多少來(lái)做往復(fù)運(yùn)動(dòng),我程序就是設(shè)計(jì)思路是設(shè)定一個(gè)行程是半邊行程,再通過(guò)半邊行程相加來(lái)得出全部行程。開(kāi)始伺服回到原點(diǎn),測(cè)試第一個(gè)動(dòng)作是先運(yùn)行半個(gè)行程,當(dāng)半個(gè)行程運(yùn)行完成后再將兩個(gè)半個(gè)行程相加結(jié)果賦值到目標(biāo)運(yùn)行脈沖里面進(jìn)行向另一個(gè)方向偏移,再到了反方向后又是兩個(gè)半邊行程相加的結(jié)果做運(yùn)行想正方向運(yùn)行,這樣一直來(lái)做往復(fù)運(yùn)動(dòng)。這樣做兩個(gè)半個(gè)行程相加的好處就是不管是你在那個(gè)時(shí)候改變行程都用找原點(diǎn)就可以新行程運(yùn)行。問(wèn)題就是出現(xiàn)這里,當(dāng)你我向正負(fù)方向運(yùn)行,一開(kāi)始通過(guò)浮點(diǎn)轉(zhuǎn)換整數(shù)的運(yùn)行目標(biāo)結(jié)果是一致,運(yùn)行一會(huì)兒后就出現(xiàn)負(fù)方向值還是原來(lái)的運(yùn)行目標(biāo)值,這是正方向值就比負(fù)方向值多一個(gè)值,運(yùn)行一會(huì)兒正方向值有正常。說(shuō)到這里,大家以為我程序運(yùn)算有問(wèn)題,實(shí)際上上運(yùn)算公式還是這一個(gè),只是負(fù)方向運(yùn)算的結(jié)果我乘以了負(fù)一,我用相對(duì)定位指令,換方向要改變運(yùn)行值來(lái)?yè)Q向控制伺服。我通過(guò)監(jiān)控在某個(gè)時(shí)間段里面正方向兩個(gè)浮點(diǎn)數(shù)相加結(jié)果會(huì)有一點(diǎn)點(diǎn)波動(dòng),這樣就會(huì)出現(xiàn)使用取整指令進(jìn)行四舍五入的情況會(huì)出現(xiàn)多一個(gè)脈沖導(dǎo)致正方向在某個(gè)時(shí)間點(diǎn)回一致多偏移1個(gè)脈沖,運(yùn)行久后就會(huì)出現(xiàn)正方偏移到極限開(kāi)關(guān)位置,導(dǎo)致機(jī)器停機(jī)報(bào)警。我解決的辦法就是將半個(gè)行程先進(jìn)行取整后再去相加,就可以解決這問(wèn)題。由于客戶(hù)急著要我們交機(jī),我沒(méi)時(shí)間去進(jìn)一步驗(yàn)證這個(gè)問(wèn)題,是程序有問(wèn)題,還是plc本身有問(wèn)題。我運(yùn)到過(guò)幾次在老款s7-200能正常運(yùn)行,移植到smart200就會(huì)出現(xiàn)一些小問(wèn)題,我每次都將程序修改一下就可以解決問(wèn)題,這是程序都是直接可以移植的邏輯控制和運(yùn)行,問(wèn)題就是出現(xiàn)直接能移植程序上面。不知道大家在做s7-200移植到smart200上面有沒(méi)有遇到過(guò)的問(wèn)題。也有可能是我自身問(wèn)題,我沒(méi)有找出來(lái),請(qǐng)大家多多看下面截圖多多指教。
下面截圖我出現(xiàn)問(wèn)題的這段程序,老款s7-200程序和smart200修改后的正常程序。
圖一是半個(gè)行程的原始脈沖(s7-200)
圖二
圖三,圖四,圖五是同一段程序截圖,也是兩左右半邊行程相加程序。(s7-200)
圖四
圖五
圖六
下面截圖是smart200移植后的程序。
圖七(smart200)
圖八
圖九,圖十,圖十一是一個(gè)控制程序段程序
圖十
圖十一
圖十二