郎亮波
(浙江海牛環(huán)境科技股份有限公司,浙江杭州,311121)
公司設(shè)備目前使用的都是三菱的PLC,其中不乏一些上世紀(jì)的產(chǎn)品。在修改其控制程序中就碰到過(guò)一些問(wèn)題,其中最普遍的情況是保持型寄存器不夠用,而非保存型的寄存器資源十分寬裕。隨著工藝的改進(jìn),此情況有越來(lái)越嚴(yán)重的趨勢(shì)?,F(xiàn)有這樣的設(shè)備多于40臺(tái),如果每臺(tái)都換新的PLC成本會(huì)增加很多,況且整個(gè)工藝改進(jìn)涉及到地方很少,花大成本只是為了這小小的改進(jìn),顯然很不劃算。本文介紹的方法就是在此背景下提出,其最直接目的是解決老PLC數(shù)據(jù)寄存器資源缺乏的問(wèn)題,滿足功能的前提下為企業(yè)節(jié)約成本,而且修改工藝周期較其他方法快、成功率較高。通過(guò)此方法舉一反三可以延伸到其他類似情況,既擴(kuò)大解決問(wèn)題的思路,又對(duì)PLC數(shù)據(jù)結(jié)構(gòu)以及指令有更深認(rèn)識(shí)。
目前在使用的數(shù)據(jù)存儲(chǔ)器有不少只是存儲(chǔ)小于255的數(shù)值,三菱PLC一個(gè)數(shù)據(jù)寄存器有16位BIT,小于255的數(shù)只是占有了一個(gè)數(shù)據(jù)寄存器的低8位空間,而高8位空間卻白白地浪費(fèi)掉。如果將一個(gè)數(shù)據(jù)寄存器調(diào)整為兩個(gè)來(lái)使用,將高低8位存儲(chǔ)空間獨(dú)立為兩個(gè)數(shù)據(jù)寄存器,保存型寄存器數(shù)量就能增加一倍。此方法需要兩個(gè)非保存型寄存器配合使用,在生產(chǎn)中直接調(diào)用的是這兩個(gè)非保存型寄存器,保存型寄存器的高低8位與這兩個(gè)寄存器也需要同步刷新,這樣關(guān)機(jī)時(shí)保持型寄存器存儲(chǔ)的就是最新的值。開(kāi)機(jī)時(shí)對(duì)這3個(gè)寄存器的處理剛好與上述過(guò)程相反。上述方法不需要增加額外的成本,只要按上面的思路增加一段程序。
實(shí)現(xiàn)這個(gè)目標(biāo)需要在程序中需要增加兩個(gè)過(guò)程。
(1)開(kāi)機(jī)時(shí)將保存型寄存器分離并將各自的值保存到非保存型寄存器中,此程序只開(kāi)機(jī)時(shí)操作一次。(2)同步刷新保存型數(shù)據(jù)寄存器,也就是將非保存型寄存器兩個(gè)新值合并到保存型數(shù)據(jù)寄存器中,開(kāi)機(jī)時(shí)的分離的數(shù)值是上次保存的值,這個(gè)值雖然保存在一個(gè)寄存器中,本身是沒(méi)有意義的。
以下是仿真分離寄存器得到的結(jié)果,設(shè)D250當(dāng)前值為15400,高低8位的二進(jìn)制化為十進(jìn)制分別為60和40,D20=40(低8位),D30=60(高8位),這與仿真得到的結(jié)果是一致的(見(jiàn)圖1)。
圖1 仿真結(jié)果1(分離值)
以下是仿真合并寄存器得到的結(jié)果,D20、D30預(yù)設(shè)值分別為20、30,合并到D250等于7700(見(jiàn)圖2)。
將保存型寄存器分離及合并所涉及的命令少而簡(jiǎn)單,其關(guān)鍵命令是字與和字或。字與邏輯運(yùn)算:1∧1=1;1∧0=0;0∧1=0;0∧0=0。十六進(jìn)制FF轉(zhuǎn)化為二進(jìn)制為1111111,F(xiàn)F00轉(zhuǎn)化為二進(jìn)制為1111111100000000,將D250十進(jìn)制值15400轉(zhuǎn)化為二進(jìn)制為11110000101000。經(jīng)過(guò)字與運(yùn)算后D250低8位數(shù)存放在D20中,而高8位存放在D30中。
圖2 仿真結(jié)果2(合并值)
圖3 字與運(yùn)算過(guò)程
字或邏輯運(yùn)算:1∨1=1;1∨0=1;0∨1=1;0∨0=0。D20十進(jìn)制值20轉(zhuǎn)化為二進(jìn)制10100。D30十進(jìn)制值30轉(zhuǎn)化為二進(jìn)制11110,經(jīng)過(guò)高低8位交換后為1111000000000。字或運(yùn)算得到的結(jié)果為1111000010100,轉(zhuǎn)化為十進(jìn)制為7700。而十進(jìn)制值7700按上述字與運(yùn)算,然后將D30高低8位交換,又能還原成D20=20、D30=30的結(jié)果,這與仿真得到的結(jié)果是一致的。
圖4 字或運(yùn)算過(guò)程
解決這個(gè)問(wèn)題運(yùn)用了字與和字或運(yùn)算,其實(shí)還可以利用移位的方法得到,不過(guò)那樣涉及的命令比較多,程序相對(duì)比較復(fù)雜。字與和字或運(yùn)算雖然是一種簡(jiǎn)單命令,平時(shí)很少用到,但它與其他命令結(jié)合一起使用,可以十分巧妙地處理數(shù)據(jù),本例就是其中之一。
參考文獻(xiàn)
[1]宋伯生.PLC 編程理論·算法及技巧[M].北京:機(jī)械工業(yè)出版社.2005.2.
[2]史國(guó)生.電氣控制與可編程控制器技術(shù)[M].北京:化學(xué)工業(yè)出版社.2003.12.