在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

EtherCAT運動控制器PT/PVT實現用戶自定義軌跡規劃

正運動技術 ? 來源:正運動技術 ? 作者:正運動技術 ? 2024-08-15 11:49 ? 次閱讀

ZMC408CE硬件介紹

ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNETRS232CAN和U盤等通訊接口,ZMC系列運動控制器可應用于各種需要脫機或聯機運行的場合。

wKgaoma9dqaAeQ8YAAEJUdroEvw186.png

ZMC408CE支持8軸運動控制,最多可擴展至32軸,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。

ZMC408CE支持PLC、Basic、HMI組態三種編程方式。PC上位機API編程支持C#C++LabVIEWMatlab、Qt、Linux、VB.Net、Python等接口。

wKgZoma9dq2Ae6rnAAXrI37H0_U893.png

ZMC408CE支持8軸運動控制,可采用脈沖軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和16路輸出口,部分IO為高速IO,模擬AD/DA各兩路,EtherCAT最快125us的刷新周期。

ZMC408CE支持8個通道的硬件比較輸出、硬件定時器、運動中精準輸出,還支持8通道PWM輸出,對應的輸出口為OUT0-7,支持8個通道同時觸發硬件比較輸出。

更多關于ZMC408CE的詳情介紹,點擊“推薦|8通道PSO的高性能EtherCAT總線運動控制器”查看。

PCIE464M硬件介紹

PCIE464M是一款基于PCIe的PCI Express的EtherCAT總線運動控制卡,具有多項實時和高精度運動控制控制功能。

wKgZoma9dvKAZkeyAApupiDfzPg802.png

用戶可直接將PCIE464M嵌入標準PC機實現高性能的EtherCAT運動控制功能,實現高精多軸同步控制,EtherCAT控制周期最小可達100us!

PCIE464M內置多路高速IO輸入輸出,可滿足用戶的多樣化高速IO應用需求,如:高速色標鎖存、高速PWM、多維位置比較輸出PSO、視覺飛拍、速度前瞻、編碼器位置檢測等應用。

wKgaoma9dveAcUzlAAbX3V9Cw0Y714.png

PCIE464M運動控制卡上自帶16進16出,第三方圖像處理工控機或PC無需額外配置IO數據采集卡和PLC,即可實現IPC形態的機器視覺運動控制一體機,簡化硬件架構,節省成本,軟硬件一體化。

更多關于PCIE464M的詳情介紹,點擊“PCIE464M-高速高精,超高速PCIe EthrtCAT實時運動控制卡”查看。

??? PT指令與PVT指令

1.PT運動介紹

PT(Position-Time)運動:是一種單位時間內的運動位置控制技術,主要用于控制步進電機伺服電機等運動設備在設定時間內實現精確的軸位置控制。位置跟時間參數一般是PC每個周期計算好對應的坐標,然后傳給控制器。

PT算法:在用戶定義的“位置和時間”點之間,PT算法計算出一個合適的速度曲線。PT算法保證控制卡的軌跡計算符合每一個已知的點和時間。分段速度簡單的由位置和時間的差分計算出來。

PT運動適用場景:適用于近距離的點位運動或低速度的運動。它是非常簡單的算法,需要很少的計算量,因此計算速度很快。在低性能的運動系統中很受歡迎。但如果點之間間隔太大,那么運動將會很粗糙,因為每一段的加速度將會顯得不連續。

PT運動為保證設定的單位時間內達到規劃的目標位置,控制器自動生成相應的加速度、速度曲線規劃。如果在極短時間內運動大距離,脈沖頻率會過高,導致電機堵轉。建議分解成小段,重復發送,連續的多個周期PT運動時, 速度會自動均勻。

2.PVT運動介紹

PVT(Position-Velocity-Time)運動:是一種基于位置、速度和時間的綜合控制方法,通過協調這三個方面的參數,實現對運動系統的精準控制。PVT在一段時間內驅動電機運動設置的距離,可以指定結束速度,小段內速度會自動根據前面的速度與結束速度來自動規劃,盡可能連續。位置、速度跟時間參數一般是PC每個周期計算好對應的坐標,然后傳給控制器。

PVT算法:在用戶定義的“位置/速度/時間”點之間,PVT算法計算出合適的Jerk參數(加加速度,非恒定加速度)。這個算法保證軌跡計算合符每個已知點的位置、速度和時間。

