• 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-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-04-19 19:20:09

Fusion 360 免費視頻培訓


原文網址 林志強
2019-02-25 00:29:04

哈哈
剛搬來
歡迎大家來
打屁聊天
看機台
打哈哈
三月分
有免費的Artcam 基礎教學
歡迎光臨指教

黃小法
2019-02-25 00:32:50

請問免費教學課程日期是?

林志強
2019-02-25 00:37:17

黃小法

還沒決定

林志強
2019-02-25 00:37:20

平凡
2019-02-25 01:31:07

地址在那啊

林大雄
2019-02-25 01:35:14

請問在那

陳詠嘉
2019-02-25 02:02:35

在哪!在哪!

Chih-i Hou
2019-02-25 06:33:57

請問在那,感謝~~

大鳥
2019-02-25 07:54:00

報名

林志強
2019-02-25 07:56:09

0982327769

林志強
2019-02-25 07:56:48

林志強
2019-02-25 08:00:14

相片中
有地址

林志強
2019-02-25 08:07:38

電話可以直接加賴

Eric Lin
2019-02-25 09:11:40

設備齊全……免費使用?

林志強
2019-02-25 09:25:08

Eric Lin


你想免費使用嗎哈

Eric Lin
2019-02-25 09:52:50

曾鈺憲
2019-02-25 12:35:30

想聽

陳詠嘉
2019-02-25 12:36:29

林志強 你都問了,我想~哈哈哈

林志強
2019-02-25 12:46:00


我實在找不到
免費的機器使用啊

林志強
2019-02-25 12:46:20

別人
也不會免費送我啊

林志強
2019-02-25 12:46:47

如果有
免費的
我一定跟您說

陳詠嘉
2019-02-25 12:47:33

林志強 哈哈哈 一句話就好了,"免費要怎麼生存下去"~

陳詠嘉
2019-02-25 12:49:10

打屁聊天是以秒計費還是以次計費,呵呵

Eric Lin
2019-02-25 13:18:26

彭士瑋
2019-02-25 13:20:20

林志強
2019-02-25 13:35:22

吳治彥
2019-02-25 19:44:50

曾鈺憲
2019-02-25 19:53:05

林志強 要怎麼報名呢?

蘇炳文
2019-02-25 23:02:07

林志強 你這裏可以兼做maker space,國內一般許多只有辦公空間,或者擺些只能切薄木板的雷切機或3D列印機就大張旗鼓招會員了,你這裏有好幾台CNC銑床,車床之類的機具,全台少見了,加油

林志強
2019-02-25 23:47:14

李派克
2019-02-25 23:48:33

太強大了!

林志強
2019-02-25 23:48:40

Jeff Lin
2019-02-25 23:56:45

李派克 搞一台啊

李派克
2019-02-25 23:58:00

Jeff Lin 不行。要搞兩台!

Jeff Lin
2019-02-25 23:58:45

李派克 我說cnc 餒

李派克
2019-02-26 00:11:46

oh。。。

黃小法
2019-02-26 11:03:33

在弄個磨床、旋臂鑽床、cnc放電機

林志強
2019-02-26 17:53:13

投影機
電腦
雕刻機
到位

林志強
2019-02-26 17:53:30

林志強
2019-02-26 17:53:41

石正志
2019-03-01 15:04:19

三月份有免費的課程安排嗎?

石正志
2019-03-01 15:06:40

有接案代工打樣嗎?

林志強
2019-03-01 15:11:23

林志強
2019-03-01 15:11:39

石正志
2019-03-01 15:16:40

林志強 我先加你好友

林志強
2019-03-01 15:21:44


原文網址 陳泳睿
2017-09-08 20:46:47

各位先進,徵求公模產品免費放在我的平台上,我的平台即將獲得政府推廣,作為製造業共享經濟。

有公模,可以免費上架,供人使用,後段會自動產生BOM,屆時訂單就會跑到你們家工廠生產。

