TRIO-basic指令--CAM

来源:https://www.cnblogs.com/httpcc/archive/2019/05/20/10778259.html
-Advertisement-
Play Games

大家好,今天更新TRIO的運動指令CAM(也就是CAM函數),CAM指令是控制器直接發送編碼器脈衝形成的運動曲線,比如:正弦,餘弦曲線,根據自己的精度需求進行描點,但並不一定點數越多精度就越高,以實際為準。 下麵是指令及簡單的小例子: CAM Type: Axis Command Syntax: C ...


大家好,今天更新TRIO的運動指令CAM(也就是CAM函數),CAM指令是控制器直接發送編碼器脈衝形成的運動曲線,比如:正弦,餘弦曲線,根據自己的精度需求進行描點,但並不一定點數越多精度就越高,以實際為準。

下麵是指令及簡單的小例子:

 CAM


Type:

  Axis Command


Syntax:

  CAM(start point, end point, table multiplier, distance)     CAM(開始點,結束點,table(table是臨時寄存器)  倍率,距離)


Description:

  The CAM command is used to generate movement of an axis according to a table of positions which define a movement profile.  The table of values is specified with the TABLE command. The   movement may be defined with any number of points from 3 up to the maximum table size available.  The controller performs linier interpolation between the values in the table to allow small          numbers of points to define a smooth profile.   

  CAM命令用於根據定義運動輪廓的位置表生成軸的運動。使用TABLE命令指定值表。可以使用從3到最大可用表大小的任意數量的點來定義移動。控制器在表格中的值之間執行線性插值,以允許少量點定義平滑輪廓。

  The TABLE values are translated into positions by offsetting them by the first value and then multiplying them by the multiplier parameter. This means that a non-zero starting profile will be offset          so that the first point is zero and then all values are scaled with the multiplier. These are then used as absolute positions from the start position. 

  通過將它們偏移第一個值然後將它們乘以乘數參數,將TABLE值轉換為位置。這意味著非零起始輪廓將被偏移,以便第一個點為零,然後使用乘數縮放所有值。然後將它們用作起始位置的絕對位置。

    Two or more CAM commands executing simultaneously can use the same values in the table. 

     同時執行的兩個或多個CAM命令可以使用表中的相同值。

  The speed of the CAM profile is defined through the SPEED of the BASE axis and the distance parameter. You can use these two values to determine the time taken to execute the CAM profile.

   CAM輪廓的速度通過BASE軸的SPEED和距離參數定義。您可以使用這兩個值來確定執行CAM配置文件所需的時間。

    As with any motion command the SPEED may be changed at any time to any positive value. The SPEED is ramped up to using the current ACCEL value.  

    與任何運動命令一樣,SPEED可以隨時更改為任何正值。 SPEED逐漸增加到使用當前ACCEL值。

  To obtain a CAM shape where ACCEL has no effect the value should be set to at least 1000 times the SPEED value (assuming the default SERVO_PERIOD of 1ms). 

  要獲得ACCEL無效的CAM形狀,應將該值設置為SPEED值的至少1000倍(假設預設SERVO_PERIOD為1ms)。

  When the CAM command is executing, the ENDMOVE parameter is set to the end of the PREVIOUS move 

  執行CAM命令時,ENDMOVE參數設置為PREVIOUS移動的結束


 Parameters:

start point:

The start position of the cam profile in the TABLE

end point:

The end position of the cam profile in the TABLE

multiplier:

The table values are multiplied by this value to generate the positions.

distance:

The distance parameter relates the speed of the axis to the time taken to complete the cam profile. The time taken can be calculated using the current axis speed and this distance parameter (which are in user units). 


起始點:

表中凸輪輪廓的起始位置

結束點:

表格中凸輪輪廓的終點位置

乘值:

表值乘以該值以生成位置。

距離:

距離參數將軸的速度與完成凸輪輪廓所花費的時間相關聯。可以使用當前軸速度和該距離參數(以用戶單位)計算所花費的時間。


Examples:

  1、需求:用CAM做一個位置弧形的曲線。 網上找的圖片 ^_^

  position:

  

  CAM沒有跟隨軸的概念,所以我們可以直接運行一個虛軸或者實際的軸直接生成你要的位置曲線圖。

  打開TRIO編程界面,然後在工具欄 => CamGen => 然後創建一個名稱,如下圖:

  

  或者:

  

  下一步:

  

  點擊OK進入的界面:

  

  點擊:選擇

  

  選擇:yes

 

  註意看下圖標註的位置:

  

  上面是簡單的介紹,下麵我們先規劃一條拋物線的位置曲線。

  

 

  下麵即可直接複製生成的代碼,直接運動。

  

  把上面複製的代碼放在運行的程式中,運行即可。