PVT模式算法適用場景:PVT算法對于平滑軌跡和軌跡跟蹤非常有效。位置軌跡點可以間隔很近,也可以間隔很大。比如說對于復雜的路徑,點位需要間隔很近;對于簡單的路徑,點位可以間隔很大。PVT可以手動指定點位置,但是要確定好每個點的合適速度值。

3.正運動的PT指令與PVT指令

相關的指令說明可以打開RTSys軟件,點擊軟件右上角的【幫助文檔】,選擇RTBasic編程手冊,在第七章的7.3節特殊運動指令章節進行查看。

wKgZoma9d1WAFE7OAAUpG9YTb04849.png

??? ZBasic快速驗證自定義軌跡規劃指令MOVE_PTABS

1.MOVE_PTABS指令的介紹。

wKgaoma9d5GAIfxDAABbKBDhnyY341.png

注意距離參數dis的單位不是脈沖數,dis*units才表示具體的脈沖數。

時間參數ticks的單位是伺服周期,控制器的伺服周期可以通過RTSys軟件的在線命令輸入?*max進行打印。

如下圖SERVO_PERIOD:1000 min:500 max:4000表示當前控制器的伺服周期是1000us,伺服周期的可調范圍是500us到4000us。

控制器伺服周期可以通過在線命令發送SERVO_PERIOD=500把伺服周期設置成500us,控制器斷電重啟后生效。

wKgaoma9d5eAQn77AAAVtNUE4Yc317.png

2.如何通過move_ptabs指令來封裝接口來實現單軸Sin曲線的位置規劃。

(1)接口詳情

'主函數邏輯
'軸參數初始化
BASE(0,1,2)
DPOS=0,0,0
MPOS=0,0,0
UNITS=100,100,100
MAX_SPEED=10000000,10000000,10000000
'停止線程和軸運動
STOPTASK 1
RAPIDSTOP(2)
WAIT IDLE
'清除控制器報警
DATUM(0)
'開始軌跡規劃
'單軸Sin曲線,振幅10,周期100個SERVO_PERIOD,初相角 0°
Runtask 1,MySingleAxisSin(0,10,Pi/50,0)
END
'/**********************************************************************
'函數功能:單軸sin函數的軌跡
'函數模型:y=Amp*sin(Rad*x+Ipa)
' 輸  入 :Amp(振幅)、Rad(角速度ω,弧度制)、Ipa(初相角φ,弧度制)
' 輸  入 :AxisNum(運動的軸)
' 輸  出 :
' 備  注 :周期=2*Pi/Rad*10(控制周期)
'**********************************************************************/
GLOBAL SUB MySingleAxisSin(AxisNum,Amp,Rad,Ipa)
   LOCAL lvTime
   lvTime=0
   '選擇要運動的軸 
   BASE(AxisNum)
   WHILE 1 
       '通過PT運動下發運動指令
       MOVE_PTABS(10,Amp*SIN(Rad*lvTime+Ipa))
       lvTime=lvTime+1
       DELAY(1)
   WEND
ENDSUB

(2)測試結果

wKgaoma9d6iAVSaGAADXMy0qUR8112.png

3.如何通過move_ptabs指令來封裝接口實現多軸的Sin曲線的位置規劃。

(1)接口詳情

'主函數邏輯
'軸參數初始化
BASE(0,1,2)
DPOS=0,0,0
MPOS=0,0,0
UNITS=100,100,100
MAX_SPEED=10000000,10000000,10000000
'停止線程和軸運動
STOPTASK 1
RAPIDSTOP(2)
WAIT IDLE
'清除控制器報警
DATUM(0)
'開始軌跡規劃
'多軸的Sin曲線規劃
Runtask 1,MyMultAxisSin(10,Pi/50,0,10,Pi/100,0,10,Pi/200,0)
END
'/**********************************************************************
'函數功能:0、1、2軸的3軸sin函數的軌跡  
'函數模型:y1=A1mp*sin(Rad1*x+Ipa1)
'     :y2=A2mp*sin(Rad2*x+Ipa2)
'     :y3=A3mp*sin(Rad3*x+Ipa3)
' 輸  入 :Amp(振幅)、Rad(角速度ω,弧度制)、Ipa(初相角φ,弧度制)
' 輸  出 :
' 備  注 :周期=2*Pi/Rad*10(控制周期)
'**********************************************************************/
GLOBAL SUB MyMultAxisSin(Amp1,Rad1,Ipa1,Amp2,Rad2,Ipa2,Amp3,Rad3,Ipa3)
   LOCAL lvTime
   lvTime=0
   '選擇要運動的軸
   BASE(0,1,2)
   WHILE 1 
       MOVE_PTABS(10,Amp1*SIN(Rad1*lvTime+Ipa1),Amp2*SIN(Rad2*lvTime+Ipa2),Amp3*SIN(Rad3*lvTime+Ipa3))
       lvTime=lvTime+1
       DELAY(1)
   WEND
