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

DIY CNC Machine.Taipei 造訪社團 » 經驗

原文網址 石小川
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-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

用雷割比較快哦


原文網址 Lung-zin Chen
2018-01-31 16:43:58

小小經驗談
昌盛9kw主軸用的是鋼珠夾爪
配來的刀桿iso30的拉釘是內r角,不是國際標準規格
據台灣刀桿廠說,是對岸自己搞的規格
下單前要問清楚

尤宏耀
2018-01-31 16:52:57

買他們的刀桿吧⋯⋯

尤宏耀
2018-01-31 16:54:35

或是辦爪給換了

Lung-zin Chen
2018-01-31 17:21:24

先用一陣子看看,我是怕刀子掉出來

Wing Yip
2018-01-31 17:53:22

那刀頭會搖晃,把拉釘换了好

廖元佑
2018-01-31 18:36:03

這是鋼珠抓用的....

Wing Yip
2018-01-31 19:00:42

如果爪內波子大小和拉釘的R不對就會搖晃(R接觸是三份之一的)標準是45度和60度,這要看拉釘有沒有爪痕才可以評論

Wing Yip
2018-01-31 19:02:34

我常用的是BT30\BT40\BT50

尤宏耀
2018-01-31 19:02:53

他們的主軸都是用鋼珠在拉!建議是買他們的刀桿就好了!

Wing Yip
2018-01-31 19:11:23

我的也是呀

尤宏耀
2018-01-31 21:59:57

他拉幾顆珠子啊?這r好大

Wing Yip
2018-02-02 17:49:16

要看主軸大小(3顆和5顆)和製造商

Wing Yip
2018-02-02 17:51:00

同一個方向裝上去,看看拉釘的抓痕就知道

尤宏耀
2018-02-02 18:09:37

我的是5顆珠,但是是用標準BT30刀桿..拉刀頭也是標準45度的


原文網址 洪志仁
2017-11-10 19:36:34

以前原本也有計畫用這種方式來做機台,但以我做複材飛機的經驗,環氧樹脂雖然硬化了,但其實還在變形中,需要很長的時間才能穩定,所以就做罷了!
或許下一台可以來考慮一下!

洪志仁
2017-11-10 19:37:10

廖元佑
2017-11-10 19:38:36

這玩意玩了一年多,不難玩

Tako Sun
2017-11-10 19:45:18

那兩個爺爺來頭不小!!!!!!

廖元佑
2017-11-10 19:46:09

小弟整台磨床10噸,整個都是人造花崗石…,組裝的時候只有腿軟

Devon Hsin
2017-11-10 21:15:12

上次才討論到灌FRP機架
沒想到真有人這樣做耶
只差在混合的材質不同

Devon Hsin
2017-11-10 21:16:04

不知道混石礫剛性好
還是混玻纖剛性好

Devon Hsin
2017-11-10 21:36:00

我對俗稱Poly的不飽和聚脂加玻璃纖維,的C/P值,有很高的期待,比Epoxy便宜多了XD

https://wapbaike.baidu.com/item/不饱和树脂

尤宏耀
2017-11-10 23:10:14

礦石鑄件!台灣有工廠在生產這類產品了

Tim Chang
2017-11-11 02:19:03

跟混凝土一樣,重要的是骨材的級配,樹脂扮演的角色跟水泥一樣只是連結材,用這個觀念才不會陷入樹脂強度跟收縮率的迷失

尤宏耀
2017-11-11 07:31:29

我目前施工的這台剛好也有用到這個工法,只是主結構是鋼,礦石加環氧樹脂用在補強與吸震

吳水豚
2017-11-26 01:15:22

膠水比例可以降到2∼3%,這才是好的人造石

Devon Hsin
2017-11-26 01:20:40

可是3%沒有用做人造石的翻滾式攪拌機器根本拌不動,DIY做不出3%的

吳水豚
2017-11-26 14:55:10

我有做出來重量百分比3-5%的hrc 65以上,其他就不說了,不過很小塊。