DIM tablestart, points AS INTEGER
'Start CamGen Sector1
'->ProfileClass=PiecewiseCurve
'->ProfileName=CAM
'->OutputType=Points
'->MinLogicalX=0
'->MaxLogicalX=100
'->CamLinkInput=500
'->Segment=0;0;0.0000;0.0000;0.0000;Point
'->Segment=1;0.5;200.0000;0.0000;0.0000;Point
'->Segment=2;1;0.0000;0.0000;0.0000;Point
'->TableStart=1000
'->TableLength=100
' set the variables
tablestart = 1000
points = 100
' store the table points
TABLE(tablestart,0.0000,0.0160,0.1241,0.4057,0.9316,1.7615,2.9456,4.5241)
TABLE(tablestart + 8,6.5283,8.9810,11.8967,15.2822,19.1375,23.4556,28.2235)
TABLE(tablestart + 15,33.4224,39.0284,45.0129,51.3427,57.9814,64.8890,72.0227)
TABLE(tablestart + 22,79.3375,86.7865,94.3217,101.8938,109.4536,116.9518)
TABLE(tablestart + 28,124.3396,131.5696,138.5958,145.3741,151.8632,158.0247)
TABLE(tablestart + 34,163.8238,169.2295,174.2156,178.7606,182.8486,186.4694)
TABLE(tablestart + 40,189.6196,192.3025,194.5286,196.3166,197.6934,198.6948)
TABLE(tablestart + 46,199.3659,199.7615,199.9468,199.9980,199.9980,199.9468)
TABLE(tablestart + 52,199.7615,199.3659,198.6948,197.6934,196.3166,194.5286)
TABLE(tablestart + 58,192.3025,189.6196,186.4694,182.8486,178.7606,174.2156)
TABLE(tablestart + 64,169.2295,163.8238,158.0247,151.8632,145.3741,138.5958)
TABLE(tablestart + 70,131.5696,124.3396,116.9518,109.4536,101.8938,94.3217)
TABLE(tablestart + 76,86.7865,79.3375,72.0227,64.8890,57.9814,51.3427,45.0129)
TABLE(tablestart + 83,39.0284,33.4224,28.2235,23.4556,19.1375,15.2822,11.8967)
TABLE(tablestart + 90,8.9810,6.5283,4.5241,2.9456,1.7615,0.9316,0.4057,0.1241)
TABLE(tablestart + 98,0.0160,0.0000)
'Stop CamGen Sector1

'test_cam position
BASE(0)
ATYPE = 0
UNITS = 200
SPEED = 200
ACCEL = 999
DECEL = 999
FE_LIMIT = 999
FE_RANGE = 990
DEFPOS(0)
SERVO = 1

WHILE TRUE
    WA(1000) 'yan shi 1s
    TRIGGER 'catch curve
    CAM(1000,1099,1,200)AXIS(0)
    WA(1000) 'yan shi 1s
WEND

  運行的曲線結果:

  

  下麵是詳細介紹 CAM 參數值

  CAM(1000,1099,1,200)AXIS(0)

  CAM(“規劃曲線的時候,我們填的 TABLE start的值”,
    “Points 裡面的值,相當於 從 1000開始 100個TABLE表 1000~1099”,
    “倍率:相當於軸的脈衝數 * 當前的值。上面我們測試的脈衝是 200 * 1 實際電機走的位置為200 ,如果填 2 就相當於 200 * 2 實際電機走的位置就是 400 ”,
    “此值就是:時間 * 當前的速度值,更據測試解釋 我希望 1s完成 200的速度,1*200 = 200. 如果我希望0.5s完成200的速度,就是 0.5 * 200 = 100,上面的值就可以填寫100,更據實際情況而定”
    ) 運動的軸號

 上面是一個簡單的應用,如果大家用項目用到,可以當做一個簡單的參考,大神請路過。上面有表述有問題的地方,可在評論區留言,本人會更據實際情況進行修改。後期會介紹一些項目中其他的指令,如:MOVELINK , REGIST等指令。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 Object類的特點2 日期類:如何輸出當前的日期 日期的相關方法3 如何用System類獲取當前的毫秒值 1 Object toString方法 equals(); ***​ 1.1 概述 java.lang.Object java語言中的根類 所有類的父類 ​ 假如一個類沒有特別指定的父類 ...
  • synchronized的特性? synchronized的實現原理? synchronized是否可重入? synchronized是否是公平鎖? synchronized的優化? synchronized的五種使用方式? ...
  • 所屬網站分類: python基礎 > 語句 作者:goodbody 鏈接: http://www.pythonheidong.com/blog/article/10/ 來源:python黑洞網 www.pythonheidong.com 要瞭解yield它的作用,您必須瞭解生成器是什麼 迭代器 創建 ...
  • 前言 用戶定義的數據類型(data type)或類(class),是C++區別於傳統過程型語言的地方。 通常將創建好的類庫存放在庫(library)中。 本篇會使用幾個C++類庫(class libraries),如:一個很重要的標準庫是輸入/輸出流庫,可以用它從文件或鍵盤讀取數據,並且將數據寫入文 ...
  • Object類的toString方法 類Object是類層次結構的根類 每個都使用Object作為超類 所有對象都實現這個類的方法 Object類的equals方法 日期時間類 Date類 Date類的構造方法和成員方法 DateFormat類的format方法和parse方法 Calendar類的 ...
  • selenium+phantomjs爬取bilibili 首先我們要下載phantomjs 你可以到 http://phantomjs.org/download.html 這裡去下載 下載完之後解壓到你想要放的位置 你需要配置一下環境變數哦 如下圖: 首先,我們怎麼讓瀏覽器模擬操作,也就是我們自己先 ...
  • 1、使用增強的for迴圈 此種方式可以遍歷所有集合,但使用的是臨時變數,只能訪問集合元素,不能修改。 2、Collection集合可以使用自身的 forEach(Consumer action)方法,Consumer是一個函數式介面,只需實現 accept(element)方法。 此方式只能用於Co ...
  • 本系列主要講述JVM相關知識,作為本系列的第一篇文章,本文從Java為什麼是一個跨平臺的語音開始介紹,逐步引入Java虛擬機的概念,並給出一個JVM相關知識圖譜,可以讓讀者從一個高屋建瓴的角度明白JVM的強大和實用. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...