无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(十一):C#實(shí)現(xiàn)CAD導(dǎo)圖和小線段速度前瞻優(yōu)化
深圳市正運(yùn)動技術(shù)有限公司
收藏本文     查看收藏

強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750

MotionRT750是正運(yùn)動技術(shù)首家自主自研的x86架構(gòu)Windows系統(tǒng)或Linux系統(tǒng)下獨(dú)占確定CPU的強(qiáng)實(shí)時運(yùn)動控制內(nèi)核。

正運(yùn)動實(shí)時控制內(nèi)核MotionRT750.webp

該方案采用獨(dú)占確定CPU內(nèi)核技術(shù)實(shí)現(xiàn)超強(qiáng)性能的強(qiáng)實(shí)時運(yùn)動控制。它將核心的運(yùn)動控制、機(jī)器人算法、數(shù)控(CNC)及機(jī)器視覺等強(qiáng)實(shí)時的任務(wù),集中運(yùn)行在1-2個專用CPU核上。與此同時,其余CPU核則專注于處理Windows/Linux相關(guān)的非實(shí)時任務(wù)。

此外集成MotionRT750 Runtime實(shí)時層與操作系統(tǒng)非實(shí)時層,并利用高速共享內(nèi)存進(jìn)行數(shù)據(jù)交互,顯著提升了運(yùn)動控制與上層應(yīng)用間的通信效率及函數(shù)執(zhí)行速度,最終實(shí)現(xiàn)更穩(wěn)定、更高效的智能裝備控制,確保了運(yùn)動控制任務(wù)的絕對實(shí)時性與系統(tǒng)穩(wěn)定性,特別適用于半導(dǎo)體、電子裝備等高速高精的應(yīng)用場合。

強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750應(yīng)用.webp

MotionRT750應(yīng)用優(yōu)勢:

1.跨平臺兼容性:支持Windows/Linux系統(tǒng),適配不同等級CPU。

2.開發(fā)靈活性:提供多語言編程接口,便于二次開發(fā)與功能定制。

3.實(shí)時性提升:通過CPU內(nèi)核獨(dú)占機(jī)制與高效LOCAL接口,實(shí)現(xiàn)2-3us指令交互周期,較傳統(tǒng)PCI/PCIe方案提速近20倍。

4.擴(kuò)展能力強(qiáng)化:多卡多EtherCAT通道架構(gòu)支持254軸運(yùn)動控制及500usEtherCAT周期。

5.系統(tǒng)穩(wěn)定性:32軸125us EtherCAT冗余架構(gòu)消除單點(diǎn)故障風(fēng)險,保障連續(xù)生產(chǎn)。

6.安全可靠性:不懼Windows系統(tǒng)崩潰影響,藍(lán)屏?xí)r仍可維持急停與安全停機(jī)功能有效,確保產(chǎn)線安全運(yùn)行。

7.功能擴(kuò)展性:實(shí)時內(nèi)核支持C語言程序開發(fā),方便功能拓展與實(shí)時代碼提升效率。

MotionRT750視頻介紹可點(diǎn)擊→正運(yùn)動強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750

更多關(guān)于MotionRT750的詳情介紹與使用點(diǎn)擊→強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(一):驅(qū)動安裝、內(nèi)核配置與使用。

超實(shí)時EtherCAT運(yùn)動控制卡XPCIE6032H

XPCIE6032H運(yùn)動控制卡集成6路獨(dú)立EtherCAT主站接口。整卡最高可支持254軸運(yùn)動控制;125usEtherCAT通訊周期時,兩個端口配置冗余最高可支持32軸運(yùn)動控制。6個EtherCAT主站各通道獨(dú)立工作,多EtherCAT主站互不影響。

XPCIE6032H運(yùn)動控制卡~1.webp

超實(shí)時EtherCAT運(yùn)動控制卡XPCIE6032H結(jié)構(gòu)圖.webp

      XPCIE6032H視頻介紹可點(diǎn)擊→全球首創(chuàng)!PCIe 6路高性能EtherCAT運(yùn)動控制卡XPCIE6032H

XPCIE6032H運(yùn)動控制卡面向半導(dǎo)體設(shè)備、精密3C電子、生物醫(yī)療儀器、新能源裝備、人形機(jī)器人及激光加工等高速高精場景,為固晶機(jī)、貼片機(jī)、分選機(jī)、鋰電切疊一體機(jī)、高速異形插件設(shè)備等自動化裝備提供核心運(yùn)動控制支持。

XPCIE6032H硬件特性:

1.EtherCAT通訊周期可到125us(需要主機(jī)性能與實(shí)時性足夠)。

2.板卡集成6路獨(dú)立的EtherCAT主站接口,最多可支持254軸運(yùn)動控制。

3.搭載運(yùn)動控制實(shí)時內(nèi)核MotionRT750。

4.相較于傳統(tǒng)的PCI/PCIe、網(wǎng)口等通訊方式,速度可提升10-100倍以上。

5.板載16路高速輸入,16路高速輸出。

6.板載4路高速鎖存,4路通用PWM輸出。

更多關(guān)于XPCIE6032H的詳情介紹與使用點(diǎn)擊→全球首創(chuàng)!PCIe超實(shí)時6通道EtherCAT運(yùn)動控制卡上市!

超實(shí)時EtherCAT運(yùn)動控制卡XPCIE2032H