Devon Hsin
2017-11-26 14:56:08


原文網址 Joshua Chen
2017-07-14 11:50:32

請問有人有在淘寶買銑刀的經驗嗎?可不可以使用官方集運,還是用賣家直接寄順豐比較好?

夏瑀
2017-07-14 12:18:55

重量很重嗎

Joshua Chen
2017-07-14 12:21:30

沒買刀桿重量應該還好,主要是怕有禁運品的問題,怕轉運商不運

Michael Lin
2017-07-14 12:35:48

除非你買很多... 用順豐大概2~3天就到了...

葉飄
2017-07-14 12:59:21

這個可以集運沒問題,品名寫五金零件就好,有時寫的太詳細客服看不懂,他就一概跟你算特貨

Che Min Lin
2017-07-14 12:59:52

刀具只能賣家順豐直寄的樣子,我上周五剛買,前天收到,建議一次買超過一公斤,沒超過首重也是以首重計算運費,不過品質要注意就是了,我收到的其中一把刀柄鏽蝕了,雖然刀刃還能用,不過賣家很乾脆的那把直接退費,不用寄還給他。

林立元
2017-07-15 09:46:51

我都用集運

李派克
2017-07-18 02:09:37

我都直購直運,刀子沒多重,一次買多一點

Tako Sun
2017-07-18 12:01:53

順豐有用寄過螺桿直線運動零件,官方集運,黑名單永不使用 XD
小支的買過200支左右一次,因為體積很小,大支的話,就要注意體積重量。
會用順豐,就是很趕的東西,下訂到我手上平均3天,因為運費很貴,一般不急的都是用私人集運,平均十天,不同賣家下訂後所有的特貨普貨到我手上的時間。

洪志仁
2017-07-20 17:55:07

剛從淘寶買銑刀,使用非官方集運,前天下午6點寄出,今天到台灣了,明天應該會收到。

徐世清
2017-07-20 21:33:45

我都在這家買!這次帶學生乙級檢定都他們家的刀,大陸的碳化鎢刀子真便宜!希望大家還有便宜好用的刀子可以介紹給我!

【信锐数控刀具】,点击链接再选择浏览器打开http://c.b1yt.com/h.NrW1KD?cv=ASuH0bcB5Ge&sm=31c9a1 ,或复制这条信息¥ASuH0bcB5Ge¥后打开 ? 手机淘宝 ?

吳治彥
2017-07-20 23:42:48

買台灣的就好了阿~

徐世清
2017-07-24 11:15:11

台灣的太貴了⋯


原文網址 Devon Hsin
2017-02-28 16:55:21

雖然我已經都訂購一組來測試了
但到貨之前還是想先聽聽大家的經驗:

平底尖刀vs三菱尖刀vs雙刃直槽尖刀
哪個雕得最細、哪個最耐用?

單刃柱刀vs單刃螺旋刀vs雙刃螺旋刀
哪個雕得最乾淨漂亮?哪個最耐用?

尤宏耀
2017-02-28 17:03:51

都有不同用途!不同材質使用不同的刀具

Devon Hsin
2017-02-28 17:05:44

那麼以ABS料做浮雕來講
請問哪種道具最合適呢?

David Chuang
2017-02-28 17:16:55

其實有時候很直覺 單刀一定不好 不平衡, 雙刀以上就是切削快 但不好磨。我認為 雙刀刃最好用 因為還可以自己磨 越多刀越難磨

David Chuang
2017-02-28 17:17:13

雙刃銑刀

David Chuang
2017-02-28 17:26:55

@@ 但其實最好用來是可以換刀刃的雙刃銑刀~~~ 顆顆

Devon Hsin
2017-02-28 17:27:02

自己磨是指要用專用磨刀機?
還是刀子末端抵住砂紙或磨刀石轉動就可以呢?

David Chuang
2017-02-28 17:29:38

