亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        1 引 言

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

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

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

        2.1 硬件構(gòu)成

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

        圖1 硬件構(gòu)成

        2.2 硬件配置與功能簡介

        2.2.1 上位機(jī)

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

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

        2.2.2 適配器

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

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

        2.2.3 光柵尺

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

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

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

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

        4.1 接口介紹

        通信模式:串口通信。

        串口參數(shù):

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

        協(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:錯(cuò)誤及報(bào)警;D00~D03:編碼器0數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯(cuò)誤);D10~D13:編碼器1數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯(cuò)誤);D20~D23:編碼器2數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯(cuò)誤);D30~D33:編碼器3數(shù)據(jù)(數(shù)據(jù)全0XFF表示編碼器未連接,數(shù)據(jù)全為0XEE表示CRC錯(cuò)誤)。

        4.2 接口應(yīng)用

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

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

        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._("光柵尺錯(cuò)誤"), s), true);

        }

        }

        catch (Exception e)

        {

        Console.WriteLine(e);

        }

        });

        Thread.Sleep(10);

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

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

        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號(hào)光柵尺錯(cuò)誤

        {

        strTemp = "1號(hào)光柵尺錯(cuò)誤,";

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

        return;

        }

        else if (ReceivedDataPacket[5] == 0) //1號(hào)光柵尺返回正常數(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;

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

        data1 = data1 / 100;

        GlobalParametersManager.IntParas[0] = data1;

        ErrCount = 0;

        }

        else//判斷1號(hào)光柵尺錯(cuò)誤

        {

        strTemp = "1號(hào)光柵尺錯(cuò)誤,";

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

        return;

        }

        if ((ReceivedDataPacket[10]) == 255) //判斷2號(hào)光柵尺錯(cuò)誤

        {

        strTemp = "2號(hào)光柵尺錯(cuò)誤,";

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

        return;

        }

        else if (ReceivedDataPacket[10] == 0) //2號(hào)光柵尺返回正常數(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號(hào)光柵尺錯(cuò)誤

        {

        strTemp = "2號(hào)光柵尺錯(cuò)誤,";

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

        return;

        }

        }

        else//判斷光柵尺錯(cuò)誤

        {

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

        return;

        }

        }

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

        {

        LoggingHelper.Error(LNG._("光柵尺異常,關(guān)閉軟件后對(duì)光柵尺重新上電"), 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ù)指令程序

        通過串口進(jìn)行數(shù)據(jù)發(fā)送,如果上位機(jī)想要得到光柵尺數(shù)據(jù),就需要上位機(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é)束語

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

        猜你喜歡
        光柵尺適配器編碼器
        光柵尺在高精度數(shù)控機(jī)床中的重要性
        基于FPGA的同步機(jī)軸角編碼器
        光柵尺在數(shù)控機(jī)床中的應(yīng)用
        適配器模式及其應(yīng)用
        電子測試(2017年11期)2017-12-15 08:57:45
        新型水文測驗(yàn)GPS適配器設(shè)計(jì)與應(yīng)用
        基于PRBS檢測的8B/IOB編碼器設(shè)計(jì)
        JESD204B接口協(xié)議中的8B10B編碼器設(shè)計(jì)
        電子器件(2015年5期)2015-12-29 08:42:24
        基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        美國麥格普公司新型M—LOK相機(jī)三腳架適配器
        輕兵器(2015年20期)2015-09-10 07:22:44
        多總線式光電編碼器的設(shè)計(jì)與應(yīng)用
        一本久久综合亚洲鲁鲁五月天| 完整在线视频免费黄片| 亚洲国产不卡免费视频| av天堂最新在线播放| 久久综合九色综合久99| 大地资源中文在线观看官网第二页| 911国产在线观看精品| 日本在线免费不卡一区二区三区 | 国产亚洲精品美女久久久m | 青草热久精品视频在线观看| 亚洲精品区二区三区蜜桃| 亚洲成精品动漫久久精久| 中文字幕手机在线精品| 亚洲精品无码永久中文字幕| 三年片免费观看大全国语| 亚洲av在线播放观看| 国产自拍三级黄片视频| 久久精品中文字幕无码绿巨人| 377p日本欧洲亚洲大胆张筱雨 | 白白色发布视频在线播放| 亚洲图片自拍偷图区| 亚洲男人的天堂在线播放| 亚洲无AV码一区二区三区| 青青青爽在线视频免费播放| 欧美日韩精品一区二区视频| 国产精品美女久久久久久久| 精品国产自拍在线视频| 在线播放草猛免费视频| 无码一区二区三区亚洲人妻| 日日摸日日碰人妻无码老牲 | 中文字幕色偷偷人妻久久一区| 亚洲精品成人无码中文毛片| 无遮挡网站| 久久亚洲一区二区三区四区五| 亚洲自偷精品视频自拍| 拍摄av现场失控高潮数次| 国产高清一区在线观看| 亚洲毛片在线免费视频| 好看的欧美熟妇www在线| 亚洲色偷拍一区二区三区 | 国产不卡精品一区二区三区|