在我們的實際項目中經(jīng)常需要使用模擬量來讀取現(xiàn)場設備的數(shù)據(jù)。比如設備的溫度、液體的高度、流速、變頻器的頻率、閥門的開度等等。那么如果現(xiàn)場有多個模擬量的傳感器要編寫程序的話,可能工作量就會比較大,有沒有更快捷的方式編程呢?那么本文就給大家分享多個模擬量快速編程的方法。本案例使用的是S7-1200PLC實現(xiàn)控制要求。
將連續(xù)16個Al信號(IW96-IW126),根據(jù)信號的范圍,轉換成對應的工程量信號。比如:IW96測量的是溫度,范圍是0.0-100.0℃。IW96測量的是管道的壓力,范圍是0.0-1.0MPa。
①在博途軟件中組態(tài)1215CPU以及兩個8通道模擬量模塊,如圖1所示:
▲圖1▲
②查看兩個模擬量擴展模塊的通道地址得知是IW96-IW126,如圖2和圖3所示:
▲圖2▲
▲圖3▲
①在博途軟件中新建DB1數(shù)據(jù)塊,建立4個數(shù)組的數(shù)據(jù)類型,每個數(shù)組包含16個元素個數(shù)。比如“A”這個數(shù)組,包含了16個Int的數(shù)據(jù)!癓imlitMix”數(shù)組包含了16個Real數(shù)據(jù)。其中還建立了兩個Int的數(shù)據(jù),名稱為“ForNum”和“ForNum1”,主要用于循環(huán)程序的使用。
▲圖4▲
②如圖5所示,在OB1程序塊中編寫程序。程序段1對循環(huán)次數(shù)清零。程序段2是標準化和縮放指令,標準化指令(NORM_X)中的VALUE這個管腳的地址,使用數(shù)組間接尋址,隨著ForNum這個變量的變化,可以得知第一次的數(shù)據(jù)為A[0],第二次為A[1],依次遞增?s放指令的MIN和MAX管腳的參數(shù)也同樣的是間接尋址,MIN管腳第一次的數(shù)據(jù)為LimlitMix[0],第二次的數(shù)據(jù)為LimlitMix[1],依次遞增。MAX管腳第一次的數(shù)據(jù)為LimlitMax[0],第二次的數(shù)據(jù)為LimlitMax[1],依次遞增。
程序段3使用的是ADD指令實現(xiàn)“ForNum”循環(huán)次數(shù)的遞增,再判斷循環(huán)次數(shù),如果循環(huán)次數(shù)的值小于等于15則跳轉到程序段2。
▲圖5▲
③程序段4是使用PEEK_WORD指令將IW96為起始的16個數(shù)據(jù)映射到DB塊的“A”數(shù)組中,這樣就能把外部的16個模擬量通道的數(shù)據(jù)依次存入A[0]至A[15]中。其中指令的area的含義是:指定訪問存儲區(qū)類型,16#81:輸入映像區(qū)。
dbNumber的含義是:用來指定訪問數(shù)據(jù)塊的編號。僅在訪問數(shù)據(jù)塊時使用,其他存儲區(qū)為0。byteOffset的含義是:用來指定讀取數(shù)據(jù)地址的偏移量。如圖6所示:
▲圖6▲
①第一個通道工程單位設置為0.0-100.0,第二個通道工程單位設置為0.0-1.0。第三個通道工程單位設置為-100.0-200.0。如圖7所示:
▲圖7▲
②在強制表中寫入三個模擬量通道數(shù)據(jù)。如圖8所示:
▲圖8▲
③模擬量的數(shù)據(jù)已經(jīng)轉換成實際的工程單位值。如圖9所示:
▲圖9▲
承擔因您的行為而導致的法律責任,
本站有權保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。