ENDSUB

(2)測試結果

wKgZoma9eLKAWd5VAADD46dSejg600.png

4.如何在move_ptabs指令后插入move_op指令來實現運動中對輸出口的操作。

(1)假設需要在每執行Spasce個周期就需要操作一下輸出口0,接口詳情如下。

'主函數邏輯
'軸參數初始化
BASE(0,1,2)
DPOS=0,0,0
MPOS=0,0,0
UNITS=100,100,100
MAX_SPEED=10000000,10000000,10000000
'停止線程和軸運動
STOPTASK 1
RAPIDSTOP(2)
WAIT IDLE
'清除控制器報警
DATUM(0)
'開始軌跡規劃
'單在Sin曲線軌跡規劃插入對輸出口的操作指令
MySingleAxisSinOP(0,10,Pi/50,0,0.25)
END
'/**********************************************************************
'函數功能:單軸sin函數的軌跡+MOVE_OP 
'函數模型:y=Amp*sin(Rad*x+Ipa)
' 輸  入 :Amp(振幅)、Rad(角速度ω,弧度制)、Ipa(初相角φ,弧度制)
' 輸  入 :AxisNum(運動的軸),Space(間隔多少個周期操作一下輸出口)
' 輸  出 :
' 備  注 :周期=2*Pi/Rad*10(控制周期)
'**********************************************************************/
GLOBAL SUB MySingleAxisSinOP(AxisNum,Amp,Rad,Ipa,Space)
   LOCAL lvTime,lvOpFlag
   lvTime=0
   lvOpFlag=0
   MOVE_OP(0,OFF)
   WHILE 1 
       MOVE_PTABS(10,Amp*SIN(Rad*lvTime+Ipa))
       '檢測是否執行到Space個周期,執行到需要打開/關閉輸出口
       IF lvTime MOD(Space*2*Pi/Rad) = 0THEN
           IF lvOpFlag=1 THEN
               MOVE_OP(0,OFF)
               lvOpFlag=0
           ELSE
               MOVE_OP(0,ON)
               lvOpFlag=1
           ENDIF
       ENDIF
       lvTime=lvTime+1
       DELAY(1)
   WEND
ENDSUB

(2)測試結果

wKgZoma9eMKAFhGoAABxPdB--yA568.png

5.如何通過硬件定時器對輸出口進行操作。

(1)硬件定時器指令介紹

MOVE_HWTIMER(mode, cyclonetime, optime, reptimes, opstate, opnum )

①mode:0-停止硬件定時器,1-動態修改參數(不修改啟動設置),2-啟動(啟動后不可重復開啟)

②cyclonetime:周期時間,us單位

③optime:有效時間,us單位

④reptimes:重復次數,啟動模式,reptimes =0時,軟關閉HW_TIMER,原來的脈沖沒有完成的,會繼續輸出完成;-1時無限輸出,除非主動關閉

⑤opstate:輸出缺省狀態,輸出口變為非此狀態后開始計時(輸出口初始狀態OFF。一般此參數設為OFF,將輸出口變為ON狀態后開始計時)

⑥opnum:輸出口編號,必須能硬件比較輸出的口。

wKgaoma9eMyAT49XAADGG8QQNSQ763.png

(2)測試代碼詳情