XPCIE2032H集成2路獨(dú)立EtherCAT接口。整卡最高可支持至254軸運(yùn)動控制;125usEtherCAT通訊周期時,單接口最高可支持32軸運(yùn)動控制。2個EtherCAT主站各通道獨(dú)立工作,多EtherCAT主站互不影響。

超實(shí)時EtherCAT運(yùn)動控制卡XPCIE2032H.webp

雙EtherCAT主站端口可任意設(shè)置為以下通道,且兩個端口也設(shè)置為不同類型通道:

● 高速通道-EtherCAT通訊周期125us

● 常規(guī)通道-EtherCAT通訊周期250us-8ms

超實(shí)時EtherCAT運(yùn)動控制卡XPCIE2032H雙主站端口~1.webp

超實(shí)時EtherCAT運(yùn)動控制卡XPCIE2032H架構(gòu)圖.webp

XPCIE2032H視頻介紹可點(diǎn)擊→高速高精運(yùn)動控制!PCIe超實(shí)時2通道EtherCAT運(yùn)動控制卡上市!

XPCIE2032H硬件特性:

1.EtherCAT通訊周期可到125us(需要主機(jī)性能與實(shí)時性足夠)。

2.板卡集成2路獨(dú)立的EtherCAT主站接口,最多可支持254軸運(yùn)動控制。

3.搭載運(yùn)動控制實(shí)時內(nèi)核MotionRT750。

4.相較于傳統(tǒng)的PCI/PCIe、網(wǎng)口等通訊方式,速度可提升10-100倍以上。

5.板載8路高速輸入,16路高速輸出。

6.板載4路高速鎖存,4路通用PWM輸出。

更多關(guān)于XPCIE2032H的詳情介紹與使用點(diǎn)擊→高速高精運(yùn)動控制!PCIe超實(shí)時2通道EtherCAT運(yùn)動控制卡上市!

PCIe EtherCAT實(shí)時運(yùn)動控制卡XPCIE1032H

XPCIE1032H是一款基于PCI Express的EtherCAT總線運(yùn)動控制卡,可選6-64軸運(yùn)動控制,支持多路高速數(shù)字輸入輸出,可輕松實(shí)現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。

PCIe EtherCAT實(shí)時運(yùn)動控制卡XPCIE1032H.webp

PCIe EtherCAT實(shí)時運(yùn)動控制卡XPCIE1032H結(jié)構(gòu).webp

XPCIE1032H視頻介紹可點(diǎn)擊→高性能PCIe EtherCAT運(yùn)動控制卡 | XPCIE1032H_

XPCIE1032H運(yùn)動控制卡集成了強(qiáng)大的運(yùn)動控制功能,結(jié)合MotionRT7運(yùn)動控制實(shí)時軟核,解決了高速高精應(yīng)用中,PC Windows開發(fā)的非實(shí)時痛點(diǎn),指令交互速度比傳統(tǒng)的PCI/PCIe快10倍。

MotionRT7運(yùn)動控制實(shí)時軟核.webp

XPCIE1032H硬件特性:

1.6-64軸EtherCAT總線+脈沖可選,其中4路單端500KHz脈沖輸出。

2.16軸EtherCAT同步周期500us,支持多卡聯(lián)動。

3.板載16點(diǎn)通用輸入,16點(diǎn)通用輸出,其中8路高速輸入和16路高速輸出。

4.通過EtherCAT總線,可擴(kuò)展到512個隔離輸入或輸出口。

5.支持PWM輸出、精準(zhǔn)輸出、PSO硬件位置比較輸出、視覺飛拍等。

6.支持直線插補(bǔ)、圓弧插補(bǔ)、連續(xù)軌跡加工(速度前瞻)。

7.支持電子凸輪、電子齒輪、位置鎖存、同步跟隨、虛擬軸、螺距補(bǔ)償?shù)裙δ堋?/p>

8.支持30+機(jī)械手模型正逆解模型算法,比如SCARA、Delta、UVW、4軸/5軸 RTCP...

更多關(guān)于XPCIE1032H詳情點(diǎn)擊“不止10倍提速!PCIe EtherCAT實(shí)時運(yùn)動控制卡XPCIE1032H 等您評測!”查看。

C#實(shí)現(xiàn)CAD解析及如何對小線段軌跡進(jìn)行運(yùn)動前瞻

CAD具有繪圖效率高速度快精度高便于交流等優(yōu)點(diǎn),所以得到了廣泛的應(yīng)用。CAD伴隨著整個PC基礎(chǔ)工業(yè)的突飛猛進(jìn),正迅速而深刻地影響著設(shè)計(jì)和繪圖的基本方法。

但是在實(shí)際應(yīng)用過程中,如果CAD導(dǎo)圖的軌跡是較為復(fù)雜的異形軌跡,那么結(jié)果會導(dǎo)出來大量小線段。這時候要保證機(jī)臺加工高效平穩(wěn),需要通過運(yùn)動前瞻算法對軌跡進(jìn)行一定程度的平滑,并且在拐彎點(diǎn)合理降速,曲線段整體也要合理降速,保證各分軸速度連續(xù)不出現(xiàn)速度突變。

01 CAD圖紙解析

正運(yùn)動技術(shù)提供開放的ZmotionCadEx庫,可導(dǎo)入DXF、Ai、Plt、Dst圖紙,可以生成運(yùn)動坐標(biāo)數(shù)據(jù)轉(zhuǎn)G代碼、zbasic運(yùn)動指令,或直接PC函數(shù)執(zhí)行運(yùn)動。