所謂公模就是不是客人所付錢開的私模,或者是自己開發的模具,想要讓創客、研發人員或工業設計,可以直接再圖庫拉出來使用,可以直接線上報價,然後後端自動產生BOM讓工廠不花任何功夫就可以看工單生產。

以上任何工具都是免費,一旦產生BOM,訂單就由工廠生產。

平台的Target是少量多樣,用這套平台,讓有創意的人更容易實現,屆時上面越來越多人,就有數據。就可以分析。有量的人可以私下談,如果他要用在別的地方,就智慧財產權來看,公模首先披露,無法取得專利。

平台上還可以開店,還可以成為自家工廠的工具。有多種方式合作。

我解決了製造業前端對客戶的開發所耗時的開發、行政、溝通的成本。

平台會結合智慧財產權、資訊安全與隱私權,保護工廠。

製造業的共享經濟

吳水豚
2017-09-16 04:03:46

又一個吸政府經費的


原文網址 Devon Hsin
2017-02-09 23:17:35

佛心版免費CAM軟體:BlenderCAM
只要有.stl檔,就能產生多種類型的刀路!
(幾年前有Po過一次,不過好像很多人還不知道)

Devon Hsin
2017-02-09 23:39:34

作者還有計畫開發第四軸的部分,但卡在他自己沒預算購入第四軸做實驗,需要大家贊助,看到他的贊助名單,人數和金額實在少得可憐,隨便掏個一百塊出來我都能上榜了,大家有興趣的話也可以一起幫忙他喔

翁偉吾
2017-02-09 23:51:49

之前用過 解救了做印章的需求CYCU stamp found on # Thingiverse https://www.thingiverse.com/thing:624080

Danny Kuo
2017-02-17 09:07:33

好東西

Devon Hsin
2017-02-17 09:33:46

是的,光是省下一套萬把塊的MeshCAM就超值了,雖然不像傻瓜型CAM的簡單易懂,但因為Blender本身的強大功能,使用彈性是超級大的

Tzuhua Chen
2017-02-17 10:34:06

謝謝分享,最近正在學習CNC


原文網址 Star Lin
2015-12-12 20:59:32

請問有大大使用免費的轉G code的軟體嗎?

邱文生
2015-12-13 11:14:02

您可以試試看 Inkscape;阿簡老師的網頁給您參考
http://a-chien.blogspot.tw/2014/11/cnc.html

耶髏爾
2015-12-26 00:51:14

我最近有找到一款軟體 免費不鎖功能 只有轉gcode幾次會出現麻煩您贊助美金50 也可無視等待6秒即可 支援2.5d雕刻

耶髏爾
2015-12-26 00:54:42

www.estlcam.com
供您參考


原文網址 David Lin
2015-11-12 19:58:42

11月28~29 Maker Faire Tainan
各式DIY工貝,作品
免費入場,歡迎 踴躍參觀


原文網址 陳泳睿
2015-10-07 23:04:57

至德科技,一個雲端商業平台,提供您一線束雲端CAD工具與下拉選單,不僅讓您免費在雲端設計線束,並可以及時計價、上架、下單。更可以讓您在平台上開設自己的店面,從分潤機制賺錢。產品一旦下單工廠直接生產,平台上設計出來的產品已經被工廠認可,去除掉冗長的確認前置作業,讓產品生產更有效率、更有品質。還可以少量多樣哦!


原文網址 陳泳睿
2015-10-07 22:52:58

至德科技,一個雲端商業平台,提供您一線束雲端CAD工具與下拉選單,不僅讓您免費在雲端設計線束,並可以及時計價、上架、下單。更可以讓您在平台上開設自己的店面,從分潤機制賺錢。產品一旦下單工廠直接生產,平台上設計出來的產品已經被工廠認可,去除掉冗長的確認前置作業,讓產品生產更有效率、更有品質。還可以少量多樣哦!