国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

國產(chǎn)光柵尺在校直機設(shè)備上的應(yīng)用

2022-08-08 12:37胡選仲陳景光
工程與試驗 2022年2期
關(guān)鍵詞:適配器上位編碼器

胡選仲,張 鵬,陳景光,陳 城

(中機試驗裝備股份有限公司,吉林 長春 130103)

1 引 言

隨著科技的不斷發(fā)展,對校直機(車橋校平類)的需求日益增加。由于此類設(shè)備之前應(yīng)用進口光柵尺,成本較高,不利于校直機(車橋校平類)設(shè)備的應(yīng)用。經(jīng)過多年的研發(fā),國產(chǎn)光柵尺現(xiàn)已可以滿足校直產(chǎn)品的應(yīng)用需求。

本文根據(jù)實際情況和對光柵尺應(yīng)用情況的綜合評估,選擇國產(chǎn)光柵尺和對應(yīng)的采集盒,并將其應(yīng)用于校直設(shè)備。國產(chǎn)光柵尺系統(tǒng)在校直機產(chǎn)品上的成功應(yīng)用,標志著國產(chǎn)光柵尺可以代替進口光柵尺產(chǎn)品,這會極大地降低此類產(chǎn)品的成本、縮短此類原材料的采購周期,具有重要的應(yīng)用價值。

2 硬件開發(fā)環(huán)境

2.1 硬件構(gòu)成

針對適配器多路國產(chǎn)光柵尺數(shù)據(jù)采集進行針對性的開發(fā),利用串口(RS485)進行適配器與上位機通信,獲得采集盒采集到的原始光柵尺數(shù)據(jù),再將采集到的數(shù)據(jù)進行解析與處理,最終得到多路光柵尺中每路光柵尺的具體數(shù)據(jù)。把這些數(shù)據(jù)作為校直產(chǎn)品的基本數(shù)據(jù),再根據(jù)校直的具體需求進行運算處理,最終達到完成校直產(chǎn)品的目的,硬件構(gòu)成如圖1所示。

圖1 硬件構(gòu)成

2.2 硬件配置與功能簡介

2.2.1 上位機

配置要求:上位機需具備串口通信接口,如果上位機只有RS232串口接口,那就需要外部連接一個RS232轉(zhuǎn)RS485的硬件(如圖2所示)。

圖2 RS232轉(zhuǎn)RS485的硬件

2.2.2 適配器

功能:首要任務(wù)是適配器進行光柵尺數(shù)據(jù)采集工作,這也是適配器的基本工作,適配器與光柵尺交互數(shù)據(jù)信息如圖3所示。適配器完成數(shù)據(jù)采集后,將數(shù)據(jù)提供給上位機。上位機利用串口通信的方式,從適配器讀到當前所有光柵尺的數(shù)據(jù),間接獲得光柵尺數(shù)據(jù)。適配器在光柵尺數(shù)據(jù)的采集過程中,起到了承上啟下的作用。

圖3 適配器與光柵尺交互數(shù)據(jù)信息

2.2.3 光柵尺

精度:分辨率0.01μm級別;功能:利用光柵的光學(xué)原理工作,能夠精密反饋位移,其數(shù)據(jù)是校直軟件中測量數(shù)據(jù)的基礎(chǔ)值,所以要求較高,必須準確無誤地反饋位移值,才能為保證校直精度和節(jié)拍提供基本保障。

3 軟件開發(fā)環(huán)境

系統(tǒng):Windows7;軟件:Visual Studio 2017、DevExpressComponentsBundle-18.1.6;語言:C#語言;描述:利用DevExpressComponentsBundle-18.1.6控件中的串口控件,通過C#語言進行光柵尺數(shù)據(jù)采集模塊的編程與開發(fā)[1]。

4 適配器接口介紹與應(yīng)用

4.1 接口介紹

通信模式:串口通信。

串口參數(shù):

波特率:115200bps;停止位:1位;數(shù)據(jù)位:8位;校驗位:無奇偶校驗位。

協(xié)議類型:USART協(xié)議。

傳輸方式:RS485。

數(shù)據(jù)結(jié)構(gòu)介紹與描述:數(shù)據(jù)ID和數(shù)據(jù)域的關(guān)系如圖4所示。

