hCNC2 - Контроллер ЧПУ
Добавлено: 12 июн 2010, 22:04
Ню так мож продолжим "мучения"?
Допустим, есть железяка с интерфейсом RS-232, с встроенной машиной линейной интерполяции на четыре оси.
Протокол примитивный, и состоит почти из одной строки, которую должно посылать ПО в порт:
Где:
"H1" - код комманды (в данном случае линейная интерполяция)
"X1000000" - координата (в шагах), в которую нужно переместить ось
"F00000" - скорость перемещения (шаг\с)
Строка всегда фиксированной длинны. Заканчивается коммандой Chr(13) (конец строки).
За "ноль" железяка принимает миллион ("1000000"), сделано для избавления от отрицательных значений. Т.е. если нуна на 100 шагов в плюс, то, например, "X1000100", если 100 шагов в минус, то "X0999900" и т.п.
Строка пишется всегда целиком. Если по каким-то из четырёх осей в данной строке перемещаться ненужно, то посылаем её предыдущее значение. Например, нуна на 100 шагов в плюс по X и 50 шагов в минус по Z:
После отправки строки в порт, железяка перемещает нужные оси и как только завершит этот процесс, выдаст в порт "Target ok". ПО получит, и поймёть что можно слать следующую строку.
Как видно, в протоколе запас по скорости до 99кГц. По длине перемещения в полушаге (если 1мм = 400 шагов) до 5м.
Кинулся своё ПО писать. Пол-проги написал, потом что-то грустно стало ^__^
СтОит с этим всем мучатся? Писака под ПК из мя никакой *__*
Допустим, есть железяка с интерфейсом RS-232, с встроенной машиной линейной интерполяции на четыре оси.
Протокол примитивный, и состоит почти из одной строки, которую должно посылать ПО в порт:
Код: Выделить всё
H1X1000000Y1000000Z1000000A1000000F00000
"H1" - код комманды (в данном случае линейная интерполяция)
"X1000000" - координата (в шагах), в которую нужно переместить ось
"F00000" - скорость перемещения (шаг\с)
Строка всегда фиксированной длинны. Заканчивается коммандой Chr(13) (конец строки).
За "ноль" железяка принимает миллион ("1000000"), сделано для избавления от отрицательных значений. Т.е. если нуна на 100 шагов в плюс, то, например, "X1000100", если 100 шагов в минус, то "X0999900" и т.п.
Строка пишется всегда целиком. Если по каким-то из четырёх осей в данной строке перемещаться ненужно, то посылаем её предыдущее значение. Например, нуна на 100 шагов в плюс по X и 50 шагов в минус по Z:
Код: Выделить всё
H1X1000100Y1000000Z0999950A1000000F00000
Как видно, в протоколе запас по скорости до 99кГц. По длине перемещения в полушаге (если 1мм = 400 шагов) до 5м.
Кинулся своё ПО писать. Пол-проги написал, потом что-то грустно стало ^__^
СтОит с этим всем мучатся? Писака под ПК из мя никакой *__*