• #maker+t=market
  • 3D列印服務
  • COSPLAY 3D 建模
  • 1
  • 2
  • 3

DIY CNC Machine.Taipei 造訪社團 » 機器

原文網址 石小川
2020-02-14 08:56:23

好久沒在這裡發表文章了,容我在此分享一下Python TCP/IP遠程監控機台程式實作。

網路發達後要做到機器設備遠端監控已非遙不可及了,網路通信在無人工廠的監控設備上會越來越重要。 圖中展示的系統是TCP/IP通訊協定的主從(Server-Client)式架構,TServer伺服端程式負責現場機器設備運作及回傳Sensor數據和即時影像給TClient用戶端處理。
為了方便教學緣故,已將網路封包加密演算法及帳號管理拿掉,通信程式精簡許多,比較容易理解,伺服端是以C#實作,用戶端會以C#及Python各實作一個版本。建議伺服端以C++或C#為主,而用戶端可用Python設計遠端控制APP,將來回傳的遙測大數據可很容易的用Python模組分析。

熟悉遠端操控軟硬體對將來有志設計無人工廠機器設備的朋友幫助很大,習得一技之長絕對增加競爭力。2月分我將開此TCP/IP主從式通信實作課程,因為現在病毒肆虐,採遠距教學方式較適合,沒有機器設備的同學我會提供兩台三軸機台做遠距連線操控練習,可在家寫Python程式做遠端連線操控,詳細辦法及日期我再擇期公布,歡迎有興趣的朋友來報名上課。

林志強
2020-02-14 09:16:55


原文網址 石小川
2019-10-03 19:28:13

使用Python語言做自動控制的方法 - I 軟體篇

[語法簡單明瞭]

Python語法簡單易學,最重要的是還有大量功能強大的免費模組可下載,其強大的應用層面已經發展到令人不可忽視的重要地位,甚至NASA也拿來當作航太人機介面的控制語言。早期接的專案我都是用Assembly、C、C++、C#等設計自動控制系統,這幾年我很多是改用Python來撰寫,好處是取得系統傳回的資料後,可很容易且快速的結合各種海量模組演算法發展出很專業的人工智慧機器。

[Python是跨平台語言]

Python本身沒有支援特定硬體控制的功能,也正因為如此它才能夠跨平台,但這不是原罪,相反的卻是它的優點,換句話說,在x86、Arm、Arduino、PC、手機或平板等不同的作業系統環境下,相同的程式皆可以很容易互相移植過去正常執行,這 print('免費資源 + 免費的模組 + 簡單易學') 根本是一場世界革命,能不紅嗎!

綜合以上講了一大堆,無非就是要說服工程師們是該改變自已接受世界脈動的時候了,我也不例外,以此共勉之!

[軟體開發]

接下來進入主題談論如何用Python開發一個多軸的CNC平台,會舉這個CNC專題當作例子是因為在我眼裡,CNC其實就是一個機器人,我的經驗是~只要搞懂CNC軟硬體知識後,無論是自駕車、四軸無人機或是工具機皆是囊中物,至於想要用它做些甚麼,端看你無限的想像力而定!

因為Python沒有直接存取硬體的介面,我的方法是用Python當作主程式,將底層存取硬體的API程式(動態連結程式庫 DLL)封裝成Python可調用的格式即可,如此一來多年使用C++/C#寫的程式庫都可引用了。因為程式很長, 為免洗板我簡略敘說過程如下:

(A). 封裝DLL程式庫成PyCNC.py 模組,其中 class __IMC_Pkg()就是封裝成類別的名稱, 將來Python與機器溝通的介面就是依靠這項。

#---------------------------------------------------------------------------

# 這是被呼叫的模組 : PyCNC.py

#---------------------------------------------------------------------------

# 需引用ctypes

import ctypes

import ctypes.wintypes

#------------------------------------------------------------------------------

class __IMC_Pkg():

def __init__(self):

self.ptr = ctypes.WinDLL('IMC_Pkg.dll') # _stdcall

