如何存一個bool變量上一周期的狀態(tài)
劉玉蓉
發(fā)布于2014-11-27 17:35
27
0
標簽:
用300PLC控制變頻電機通過齒輪、鏈輪傳動裝置后驅(qū)動一個大轉(zhuǎn)盤做定位轉(zhuǎn)動,電機順時針和逆時針兩個方向運動,大轉(zhuǎn)盤也做順時針和逆時針轉(zhuǎn)動;大轉(zhuǎn)盤轉(zhuǎn)動角度由上位機給PLC發(fā)角度指令通過PLC控制變頻電機轉(zhuǎn)動實現(xiàn),大轉(zhuǎn)盤上沒有安裝任何角度檢測裝置,就靠變頻電機末端的編碼器檢測通過傳動比計算來得到大轉(zhuǎn)盤的當前位置,所以是一個開環(huán)位置控制。正是這個原因所以存在誤差,但實驗發(fā)現(xiàn):電機側(cè)安裝的編碼器反映的位置通過計算完全能反映大轉(zhuǎn)盤的位置(轉(zhuǎn)動角度)。但由于機械傳動裝置存在傳動誤差,大轉(zhuǎn)盤一直順時針轉(zhuǎn)動時,上位機給多少角度都能轉(zhuǎn)那么大角度(誤差很小),但一旦順時針轉(zhuǎn)了,再逆時針轉(zhuǎn)動就存在一個誤差,但再繼續(xù)逆時針轉(zhuǎn)動,有不存在這個誤差了,實驗發(fā)現(xiàn)這個誤差是個固定值,所以我們認為誤差導(dǎo)致的原因是傳動裝置(尤其是鏈條傳動)的傳動間隙引起的,所以想通過程序補償,但不知道如何實現(xiàn)?分以下情況:
1、順時針轉(zhuǎn)動一次后,如果一直順時針轉(zhuǎn)動,就不能補償;
2、順時針轉(zhuǎn)動一次或多次后,如果逆時針轉(zhuǎn)動,就在次逆時針轉(zhuǎn)動時補償且僅補償一次,再逆時針轉(zhuǎn)動就不能補償;
1、順時針轉(zhuǎn)動一次后,如果一直順時針轉(zhuǎn)動,就不能補償;
2、順時針轉(zhuǎn)動一次或多次后,如果逆時針轉(zhuǎn)動,就補償且僅補償一次,再逆時針轉(zhuǎn)動就不能補償;
3、逆時針轉(zhuǎn)動一次后,如果一直逆時針轉(zhuǎn)動,就不能補償;
4、逆時針轉(zhuǎn)動一次或多次后,如果順時針轉(zhuǎn)動,就在次順時針轉(zhuǎn)動時補償且僅補償一次,再順時針轉(zhuǎn)動就不能補償。
~~~~~~~~~****有網(wǎng)友提出以下解決方案:
1、用一個bool變量tag1保存轉(zhuǎn)動方向,為0正傳,為1反轉(zhuǎn),然后再用一個bool量tag2保存tag1的上一個周期的狀態(tài)
2、如果tag1和tag2不一樣,則說明出現(xiàn)反向的動作,那么就加一個補償。后把tag1的值保存到tag2中也就相當于異或的功能。
我的問題是如何通過PLC程序?qū)崿F(xiàn)將bool變量上一周期的狀態(tài)保存,用兩個bool量實現(xiàn)熱心網(wǎng)友的邏輯功能,請大家?guī)兔N個程序。
問題補充:
給定正角度,按正轉(zhuǎn)按鈕電機正轉(zhuǎn),自動到位停止,給負角度,按反轉(zhuǎn)鈕,電機自動反轉(zhuǎn)到位停止。我補償?shù)闹翟黾拥浇o定值中的,當然只正轉(zhuǎn)或反轉(zhuǎn)不補,僅正轉(zhuǎn)后反轉(zhuǎn)或反轉(zhuǎn)石正轉(zhuǎn)時僅僅補償一次。我會再試驗。
佳答案
如下程序.比如M0.0和M0.1分別為正轉(zhuǎn)和反轉(zhuǎn),M1.0得電就啟用補償,M1.0失電就不啟用補償.
若有收獲,就點個贊吧!
文章來源于網(wǎng)絡(luò)及文獻如有侵權(quán)請聯(lián)系站長
分享到:
微信掃一掃分享
閱讀與本文標簽相同的文章