亚洲精华国产精华精华液网站,你懂的,娇生惯养4ph归寻(矜以),丰年经继拇中文3与其他教材比较

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > ?快速入門|篇二十一:正運動技術運動控制器自定義通訊

?快速入門|篇二十一:正運動技術運動控制器自定義通訊

時間:2020-12-31 09:58:20來源:正運動技術

導語:?

  視頻教材:《正運動技術運動控制器自定義通訊》    

  上一節講了運動控制器MODBUS通訊,今天我們來學習一下,運動控制器的自定義通訊。

  控制器的串口和網口默認使用MODBUS協議通訊,若對端設備不支持MODBUS協議,可開啟自定義通訊模式(無協議)通訊。

  串口和網口均可開啟自定義通訊。

  串口和網口自定義通訊的開啟方法不同,均使用指令開啟自定義通訊,讀寫通道數據所用的讀寫指令是相同的。

  串口使用SETCOM指令開啟自定義通訊,網口使用OPEN #開啟自定義通訊,選擇正確的PORT通道開啟通訊。

  串口和網口自定義通訊讀寫指令:讀取指令:GET #;發送指令:PRINT #和PUTCHAR #。

  本文測試舉例的產品是正運動技術的一款快速開發16軸的運動控制系統的ZMC316獨立型脈沖運動控制器。

  在正式學習之前,我們先來介紹ZMC316控制器。其支持多達24軸直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸設置等;采用優化的網絡通訊協議可以實現實時的運動控制。

  ZMC316通過ZDevelop開發環境來調試,ZDevelop是一個很方便的編程、編譯和調試環境。應用程序還可以使用VC,VB, VS, C++Builder, C#,等軟件來開發。調試時可以ZDevelop軟件同時連接到控制器,程序運行時需要動態庫zmotion. dll。

  

  運動控制

  

  ZMC316具有16個軸,可支持多達24個虛擬軸。ZMC316可以通過擴展模塊來擴展軸。

  ZMC316板上自帶24+15個通用輸入口,8+15個通用輸出口(前15軸另帶1個輸入口,2個輸出口),2個0-10V AD, 2個0-l0V DA。

  ZMC316帶1個RS232串口,1個RS485,1個RS422,1個以太網接口。

  ZMC316帶一個CAN總線接口,支持通過ZCAN協議來連接擴展模塊。

  ZMC316帶一個U盤接口。

  每軸輸出脈沖頻率可達8MHz。

  

  運動控制

  

  ZMC316接線圖

  以下是本文的主要內容。

                               串口自定義通訊(無協議)    

  1.開啟方法

  開啟自定義串口通訊需要選擇port編號,默認RS232為port0,RS485為port1,使用指令將port配置為自定義串口通訊模式。

  SETCOM指令除了可以配置串口的通訊基本參數外,還可以選擇參數配置通訊協議,開啟自串口定義通訊模式將mode=0無協議模式,填寫串口基本參數和開啟的port編號。

  語法:SETCOM (baudrate,databits,stopbits,parity,port[,mode] [,variable] [,timeout])

  

  運動控制

  

  開啟示例:

  RS232(PORT0):SETCOM (38400,8,1,0,0,0,2,1000)

  RS485(PORT1):SETCOM (38400,8,1,0,1,0,2,1000)

  2.讀寫方法

  網口或串口自定義通訊采用的指令相同。

  自定義通道中讀取字符:GET #

  自定義通道中發送字符:PRINT #、PUTCHAR #

  兩個指令一次只能發送一個數據,若要發送多個數據,可采用數組。PRINT #與PUTCHAR #的區別是前者發送的數據為字符串,一次只能發送一個數據,發送的數組為ASCII碼;后者均為ASCII碼。

               (1)GET #    

  語法1:GET #PORT, VARIABLE

  語法2:GET #PORT, ARRAY[(startindex)] [,maxchares]

  語法3:charesget = GET #PORT, VARIABLE

  語法4:charesget = GET #PORT, ARRAY[(startindex)] [,maxchares]

      port:通道號

      variable:存放的變量名

      startindex:存放數組的起始地址

      maxchares:存放的最多數量

  語法1、2沒有讀取到會阻塞,這個函數一般在多任務里面進行調用。

  語法3、4會返回讀取到的字節數。

  串口和網口的TCP通訊四種語法均可使用,網口的UDP通訊時使用語法4, 采用數組來接收,數組長度不要比一次的UDP包長度小。

  例一:讀取字符

  GET # 11,tempchar '從自定義網口通道11獲取單個字符到tempchar

  讀取結果:

  

  運動控制

  

  例二:讀取到數組

  GET #11,array(0),5 '一次獲取最多5字符到數組,后收到的數據覆蓋之前的數據

  讀取結果:

  

  運動控制

  

  例三:讀取到數組(UDP模式下只能使用此語法)

  CHARES=GET #11, Data, 10 '從通道11獲取數據到數組,讀取數據長度設為10

  讀取結果:

  

  運動控制

  

               (2)PRINT #    

  PRINT # PORT, "字符串"

  port:通道號

  例一:發送字符串

  PRINT # 11, tempchar '一次發送一個字符串

  

  運動控制

  

  例二:發送數組為ASCII碼

  PRINT # 11, Data '一次發送一個字符串

  

  運動控制

  

               (3)PUTCHAR #    

  語法1:PUTCHAR # PORT, 字符

  語法2:PUTCHAR # PORT, ARRAY(index, numes)

  port:通道號

  index:開始輸出的位置

  numes:輸出的字節個數, 二進制方式

  例一:發送字符為ASCII碼,不能直接發送字符串

  PUTCHAR # 11, tempchar '一次可發送多個字符,逗號隔開

  

  運動控制

  

  例二:發送數組為ASCII碼

  PUTCHAR # 11, Data '一次發送一個字符串

  

  運動控制

  

  3.通訊例程

  控制器通過485總線開啟自定義通訊讀取三菱絕對值編碼器數據。

  '//*****返回數據幀中有用的字符串長度為8****

  global Dim CmdBuff(10) '發送命令數組

  global Dim GetBuff(30) '接收的字符串

  for i=0 to 29

      GetBuff(i)=0

  next

  global Dim TempChar '接收的一個字節

  TempChar=0

  global Dim GetNum '接收字節個數

  GetNum=0

  global sanReturn '任務完成后的返回值,方便PC讀取

  sanReturn=0

  SetCom(19200,8,1,2,1,0) '建立485連接

  '必須創建新任務,因為Get指令如果得不到數據,會堵塞所在任務。

  RunTask 5,get_Char

  delay (100)

  '命令數組的值根據從站三菱的自定義通訊的協議要求寫的

  '\x01\x31\x30\x32\x02\x39\x31\x03\x30\x32

  '目前的從站地址為1,修改從站地址后要修改校驗碼

  CmdBuff(0,$01,$31,$30,$32,$02,$39,$31,$03,$30,$32)

  PutChar #1,CmdBuff '往485串口發送數據

  TICKS=1000

  while(1)

      if GetNum=14 AND (GetBuff(2)=97 OR GetBuff(2)=65) then

          ? "485 success"

          '把返回數據幀的有用內容放入VR寄存器中,方便PC讀取

          for i = 0 to 7

              VR(100+i) = GetBuff(i+3)

          next

          sanReturn=1

      exit while

      elseif TICKS<0 then

          ? "ERROR"

          STOPTASK 5

          exit while

      endif

  wend

  end

  global Sub Get_Char()

  print"開始進入接收函數"

  While 1

      Get #1,TempChar     '接收串口返回字符

      print"接收到的字符數",GetNum TempChar

      GetBuff(GetNum)=TempChar

      GetNum=GetNum+1

      '判斷返回的數據楨長度是否正確

      if(GetNum=14)Then

      exit while     '長度超出退出while循環

      endif

  Wend

  End Sub

                               網口自定義通訊    

  1.開啟方法

  開啟自定義通訊時要填入端口編號,首先要查看控制器自定義通訊的通道號,可在在線命令發送?*port打印查看,如下圖,ECUSTOM為自定義網口通道。

  

  運動控制

  

  使用網口連接上控制器之后打印的各通道狀態如下,未使用的通道狀態為0,已使用的通道狀態為1對于串口,串口通道狀態不管有沒有使用始終為1。

  第三個通道為ETH網口通道,被ZDevelop軟件占用。

  

  運動控制

  

  開啟網口自定義通訊,選擇port11,此時狀態如下:

  

  運動控制

  

  網口自定義通訊使用OPEN #指令開啟,通過此指令選擇主從端。

  OPEN #PORT, "mode", portnum [, ipaddress]

      port:通訊通道,參見PORT描述,選擇自定義網絡通道。

      mode:訊主從,“TCP_CLIENT”-從,“TCP_SERVER”–主,“UDP_CLIENT”-UDP從,“UDP_SERVER”–UDP主。

      portnum:TCP或UDP端口號, 主端為本地端口號, 從端為對方端口號。

      ipaddress:對方IP地址,字符串,從端的時候要提供。

      UDP_SERVER必須先接收對方的數據,才能發送回數據(除非用PORT_TARGET先強制指定對方)。

      UDP_CLIENT本地端口號隨機,必須先發送給對方,對方才能知道端口號,此模式時不是指定對方的包會丟棄掉。

      UDP自定義通訊需要4系列控制器20170628以上固件版本;XPLC系列控制器 20170702以上固件版本。

      TCP在收發數據前,必須和對方建立可靠的連接,然后再傳輸數據,大大提高了數據通信的可靠性。

      UDP在收發數據前,不建立連接,當它想傳送時就去抓取來自應用程序的數據,并盡可能快地把它扔到網絡上,可能會丟包。UDP程序結構較簡單,信息包比較小只有8個字節,TCP的信息包有20個字節。

  2.讀寫方法

  讀寫指令與串口相同。UDP讀取時只能使用GET #語法4。

  3.TCP通訊例程

  使用自定義網口通道port11,程序如下。

  OPEN #11, "TCP_SERVER",945 '使用自定義網口通道2,控制器作為主端,端口號945

  GLOBAL tempchar

  GLOBAL CONST datamax=20 '定義數組空間的大小

  GLOBAL Data(datamax) '定義數組

  GLOBAL datanum '定義數組編號

  datanum=0

  ClearData() '清空數組

  WHILE 1

      tempchar = 0 '清除之前的字符

      GET #11,tempchar '獲取單個字符到tempchar

      PRINT datanum,tempchar '打印出字符的ASCII碼

      Data(datanum) = tempchar '保存到數組

      datanum = datanum + 1

      IF datanum = datamax THEN '超過數組空間,清空數組

          datanum = 0

          ClearData()

      ENDIF

      IF tempchar = 59 THEN '號終止位;

              PRINT #11,"ok" '發送字符串

          ENDIF

     WEND

  END

  GLOBAL SUB ClearData()

      FOR i = 0 TO datamax-1 '清除數組空間內容

          Data(i) = 0

      NEXT

  END SUB

  運行效果:

  

  運動控制

  運動控制

  

  4.UDP通訊例程

  使用自定義網口通道port11,程序如下。

  OPEN #11, "UDP_SERVER",945 '使用自定義網口通道2,控制器作為主端,端口號945

  GLOBAL CHARES

  GLOBAL CONST datamax=10 '定義數組空間的大小

  GLOBAL Data(datamax) '定義數組

  ClearData() '清空數組

  WHILE 1

      CHARES=GET #11, Data, 10 '從通道11獲取數據到數組,數據長度設為10

      IF CHARES > 0 THEN

          Data(CHARES) = 0 '設置結束0

          PRINT Data '打印字符串

      ENDIF

  WEND

  END

  GLOBAL SUB ClearData()

      FOR i = 0 TO datamax-1 '清除數組空間內容

          Data(i) = 0

      NEXT

  END SUB

  運行效果:

  

  運動控制

  運動控制

  

  正運動技術運動控制器的自定義通訊就講到這里,更多學習視頻及圖文詳解請關注我們的公眾號“正運動小助手”。

  本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

標簽:

點贊

分享到:

上一篇:干貨集錦 | 旋轉軸定位精度五...

下一篇:2020收官之作:C5X-10新增支...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.siyutn.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 钦州市| 布拖县| 治多县| 轮台县| 永德县| 连山| 玉屏| 张北县| 漾濞| 绍兴县| 通道| 收藏| 华安县| 大英县| 涿鹿县| 鹿邑县| 洛扎县| 剑川县| 八宿县| 沙坪坝区| 裕民县| 伊通| 景谷| 无锡市| 漠河县| 西吉县| 遂宁市| 邯郸县| 洪雅县| 五家渠市| 张家港市| 聂荣县| 海门市| 紫金县| 大洼县| 石狮市| 饶阳县| 阿勒泰市| 甘谷县| 繁峙县| 罗甸县|