#---------------------------------------------------------------------------

def Open(self, netcardId, imcId):

self.ptr.PKG_IMC_Open.argtypes = (ctypes.c_int, ctypes.c_int)

self.ptr.PKG_IMC_Open.restype = ctypes.POINTER(ctypes.c_voidp)

return self.ptr.PKG_IMC_Open(netcardId, imcId) #---------------------------------------------------------------------------

def Close(self, handle):

self.ptr.PKG_IMC_Close.argtypes = (ctypes.POINTER(ctypes.c_voidp), )

self.ptr.PKG_IMC_Close.restype = ctypes.c_int

return self.ptr.PKG_IMC_Close(handle)

#---------------------------------------------------------------------------

def MoveAbs(self, handle, pos, startvel, tgvel, wait, axis):

self.ptr.PKG_IMC_MoveAbs.argtypes = (ctypes.POINTER(ctypes.c_voidp), ctypes.c_int, ctypes.c_double, ctypes.c_double, ctypes.c_int, ctypes.c_int) self.ptr.PKG_IMC_MoveAbs.restype = ctypes.c_int

return self.ptr.PKG_IMC_MoveAbs(handle, pos, startvel, tgvel, wait, axis)

#---------------------------------------------------------------------------

def MoveAbs_P(self, handle, pos, startvel, tgvel, wait, axis): # P 輔助座標

self.ptr.PKG_IMC_MoveAbs_P.argtypes = (ctypes.POINTER(ctypes.c_voidp), ctypes.c_int, ctypes.c_double, ctypes.c_double, ctypes.c_int, ctypes.c_int) self.ptr.PKG_IMC_MoveAbs_P.restype = ctypes.c_int

return self.ptr.PKG_IMC_MoveAbs_P(handle, pos, startvel, tgvel, wait, axis)

.

.

(B). 主程式motion.py 要引用也很簡單, 只要加上PyCNC.py模組,就可以調用IMC_Pkg所有的功能

#---------------------------------------------------------------------------

# 這是主程式 : motion.py

#---------------------------------------------------------------------------

from CNC import PyCNC

IMC_Pkg = PyCNC.__IMC_Pkg()

#---------------------------------------------------------------------------

if(self.gHandle != None):

IMC_Pkg.Close(self.gHandle)

self.gHandle = IMC_Pkg.Open(netcardId, imcId)

if(self.gHandle != None): #//if(IsOpen())

if(IMC_Pkg.InitCfg(self.gHandle) != 0):

self.nAxis = IMC_Pkg.GetNaxis(self.gHandle) # 取得設備支援軸數

p, self.Position = self.GetPosition(3)

(C). 建議開發環境安裝Anaconda開發包, 在設計Python程式時可少走很多冤枉路,為了相容以前DLL程式庫,我是下載Anaconda3 - 32bit - Python3.7.3版本。

p.s. (1). IMC3xx/IMC4xx系列運動控制卡所有函數(IMC_Pkg.dll)我都有封裝成PyCNC.py以方便Python呼叫,有興趣的朋友可加入我臉書討論。