有專用磨刀機 但你可以自己磨 不在意也可以用3Dprinter 設計一下夾具角度對也可以用 磨鑽頭的磨刀機磨 @@ 套句海棉寶寶的話 發揮你的想像力~~~ 不行的話 你就問問 神奇海螺吧~~~

蔣益民
2017-02-28 17:57:23

浮雕或刻字可以用平底尖刀或是圓尖刀

Devon Hsin
2017-02-28 18:03:51

用放大鏡看了一下雙刃銑刀的刀刃後,覺得兩刃交會處好難磨啊

Devon Hsin
2017-02-28 18:05:29

話說磨過的地方塗層就沒了,所以一旦磨過就不耐用了對吧

Tako Sun
2017-02-28 19:29:43

以下僅針對業餘 DIY 出來的雕刻機。
磨刀,沒磨刀機的話,要練,拿爛尾鑽去練。
塑料有專用刀,其實一般金屬用刀也能用,只是要勤一點清屑,或是直接用空壓機去噴。 …… 查看更多

Devon Hsin
2017-02-28 23:32:31

我以為滾磨刀是手持雕刻機用的XD

Devon Hsin
2017-02-28 23:59:53

從廠商那邊得到的最新情報:
木頭的刀也可以雕壓克力
但壓克力的刀拿來雕木頭容易斷 …… 查看更多

賴冠仁
2017-03-01 00:19:34

鎢鋼雙刃雕ABS還蠻順的
一樣全新的刀 規格跟加工參數一樣
有些有毛邊有些沒有 要試試看


原文網址 Peter Chen
2016-06-07 16:25:55

感謝加入,想摸cnc 可是完全沒經驗 該從何開始呢?

Tommy Lin
2016-06-07 17:00:02

請從爬文開始....或許了解你有沒有空間擺這台雞絲.零件等級差異頗大,便宜的可以用木材當機身,也可以用角鐵甚至廢棄光碟機...但你要拿這來做什麼是一大重點...也決定你要做哪樣的機器~

Michael Lin
2016-06-07 18:32:05

先從用開始,要先了解機器後才有資格做機器,不然會花很多冤枉錢...

Mach Chuang
2016-06-07 20:04:55

用的同時試著學3D CAD並轉t成NC程式碼,這樣才會有成就感,常看到一些新手買了機器或自組機器到最後因無法繪製3D CAD只能刻些2D成品感到無趣而放棄

Peter Chen
2016-06-07 20:26:35

嗯 3d 不是問題,後端nc碼跟硬體設備不是很懂,目前主要都是送外包...

Mach Chuang
2016-06-07 20:38:06

蛙鞋!!

尤宏耀
2016-06-07 20:58:23

如果外包能做就不用為了喝牛奶養一頭牛!特別是人力有限的公司!

May May
2016-06-07 21:26:30

同感,雖然我知打樣很貴,但你接觸後會發現貴的有理

Tommy Lin
2016-06-07 21:56:06

除非是做爽的.不然養這頭牛會有點累...


原文網址 Mach Chuang
2016-03-11 20:07:20

社團內有哪位先進有自製自動換刀主軸的經驗?

Mach Chuang
2016-03-11 20:19:17

上個月參觀一台Roland的齒模加工機,想了想就買了兩個齒模機的筒夾回來研究,越看越想作一支小型內藏式自動換刀主軸,不知是否有人嘗試過!!

Ming Tsung Ko
2016-03-11 22:18:48

Ming Tsung Ko
2016-03-11 22:18:58

Ming Tsung Ko
2016-03-11 22:19:14

加油

廖元佑
2016-03-12 12:06:23

低調路過

Blue Hwang
2016-03-21 11:44:20

整機設計算嗎 @@

Ming Tsung Ko
2016-03-21 22:44:17

Blue Hwang 整機設計算嗎


原文網址 Add Wii
2015-10-22 18:02:11

