• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

      1 引 言

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

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

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

      2.1 硬件構(gòu)成

      針對適配器多路國產(chǎn)光柵尺數(shù)據(jù)采集進(jìn)行針對性的開發(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串口接口,那就需要外部連接一個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級別;功能:利用光柵的光學(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:錯誤及報警;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)用

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

      }

      }

      catch (Exception e)

      {

      Console.WriteLine(e);

      }

      });

      Thread.Sleep(10);

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

      通過串口讀取數(shù)據(jù),再進(jìn)行數(shù)據(jù)處理(讀取每個光柵尺數(shù)據(jù)并轉(zhuǎn)換數(shù)據(jù)單位到μm)。校直軟件要求數(shù)據(jù)采集過程中不能有錯誤,故采用了報錯機(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ù)指令程序

      通過串口進(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è)計與應(yīng)用
      基于PRBS檢測的8B/IOB編碼器設(shè)計
      JESD204B接口協(xié)議中的8B10B編碼器設(shè)計
      電子器件(2015年5期)2015-12-29 08:42:24
      基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      美國麥格普公司新型M—LOK相機(jī)三腳架適配器
      輕兵器(2015年20期)2015-09-10 07:22:44
      多總線式光電編碼器的設(shè)計與應(yīng)用
      临湘市| 星子县| 台中市| 潼关县| 吴桥县| 阜新市| 绥宁县| 柘荣县| 毕节市| 翁源县| 上蔡县| 什邡市| 灵山县| 花垣县| 桑植县| 连江县| 疏勒县| 锡林浩特市| 金寨县| 凤台县| 灌南县| 西丰县| 福泉市| 茶陵县| 遂川县| 横峰县| 揭东县| 长寿区| 建德市| 凤山市| 盐边县| 北安市| 柞水县| 咸宁市| 广灵县| 阿克苏市| 韶山市| 会东县| 安新县| 桂阳县| 温泉县|