CAD1.png

CAD2.png

02 開啟控制器的運(yùn)動前瞻                                

之前推文也有介紹過,控制器的運(yùn)動前瞻主要通過Corner_mode進(jìn)行設(shè)置。

1.CornerMode功能前瞻設(shè)置說明

第一,它可對指令進(jìn)行整體規(guī)劃,即對各段速度進(jìn)行整體規(guī)劃,再配合指令段內(nèi)的加減速控制,可以使機(jī)床保持高速運(yùn)行提高效率,使負(fù)載運(yùn)動更加流暢,告別停停走走,系統(tǒng)通過Merge速度融合功能實(shí)現(xiàn)

第二,它可保證在高速運(yùn)行的基礎(chǔ)上為了限制機(jī)械沖擊和過切等,進(jìn)行減速識別,通過提前識別軌跡變化,從而按照安全的減速度提前減速,系統(tǒng)通過減速/停止融合功能、抑制沖擊功能實(shí)現(xiàn)

綜上所述,速度前瞻功能既可提升整機(jī)效率,也可減少沖擊增加柔性,降低零部件磨損,增加設(shè)備使用壽命。

(1)拐角減速

拐角減速功能解決的問題是:當(dāng)指令間夾角過大時,如果仍以較大速度運(yùn)行,會在夾角處產(chǎn)生較大的機(jī)械沖擊,軌跡偏離。

圖片3.webp

控制器會對指令間軌跡變化的夾角進(jìn)行提前識別,比較其與減速/停止角的大小關(guān)系,提前決定是否進(jìn)行減速,保證在指令連接處平穩(wěn)過渡。

           

運(yùn)動軌跡段數(shù).webp

如圖,OA過渡AB段位置時角度小于減速角度則,S1-S2段不進(jìn)行減速AB過渡BC段時角度大于減速角度則進(jìn)行減速處理過渡過程如S2-S3段BC過渡CD段角度大于停止角度速度需要降到零如S3-S4段位置處理。執(zhí)行效果如下:

①未開啟拐角減速

1.webp

②開啟拐角減速

→達(dá)到減速角度,未達(dá)到停止角度,部分減速。

2.webp

→達(dá)到停止角度,完全減速。

3.webp

(2)小圓限速

小圓限速功能用于處理,在運(yùn)行軌跡中可能運(yùn)行圓弧軌跡擬合成的小圓,由于角度偏轉(zhuǎn)較大導(dǎo)致出現(xiàn)軌跡偏轉(zhuǎn),因此在這種位置需要進(jìn)行速度限制的處理。開啟小圓限速,小圓半徑超過限速半徑的時候不會對速度限制,小圓半徑小于限速半徑的時候則會開始對速度進(jìn)行限制。

(3)自動倒角

自動倒角功能一般是用于拐角處按照一定的倒角半徑進(jìn)行軌跡的弧度化處理使速度變化更平滑。如圖所示:

①未開啟倒角

4.webp

②開啟倒角

5.webp

設(shè)置CORNER_MODE主要用到了下面幾個函數(shù)接口:

1.png

2.png

222.png

333.png

444.png

2.適用于小線段應(yīng)用的新平滑指令

針對連續(xù)小線段應(yīng)用,可以開啟zsmooth_mode平滑速度曲線模式,效果顯著。

(1)啟用平滑速度曲線模式

zsmooth_start()   zsmooth_end()

上述兩個basic指令是用于開啟和關(guān)閉新的平滑模式,這兩個指令都是進(jìn)入緩沖的,記得一定要調(diào)用zsmooth_end指令,否則可能導(dǎo)致最后幾個小運(yùn)動段位于等待狀態(tài)。可以提前先調(diào)用一次zsmooth_end,以防上次沒有正常關(guān)閉。

在PC程序里調(diào)用的話可以用Execute函數(shù)發(fā)送字符串,注意,zsmooth_start()是作用于某個軸的,如果前面沒有base指令的話,就要用axis指令指定軸號,用法應(yīng)該是 zsmooth_start() axis(xxx),而不是zsmooth_start(xxx)。下圖execute示例主軸為軸0。

平滑1.png

平滑2.png

開啟新的平滑模式后,zsmooth的效果就非常強(qiáng)。數(shù)值越大越平滑,但如果小線段點(diǎn)間隔過大,并且zsmooth也很大,可能會造成運(yùn)動軌跡變形。如果出現(xiàn)變形,要么減小zsmooth,或者減少小線段的間隔。
 

(2)設(shè)置CORNER_ACCEL

CA.png

CORNER_ACCEL類似之前的小圓限速,默認(rèn)值0不生效,設(shè)置數(shù)值后替換FULL_SP_RADIUS。

用于在曲率較大的地方去合理降速。這個拐彎加速度的大致理解為v = sqrt(a * r),這個a就是拐彎加速度。

(3)設(shè)置JERK

JERK.png

JERK用來控制加加速度大小,可以讓合成速度的不平滑處更平滑,也會約束空跑階段的加速度大小。默認(rèn)值0不生效,設(shè)置值后替換SRAMP。


 

C#使用ZTrackSmooth庫的連續(xù)平滑函數(shù)

03

在cad導(dǎo)出小線段數(shù)組后,可以通過ZTrackSmooth.dll庫中提供的ZTS_ContinueSmoothAndSpeed函數(shù)進(jìn)行運(yùn)動前瞻規(guī)劃,它的作用主要是通過給定參數(shù)用樣條方式去連續(xù)平滑軌跡,并且在拐彎點(diǎn)和曲線段合理降速。