'主函數邏輯
'軸參數初始化
BASE(0,1,2)
DPOS=0,0,0
MPOS=0,0,0
UNITS=100,100,100
MAX_SPEED=10000000,10000000,10000000
'停止線程和軸運動
STOPTASK 1
RAPIDSTOP(2)
WAIT IDLE
'清除控制器報警
DATUM(0)
'開始軌跡規劃
'單在Sin曲線軌跡規劃插入對輸出口的操作指令
MySingleAxisSinOP(0,10,Pi/50,0,0.25)
END
'/******************************************************************************  
'函數功能:單軸sin函數的軌跡+輸出口多次輸出
'函數模型:y=10*sin(Pi/50*x+0)
' 輸  入 :AxisNum(運動的軸)
' 輸  出 :
'具體需求:要求Sin函數每隔0.5個周期打開一次輸出口,并且輸出口的以脈沖的形式輸出4個脈沖
'******************************************************************************/
GLOBAL SUB MySingSinOP_HwTime(AxisNum)
   LOCAL lvTime,Space
   lvTime=0
   Space=0.5
   BASE(AxisNum)
   MOVE_OP(0,OFF)
   MOVE_HWTIMER(0, 60000, 30000, 4, OFF, 0)
   MOVE_HWTIMER(2, 60000, 30000, 4, OFF, 0)
   WHILE 1 
       MOVE_PTABS(10,10*SIN(PI*lvTime/50+0))
       '檢測是否執行到Space個周期,執行到需要打開/關閉輸出口,mod是求余指令
       IF lvTime MOD (50) = 0THEN
           MOVE_OP(0,ON)
       ENDIF
       lvTime=lvTime+1
       DELAY(1)
   WEND
ENDSUB

(3)測試結果

wKgaoma9eOuADBp7AAByoVi5Y1U729.png

??? Qt進行自定義軌跡規劃的算法驗證

1.新建QT項目,并添加正運動的動態庫到項目里面。

(1)新建Qt項目。

wKgaoma9eQSAYwRlAABmRwcJDag839.png圖2-1?新建Qt項目 wKgaoma9eQmACDY2AAAfVgFBaDQ266.png圖2-2?選擇Qt編譯套件(kits) wKgZoma9eQ2AVaAvAAAZkPsbmAY741.png圖2-3?選擇基類

(2)將函數庫相關的文件復制到新建的項目中。

wKgaoma9eRGAYaO_AADV_y4a28s469.png圖2-4 庫文件復制

(3)向新建的項目里面添加函數庫的靜態庫。(zmotion.lib)

wKgZoma9eRWABkpQAAFXiJZ_cp0890.png圖2-5 添加函數庫1 wKgaoma9eRmAJBwmAAAWf0QJiSE864.png圖2-6 添加函數庫2 wKgZoma9eR2AS9GmAAAcB9eRu3s724.png圖2-7?添加函數庫3

(4)添加函數庫相關的頭文件到項目中。

wKgZoma9eR-AXcajAADkV86YuMY919.png圖2-8 添加頭文件1

(5)聲明相關頭文件,并定義連接句柄。

wKgZoma9eSKAC2ylAABST5YDldU422.png

2.正運動動態庫相關接口說明。

(1)運動PC函數庫編程手冊所在路徑。

wKgaomapkuqABcQxAABRNFppcF8032.png

(2)上位機如何連接控制器。

wKgaoma9eSyAJeGuAABIYiX7d4A072.png

(3)上位機如何下發自定義的軌跡規劃參數。

wKgaoma9eTCAT7ayAABbRtStrd8833.png

3.Qt自定義軌跡規劃案例講解。

(1)案例Ui講解。

wKgZoma9eViAP9kcAABeyKCxZlQ106.png

該例程除了可以下發Sin曲線的軌跡外,還可以按照設定的角度間隔操作輸出口輸出,打開輸出口后硬件定時器將生效,會按照設定的周期去重復操作輸出口,重復操作輸出口的次數及界面上的脈沖持續個數。

(2)案例代碼講解。

①連接控制器。

//連接控制器
void MainWindow::on_LinkButton_clicked()
{
   int err=0;
   if(g_handle == NULL)
   {
       QString ControllerIp = ui->IPcomboBox->currentText();
       QByteArray IpStr = ControllerIp.toLocal8Bit();
       err = ZAux_OpenEth(IpStr.data(),&g_handle);
       if(err!=0)
       {
           QMessageBox::about(this, "提示","連接失敗請確認IP正確!");
       }
   }
   else
   {
       QMessageBox::about(this, "提示", "句柄非空請先斷開鏈接!");
   }
}

②啟動自定義軌跡規劃算法測試。