圖4 數(shù)據(jù)ID和數(shù)據(jù)域

數(shù)據(jù)描述:

幀頭:0X1A;STA:狀態(tài)域;EA:錯誤及報警;D00~D03:編碼器0數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯誤);D10~D13:編碼器1數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯誤);D20~D23:編碼器2數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯誤);D30~D33:編碼器3數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯誤)。

4.2 接口應(yīng)用

首先是硬件的搭建,把多路光柵尺與適配器相連接,再把適配器和上位機連接,這樣就可以利用串口通信協(xié)議[2,3],使上位機和適配器之間建立通信及信息交互。具體交互信息是利用上位機向適配器發(fā)送事先定義的請求數(shù)據(jù),適配器給上位機返回采集到的原始數(shù)據(jù),上位機對數(shù)據(jù)進行分析,最終解析出每個光柵尺的數(shù)據(jù),完成上位機與適配器接口之間信息交互。

5 國產(chǎn)光柵尺在校直機上的應(yīng)用實例

5.1 初始化程序

主要設(shè)置串口通信參數(shù),然后再打開串口,程序如下:

var port = new SerialPort {PortName = "COM" + (GlobalParametersManager.SysS etting.SensorComPort + 1), };

port.BaudRate = 115200;

port.DataBits = 8;

port.StopBits = StopBits.One;

port.Parity = 0; GlobalParametersManager.serialPortManager.OpenSerialPort(port, s =>

{

try

{

s = s.Trim();

if (s.Length != 11)

{

LoggingHelper.Error(string.Format(LNG._("光柵尺錯誤"), s), true);

}

}

catch (Exception e)

{

Console.WriteLine(e);

}

});

Thread.Sleep(10);

5.2 讀取光柵尺數(shù)據(jù)程序

通過串口讀取數(shù)據(jù),再進行數(shù)據(jù)處理(讀取每個光柵尺數(shù)據(jù)并轉(zhuǎn)換數(shù)據(jù)單位到μm)。校直軟件要求數(shù)據(jù)采集過程中不能有錯誤,故采用了報錯機制,不論哪一路數(shù)據(jù)異常,都會通過軟件界面報錯提示客戶,并附帶處理建議和方法,具體程序如下:

private void ComReceive(object sender, SerialDataReceivedEventArgs e)