使用ZTrackSmooth庫的連續(xù)平滑函數(shù).png

其中pDataPoints是傳入的cad導(dǎo)出的小線段數(shù)組,通過設(shè)定對應(yīng)參數(shù)后會

pSmoothPoints :平滑過后的坐標(biāo)點(diǎn)集

parryLmtSp:輸出每個店限速(mm/s),對應(yīng)每條線段,用movelimit運(yùn)行,<=0就不用設(shè)置// parryForceSp:輸出的每段force_speed運(yùn)行速度

然后根據(jù)輸出結(jié)果按照流程使用對應(yīng)函數(shù)下發(fā)給控制器執(zhí)行。

指令1.png

指令2.png

指令3.png

其它傳參為平滑時候所需要的參數(shù),他們作用如下:
 

disErr : 參考誤差系數(shù)(設(shè)置越大,拐點(diǎn)處軌跡誤差越大,默認(rèn)可輸入1)

用來控制高級平滑算法平滑后的軌跡與原軌跡之間最大參考誤差,當(dāng)此參數(shù)設(shè)置越大,平滑后的軌跡距離原軌跡的最大誤差也越大,同時平滑效果越好,運(yùn)動時的速度可以達(dá)到更快,曲率大的地方過彎速度可以更快,反之則是相反的效果。

同一段軌跡:

·此參數(shù)是設(shè)置為1.0

參數(shù)設(shè)1.0~1.webp

·此參數(shù)設(shè)3.0

參數(shù)設(shè)3.0~1.webp

splineDisPrecision :樣條最小線段的參考長度(設(shè)置的越小,樣條拆分越細(xì))默認(rèn)可輸入0.1

用來平滑高級平滑后的軌跡是原來離散點(diǎn)的參考倍數(shù),默認(rèn)0.1即可,代表10倍。

此參數(shù)設(shè)置的倍數(shù),平滑后的軌跡越密集,最小設(shè)置為4倍(0.25),最大建議不要設(shè)置超過20(0.05)。

·設(shè)置為4倍:

參數(shù)設(shè)4.0.webp

·設(shè)置為10倍:

參數(shù)設(shè)為10倍~1.webp

plimitR :限速半徑數(shù)組,不同的限速半徑對應(yīng)不同的限速值

plimitRSp : 限速半徑速度數(shù)組,和限速半徑數(shù)組對應(yīng)

limitRCnt: 限速半徑的個數(shù)

用來根據(jù)曲率半徑對應(yīng)的限制速度進(jìn)行曲線段限速,和控制器底層的小圓限速區(qū)別在于:

小圓限速只需要設(shè)置最大限速半徑,限制速度和最小速度,然后根據(jù)實(shí)際圓速度=限制速度*實(shí)際半徑/限速最大半徑進(jìn)行線性限速;

該函數(shù)可以通過設(shè)置分段限速,應(yīng)對上面小圓限速效果不好的時候,更可以根據(jù)實(shí)際機(jī)臺效果進(jìn)行設(shè)置,比如設(shè)置限速半徑和對應(yīng)限速值為:

表格.png


 

04 控制器速度前瞻和C#連續(xù)平滑函數(shù)共同使用

上面介紹的兩種方式也可以一起使用,效果會更加明顯,下面是一些推薦參數(shù)設(shè)置,可供參考測試:

測試軌跡(導(dǎo)入原始圖形為PLT圖形):

41.webp

運(yùn)動前瞻未設(shè)置的速度波形(VP_SPEED為合成速度,MSPEED為各軸分速度):

42.webp

推薦參數(shù)設(shè)置1

不使用C#平滑函數(shù),使用控制器內(nèi)置的限速和平滑模式,關(guān)閉連續(xù)倒角平滑。

① 前瞻模式corner_mode=2+8+16+32=58

② 減速角度=15

③ 停止限速=45

④ 平滑半徑Zsmooth=2(根據(jù)實(shí)際軌跡誤差設(shè)置)

⑤ 連續(xù)倒角平滑zsmooth_start不開啟

⑥ 小圓限速半徑300  (根據(jù)實(shí)際機(jī)臺效果去設(shè)置)

⑦ 小圓限速最小值50  (根據(jù)實(shí)際機(jī)臺效果去設(shè)置)

43.webp

44.webp

推薦參數(shù)設(shè)置2

不使用C#平滑函數(shù),使用控制器內(nèi)置的限速和平滑模式,關(guān)閉連續(xù)倒角平滑。

① 前瞻模式corner_mode=2+8+16+32=58

② 減速角度=15

③ 停止限速=45

④ 平滑半徑ZSmooth=2(根據(jù)實(shí)際軌跡誤差設(shè)置)

⑤ 連續(xù)倒角平滑zsmooth_start開啟

⑥ 各軸的corner_accel設(shè)置合理 例如2000,2000,2000

此參數(shù)設(shè)置之后,替代小圓限速,此參數(shù)設(shè)置越大,拐彎時限速值越高。

45.webp

46.webp

推薦參數(shù)設(shè)置3

開啟使用C#平滑函數(shù),并使用控制器內(nèi)置的限速和平滑模式,關(guān)閉連續(xù)倒角平滑。

① 前瞻模式corner_mode=2+8+16+32=58

② 減速角度=15

③ 停止限速=45

