cvlsam
富士低壓,POD(觸摸屏),PLC專賣
級(jí)別: VIP會(huì)員
|
我使用富士的SPH系列編輯的程式,因爲(wèi)富士的SPH符合IEC61131-3編程規(guī)範(fàn),因此依據(jù)如此改爲(wèi)其它品牌的PLC也十分之方便。 在精確定位控制系統(tǒng)中,為了提高控制精度,準(zhǔn)確測(cè)量控制對(duì)象的位置是十分重要的。目前,測(cè)量位置的方法主要有2種,其一是使用位置傳感器,此方法精度高,但是在多路,長(zhǎng)距離位置監(jiān)控系統(tǒng)中,由于成本昂貴且安裝困難,因此并不實(shí)用。其二是采用光電軸角編碼器進(jìn)行精確位置控制,光電軸角編碼器根據(jù)其刻度方法及信號(hào)輸出形式,可分為增量式、絕對(duì)式以及混合式三種。而絕對(duì)式編碼器是直接輸出數(shù)字量的傳感器,它是利用自然二進(jìn)制或循環(huán)二進(jìn)制(格雷碼)方式進(jìn)行光電轉(zhuǎn)換的,編碼的設(shè)計(jì)一般是采用自然二進(jìn)制碼、循環(huán)二進(jìn)制碼、二 進(jìn)制補(bǔ)碼等。特點(diǎn)是不要計(jì)數(shù)器,在轉(zhuǎn)軸的任意位置都可讀出一個(gè)固定的與位置相對(duì)應(yīng)的數(shù)字碼;抗干擾能力強(qiáng),沒用累積誤差;電源切斷后位置信息不會(huì)丟失,但分辨率是由二進(jìn)制的位數(shù)決定的,根據(jù)不同的精度要求,可以選擇不同的分辨率即位數(shù)。目前有10 位、11 位、12 位、13 位、14 位或更高位等多種。其中采用循環(huán)二進(jìn)制編碼(即格雷碼)的絕對(duì)式編碼器,其輸出信號(hào)是一種數(shù)字排序,不是權(quán)重碼,每一位沒有確定的大小,不能直接進(jìn)行比較大小和算術(shù)運(yùn)算,也不能直接轉(zhuǎn)換成其他信號(hào),要經(jīng)過一次碼變換,變成自然二進(jìn)制碼,在由上位機(jī)讀取以實(shí)現(xiàn)相應(yīng)的控制。而在碼制變換中有不同的處理方式,本文著重介紹富士SX系列中使用編程的方法對(duì)二進(jìn)制格雷碼與自然二進(jìn)制碼的互換。 一、格雷碼(又叫循環(huán)二進(jìn)制碼或反射二進(jìn)制碼)介紹 在數(shù)字系統(tǒng)中只能識(shí)別0 和1,各種數(shù)據(jù)要轉(zhuǎn)換為二進(jìn)制代碼才能進(jìn)行處理,格雷碼是一種無權(quán)碼,采用絕對(duì)編碼方式,典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補(bǔ)碼,它的循環(huán)、單步特性消除了隨機(jī)取數(shù)時(shí)出現(xiàn)重大誤差的可能,它的反射、自補(bǔ)特性使得求反非常方便。格雷碼屬于可靠性編碼,是一種錯(cuò)誤最小化的編碼方式,因?yàn)椋匀欢M(jìn)制碼可以直接由數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號(hào),但某些情況,例如從十進(jìn)制的3 轉(zhuǎn)換成4 時(shí)二進(jìn)制碼的每一位都要變,使數(shù)字電路產(chǎn)生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點(diǎn),它是一種數(shù)字排序系統(tǒng),其中的所有相鄰整數(shù)在它們的數(shù)字表示中只有一個(gè)數(shù)字不同。它在任意兩個(gè)相鄰的數(shù)之間轉(zhuǎn)換時(shí),只有一個(gè)數(shù)位發(fā)生變化。它大大地減少了由一個(gè)狀態(tài)到下一個(gè)狀態(tài)時(shí)邏輯的混淆。另外由于最大數(shù)與最小數(shù)之間也僅一個(gè)數(shù)不同,故通常又叫格雷反射碼或循環(huán)碼。下表為幾種自然二進(jìn)制碼與格雷碼的對(duì)照表: 十進(jìn)制數(shù) 自然二進(jìn)制 格雷碼 十進(jìn)制 自然二進(jìn)制 格雷碼 0 0000 0000 8 1000 1100 1 0001 0001 9 1001 1101 2 0010 0011 10 1010 1111 3 0011 0010 11 1011 1110 4 0100 0110 12 1100 1010 5 0101 0111 13 1101 1011 6 0110 0101 14 1110 1001 7 0111 0100 15 1111 1000 二、二進(jìn)制格雷碼與自然二進(jìn)制碼的互換 1、自然二進(jìn)制碼轉(zhuǎn)換成二進(jìn)制格雷碼 自然二進(jìn)制碼轉(zhuǎn)換成二進(jìn)制格雷碼,其法則是保留自然二進(jìn)制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進(jìn)制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。 例如: 自然二進(jìn)制編碼如下: 1 0 0 1 那么轉(zhuǎn)換為格雷碼的方法是:保留最高位1,然后將第二位0與第一位1做異或操作,第三位的0與第二位的0做異或操作,第四位的1與第三位的0做異或操作,得到結(jié)果如下: 1 1 0 1 Gray 2、二進(jìn)制格雷碼轉(zhuǎn)換成自然二進(jìn)制碼 二進(jìn)制格雷碼轉(zhuǎn)換成自然二進(jìn)制碼,其法則是保留格雷碼的最高位作為自然二進(jìn)制碼的最高位,而次高位自然二進(jìn)制碼為高位自然二進(jìn)制碼與次高位格雷碼相異或,而自然二進(jìn)制碼的其余各位與次高位自然二進(jìn)制碼的求法相類似。 例如將格雷碼1000轉(zhuǎn)換為自然二進(jìn)制碼: 1 0 0 0 1 1 1 1 上排為格雷碼,下排為自然二進(jìn)制,從左到右分別為1~4位 將上排的第一位高位作為自然二進(jìn)制的最高位,因此在下排的第一位填入1,然后以上排第二位與下排第一位做異或操作,得到下排第二位結(jié)果為1,將上排第三位與下排第二位做異或操作,得到下排第三位的結(jié)果為1,同理,下排第四位的結(jié)果為1,因此,我們得到了轉(zhuǎn)換結(jié)果 如下: 1 1 1 1 Bin 三、自然二進(jìn)制碼與格雷碼互換在富士SX系列PLC中的實(shí)現(xiàn)方法: 1. 自然二進(jìn)制碼轉(zhuǎn)換為格雷碼: 根據(jù)自然二進(jìn)制碼轉(zhuǎn)換為格雷碼的轉(zhuǎn)換規(guī)則,實(shí)際上就是將轉(zhuǎn)換數(shù)右移一位后與轉(zhuǎn)換數(shù)做異或操作。程序流程圖如下: 保存輸入數(shù) TEMP 將TEMP右移一位,保存SHILETEMP 將移位后的數(shù)據(jù)與原數(shù)據(jù)作異或 返回異或后的數(shù)據(jù) 功能塊中的程序如下: INPUT 輸入變量類型為DWORD TEMP 局部變量類型為DWORD SHILETEMP 局部變量類型為DWORD BIN_TO_GRAY 功能塊返回變量返回類型為DWORD BIN_TO_GRAY: TEMP:=INPUT; SHILETEMP:=SHR_DWORD(TEMP,UNIT#1); BIN_TO_GRAY:=SHILETEMP XOR INPUT; 2. 格雷碼轉(zhuǎn)換為自然二進(jìn)制碼 根據(jù)格雷碼轉(zhuǎn)換為自然二進(jìn)制碼的轉(zhuǎn)換規(guī)則,實(shí)際上就是不斷的將格雷碼與二進(jìn)制數(shù)做異或操作,也就是說,不斷的和本身的不同位數(shù)做異或操作,如原數(shù)據(jù)為32位的A,那么先將A向右移動(dòng)一位,與本身進(jìn)行異或,然后保留值為B,那么繼續(xù)將A向右移動(dòng)一位,與B進(jìn)行異或,保留為C,依次類推,直到A=1為止。程序流程圖如下: 保存輸入數(shù) TEMP,INPUT1 如果輸入數(shù)為0,那么直接返回?cái)?shù)據(jù)0后退出 如果TEMP不等于1,那么循環(huán),否則返回?cái)?shù)據(jù) TEMP右移1位,與輸入值作不斷異或 功能塊中的程序如下: INPUT 輸入變量類型為DWORD TEMP 局部變量類型為DWORD INPUT1 局部變量類型為DWORD GRAY_TO_BIN 功能塊返回變量返回類型為DWORD GRAY_TO_BIN: TEMP:=INPUT; INPUT1:=INPUT; IF TEMP=DWORD#0 THEN INPUT1:=DWORD#0; GRAY_TO_BIN:=INPUT1; RETURN; END_IF; WHILE TEMP<>DWORD#1 DO TEMP:=SHR_DWORD(TEMP,UINT#1); INPUT1:=TEMP XOR INPUT1; END_WHILE; GRAY_TO_BIN:=INPUT1; 上述代碼在富士的SX系列PLC中試驗(yàn)沒有問題,由于富士的SX系列PLC完全支持ST代碼方式的編程,因此基本上可以不做修改的應(yīng)用在西門子的S7系列的PLC中。 由于三菱的PLC中已經(jīng)包含了自然二進(jìn)制碼轉(zhuǎn)換為格雷碼指令GRY以及格雷碼轉(zhuǎn)換為自然二進(jìn)制碼指令GBIN,因此上述代碼應(yīng)用于三菱系列的PLC已經(jīng)沒有意義,請(qǐng)使用三菱PLC本身附帶的指令,因?yàn)槲鏖T子以及富士的SX系列PLC并沒有附帶轉(zhuǎn)換指令,因此本人書寫了上述代碼用于補(bǔ)充SX系列的指令不足。 |
---|---|
|
sjm213
有小知識(shí),無大學(xué)問。
級(jí)別: 論壇版主
|
很少見到,沒有注意過。 向樓上致敬,太詳細(xì)了。 |
---|---|
|
wanghuhong
級(jí)別: 網(wǎng)絡(luò)英雄
|
[font=宋體] [size=7頂了,沒看到過. |
---|---|
|
zhengyueyong
級(jí)別: *
|
|
---|---|
|
542868779
級(jí)別: 略有小成
|
|
---|---|
|