((2). 圖-1. 八軸運動+I/O+AD/DA控制卡應用圖例

圖-2. motion.py 主程式的視窗介面

影片-1. 使用motion.py 展示CNC軸控,也順便Demo飛行搖桿控制3軸及發射雷射

影片-2. 電腦執行motion.py情形

影片-3. 使用motion.py 執行G-Code,用雷射雕刻一個正圓

(3). 下回有機會再補上 : "使用Python語言做自動控制的方法 - I I 硬體篇"及 "使用Python語言做自動控制的方法 - I I I 通信篇" (UART、USB、TCP/IP)兩篇才算完整,並且教導大家如何組裝一台三軸運動控制平台的知識(機械結構及控制電路的接法),對於想創業設計自已機器的朋友不要錯過了。在臉書不適合長篇大論所以只能簡單敘述,總感覺見樹不見林,當然我也有開相關的指導課程,有興趣的朋友可上我臉書或私訊我。

Wei-Hsiung Huang
2019-10-03 19:48:42

Nice..

便宜十塊錢
2019-10-03 19:49:49

Python好用+1
我幫公司做一個簡易Web資訊看板
用一台PLC+乙太模組做收集各產線資訊
(我很懶得拓樸一大堆通訊線,跑RS485 To Zigbee)
由乙太模組把資訊先推到ModbusTCP層
再由Python讀ModbusTCP把讀到的值推到前端Web上
簡易的產能看板
跨平台真的好用

吳小東
2019-10-03 22:16:58

深深認同

石小川
2019-10-03 23:30:37

good job! 這是很好的應用, 以前接工廠資料收集器專案, 通信用RS232, 十台一大捆線, 現在看太不可思議了, 哈哈^^

便宜十塊錢
2019-10-03 23:57:01

石小川 我收集的PLC有做類心跳封包,只對有開機的機台通訊,不然Timeout會拖慢速度,越多台沒開越慢,所有的數值都在各機台PLC處理好,再收集
另外還有外加自動紀錄(5天)+控制各站自動歸零(各站開機時規零)

便宜十塊錢
2019-10-04 00:08:16

這個是第一個有線通訊(4台)
現在在做的無線(9台)快好了
規劃排點位跟處理問題較麻煩 ?

石小川
2019-10-04 12:12:53

感謝分享, 在關燈無人工廠掘起後, 機台間的通信越來越重要了, 大大的技術應該很有潛力, 我還停留在十幾年前TCP/IP抓封包技術, 有機會再請教您^^


原文網址 李派克
2019-09-02 17:19:02

# 更新 -- 補上 AMD RYZEN 3700 的不專業測試在最下面,也感謝Bise Chen 大大。

感謝各位前輩幫忙出的點子

感恩 朱興耀 大大的幫忙,讓我可以實驗一下我下一台電腦需要的方向

昨天測試的結果整理一下紀要:

1我的爛圖在fusion360上用朱大哥的機子32 CORE跑的結果,飛快,主要的原因cpu的時脈夠高,又可以多工處理。基本上,可以同時算七八個cam路徑

2. 我的i7因為是NB,四核就算全跑也只能跑一次一個cam路徑,但ram 16g 看來還是有餘

3. mac mini的i7 試的結果跟我的i7 的windows10 版本差不多速度

4.感謝另一位不露名的好友,支援我一台12 core的電腦,大概可以一次跑4個cam路徑, ram的話也是有餘,

綜合以上的結論,fusion360在cam(render的改天再試)的部份看來:

a. core數越多越好,可以同步運算

b. 時脈看來也是越高越好,每個路徑算時可以再更快

c. GPU在這邊用cam的部份應該沒什麼大幫助,可能在render圖上才會有感覺

d. RAM 反倒是夠就好,在這邊應該沒什麼主要因素,如果有影響應該主要還是ram的時脈

e. AMD 的cpu 因為我沒機子,所以沒得測,但估計在這邊主要運算還是無理數浮點運算,看來AMD討不太到便宜,應該有呼應到AMD的cpu有許多前輩說在這邊不好用的說法

Finally, 看起來多核多工處理還是最重要的,如果有需要潤圖才需要gpu數高的顯卡,但不知道fusion360有沒有辦法徹底去使用AMD(ATI)的引擎或是nV 的cuda..

再次感謝前輩們的幫忙,這個是大家幫忙的,所以把這些測的感受公佈讓大家知道,也不知道正不正確,反正多少有點參考價值。總之,有這個社團可以發問跟解惑真好!!!

以上!再次誠摯謝謝大家!

# 補上AMD3700的不專業測試

同一個圖,如果單比CAM一個路徑,看起來跟i7 跑一個路徑差不多,但這顆cpu的好處是多核的多工,感覺一次跑五個路徑真的好爽。{感謝@Bise Chen 提供機器讓我試一下}。

# AMD最近真的也是好物出一堆

# 如果我沒買AMD最大的理由應該是我想跑黑蘋果吧

Che Min Lin
2019-09-02 17:24:41

32核是Ryzen Threadripper 2990WX嗎?

朱興耀
2019-09-02 17:25:17

我只是剛好有在做動畫__有一台老機器<<真的還不夠用

朱興耀
2019-09-02 17:31:39

寫的好棒受教了

李派克
2019-09-02 17:41:56

哈˜˜這些都要歸功於各位大大

David Chuang
2019-09-02 17:41:57

原來如此 @@ 受教了

李派克
2019-09-02 17:42:24

我也是大受教了...

李派克
2019-09-02 17:43:37

我對這顆也有點興趣,不知道有沒有大大買這顆的

許阿瑋
2019-09-02 17:47:39

看來要組真香機了~~~~~~~~

李嘉祥
2019-09-02 18:04:47

NB與PC真的有不少效能落差

尤宏耀
2019-09-02 18:31:16

若要組電腦要如何配置,可以來討論一下!

吳水豚
2019-09-02 18:49:37

fusion 360 用ryzen並不會比較差~多核同時運算的效率 三代AMD RYZEN 還是比較高...

李派克
2019-09-02 18:59:03

可能吧。這個我沒機子。沒辦法實測

Bise Chen
2019-09-02 19:05:58

李派克 之前二代跟現在的三代RYZEN是沒辦法相提並論。比方說二代用Adobe全家桶表現不太好,但三代RYZEN則可說問題都解決了。

因此以往有人說AMD不如INTEL 那個以前可以算數,現在可就不見得了。

同樣的效能下,你願意多花錢就買Intel,想省錢可以買AMD。

吳水豚
2019-09-02 19:14:32

沒關係啦~你就去買INTEL好了~~~~

李派克
2019-09-02 19:23:51

吳水豚 你有事嗎?

李派克
2019-09-02 19:24:08

Bise Chen
2019-09-02 20:42:10

其實也還好…差個5~6千而已…^_^

盧修圻
2019-09-02 20:53:52

Bise Chen 站在系統開發的角度來說,AMD和INTEL比還是差很遠,可靠度和一些毛病還是I社比較少,AMD CPU他們自己的產品還porting不出來要靠3rd party救,這兩家有預算還是用I吧! 要不是I社之前產能不足,大家替代料只好往RYZEN去,不然它那波應該沒賣這麼好

AMD的CPU,摸多一點才會覺得怎麼這麼鳥 @@

Bise Chen
2019-09-02 21:07:04

盧修圻 你高興就好...XD

李派克
2019-09-02 21:09:36

Bise Chen 這種東西個自去體會就好了˜大家不用再討論

吳水豚
2019-09-02 21:09:42

盧修圻 繪圖軟體上INTEL處理器因為BUG更新後有時會有一點點的卡頓現象,我有顧客是設計公司,效能上差異多少先不說,但是那減少的卡頓現象,對設計時候的手感差很多...不過有質疑的話你就買INTEL就好....要不然到時候疑神疑鬼,自己心情不好...之前輸入數值,會停一下才能打數字....後來換RYZEN這問題就處理掉了~

Bise Chen
2019-09-02 21:10:58

李派克
我這裡上個月初剛組好一組 R7-3700 你要不要試試看?
要的話我來裝 Fusion 360...XD

李派克
2019-09-02 21:12:18

李派克
2019-09-02 21:12:40

我只要連進去試一下 看是anydesk或是teamview都可以

Bise Chen
2019-09-02 21:12:43

李派克 我抓一下...

李派克
2019-09-02 21:14:13

感謝您。。我個人其實沒有偏好那家的cpu,我唯一一台桌機也是AMD的。。有點老了 2008年組的,當時為了我的相機2460w畫素裝的。。

李派克
2019-09-02 21:16:20

說真的,我認真在看2990 WX中...

盧修圻
2019-09-02 21:16:56

吳水豚 那都是要fine tune所以要是會不順也不用意外,當然是挑順手的東西用,我只是就我自已做開發的角度在看兩家的產品, CPU我抽屜很多,還是那個道理,自已家裡開麵店的人不想吃麵,一顆幾萬的CPU下班後也不會想再碰,我自已在用的電腦還是六年前組的鳥機 XD

哪個CP值高就用哪個囉

Bise Chen
2019-09-02 21:20:38

李派克 ..........Fusion360 怎麼抓?..@@
之前都可以抓,現在一堆問題好像是教育授權過期...@@

李派克
2019-09-02 21:22:17

我可以連進去幫你處理

吳水豚
2019-09-02 21:23:06

盧修圻 反正就核心數加上去時脈加上去...速度就出來了~卡頓問題我只是說國外AUTODESK討論區上面之前2018年的結論跟處理方式,我對我客人也是同樣處理,也是正面回應~不過新版的2020年版本似乎有改善INTEL的.

Bise Chen
2019-09-02 21:24:22

李派克 私訊給你~

吳水豚
2019-09-02 21:40:48

盧修圻 反正用AMD跟INTEL差異到頂都不大,他想用INTEL就用INTEL~

Clarence Lee
2019-09-03 11:25:33

李派克
2019-09-03 11:29:22

大哥是對的

李派克
2019-09-03 11:30:07

GPU 出現很少...

方明亮
2019-09-03 21:06:59

gpu 應該是負責給我們「看」且好不好看。

cpufpu 才是算

有誤請指正

便宜十塊錢
2019-09-09 21:21:44

如果是要多工運算,執行緒多寡有點影響,相對軟體也要有支援多執行緒運算,以上參考


原文網址 石小川
2019-08-17 16:45:50

G-Code雷射切割成果

趁假日趕快補上回未完的下集!

在設計CNC刀路軟體時, 如果能掌握多軸聯動及圓弧直線插補演算法技巧, 那差不多成功一半了, 有心要走設計機器手定位的人一定要熟悉。DWG/DXF轉CNC程式內部採用Double雙倍浮點運算,至少抓小數點第四位,如果機器校準正確的話精度應沒問題。

此次臨時組裝一個雷射機台做軟體測試,使用一顆5.5W藍光半導體雷射頭做工件雕刻, 圖中皆是用上回介紹的圓弧插補演算法用雷射刻出直徑50mm的全圓, 刀路頭尾都準確接合, 真圓度也高,已符合一般業界需求了。

圖一是製作飛機用的巴沙木。(表面雕刻, 雷射頭停留久時可切斷、貫穿)

圖二是厚皮革。(表面雕刻, 雷射頭停留久時可切斷、貫穿)

圖三是一般影印紙。(切斷)

p.s. 如果要切斷材料功能,可用程式設定進給將G-Code Fxxxx調慢些, 或換功率更大的雷射頭。


原文網址 石小川
2019-08-14 13:40:17

淺談 G-Code 產生器

窮忙一陣子後今天終於可偷閒寫一下文章跟大家分享一下上回談的G-Code產生器了. 我用最簡單的CNC圓形切割來圖文解釋一下, 相信應該可以很快了解其中運作原理.

先解釋一下Entity名詞, Entity在CAD工程上是實體的意思, AutoCAD出圖後的元件我們稱為Entity, 如圓弧, 直線, 雲行線等皆是實體. 上回提過由DWG/DXF檔案 經過程式剖析分解後產生一連串Entity的資料, 如圖一, 是圓的Entity, 將它送入GCodeCircle(Entity) 函式就可很快地產生切圓的G-Code, 下面是GCodeCircle(Entity)程式範例:

//-------------------------------------------------------------------------

public string GCodeCircle(EntityRecord entityrecord)

{

string gCode = "";

Point3D center = new Point3D(entityrecord.Circle.Center.X, entityrecord.Circle.Center.Y, entityrecord.Circle.Center.Z);

double radius = entityrecord.Circle.Radius;

Point3D point = new Point3D(0, 0, 0);

point.X = center.X + radius;

point.Y = center.Y;

gCode += "G00 X" + (point.X - center.X).ToString("#0.0000") + " " + "Y"+ (point.Y - center.Y).ToString("#0.0000") + " " + "Z5.0000"+ "\n";

//此段是為了說明已經簡化許多參數

gCode += "G01" + " " + "Z-1.0000"+ " " + "F200"+ "\n";

gCode += "G02" + " " + "I-"+ radius.ToString("#0.0000");

return gCode;

}

圖二是產生的G-Code, 可直接送去機器做切割一個100mm的正圓.

另外之前有位朋友問我5軸聯動切向跟隨實作問題, 我列出部分程式碼給您參考一下, 基本上我大部分實作都是圓弧直線插補ArcLine()就可完成.

//---------------------------------------------------------------------------

//圓弧直線跟隨插補

//pos : Z軸直線運動位置

//axisNum = 3, 圓弧+直線運動軸數 X Y Z

public boolArcLine(int startx, int starty, int endx, int endy, int cx, intcy, int[] pos, int[] axis, int dir = 0, int axisNum = 3, double acc = 10, doubletgvel = 100, double endvel = 0, double feedRate = 1.0, int wait = 1, intfifo = (int)FIFO_SEL.SEL_PFIFO1, boolbAbs = true)

{

int st;

if(axisNum < 2 || axisNum > MAX_NAXIS)

return false;

//清空PFIFO

st = IMC_Pkg.PKG_IMC_PFIFOclear(gHandle, fifo);

if(st == 0)

return false;

//設置加速度和進給率

if(SetPFIFO(acc, feedRate, fifo) == false)

return false;

//映射軸

st = IMC_Pkg.PKG_IMC_AxisMap(gHandle, axis, axisNum, fifo);

if(st == 0)

return false;

double dx,dy;

dx = startx - cx;

dy = starty - cy;

double r1 = Math.Sqrt(dx * dx + dy * dy);

dx = endx - cx;

dy = endy - cy;

double r2 = Math.Sqrt(dx * dx + dy * dy);

//判斷, 如果起點到圓心距離r1 != 終點到圓心距離r2 表示圓弧軌跡不正確, 跳出不執行

if(r1 != r2)

return false;

//由當前位置移動到指定位置

if(bAbs) //絕對位置

st = IMC_Pkg.PKG_IMC_ArcLine_Pos(gHandle, endx, endy, cx, cy, dir, pos, axisNum - 2, tgvel, endvel, wait, fifo); //絕對位置

else

st = IMC_Pkg.PKG_IMC_ArcLine_Dist(gHandle, endx, endy, cx, cy, dir, pos, axisNum - 2, tgvel, endvel, wait, fifo); //相對位置

if(st == 0)

return false;

return true;

}

圖三是我執行雷射切割的機台, 雷射頭是5.5W藍光雷射, 下回再分享此G-Code雷射切割成果.

p.s. 在我的APP程式直接畫圖我是直接呼叫運動卡驅動CNC, 沒有經過G-Code產生器這道手續, 加快CNC處理速度, 除非是匯入DWG/DXF檔案才會呼叫G-Code 產生器。

黃小法
2019-08-14 14:25:41

這個有開源?

Jade Yang
2019-08-14 15:07:20

無私 , 給你讚。字串相加可改用 $”{}”你以後看才不會累


原文網址 葉益志
2019-07-12 02:25:17

請問有專業人士熟悉大量雕刻機的嗎?我有幾台大量的機器要整理

李榮烘
2019-07-12 03:04:11

回原廠很貴的,我碰過一次。自己斟酌...

林志強
2019-07-12 07:54:45

我不熟
但想要試試看
可否給小弟機會

方明亮
2019-07-12 08:07:27

鑄鐵機種啊

Hidibe G-power
2019-07-12 18:50:17

我也不熟,但要改系統可以一起討論研究

Chihfu Huang
2019-07-13 16:10:45

好奇,此內部是用什麼控制器?


原文網址 石小川
2019-07-11 17:28:35

DWG/DXF to CNC 工程 I - DWG/DXF圖檔解析篇

對於想用CNC製作一些零組件的朋友來說,要學會AutoCAD、SolidWork、uG、Fusion360、ARTCAM、PowerMill、 MasterCAM、Mach3等,我相信會嚇跑一票人的熱血。其實CAD/CAM套裝軟體很強但有很多功能幾百年也用不到,只是浪費錢而已,在接工廠自動控制客製化軟體方面絕大部分作動都很單純,我這裡是將所有功能精簡成 : /檔案/機器/刀具/G-Code sender,只要讀檔或在螢幕寫字、繪圖後自動產生G-Code直接送至CNC銑床或雷射加工,盡量能由機器代勞的就盡量隱藏在程式裏面,操作介面就只有一個螢幕面板Panel。

要做到這點須先解析DWG檔案結構,後續追加功能才有辦法走下去,AutoCAD DWG檔案簡直就是一個複雜的巨型圖層資料庫而且每兩年改版一次,建議還是用DXF圖檔相容性較高,有機會再談談DXF檔結構。這裡先分享一下DWG解析方法給有興趣研發的好友參考一 下。

基本上程式要解析其中的資料結構如下,有點長刪減一些函數但原理不變。

讀取DWG檔後打開資料庫取實體EntityName的字串名稱(約50個標籤名稱)一層層解析後繪圖即可原圖重現,看你要加圖、刪圖或送去產生G-Code等,另外如果用不著的功能就略過,沒必要全部實作,有興趣可一起討論,下回再討論G-Code產生器。

//-------------------------------------------------------------------

public void Draw(List<CadParse> cadparselist)

{

foreach(CadParse cadParse in cadparselist)

{

switch(cadParse.EntityName)

{

case "AcDbAlignedDimension":

break;

case "AcDbArc":

break;

case "AcDbArcDimension":

break;

case "AcDbBlockReference":

break;

case "AcDbBody":

break;

case "AcDbCircle":

DrawCircle(cadParse);

break;

case "AcDbPoint":

break;

case "AcDbDiametricDimension":

break;

case "AcDbViewport":

break;

case "AcDbEllipse":

DrawEllipse (cadParse);

break;

case "AcDbFace":

break;

case "AcDbHatch":

break;

case "AcDbLeader":

break;

case "AcDbLine":

DrawLine(cadParse);

break;

case "AcDb2LineAngularDimension":

break;

case "AcDbMInsertBlock":

break;

case "AcDbMline":

break;

case "AcDbMText":

break;

case "AcDbOle2Frame":

break;

case "AcDbOrdinateDimension":

break;

case "AcDb3PointAngularDimension":

break;

case "AcDbPolyFaceMesh":

break;

case "AcDbPolygonMesh":

break;

case "AcDbPolyline":

DrawPolyLine(cadParse);

break;

case "AcDb2dPolyline":

break;

case "AcDb3dPolyline":

break;

case "AcDbProxyEntity":

break;

case "AcDbRadialDimension":

break;

case "AcDbRasterImage":

break;

case "AcDbRay":

break;

case "AcDbRegion":

break;

case "AcDbRotatedDimension":

break;

case "AcDbShape":

break;

case "AcDbSolid":

break;

case "AcDb3dSolid":

break;

case "AcDbSpline":

break;

case "AcDbTable":

break;

case "AcDbTrace":

break;

case "AcDbWipeout":

break;

case "AcDbXline":

break;

case "AcDbPdfReference":

break;

case "AcDbDwfReference":

break;

case "AcDbDgnReference":

break;

} //end switch(cadParse.EntityName)

} //end foreach(CadParse cadParse in _cadParseList)

} //end public void Draw()


原文網址 石小川
2019-06-25 17:45:49

已將 iMC3xx2E 及 iMC4xxE/A系列所有開發工具、驅動軟體及文件都一次分享到Dropbox上,有興趣的朋友可瀏覽下載,將來我有試用版的軟體也會放在此網站提供免費試用。

我Dropbox網址如下:

只要下載壓縮檔即可 (rar, zip)

https://www.dropbox.com/…/2xu861…/AADz5dAuvRhq2Y9_M61Gp8PLa…

玩過PLC 及PC base控制後, 我現在重心主要是集中在PC base控制這一塊了, 吸引我的地方是PC base軟硬體可塑性太高了, 尤其人工智慧演算法很容易就可結合CNC機器, 這對我來說簡直是致命的吸引力, 想要做甚麼幾乎都可以, 當然不可否認的PLC還是有它的優點。

客戶通常認為PC設備便宜但還要加軟體費用很貴, 那是以前觀念, 更何況如果軟體是我們自已寫的那就另當別論了, 有這方面的技術問題歡迎互相技術交流!

謝謝囉^^

Don Si
2019-06-25 18:37:14

感謝分享

Eric Lin
2019-06-25 21:40:05

分享出去了

曾豪仁
2019-06-25 23:29:18

石兄有开班授课嗎?

陳必凱
2019-06-26 07:07:29

陳必凱
2019-06-26 07:07:52

開課+1

林志強
2019-06-27 21:39:36


原文網址 石小川
2019-06-01 14:32:26

雙眼攝影機測距 I – 設備實體製作

其實這個就是光學雷達(Lidar)的一種。在機器人視覺中模擬人眼雙目測距是最基本功夫,而且設備簡單只要兩個攝像頭加上演算法即可實現測距,沒有雷射輔助的話10公尺的誤差在1公分以內, 算是可接受範圍,精準度要看個人調校技巧了,加上雷射光或其他結構光輔助更可進一步將RGB影像加上深度資訊,換句話說就是上回談到的點雲圖了,這對機器人視覺來說太有用了。

在研讀聚合物(Polymer)時,對於壓克力的物理化學特性就深受其吸引,所以做產品或實驗時常拿壓克力練功。 因為壓克力有易碎特性,此次用CNC銑時參數調慢些, 壓克力厚: 30mm,Tool: D6*6*50,轉速: S6000, 進給: F300, 每層下切: 0.5mm,成果還不錯只是慢了些花了兩個鐘頭,下次實驗再調快否則有點大材小用,對不起這台專門銑不銹鋼模具的機器。

圖示是實作的設備,兩個攝像頭(Camera x 2) + 一個雷射頭(Laser x 1),外加演算法,就這麼簡單! 至於雙眼測距原理就是上童軍課的三角測距法,下回 “雙眼攝影機測距 I I – 原理解析” 再來聊聊了^^

p.s. 此次銑完壓克力邊緣沒後製熱處理,相信社團有很多人銑壓克力的經驗比我豐富,可來分享一下參數讓大家學習一下經驗, 感謝了^^

蔡文泰
2019-06-03 11:50:37

用雷割比較快哦


原文網址 石小川
2019-05-17 19:40:20

應用攝影機對CNC自動對刀程式的設計

對於非侵入性的偵測來說,我首推影像辨識技術,因為攝像頭價格越來越便宜,如果善用一些數位演算法的話,其實在CNC機台上可以做很多事,活用的話甚至可媲美幾百萬的進口機器。 我寫的這套VT軟體是結合了C++/C#/Qt + Mach3 + OpenCV和一些演算法來完成Z軸影像自動對刀功能,我是利用雷射來定位工件,其中攝像頭畸變須要校準才能量測準確,精密度我抓小數點第三位(單位mm)。 其它像工件尺寸量測、3D工件掃描建模直接出圖、或是機台要做手機拆解機器…等原理皆一樣,如果要做到物件直間掃描再CNC複製, 應該可挑戰一下,這就留給有興趣的人想想實作了, 先寫到這裡,祝各位好友假日愉快^^

林志強
2019-05-17 19:56:00

宜震陳
2019-05-17 20:00:39

已跪

辛育全
2019-05-17 22:20:29

哥 鏡頭可以考慮換焦段大一點的變異比較小,當然鏡頭品牌品質有差,且焦段大也不用看太多其他地方,可以增加你的解析,規格選一下可以不用校正就不要校正,然後改成背光,因為用環境光你需要限制客戶背景!