//點擊啟動按鈕,如果條件滿足講會講標志位RunFlag設置為從而觸發定時器下發自定義的軌跡
void MainWindow::on_StartRun_clicked()
{
   if(g_handle!=0)
   {
       if(RunFlag==0)
       {
           //初始化軸參數
           //例程為方便測試,直接把規劃位置DPOS清空
           ZAux_Direct_SetDpos(g_handle,0,0);
           //例程為方便測試,直接把編碼器位置MPOS清空
           ZAux_Direct_SetMpos(g_handle,0,0);       
           ZAux_Direct_SetUnits(g_handle,0,1000);
           //關閉硬件定時器
           ZAux_Direct_HwTimer(g_handle,0,10000,5000,1,0,0);
           //啟動硬件定時器功能,脈沖周期是50ms,高電平持續時間是25ms   
           ZAux_Direct_HwTimer(g_handle,2,50000,25000,ui->PluseNum->text().toInt(),0,0);
           //啟動自定義軌跡規劃算法測試
           CurAanle=0;
           RunFlag=1;
       }
       else
       {
           QMessageBox::about(this, "提示", "運行中請先停止");
       }
   }
}
//定時器的超時服務子函數
void MainWindow::MyTimeOut()
{
   if(g_handle!=NULL)
   {
       //如果啟動條件滿足則開始下發運動指令
       if(RunFlag==1)
       {
           int AxisList[1]={0};         //軸列表
           uint32 TicksList[1]={10};    //時間列表
           float PosList[1]={0};        //位置列表
           float OpCycTime=0;           //操作輸出口的周期時間
           int RemainBuff=0;            //剩余緩沖器
           int A = ui->ParaAmp->text().toInt(); //更新Sin曲線的振幅
           double Rad =  qDegreesToRadians(ui->ParaRad->text().toDouble());//更新Sin曲線的角速度
           double Ipa =  qDegreesToRadians(ui->ParaIpa->text().toDouble());//更新Sin曲線的初相角
           OpCycTime = (2*M_PI/Rad*(ui->Angle->text().toInt()/360.0));
           //獲取剩余軸緩沖器數目
           ZAux_Direct_GetRemain_Buffer(g_handle,0,&RemainBuff);
           //如果剩余緩沖器夠下發新的運動指令
           if(RemainBuff>10)
           {
               for(int i=0;i

(3)通過RTSys的示波器功能接口自定義軌跡的運動效果。

wKgZoma9eWCAPDQfAAGk78DFF0g844.pngwKgaoma9eWWAdLgqAACAcXftG78900.png

本次,正運動技術EtherCAT運動控制器PT/PVT實現用戶自定義軌跡規劃,就分享到這里。

更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 運動控制器
    +關注

    關注

    2

    文章

    408

    瀏覽量

    24809
  • ethercat
    +關注

    關注

    18

    文章

    734

    瀏覽量

    38876
  • 正運動技術
    +關注

    關注

    0

    文章

    104

    瀏覽量

    454
收藏 人收藏

    評論

    相關推薦

    Altium Designer 15.0自定義元件設計

    電子發燒友網站提供《Altium Designer 15.0自定義元件設計.pdf》資料免費下載
    發表于 01-21 15:04 ?0次下載
    Altium Designer 15.0<b class='flag-5'>自定義</b>元件設計

    think-cell:自定義think-cell(四)

    C.5 設置默認議程幻燈片布局 think-cell 議程可以在演示文稿中使用特定的自定義布局來定義議程、位置和議程幻燈片上的其他形狀,例如標題或圖片。通過將此自定義布局添加到模板,您可以為整個組織
    的頭像 發表于 01-13 10:37 ?98次閱讀
    think-cell:<b class='flag-5'>自定義</b>think-cell(四)

    think-cell;自定義think-cell(一)

    布局介紹了如何創建自定義議程幻燈片布局,第六部分 C.6 功能區自定義 介紹了如何使用 PowerPoint 的功能區自定義選項自定義 think-cell 的
    的頭像 發表于 01-08 11:31 ?149次閱讀
    think-cell;<b class='flag-5'>自定義</b>think-cell(一)

    開放式激光振鏡運動控制器在Ubuntu+Qt下自定義圖形標刻

    開放式激光振鏡運動控制器在Ubuntu+Qt下自定義圖形標刻
    的頭像 發表于 10-08 10:45 ?716次閱讀
    開放式激光振鏡<b class='flag-5'>運動</b><b class='flag-5'>控制器</b>在Ubuntu+Qt下<b class='flag-5'>自定義</b>圖形標刻

    如何將自定義邏輯從FPGA/CPLD遷移到C2000?微控制器

    電子發燒友網站提供《如何將自定義邏輯從FPGA/CPLD遷移到C2000?微控制器.pdf》資料免費下載
    發表于 09-23 12:36 ?0次下載
    如何將<b class='flag-5'>自定義</b>邏輯從FPGA/CPLD遷移到C2000?微<b class='flag-5'>控制器</b>

    如何自定義內存控制器的設置

    在FreeRTOS中自定義內存控制器的設置,主要涉及到內存分配策略的選擇和配置。FreeRTOS提供了多種內存分配策略,如heap_1、heap_2、heap_3、heap_4和heap_5,每種
    的頭像 發表于 09-02 14:28 ?575次閱讀

    運動控制器的主要功能是什么?

    運動控制器是一種用于控制機械運動的設備,它在工業自動化、機器人技術、航空航天等領域有著廣泛的應用。運動
    的頭像 發表于 06-13 09:21 ?907次閱讀

    EtherCAT運動控制器與PLC的區別

    在工業自動化領域,EtherCAT運動控制器和PLC(Programmable Logic Controller,可編程邏輯控制器)都是不可或缺的核心設備。它們各自具有獨特的功能和優勢
    的頭像 發表于 06-12 15:47 ?1051次閱讀

    Chrome移動版支持自定義菜單欄功能

    在先前版本中,用戶通過點擊瀏覽右上角的三個點按鈕即可調出包含各類圖標與操作的菜單。而此次更新后,Chrome新增了“自定義菜單”選項,允許用戶自主
    的頭像 發表于 05-27 15:00 ?880次閱讀

    HarmonyOS開發案例:【 自定義彈窗】

    基于ArkTS的聲明式開發范式實現了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實現自定義彈窗
    的頭像 發表于 05-16 18:18 ?1460次閱讀
    HarmonyOS開發案例:【 <b class='flag-5'>自定義</b>彈窗】

    TSMaster 自定義 LIN 調度表編程指導

    LIN(LocalInterconnectNetwork)協議調度表是用于LIN總線通信中的消息調度的一種機制,我們收到越來越多來自不同用戶希望能夠通過接口實現自定義LIN調度表的需求。所以在
    的頭像 發表于 05-11 08:21 ?755次閱讀
    TSMaster <b class='flag-5'>自定義</b> LIN 調度表編程指導

    HarmonyOS開發實例:【自定義Emitter】

    使用[Emitter]實現事件的訂閱和發布,使用[自定義彈窗]設置廣告信息。
    的頭像 發表于 04-14 11:37 ?1060次閱讀
    HarmonyOS開發實例:【<b class='flag-5'>自定義</b>Emitter】

    鴻蒙ArkUI實例:【自定義組件】

    組件是 OpenHarmony 頁面最小顯示單元,一個頁面可由多個組件組合而成,也可只由一個組件組合而成,這些組件可以是ArkUI開發框架自帶系統組件,比如?`Text`?、?`Button`?等,也可以是自定義組件,本節筆者簡單介紹一下自定義組件的語法規范。
    的頭像 發表于 04-08 10:17 ?707次閱讀

    EtherCAT運動控制器在ROS上的應用(上)

    本文以正運動技術EtherCAT運動控制器ZMC432和ZMC408CE為例,介紹正運動技術運動
    的頭像 發表于 03-06 11:47 ?1301次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制器</b>在ROS上的應用(上)
    主站蜘蛛池模板: 黄色日本网站 | 在线天堂资源www中文在线 | 天天艹| japanese色系tube日本护士 | 久热首页| 好吊日在线 | 国产午夜在线观看视频播放 | 色天使在线观看 | 日韩免费看 | 国产免费爽爽视频免费可以看 | 久久精品久噜噜噜久久 | 黄色在线观看网站 | 日本最猛黑人xxxx猛交 | 业余性自由色xxxx视频 | 爱爱小视频免费 | 你懂的在线看 | 四虎现在的网址入口 | 欧美videosex性欧美成人 | 片免费观看在线看 | 天天干天天草天天射 | 六月婷婷综合 | 亚洲国产成人精品不卡青青草原 | 一区二区三区久久 | 啪啪网站免费看 | 狠狠色丁香婷婷综合欧美 | 蜜色网| 一级毛片aaaaaa视频免费看 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 日韩色影视 | 日本操穴| 办公室桌震娇喘视频大全在线 | 亚洲资源在线播放 | 99草精品视频 | 五月婷花| 国产精品视频一区国模私拍 | 757福利影院合集3000 | 欧美特级生活片 | 天天插天天爱 | 五月亭亭免费高清在线 | 性欧美高清短视频免费 | 国产婷婷 |