попытаюсь разъяснить...
представим параметр (в данном случае #5399) - как один регистр , или как переменную...
командуем в программе (g-код) :
M66 E00 L00
емс пишет в наш регистр значение , которое в данный момент присутствует на пине motion.analog-in-00
почему именно на этом пине - потому что мы его сами в команде указали (E00)
теперь значение параметра будет храниться "в регистре" пока мы не поменяем это значение (а поменять его мы можем только опять командой M66)...
командуем в g-коде например:
M66 E02 L00
этим мы "перезаписали" наш "регистр" , и теперь там значение ,которое на пине motion.analog-in-02 ( потому как скомандовали E02)
======
то есть - в момент ,когда отрабатывает в программе строка кода вида
M66 Exx L00 в параметр записывается
значение пина
motion.analog-in-xx
=========================
Ворон226 писал(а):Т.о. переменная #5399 по умолчанию содержит значение motion.digital-in-[00...03], либо motion.analog-in-[00...03]???
аналогично - переменная #5399 содержит значение того пина , с которого мы "списали" его значение командой M66 ...
а уже сама команда M66 своими аргументами (P
xx- digital или E
xx- analog ) указывае -
с какого именно пина взять значение...
++++++++++++++++++++++
посмотри пример ,который я приводил выше:
Код: Выделить всё
;Turning
O<turning> sub
(axis,hide)
G18 G7
M66 E4 L00
#5 = #5399 (Finish Z )
M66 E3 L00
#1 = #5399 (Finish X)
M66 E0 L0
#2 = #5399 (metres/min surface speed)
M66 E2 L0
#3 = #5399 (Cut / Increment )
M66 E1 L0
#4 = #5399 (Feed / Pitch)
M66 E5 L0
#6 = #5399 (Radius)
M66 E6 L0
#7 = #5399 (angle)
G92 x0 z0 (store position)
g92.2
#14 = [#5211 * 2] (starting X)
#13 = #5213 (starting Z)
g92.1
G7 ; Lathe Diameter Mode
G18 ; XZ Plane
G21 ; Metric Units
G90 ; Absolute Distance
G91.1 ; but not or arcs
G96 D1500 S#2 ; Constant Surface Speed Mode
g95 F#4 ; Feed-Per-Rev Mode
m3 ;Start Spindle
g4p1 ; Wait to reach speed
;Turning
(axis,show)
/ (debug, Turning finish dia #1 start dia #14 start length #13 finish length #5)
/ m1
O100 WHILE [#14 GT [#1+#3]]
g0 X #14
#14=[#14-#3]
G1 X #14
G1 Z [#5 + #6] X[#14 + [#13 - [#5 + #6]]*TAN[#7]]
O101 IF [#6 GT 0]
G2 Z#5 X[#14 + 2 * #6 + [#13 - [#5 + #6]]*TAN[#7]] I[#6]
O101 ELSE
G1 X[#14 + #3 + [#13 - [#5 + #6]]*TAN[#7] + 0.3]
O101 ENDIF
G0 Z[#13]
O100 ENDWHILE
G0 x#1
G1 Z [#5 + #6] X[#1 + [#13 - [#5 + #6]]*TAN[#7]]
O102 IF [#6 GT 0]
G2 Z#5 X[#1 + 2 * #6 + [#13 - [#5 + #6]]*TAN[#7]] I[#6]
O102 ELSE
G1 X[#1 + #3 + [#13 - [#5 + #6]]*TAN[#7] + 0.3]
O102 ENDIF
G0 Z #13
G0 X #1 ; For touch-off
M5
O<turning> endsub
M2
он как раз наглядно демонстрирует работу этой команды...
тут мы имеем панель PYVCP , в которой пользователь должен установить некие параметры для обработки...
(такое подобие ngcgui)
вот мы заполнили поля:
- Выделение_071.png (7.4 КБ) 3953 просмотра
теперь скоммутировали пины этх текстовых полей с нашими аналоговыми входами motion.analog-in-xx :
Код: Выделить всё
net surface_speed_in pyvcp.surface_speed => motion.analog-in-00
net feed_per_rev_in pyvcp.feed_per_rev => motion.analog-in-01
net cut_in pyvcp.cut => motion.analog-in-02
net target_x_in pyvcp.target_X => motion.analog-in-03
net target_z_in pyvcp.target_Z => motion.analog-in-04
net radius_in pyvcp.radius => motion.analog-in-05
net angle_in pyvcp.angle => motion.analog-in-06
и теперь запустив наш G-код мы
поочередно перезаписываем значение с наших пинов панели
сначала в параметр #5399 ,
и сразу же в свои переменные (#1, #2, и тд.)
по сылке есть все файлы для "попробовать"...
разобрав этот
пример - всё станет на свои места...