④ 平滑半徑Zsmooth=2 (根據(jù)實(shí)際軌跡誤差設(shè)置)

⑤ 連續(xù)倒角平滑zsmooth_start不開啟

⑥ 小圓限速半徑300   (根據(jù)實(shí)際機(jī)臺效果去設(shè)置)

⑦ 小圓限速最小值50  (根據(jù)實(shí)際機(jī)臺效果去設(shè)置)

⑧ 誤差系數(shù)Diserr=1  (根據(jù)實(shí)際機(jī)臺效果去設(shè)置)

47.webp

48.webp

推薦參數(shù)設(shè)置4

開啟使用C#平滑函數(shù),并使用控制器內(nèi)置的限速和平滑模式,關(guān)閉連續(xù)倒角平滑。

① 前瞻模式corner_mode=2+8+16+32=58

② Pr12 減速角度=15

③ 停止限速=45

④ 平滑半徑Zsmooth=2(根據(jù)實(shí)際軌跡誤差設(shè)置)

⑤ 連續(xù)倒角平滑zsmooth_start開啟

⑥ 誤差系數(shù)Diserr=1 (根據(jù)實(shí)際機(jī)臺效果去設(shè)置)

⑦ 各軸的corner_accel設(shè)置合理 例如2000,2000,2000

此參數(shù)設(shè)置之后,取代小圓限速。

49.webp

50.webp


 

C#例程實(shí)現(xiàn)小線段速度前瞻優(yōu)化

01 例程界面如下

例程界面如下.webp

02 初始化連接到控制器

//鏈接private void btn_Connet_Click(object sender, EventArgs e)
{
    if (G_CardHandle == (IntPtr)0)
    {
       btn_Close_Click(sender, e);
    }
    zmcaux.ZAux_OpenEth("127.0.0.1",out G_CardHandle);
    if (G_CardHandle != (IntPtr)0)
    {
       this.Text = "已鏈接";
    }
    else
    {
       MessageBox.Show("鏈接失敗,請選擇正確的LOCAL!");
    }
}

03 CAD導(dǎo)入圖形

//CAD圖形導(dǎo)入
private void BTN_IMPORT_Click(object sender, EventArgs e)
{
    if (G_CadHandle == (IntPtr)0)
    {
        if (ZmotionCad.ZMotionCadArray_OpenEth("127.0.0.1", out G_CadHandle) != 0)
        {
            MessageBox.Show("控制器連接失敗");
            return;
        }
    }
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.InitialDirectory = "\\";
    openFileDialog1.Filter = "DXF File(*.dxf)|*.dxf|PLT File(*.PLT)|*.PLT|AI File(*.AI)|*.AI|DST File(*.DST)|*.DST";
    openFileDialog1.RestoreDirectory = true;
    openFileDialog1.FilterIndex = 1;
    if (openFileDialog1.ShowDialog() == DialogResult.OK)            //打開配置文件
    {
        strFilePath = openFileDialog1.FileName;
        int iret = ZmotionCad.ZMotionCadArray_ImportVectGraph(strFilePath, 1024, 1, m_refDistance);
        iret = ZmotionCad.ZMotionCadArray_GetVectNum(ref ZCad_ArrayLen);           //導(dǎo)入數(shù)據(jù)
        ZCad_ArrayInfo = new ZmotionCad.Struct_ZCad_Array[ZCad_ArrayLen];
        iret = ZmotionCad.ZMotionCadArray_GetVectArray(ref ZCad_ArrayInfo[0], ZCad_ArrayLen);         //獲取圖形數(shù)據(jù)
        iret = ZmotionCad.ZMotionCadArray_IfCloseVect(false);             //是否只處理封閉軌跡
        //合并相連線
        iret = ZmotionCad.ZMotionCadArray_MergeSeg(0.5, If_Choose);
        Get_Array();
        float Image_Left, Image_bottom, Image_Width, Image_Height;
        Image_Left = 0;
        Image_bottom = 0;
        Image_Width = 0;
        Image_Height = 0;
        iret = ZmotionCad.ZMotionCadArray_GetRange(ref Image_Left, ref Image_bottom, ref Image_Width, ref Image_Height, 0.05);
        if (Image_Width < 0.0001 && Image_Height < 0.0001)
        {
            Image_Left = (float)0.0;
            Image_bottom = (float)0.0;
            Image_Width = (float)100.0;
            Image_Height = (float)100.0;
        }
        double ObjectPixHeight, ObjectPixWidth;
        if (Image_Width * PicHeight <= Image_Height * PicWidth)
        {
            ObjectPixHeight = PicHeight;
            ObjectPixWidth = ObjectPixHeight * Image_Width / Image_Height;
        }
        else
        {
            ObjectPixWidth = PicWidth;
            ObjectPixHeight = ObjectPixWidth * Image_Height / Image_Width;
        }
        //縮放比例
        double dScale = 0.0;
        dScale = ObjectPixHeight / Image_Height;
        m_dUnitsPerMm = dScale * 1;
        //偏移
        m_dTranX = (MyPicture.Width - ObjectPixWidth) / 2 - Image_Left * dScale;
        m_dTranY = (MyPicture.Height - ObjectPixHeight) / 2 - Image_bottom * dScale;
        Show_Picture();
        If_ImportArray = true;
    }
}

04 繪制圖形


05 點(diǎn)擊啟動,進(jìn)行控制器前瞻參數(shù)設(shè)置