11月20日,鼎創達集團總裁莫皓然將於[3D如水同樂會],與大家分享傳統產業跨足互聯網的革新經驗,正往互聯網路上的朋友們,不容錯過!
現場備有調酒,點心,歡迎大家的參與!
活動時間:2015-11-20 (五) 19:00 ~ 21:00
活動地點:台北市復興北路272號2樓
報名請至 http://www.accupass.com/go/addwii1120


原文網址 Simon Yen
2015-10-20 22:27:42

想請教各位前輩,若是剛開始學用 CNC ,要累積用刀的經驗,包括轉速、進給率、入刀深度……等等。會推薦從那種材料開始試用。(ex:木板、壓克力、PC 板……)

Mach Chuang
2015-10-20 22:31:42

到各刀具廠的網站,那裏大多會提供相關資訊

Mach Chuang
2015-10-20 22:41:30

Simon Yen
2015-10-20 22:44:52

太感激了!

Mach Chuang
2015-10-20 22:45:41

Simon Yen
2015-10-20 22:52:16

Simon Yen
2015-10-20 22:58:52

主機是900歐元,僅有你傳來聯結中照片的主結構而已,連主軸都沒有。

Simon Yen
2015-10-20 23:07:28

Simon Yen
2015-10-20 23:09:52

是我疏忽了

Michael Lin
2015-10-21 08:10:48

在官方網站上有相關的加工資料,可參考一下,如果沒有把握,先以低進刀量、低入刀深度來操作,看沒有問題再慢慢提升進刀量與入刀深度,依據下面影片切削鋁件是設定主軸轉速20,000轉、進刀量 1.5 mm/s、入刀深度 2mm https://www.youtube.com/watch?v=srex_0ukNS0

Simon Yen
2015-10-21 08:24:54

官方的範例似乎都沒有用切削液??

Michael Lin
2015-10-21 08:30:08

可能是機器設計的關係,在機器下面加裝集水槽要增加成本,不過沒有關係,在專門賣機械五金的店,有在賣一種用噴的切削液,在加工的時候你可以拿來噴在銑刀與加工物上,如果買不到相關的東西,你也可以把切削液裝在穩潔的空罐裡來用,這樣切削液就比較不會噴的到處都是了,你也不用再做一個集水盤...

Simon Yen
2015-10-21 08:58:22

感謝您的告知,由於對機械完全外行,很感謝您寶貴的經驗與知識分享。

蔡佳緯
2015-10-21 10:38:29

最近也開始在研究cnc 算是新手+1
我是保麗龍->木板->玻纖板
低入刀深度 低進刀量認同!但進刀率 轉速 盡量還是得配合加工材 刀具 有加工資料就更讚了
刀具還是得注意 之前用高速鋼洗刀加工2mm玻纖板 有時便宜刀刀具磨損很快 不鋒利後就斷刀了

Michael Lin
2015-10-21 11:38:19

刀具是消耗品,不同的材料用不同的刀具

Simon Yen
2015-10-21 13:12:11

那要讀的資料就多了,光是不同木材的材料特性也不同,有點頭痛。

Simon Yen
2015-10-21 13:14:56

目前試過三種材料,斷了三把刀,看來還是得多看點資料才行。

Mach Chuang
2015-10-21 17:13:25

Simon Yen 你的機器若沒改裝不太適合切削液加工

Simon Yen
2015-10-21 20:45:31

那不就只能靠進給率放慢,轉速提高。

Michael Lin
2015-10-22 08:03:53

不同刀具的供應商也是不同的,木工銑刀在木工材料行,切削金屬的銑刀在機械五金材料行,如果使用量大,要求高可直接向製造廠訂製,價格 Solid Carbide(全鎢鋼) > HSS(高速鋼) > TCT(貼鋼)

Simon Yen
2015-10-22 08:21:09

目前最終要施作的材料是壓克力與鋁合金,建議從何處入手呢?

Michael Lin
2015-10-22 08:27:48

壓克力與鋁合金的刀具,與一般處理木料或鐵金屬的銑刀不一樣,注重在排屑,Google 一下很容易找到供應商的...