{

int data1 = 0, data2 = 0;

ReceiveCompleted = false;

if (_recStaus) //如果已經(jīng)開啟接收

{

try

{

Thread.Sleep(50);

ReceivedDataPacket = new byte[CurrentSerialPort.BytesToRead];

ReceivedDataPacketChar = new char[CurrentSerialPort.BytesToRead];

// change to char datas

if (ByteMode)

{

CurrentSerialPort.Read(ReceivedDataPacket, 0, ReceivedDataPacket.Length);

if (ReceivedDataPacket.Length == 12)

{

string strTemp = "";

if (ReceivedDataPacket[0] == 26)

{

string[] abc = new string[4];

int[] abcd = new int[4];

if ((ReceivedDataPacket[5]) == 255) //判斷1號光柵尺錯誤

{

strTemp = "1號光柵尺錯誤,";

LoggingHelper.Error(LNG._(strTemp + "請檢查1號光柵尺是否連接正常"), true);

return;

}

else if (ReceivedDataPacket[5] == 0) //1號光柵尺返回正常數(shù)據(jù)

{

for (int k = 0; k < 4; k++)

{

abc[k] = ReceivedDataPacket[1 + k].ToString();

abcd[k] = Convert.ToInt32(abc[k]);

}

data1 = abcd[3] + abcd[2] * 256 + abcd[1] * 256 * 256 + abcd[0] * 256 * 256 * 256;

//光柵尺每變化一個分辨率大小,串口數(shù)據(jù)增加1(29Bit 分辨率:10μm)

data1 = data1 / 100;

GlobalParametersManager.IntParas[0] = data1;

ErrCount = 0;

}

else//判斷1號光柵尺錯誤

{

strTemp = "1號光柵尺錯誤,";

LoggingHelper.Error(LNG._(strTemp + "關(guān)閉軟件后對光柵尺重新上電"), true);

return;

}

if ((ReceivedDataPacket[10]) == 255) //判斷2號光柵尺錯誤

{

strTemp = "2號光柵尺錯誤,";

LoggingHelper.Error(LNG._(strTemp + "請檢查2號光柵尺是否連接正常"), true);

return;

}

else if (ReceivedDataPacket[10] == 0) //2號光柵尺返回正常數(shù)據(jù)

{

for (int j = 0; j < 4; j++)

{

abc[j] = ReceivedDataPacket[6 + j].ToString();

abcd[j] = Convert.ToInt32(abc[j]);

}

data2 = abcd[3] + abcd[2] * 256 + abcd[1] * 256 * 256 + abcd[0] * 256 * 256 * 256;

data2 = data2 / 100;

GlobalParametersManager.IntParas[1] = data2;

ErrCount = 0;

}

else//判斷2號光柵尺錯誤

{

strTemp = "2號光柵尺錯誤,";

LoggingHelper.Error(LNG._(strTemp + "關(guān)閉軟件后對光柵尺重新上電"), true);

return;

}

}

else//判斷光柵尺錯誤

{

LoggingHelper.Error(LNG._(strTemp + "關(guān)閉軟件后對光柵尺重新上電"), true);

return;

}

}

else if (ReceivedDataPacket.Length > 1) //判斷光柵尺錯誤

{

LoggingHelper.Error(LNG._("光柵尺異常,關(guān)閉軟件后對光柵尺重新上電"), true);

}

}

else

{

CurrentSerialPort.Read(ReceivedDataPacketChar, 0, CurrentSerialPort.BytesToRead);

string strTemp = "";

foreach (var b in ReceivedDataPacketChar)

{

strTemp += string.Format("{0}", b);

}

LoggingHelper.Message(LNG._("接收到串口數(shù)據(jù):") + strTemp);

_action?.Invoke(strTemp);

}

ReceiveCompleted = true;

}

catch (Exception)

{

if (CurrentSerialPort.IsOpen == false) //如果ComPort.IsOpen == false,說明串口已丟失

{

SetComLose(); //串口丟失后相關(guān)設(shè)置

}

else

{

LoggingHelper.Error(LNG._("不能接收數(shù)據(jù)"));

}

}

}

else //暫停接收

{

CurrentSerialPort.DiscardInBuffer(); //請接收緩存

}

}

5.3 發(fā)送讀取光柵尺數(shù)據(jù)指令程序

通過串口進行數(shù)據(jù)發(fā)送,如果上位機想要得到光柵尺數(shù)據(jù),就需要上位機向光柵尺采集盒發(fā)送固定的數(shù)據(jù)(光柵尺采集盒已經(jīng)定義的協(xié)議),具體代碼程序如下:

var rc = false;

Byte[] WriteBuffer00 = new byte[1];

WriteBuffer00[0] = 0X1A;

rc = GlobalParametersManager.serialPortManager.SendDataPacket(WriteBuffer00); //向適配器發(fā)送數(shù)據(jù)

if (!rc) //返回值異常

{

LoggingHelper.Error(LNG._("采集光柵尺指令發(fā)送異常"), true);

return;

}

6 結(jié)束語

本文詳細介紹了光柵尺數(shù)據(jù)采集過程,并成功地將國產(chǎn)光柵尺應(yīng)用于校直設(shè)備。通過此次產(chǎn)品開發(fā),可以極大地降低生產(chǎn)成本、縮短采購周期,從而有效提高此類校直機的市場競爭力。通過已經(jīng)在部分項目上的成功應(yīng)用,證明國產(chǎn)光柵尺完全可以廣泛地應(yīng)用在此類校直機產(chǎn)品上。

猜你喜歡
適配器上位編碼器
融合CNN和Transformer編碼器的變聲語音鑒別與還原
轉(zhuǎn)爐系統(tǒng)常用編碼器選型及調(diào)試
舞臺機械技術(shù)與設(shè)備系列談(二)
——編碼器
特斯拉 風(fēng)云之老阿姨上位
基于3D打印的輕型導(dǎo)彈適配器
潛空導(dǎo)彈垂直發(fā)射出筒適配器受載變形仿真研究
電源適配器怎么選
基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
基于數(shù)字信號處理的脈沖編碼器
美國麥格普公司新型M—LOK相機三腳架適配器