|
发表于 2021-2-21 02:01:53
|
显示全部楼层
本帖最后由 Live74 于 2021-2-21 02:03 编辑
4 B% |3 ^ ~& d, D5 k& b% F: ~6 g4 ?/ ]9 }6 U; ]1 H+ l$ l
一直没冒过泡, 借楼主的贴子, 也说一下mach3没有意愿抬杠, 只是单纯的交流一下
# U, f; A$ D7 w# q+ j7 o& h+ I! u, v! M3 t% M
. i$ V( L' E- y9 N
1. 组装机没有任何问题, MACH3不稳定的原因也完全不是组装机, 电脑的运行环境是12V, 内部不存在高压.
7 k3 {# J9 z& R% i) F1 J( E1 e1 x$ ~) I( Y
即便是因为插座地线没接, 外壳带电也完全不会影响到mach3的运行.
8 [3 O& j$ ~5 A8 ^' ~+ s+ n5 }) a5 F% f
同样, 与电脑本身资源有关系, 包括同时开的软件, 看电影什么, 但这个关系几乎可以小到忽略, 至于到底是什么影响最大, 这个一会后文会有说明.9 F* w: |! Y6 T2 U3 k' I
S6 U/ {- S8 Z0 a- Y' a9 E/ N. c- Z1 w3 z* D
2. 并口和USB确实有一些区别, 但主要瓶颈不在这里, 并且提升有限, 稳定的并口甚至优于USB, ! L4 G8 ^# w7 f$ b+ f/ Y1 B7 n
1 ?( V2 o5 }- B
所谓的USB控制板就是多了一层处理而已.8 a. R1 ?8 k8 K& ]# J$ r2 Y$ r8 @
& `$ L, c& j9 n, t3 f& d" ]
至于发那科三菱用什么光纤也纯属无稽之谈, & r4 Z7 C3 G( \
2 `1 w& F+ F; G: n, I6 u& w不知各位有没有见过比较早版本的三菱或者发那科, 不支持U盘的, 必须用电脑连着然后用DNC模式在线加工. $ ^: I4 \1 P- u+ Z3 e( E
7 o$ g. A& R4 ?" ^% G) i+ |
Z& P# P, m! o3 L$ B' g0 P" ~3. 脱机系统与mach3这种类型有本质区别, 一个是RTOS, 一个是借用了缓冲区.4 H) r) p+ O) N; N
9 n* [# I+ c7 T# k+ |$ Q, x
# L( b+ d4 d! Q$ a" c. w7 G
; R8 N& d9 Q: | p7 f下面讲一下mach3的问题
5 L" O, W/ D6 }/ Q; E/ `$ d P
5 s6 [9 ^; h; {. cmach3, 实际是有三种模式的, 这三种里有完全不同的两种, e2 K0 b; Y2 h/ v" O) K8 r4 w1 E
! P' O$ @& k+ t+ P- ?3 k1. 积分插补
+ f1 I: |; c, `$ F6 _# p# F2. 可变时间输出
, e; N* P6 y; R6 Y3. 完全指令9 P2 n6 q" E/ l! F* M
9 t o- ?4 V. `) k* ?; M0 V
木友们使用的, 99%是上面的第一种和第二种. $ [8 o9 e1 e1 M! i& N8 ]: \
$ O7 h1 x, O0 m& V' b
具体运行逻辑如下:
; F# g8 T% ]+ Y. z" J8 }" b
% ~( l2 C5 N* |2 g+ @刀路文件传输至上位机 - 上位机分析刀路 - 构建脉冲环缓冲区 - 控制板从缓冲区中读取并发送脉冲4 b5 D, \7 H( E9 M" H4 a+ `$ ]# x
8 k. I* I9 B6 C2 \1 d* _# ^
就是一个标准的生产者-消费者模型9 \2 L9 B* H+ J$ R4 w2 C/ X
) }7 e0 {* @" W6 Y% a2 L看起来没什么问题, 但windows并不是一个实时系统' H- |0 d i4 B% R* e, D' O1 Z
/ R' L& w8 D9 f# a7 E) g就是说你让他延迟50毫秒, 实际并不会是50毫秒, 而是60或者40.
: D) S" T2 ]9 c# {# c; j6 }) t' D. Z5 P9 I5 D" x5 @
上古时代的工业级和脱机控制器的会在控制板上实现一个缓冲区, 就是说上位机一次性往控制板发送多少条命令, 然后控制板一行一行去跑, 但是mach3不是.5 T& V8 F# w/ p( {. W/ v {6 y/ b
, V! L& p; u0 v7 _4 i/ w; Qmach3的缓冲区是基于脉冲的, 而不是G代码行数, 而本身插补就要占用缓冲区, 那么问题来了. C; I% Z5 k0 u0 b+ w. E
& ~! ?0 d! M8 ^当刀路比较复杂时, 你的CPU在一直往缓冲区里加东西, 然后控制板一直从里面拿数据. 而每个周期, 理论最小值为200us
8 x! d7 w) ~2 z5 c
" z3 ^+ P7 v. |% N! W3 d由于插补需要在上位机计算, 也叫做软插补, 这里面可能会有一种工况, 200us过了, 你新的数据还没进去, / Y) Q3 H" d. E$ P/ L; b3 z; t
: ~. Z( [. U& K0 P9 {导致了消费者吃的太快, 生产者吐的太慢, 这就是为什么工业机不用mach3的原因. 3 z7 R, b8 w2 |! f) M( W3 ^
1 F4 }0 {" y& O Q& A
用三个字来说, 实时性. 另一种方式的方式的实时性很好, 下面就是详细分析.
6 T7 M8 [$ ?- V( w; k: @" Y. r
0 H1 X! P0 t" n% j# ?9 K1 C G% i6 R( ~; D# ]1 u: P) o+ u
下面说另一种模式, 指令输出- x0 m/ @0 Y* Z' s0 @" ]& R
; W% v5 n) O9 d- p6 i
这种模式下, mach3直接将代码传给下位机, 缓冲区同样在下位机.3 w9 D0 w# P$ N
% [# B4 o8 M: g, k/ l4 Z: ~
例如G1 X1 Y2 F200 这种代码, 一次性传100行. T4 D0 J" n0 X7 P
0 c! s, k+ I7 _6 t4 ?' N然后下位机完成解析, 并发送脉冲& f* @! m7 ], o# \! D
$ R5 n0 `5 v }+ s V$ y- G
在这种工况下mach3的工作形式和一些上古时代的发那科没有本质区别, 据我所知nmotion是这种形式. e% x1 Q, F! f) u3 F0 Z7 L
4 k, ]9 W6 L5 x. i* s* z- T6 P
但是问题很明显, 这东西太老了, 上古年代的逻辑了, 现在拿出来用性价比太低了, 并且离完全脱机只差了一层膜, 随便加个什么东西就变成了全脱机模式.
. o+ J- ]( g+ G+ D
% w" P7 H' \- ^7 D! n N2 S怎么分辨这种控制器, 很简单, 这种控制器上面是带了一颗芯片的. 你看着有个方方的东西, 那就对了
A- F4 v6 `0 k; ?; B. e3 N. e. W( \0 g2 X- K+ e4 ^
那就顺便提一提这种存在的问题
% D, K2 u: \2 T. E6 x# B/ A$ W& V: ?# y, n) y, Q; R2 C& X
很简单, 不够高速, 性价比太低, 本身性能有限, 下面讲一下逻辑
; t" v. `8 q- s; W( {7 p; [% b( d; @# x2 e5 j
既然我已经做了G代码解析, 那么2021年了为什么不用性价比更高, 速度更快的FPGA来做这一步而用ARM芯片来做? ' x+ F+ m" a) z& ~, P
, _, z0 a- j6 c
既然我已经做了G代码解析, 为什么我不加个STM32, 加几个按钮来做个上位机, 反正也就是把G代码以每行的形式喂给他既然我已经能实现G代码解析了为什么还要留在mach3, 做自己的一整套控制器不好吗?
% R+ d d2 [8 C8 V+ n& C! @. W最后, 虽然我没做过这种东西, 但这种东西的本质十有八九底层都是GRBL, 然后自己写对接mach3的接口和专用IO接口, 当然, 可能有个别G命令需要自己实现. 不过总体逻辑就是这样
/ A" T/ z1 ]& g0 I6 Y! s
0 E9 F7 @7 p U5 c6 T) p, N$ u
: J$ w7 Q) F! U' d' D( r
1 E( I+ U, W. L" e" n--------------------
& U F. `7 o- x
' o% ^' g4 ]3 ?# x, |) q+ R9 ]9 {7 t$ t- U$ f# @" @
写了这么多, 做个总结.; Z" o0 V7 n7 q; h9 L& y
9 x3 d/ `# C. @1. 几十块钱的mach3卡, 实时性太差, 这里给大家推荐另外一样东西, linuxcnc, 跑在rtlinux的, 那种十几块钱的mach3卡就可以用, 但是效果和mach3天差地别.
4 o7 f6 X# t+ d0 `. n1 Z. Q( C. d5 P! P( S f5 N) o+ A h# B* E
2. 脱机控制器, 不管是磁动力还是DDCS还是乱七八糟的小作坊自己做个UI+GRBL的拼凑货, 都比几百的mach3外部控制器要强, 并且还省了电脑钱不好吗 ! s: c! L: F9 W/ J2 u
& ^ v& x( P/ N' r3 C+ p( k3 c+ v+ M- Z
! R- ?# b S& v |
|