private void BTN_RUN_Click(object sender, EventArgs e)
{
    if (If_ImportArray == false)
    {
        MessageBox.Show("未導(dǎo)入加載圖形");
        return;
    }
    Maxspeed = Convert.ToSingle(T_Speed.Text);
    Accel = Convert.ToSingle(T_Accel.Text);
    Decel = Convert.ToSingle(T_Decel.Text);
    Sramp = Convert.ToSingle(T_Sramp.Text);
    Lspeed = Convert.ToSingle(T_LSpeed.Text);
    Corner_Mode = Convert.ToInt32(T_CornerMode.Text);
    LimitR = Convert.ToSingle(T_LimitR.Text);
    Limitminspeed = Convert.ToSingle(T_MinSpeed.Text);
    Zsmooth = Convert.ToSingle(T_Zsmooth.Text);
    DecelAngle = Convert.ToSingle(T_DecelAngle.Text);
    StopAngle = Convert.ToSingle(T_StopAngle.Text);
    diserr = Convert.ToSingle(T_diserr.Text);       
    SplineDis = Convert.ToSingle(T_SplineDis.Text);
    cornerAccel = Convert.ToSingle(T_CornerAcc.Text);        
    HighJerk = Convert.ToSingle(T_HighJerk.Text);          
    FitErr = Convert.ToDouble(T_FitErr.Text);
    AxisXnum = Convert.ToInt16(T_AxisXNum.Text);
    AxisYnum = Convert.ToInt16(T_AxisYNum.Text);
    //初始化參數(shù)
    zmcaux.ZAux_Direct_SetSpeed(G_CardHandle, AxisXnum, Maxspeed);
    zmcaux.ZAux_Direct_SetAccel(G_CardHandle, AxisXnum, Accel);
    zmcaux.ZAux_Direct_SetDecel(G_CardHandle, AxisXnum, Decel);
    zmcaux.ZAux_Direct_SetSramp(G_CardHandle, AxisXnum, Sramp);
    zmcaux.ZAux_Direct_SetLspeed(G_CardHandle, AxisXnum, Lspeed);
    zmcaux.ZAux_Direct_SetMerge(G_CardHandle, AxisXnum, 1);
    zmcaux.ZAux_Direct_SetCornerMode(G_CardHandle, AxisXnum, Corner_Mode);
    zmcaux.ZAux_Direct_SetFullSpRadius(G_CardHandle, AxisXnum, LimitR);
    StringBuilder cmdbuffack = new StringBuilder(2048);
    zmcaux.ZAux_Execute(G_CardHandle, "SPLIMIT_RADIUS("+ AxisXnum.ToString() +") = " + Limitminspeed.ToString(), cmdbuffack, 2048);
    zmcaux.ZAux_Direct_SetZsmooth(G_CardHandle, AxisXnum, Zsmooth);
    zmcaux.ZAux_Direct_SetDecelAngle(G_CardHandle, AxisXnum, (float)((DecelAngle/180)*Math.PI));
    zmcaux.ZAux_Direct_SetStopAngle(G_CardHandle, AxisXnum, (float)((DecelAngle / 180) * Math.PI));
    zmcaux.ZAux_Direct_SetStartMoveSpeed(G_CardHandle, AxisXnum, Maxspeed );
    zmcaux.ZAux_Direct_SetEndMoveSpeed(G_CardHandle, AxisXnum, Maxspeed );
          
    MoveThread = new Thread(new ThreadStart(Thread_Move));
    MoveThread.Start();
}

06 軌跡運(yùn)行線程,開始解析CAD小線段軌跡

