|
|
发表于 2021-2-21 02:01:53
|
显示全部楼层
本帖最后由 Live74 于 2021-2-21 02:03 编辑 8 S- t- j% t; c+ _
. Z e0 q5 S! r" `一直没冒过泡, 借楼主的贴子, 也说一下mach3没有意愿抬杠, 只是单纯的交流一下
2 N: X( J m8 A- H3 h6 G
; n1 _" a) m5 \% w6 { n1 L( Q# e! I" f8 S) }+ f
1. 组装机没有任何问题, MACH3不稳定的原因也完全不是组装机, 电脑的运行环境是12V, 内部不存在高压. 6 S# A# P) x' Q+ S
; g( j L; ]/ Y; Y' w
即便是因为插座地线没接, 外壳带电也完全不会影响到mach3的运行. % y3 ?! i: s- w7 N
7 e( c- T* B/ J$ P& x% @
同样, 与电脑本身资源有关系, 包括同时开的软件, 看电影什么, 但这个关系几乎可以小到忽略, 至于到底是什么影响最大, 这个一会后文会有说明.
9 G3 ]* X& M- {: a5 Y! P# ^3 B4 r& L9 E
) M8 x1 @9 G T
2. 并口和USB确实有一些区别, 但主要瓶颈不在这里, 并且提升有限, 稳定的并口甚至优于USB, . ^+ m! t: z+ Y
M" e# H4 [( e; w
所谓的USB控制板就是多了一层处理而已.! D) ~- h( w) l& d" s
1 l2 ^0 O0 T$ a+ J/ S
至于发那科三菱用什么光纤也纯属无稽之谈,
' P: L! K* a5 ]5 l G7 k0 P# k1 f
不知各位有没有见过比较早版本的三菱或者发那科, 不支持U盘的, 必须用电脑连着然后用DNC模式在线加工. 7 s0 {3 _0 z4 R* i, d
' W" s9 o' F0 b8 n
3 S# s4 M* H- p# b7 Z' b3. 脱机系统与mach3这种类型有本质区别, 一个是RTOS, 一个是借用了缓冲区.
3 L2 ]; B$ Q8 P7 f3 X. D* M% t1 }( @. g& s
) ]# o3 { X' }; I3 {
1 \1 F; Z2 j' M下面讲一下mach3的问题
- n+ ?0 L8 Q K. G( F5 }1 v1 ]- R: A& _% `
mach3, 实际是有三种模式的, 这三种里有完全不同的两种,
1 x) Z" F& ` c% ]' `
2 J5 |8 t9 f0 w5 [6 O7 |1. 积分插补
& K Q2 O/ V# K- J, r2. 可变时间输出1 D% ]/ ~- S. D+ I5 y
3. 完全指令3 I6 j4 n4 ?8 h" v7 r) u/ @
: z1 }3 j- n, Y0 a' l+ a5 L1 H- D
木友们使用的, 99%是上面的第一种和第二种.
2 D$ I' D) v# J; h, {5 V' K
1 s6 e" L U7 @+ s6 q. Z. m具体运行逻辑如下:7 H: n' R K# z" ^8 v0 X+ o- [$ m2 h0 R
* k1 H* a4 C$ G3 o
刀路文件传输至上位机 - 上位机分析刀路 - 构建脉冲环缓冲区 - 控制板从缓冲区中读取并发送脉冲
0 ^& E2 Z; n+ ~ C h1 t6 z, h" ]( Q2 e
就是一个标准的生产者-消费者模型
v' x6 Z# Z; F5 m" d: ` n% U6 J2 V ^
看起来没什么问题, 但windows并不是一个实时系统4 E) |% q+ t! I* r& r' @/ k; d
- F# E1 A' d, @, U1 z) M7 s就是说你让他延迟50毫秒, 实际并不会是50毫秒, 而是60或者40. z7 [1 f& ^* ^( j
9 t& T, U- I& [& t; ?上古时代的工业级和脱机控制器的会在控制板上实现一个缓冲区, 就是说上位机一次性往控制板发送多少条命令, 然后控制板一行一行去跑, 但是mach3不是.
/ R% m' W5 J$ E$ A
) Y3 \6 B6 G5 S" emach3的缓冲区是基于脉冲的, 而不是G代码行数, 而本身插补就要占用缓冲区, 那么问题来了.& l* V j; E2 Y* \, P9 S
2 O1 ]( b( T7 ^+ ]
当刀路比较复杂时, 你的CPU在一直往缓冲区里加东西, 然后控制板一直从里面拿数据. 而每个周期, 理论最小值为200us
$ {( x, U V8 J7 W/ U1 b3 O S2 ?4 z6 f `" Z; J
由于插补需要在上位机计算, 也叫做软插补, 这里面可能会有一种工况, 200us过了, 你新的数据还没进去,
( W* J: a' i$ \: K; Z7 t9 z! q4 V& p' o& ]! l* i! P7 b% l
导致了消费者吃的太快, 生产者吐的太慢, 这就是为什么工业机不用mach3的原因. - O0 Q) A: c* E
' Q# K/ b" P/ D8 c1 \7 C
用三个字来说, 实时性. 另一种方式的方式的实时性很好, 下面就是详细分析.
, k% a2 u8 D9 z/ a8 `0 K$ S2 V0 M/ C2 g6 e n4 P
$ g9 S* [+ J, Y. T5 g% L$ t
下面说另一种模式, 指令输出
" f$ k* H) q$ [3 q# _6 ` P. J- l, X1 Y) e6 O+ \9 S0 R
这种模式下, mach3直接将代码传给下位机, 缓冲区同样在下位机.5 ?+ ]9 h% y8 v* t
7 |! i+ v6 [0 W& O% t! D' M* L
例如G1 X1 Y2 F200 这种代码, 一次性传100行& p( A1 u5 A+ m; @
, i$ S, V1 b3 ]0 Y" ?( m$ U# p然后下位机完成解析, 并发送脉冲
) w8 O% b* G3 `4 f
1 h6 _) N) ?. e在这种工况下mach3的工作形式和一些上古时代的发那科没有本质区别, 据我所知nmotion是这种形式
! s5 [ {- a5 b7 k, Y. T
) `- @; R5 s. H" Z4 H但是问题很明显, 这东西太老了, 上古年代的逻辑了, 现在拿出来用性价比太低了, 并且离完全脱机只差了一层膜, 随便加个什么东西就变成了全脱机模式./ g* G6 ]# G. L; E# [2 K: n8 N3 e
/ L' |+ A* v) B5 S( p; t/ H5 u
怎么分辨这种控制器, 很简单, 这种控制器上面是带了一颗芯片的. 你看着有个方方的东西, 那就对了' P" J4 F5 D6 Y6 I9 U
_; ^2 l+ K7 ^6 x那就顺便提一提这种存在的问题
6 m4 ] k) |3 n) E+ |6 |- {( B) C$ c3 Q9 a3 ]3 g+ ~4 n# K
很简单, 不够高速, 性价比太低, 本身性能有限, 下面讲一下逻辑- }% j2 ^; y# @2 o3 F E6 V
* Q4 Q5 S1 ?, | ~. ?
既然我已经做了G代码解析, 那么2021年了为什么不用性价比更高, 速度更快的FPGA来做这一步而用ARM芯片来做? 8 f% s: d" P5 T4 S1 l* J
# Q2 e2 _5 t! } z [8 z# x" I既然我已经做了G代码解析, 为什么我不加个STM32, 加几个按钮来做个上位机, 反正也就是把G代码以每行的形式喂给他既然我已经能实现G代码解析了为什么还要留在mach3, 做自己的一整套控制器不好吗? ' l( {' u; _: L4 T/ V4 Y& s( J( k
最后, 虽然我没做过这种东西, 但这种东西的本质十有八九底层都是GRBL, 然后自己写对接mach3的接口和专用IO接口, 当然, 可能有个别G命令需要自己实现. 不过总体逻辑就是这样
) n9 l( L$ N' ~. \9 B$ Z1 L
5 Z' H2 Q% F, X
5 q# c+ G# C+ y! ~% z
2 d8 F! O* a6 n/ b. L--------------------. L+ I" H/ D: `! m1 ?
, l+ s& C, g @+ l: A; y% `. t! p
7 l- E1 Z* V# h( T& M3 x写了这么多, 做个总结.
! c9 \, ^$ G9 b6 k, |" V" H
8 j7 Z0 k e9 V2 R1. 几十块钱的mach3卡, 实时性太差, 这里给大家推荐另外一样东西, linuxcnc, 跑在rtlinux的, 那种十几块钱的mach3卡就可以用, 但是效果和mach3天差地别.
* H" F" v' W' e$ y" ` t- _
- J( T R0 p$ g; R1 _2 Z2. 脱机控制器, 不管是磁动力还是DDCS还是乱七八糟的小作坊自己做个UI+GRBL的拼凑货, 都比几百的mach3外部控制器要强, 并且还省了电脑钱不好吗
/ l1 z( d, g; w% O( H8 I% H- q- A* w+ @
/ @# K% p0 s+ g, _& |" n- X8 u5 A$ b
, W) v$ E0 U! V' B1 Q |
|