//軌跡運(yùn)行線程
private void Thread_Move()
{
    double Pos_x1, Pos_x2, Pos_z1, Pos_y1, Pos_y2, Pos_z2;
    double Pos_x1_2, Pos_x2_2, Pos_z1_2, Pos_y1_2, Pos_y2_2, Pos_z2_2;
    bool ifsplit = false;
    bool ifdownZ = false;
    for (int i = 0; i < ZCad_ArrayLen; i++)                //遍歷數(shù)組
    {
        Pos_x1 = ZCad_ArrayInfo[i].x1;
        Pos_x2 = ZCad_ArrayInfo[i].x2;
        Pos_z1 = ZCad_ArrayInfo[i].z1;
        Pos_y1 = ZCad_ArrayInfo[i].y1;
        Pos_y2 = ZCad_ArrayInfo[i].y2;
        Pos_z2 = ZCad_ArrayInfo[i].z2;              
        ifsplit = false;
        if((If_Choose == true) && (ZCad_ArrayInfo[i].m_nChoose  == 0)) continue; 
        switch (ZCad_ArrayInfo[i].m_nItemtype)
        {
            case ZmotionCad.ZCAD_ITEMTYPE_VECT:        //此處開始是曲線類型 
                break;
            case ZmotionCad.ZCAD_ITEMTYPE_VECTPoint:   //點(diǎn)
                if (ZCad_ArrayInfo[i].m_nEmptyMove != 0)
                //if ((ZCad_ArrayInfo[i].m_nInVectFrist == 1))              //是否軌跡起點(diǎn)起始
                {
                    StartPos(Pos_x1, Pos_y1);     //空移到起點(diǎn)
                    OriginalPos.Clear();          //清空記錄cad點(diǎn)位
                    SavePos(Pos_x1, Pos_y1);      //把起點(diǎn)存下來
                }
                SavePos(Pos_x2, Pos_y2);       //記錄過程點(diǎn)                     
                if (i + 1 < ZCad_ArrayLen)
                {
                    Pos_x1_2 = ZCad_ArrayInfo[i + 1].x1;
                    Pos_x2_2 = ZCad_ArrayInfo[i + 1].x2;
                    Pos_z1_2 = ZCad_ArrayInfo[i + 1].z1;
                    Pos_y1_2 = ZCad_ArrayInfo[i + 1].y1;
                    Pos_y2_2 = ZCad_ArrayInfo[i + 1].y2;
                    Pos_z2_2 = ZCad_ArrayInfo[i + 1].z2;
                    //判斷下個點(diǎn)是否空移點(diǎn)
                    if ((ZCad_ArrayInfo[i + 1].m_nInVectFrist == 1) )             //下條運(yùn)動為空移點(diǎn)
                    {
                        DownSmoothPos();//下發(fā)軌跡
                     }
                }
                break;
            case ZmotionCad.ZCAD_ITEMTYPE_VECTArc:     //圓、圓弧
                break;
            default:
                break;
        }
    }
    while (true)
    {
        int idle = 0;
        zmcaux.ZAux_Direct_GetIfIdle(G_CardHandle, AxisXnum, ref idle);
        if (idle != 0) break;
    }
    zmcaux.ZAux_Direct_Single_Cancel(G_CardHandle, AxisRnum, 2);
}
//移動到軌跡起點(diǎn)
private void StartPos(double Xpos, double Ypos)
{
    //緩沖區(qū)有剩余
    while(true)
    {
        int showbuff = 0;
        zmcaux.ZAux_Direct_GetRemain_LineBuffer(G_CardHandle, AxisXnum, ref showbuff);
        if (showbuff > 128) break;
    }
    StringBuilder cmdbuffack = new StringBuilder(2048);
    if (ifopenzsmoothmode == true)
    {
        zmcaux.ZAux_Execute(G_CardHandle, "ZSMOOTH_START()AXIS(" + AxisXnum.ToString() + ")", cmdbuffack, 2048);
    }
    //空移到起點(diǎn)
    zmcaux.ZAux_Direct_SetForceSpeed(G_CardHandle, AxisXnum, Maxspeed);
    zmcaux.ZAux_Direct_MoveAbsSp(G_CardHandle, 2, new int[] { AxisXnum, AxisYnum}, new float[] { Convert.ToSingle(Xpos), Convert.ToSingle(Ypos)});       
    while (true)
    {
        int idle = 0;
        zmcaux.ZAux_Direct_GetIfIdle(G_CardHandle, AxisXnum, ref idle);
        if (idle != 0) break;
    }
}

07 對提取出的CAD軌跡數(shù)組使用連續(xù)平滑函數(shù),并下發(fā)給控制器執(zhí)行


教學(xué)視頻請點(diǎn)擊→

強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(十一):C#實(shí)現(xiàn)CAD導(dǎo)圖和小線段速度前瞻優(yōu)化

二維碼.webp

正運(yùn)動技術(shù)專注于運(yùn)動控制技術(shù)研究和通用運(yùn)動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時,積極聯(lián)合各大高校協(xié)同運(yùn)動控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動控制核心技術(shù)和實(shí)時工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動控制卡_運(yùn)動控制器_EtherCAT運(yùn)動控制卡_EtherCAT控制器_運(yùn)動控制系統(tǒng)_視覺控制器__運(yùn)動控制PLC_運(yùn)動控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動控制卡等等。


 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 深圳市正運(yùn)動技術(shù)有限公司
聯(lián) 系 人: 戴德弟
電  話: 0755-32976042
傳  真: 0755-2606 6955
地  址: 深圳市寶安區(qū)西鄉(xiāng)洲石路陽光工業(yè)園A1棟5樓
郵  編: 518100
主  頁:
 
該廠商相關(guān)技術(shù)文摘:
運(yùn)動控制器PSO位置同步輸出(一):硬件平臺與PSO指令簡介
EtherCAT與RTEX驅(qū)動器軸回零的配置與實(shí)現(xiàn)
運(yùn)動控制器位置鎖存功能的應(yīng)用
開放式激光振鏡運(yùn)動控制器:C++快速開發(fā)
機(jī)器視覺運(yùn)動控制一體機(jī)應(yīng)用例程|供料單元物料在線有無檢測
EtherCAT總線運(yùn)動控制器中簡單易用的直線插補(bǔ)
EtherCAT運(yùn)動控制卡的自定義運(yùn)動曲線
機(jī)器視覺運(yùn)動控制一體機(jī)應(yīng)用例程|端子裁切檢測
機(jī)器視覺運(yùn)動控制一體機(jī)應(yīng)用例程|柔性電路板自動上料解決方案
開放式激光振鏡運(yùn)動控制器(四):ZMC408SCAN振鏡控制光纖激光器加工
開放式激光振鏡運(yùn)動控制器(五):ZMC408SCAN光纖激光器的能量控制
EtherCAT軸擴(kuò)展模塊EIO16084在運(yùn)動控制系統(tǒng)中的應(yīng)用
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費(fèi)注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved

无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
久久亚洲资源中文字| 亚洲激情另类| 日韩一区二区三区免费视频| 久久99久久久精品欧美| 免费在线观看不卡| 欧美+日本+国产+在线a∨观看| 久久久久91| 国产aⅴ精品一区二区四区| 尹人成人综合网| 欧美亚洲在线日韩| 欧美不卡高清| 午夜国产精品视频免费体验区| 精品中文在线| 国产乱码精品一区二区三区亚洲人| 久久精品97| 精品国产乱码久久久| 欧美日一区二区在线观看| 国产精品观看| 国产不卡一区| 91精品国产91久久久久久黑人| 激情综合网站| 好看的av在线不卡观看| 一区在线观看| 国产精品mv在线观看| 精品视频高潮| 午夜欧美精品久久久久久久| 免费观看日韩电影| 日韩欧美视频专区| 日本在线视频一区二区| 亚洲国产福利| 国产一区二区精品| 国产日产一区| 欧美成a人免费观看久久| 欧美久久香蕉| 久久视频国产| 国产精品久久久久77777丨| 九九99久久精品在免费线bt| 亚洲va在线| 狠狠久久伊人中文字幕| 色综合视频一区二区三区日韩| 免费看av不卡| 国产情侣一区在线| 免费在线看一区| 亚洲高清久久| 蜜桃精品视频| 日韩精品高清不卡| 99国产精品久久久久久久| 黄色精品视频| 欧美韩日一区| 国产精品自拍区| 日本va欧美va精品发布| 深夜视频一区二区| 蜜桃av在线播放| 日韩成人综合| 欧美一区二区三区激情视频| 久久激情中文| 久久久精品久久久久久96| 麻豆视频在线观看免费网站黄| 欧美日韩夜夜| 国产三级精品三级在线观看国产 | 久久久久久黄| 亚洲影院天堂中文av色| 亚洲欧美网站| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩福利视频导航| 日本在线不卡视频| 日本aⅴ精品一区二区三区| 美女精品一区| 青青草国产成人99久久| 国产日韩欧美三区| 色婷婷久久久| 免费看av不卡| 男女男精品视频网| 国产一区二区三区视频在线| 在线亚洲欧美| 国产成人精品亚洲线观看| 欧美日韩国产高清电影| 国产日韩欧美高清免费| 精品一区免费| 久久超级碰碰| 激情自拍一区| 国产日产精品_国产精品毛片| 久久视频精品| 欧美激情99| 日本不卡视频在线观看| 亚洲欧美高清| se01亚洲视频 | 欧美中文字幕| 久久久久一区| 久久激情五月激情| 日韩视频网站在线观看| 无码日韩精品一区二区免费| 色婷婷色综合| 国产精品伊人| 国产精品主播在线观看| 日韩不卡一二三区| 欧美在线不卡| 日本视频在线一区| 欧美一区二区三区久久| 日本午夜精品| 久久精品福利| 日韩成人精品一区| 精品国产精品国产偷麻豆| 欧美激情精品| 精品三区视频| 国产欧美日韩精品高清二区综合区 | 麻豆国产精品| 久久国内精品视频| 国产精品任我爽爆在线播放| 久久久久久婷| 99精品视频精品精品视频| 久久久久久久久丰满| 日韩欧美一区二区三区免费看| 成人精品国产亚洲| 国产国产精品| 国产精品亚洲人成在99www| 亚洲综合专区| 久久影视三级福利片| 在线观看精品| 石原莉奈在线亚洲二区| 国产精选一区| 99久久夜色精品国产亚洲1000部| 国产一区视频在线观看免费| 亚洲欧美日韩视频二区| 日韩av影院| 成人羞羞视频播放网站| 久久亚洲色图| 国产日韩欧美三区| 伊人成人在线视频| 国产伊人久久| 日韩av影院| 激情婷婷亚洲| 日韩精品2区| 国产图片一区| 亚洲综合婷婷| 亚洲一区欧美| 久久精品影视| 日本高清不卡一区二区三区视频 | 国产欧美另类| 日韩精品麻豆| 国产精品xxxav免费视频| 丝袜美腿一区二区三区| 欧美精品一二| 精品视频网站| 国产精品网在线观看| 亚洲不卡视频| 三级欧美韩日大片在线看| 综合日韩av| 日韩不卡视频在线观看| 久久精品一区二区国产| 日韩av一区二| 欧美一区二区三区久久精品| 日韩黄色免费网站| 国产日韩免费| 美国av一区二区| 日韩手机在线| 精品国产亚洲日本| 91偷拍一区二区三区精品| 久久精品毛片| 午夜国产精品视频| 日本伊人久久| 国产伦精品一区二区三区在线播放| 日韩中文一区二区| 久久超级碰碰| 九九综合九九| 国产精品白丝一区二区三区| 日本欧美国产| 首页国产欧美久久| 麻豆视频久久| 亚洲高清不卡| 亚洲3区在线| 国产一区二区精品福利地址| 精精国产xxxx视频在线野外| 尤物网精品视频| 开心激情综合| 日韩一区二区久久| 欧美性感美女一区二区| 日韩久久一区二区三区| 国产精品99久久久久久董美香| 91精品国产一区二区在线观看| 欧美亚洲tv| 国内亚洲精品| 国产精久久久| 性欧美长视频| 超级白嫩亚洲国产第一| 最新国产拍偷乱拍精品| 日韩二区三区四区| 亚洲日本免费电影| 国产综合精品一区| 另类专区亚洲| 在线手机中文字幕| 国产不卡精品| 国产精品欧美大片| 欧美一区自拍| 国产伦乱精品| 日韩高清一区二区| 亚洲久久视频| 一区二区国产在线| 在线观看一区| 欧美亚洲网站|