Merge branch 'firmware-update-fixes' of github.com:dacarley/onefinity-firmware into laser-tool

This commit is contained in:
David Carley
2021-10-10 15:55:49 -07:00
11 changed files with 458 additions and 1425 deletions

View File

@@ -5,10 +5,11 @@
"repository": "https://github.com/OneFinityCNC/onefinity", "repository": "https://github.com/OneFinityCNC/onefinity",
"license": "GPL-3.0+", "license": "GPL-3.0+",
"dependencies": { "dependencies": {
"jshint": "",
"browserify": "", "browserify": "",
"jstransformer-stylus": "", "jshint": "",
"jstransformer-escape-html": "", "jstransformer-escape-html": "",
"jstransformer-stylus": "",
"lodash.merge": "4.6.2",
"pug-cli": "" "pug-cli": ""
} }
} }

View File

@@ -27,14 +27,19 @@
'use strict' 'use strict'
const merge = require("lodash.merge");
const config_defaults = require("../resources/onefinity_defaults.json");
const variant_defaults = {
machinist_x35: require("../resources/onefinity_machinist_x35_defaults.json"),
woodworker_x35: require("../resources/onefinity_woodworker_x35_defaults.json"),
woodworker_x50: require("../resources/onefinity_woodworker_x50_defaults.json"),
journeyman_x50: require("../resources/onefinity_journeyman_x50_defaults.json")
};
const api = require('./api'); const api = require('./api');
async function fetchJSON(url, options) {
const response = await fetch(url, options);
return response.json();
}
module.exports = { module.exports = {
template: '#admin-general-view-template', template: '#admin-general-view-template',
props: ['config', 'state'], props: ['config', 'state'],
@@ -99,17 +104,11 @@ module.exports = {
}, },
reset: async function () { reset: async function () {
const fetchConfig = async () => { const config = merge(
try { {},
return await fetchJSON(`onefinity_${this.reset_variant}_defaults.json`); config_defaults,
} catch (err) { variant_defaults[this.reset_variant]
api.alert("Invalid default config file"); );
console.error('Invalid default config file', err);
return undefined;
}
}
const config = await fetchConfig();
try { try {
await api.put('config/save', config) await api.put('config/save', config)

View File

@@ -60,8 +60,8 @@ function is_newer_version(current, latest) {
} }
} }
function is_object(o) {return o !== null && typeof o == 'object'} function is_object(o) { return o !== null && typeof o == 'object' }
function is_array(o) {return Array.isArray(o)} function is_array(o) { return Array.isArray(o) }
function update_array(dst, src) { function update_array(dst, src) {
while (dst.length) dst.pop() while (dst.length) dst.pop()
@@ -110,7 +110,7 @@ module.exports = new Vue({
modified: false, modified: false,
template: require('../resources/config-template.json'), template: require('../resources/config-template.json'),
config: { config: {
settings: {units: 'METRIC'}, settings: { units: 'METRIC' },
motors: [{}, {}, {}, {}], motors: [{}, {}, {}, {}],
version: '<loading>', version: '<loading>',
full_version: '<loading>' full_version: '<loading>'
@@ -132,7 +132,6 @@ module.exports = new Vue({
checkedUpgrade: false, checkedUpgrade: false,
firmwareName: '', firmwareName: '',
latestVersion: '', latestVersion: '',
password: '',
ipAddress: '0.0.0.0', ipAddress: '0.0.0.0',
wifiSSID: '', wifiSSID: '',
confirmShutdown: false, confirmShutdown: false,
@@ -140,10 +139,9 @@ module.exports = new Vue({
} }
}, },
components: { components: {
'estop': {template: '#estop-template'}, 'estop': { template: '#estop-template' },
'loading-view': {template: '<h1>Loading...</h1>'}, 'loading-view': { template: '<h1>Loading...</h1>' },
'control-view': require('./control-view'), 'control-view': require('./control-view'),
'settings-view': require('./settings-view'), 'settings-view': require('./settings-view'),
'motor-view': require('./motor-view'), 'motor-view': require('./motor-view'),
@@ -151,18 +149,21 @@ module.exports = new Vue({
'io-view': require('./io-view'), 'io-view': require('./io-view'),
'admin-general-view': require('./admin-general-view'), 'admin-general-view': require('./admin-general-view'),
'admin-network-view': require('./admin-network-view'), 'admin-network-view': require('./admin-network-view'),
'help-view': {template: '#help-view-template'}, 'help-view': { template: '#help-view-template' },
'cheat-sheet-view': { 'cheat-sheet-view': {
template: '#cheat-sheet-view-template', template: '#cheat-sheet-view-template',
data: function () {return {showUnimplemented: false}} data: function () { return { showUnimplemented: false } }
} }
}, },
events: { events: {
'config-changed': function () {this.modified = true;}, 'config-changed': function () {
'hostname-changed': function (hostname) {this.hostname = hostname}, this.modified = true;
},
'hostname-changed': function (hostname) {
this.hostname = hostname
},
send: function (msg) { send: function (msg) {
if (this.status == 'connected') { if (this.status == 'connected') {
@@ -171,10 +172,13 @@ module.exports = new Vue({
} }
}, },
connected: function () {
this.update()
},
connected: function () {this.update()}, update: function () {
update: function () {this.update()}, this.update()
},
check: function () { check: function () {
this.latestVersion = ''; this.latestVersion = '';
@@ -182,7 +186,7 @@ module.exports = new Vue({
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: 'https://raw.githubusercontent.com/OneFinityCNC/onefinity-release/master/latest.txt', url: 'https://raw.githubusercontent.com/OneFinityCNC/onefinity-release/master/latest.txt',
data: {hid: this.state.hid}, data: { hid: this.state.hid },
cache: false cache: false
}).done(function (data) { }).done(function (data) {
@@ -191,28 +195,25 @@ module.exports = new Vue({
}.bind(this)) }.bind(this))
}, },
upgrade: function () { upgrade: function () {
this.password = '';
this.confirmUpgrade = true; this.confirmUpgrade = true;
}, },
upload: function (firmware) { upload: function (firmware) {
this.firmware = firmware; this.firmware = firmware;
this.firmwareName = firmware.name; this.firmwareName = firmware.name;
this.password = '';
this.confirmUpload = true; this.confirmUpload = true;
}, },
error: function (msg) { error: function (msg) {
// Honor user error blocking // Honor user error blocking
if (Date.now() - this.errorTimeoutStart < this.errorTimeout * 1000) if (Date.now() - this.errorTimeoutStart < this.errorTimeout * 1000)
return; return;
// Wait at least 1 sec to pop up repeated errors // Wait at least 1 sec to pop up repeated errors
if (1 < msg.repeat && Date.now() - msg.ts < 1000) return; if (1 < msg.repeat && Date.now() - msg.ts < 1000) {
return;
}
// Popup error dialog // Popup error dialog
this.errorShow = true; this.errorShow = true;
@@ -220,75 +221,70 @@ module.exports = new Vue({
} }
}, },
computed: { computed: {
popupMessages: function () { popupMessages: function () {
var msgs = []; const msgs = [];
for (var i = 0; i < this.state.messages.length; i++) { for (let i = 0; i < this.state.messages.length; i++) {
var text = this.state.messages[i].text; const text = this.state.messages[i].text;
if (!/^#/.test(text)) msgs.push(text); if (!/^#/.test(text)) {
msgs.push(text);
}
} }
return msgs; return msgs;
} }
}, },
ready: function () { ready: function () {
$(window).on('hashchange', this.parse_hash); $(window).on('hashchange', this.parse_hash);
this.connect(); this.connect();
}, },
methods: { methods: {
metric: function () {return this.config.settings.units != 'IMPERIAL'}, metric: function () {
return this.config.settings.units != 'IMPERIAL'
},
block_error_dialog: function () { block_error_dialog: function () {
this.errorTimeoutStart = Date.now(); this.errorTimeoutStart = Date.now();
this.errorShow = false; this.errorShow = false;
}, },
toggle_video: function (e) { toggle_video: function (e) {
if (this.video_size == 'small') this.video_size = 'large'; if (this.video_size == 'small') this.video_size = 'large';
else if (this.video_size == 'large') this.video_size = 'small'; else if (this.video_size == 'large') this.video_size = 'small';
cookie.set('video-size', this.video_size); cookie.set('video-size', this.video_size);
}, },
toggle_crosshair: function (e) { toggle_crosshair: function (e) {
e.preventDefault(); e.preventDefault();
this.crosshair = !this.crosshair; this.crosshair = !this.crosshair;
cookie.set('crosshair', this.crosshair); cookie.set('crosshair', this.crosshair);
}, },
estop: function () { estop: function () {
if (this.state.xx == 'ESTOPPED') api.put('clear'); if (this.state.xx == 'ESTOPPED') api.put('clear');
else api.put('estop'); else api.put('estop');
}, },
upgrade_confirmed: async function () {
upgrade_confirmed: function () {
this.confirmUpgrade = false; this.confirmUpgrade = false;
api.put('upgrade', {password: this.password}).done(function () { try {
await api.put('upgrade');
this.firmwareUpgrading = true; this.firmwareUpgrading = true;
} catch (err) {
}.bind(this)).fail(function () { api.alert('Error during upgrade.');
api.alert('Invalid password'); console.error("Error during upgrade", err);
}.bind(this)) }
}, },
upload_confirmed: function () { upload_confirmed: function () {
this.confirmUpload = false; this.confirmUpload = false;
var form = new FormData(); const form = new FormData();
form.append('firmware', this.firmware); form.append('firmware', this.firmware);
if (this.password) form.append('password', this.password);
$.ajax({ $.ajax({
url: '/api/firmware/update', url: '/api/firmware/update',
@@ -300,13 +296,12 @@ module.exports = new Vue({
}).success(function () { }).success(function () {
this.firmwareUpgrading = true; this.firmwareUpgrading = true;
}.bind(this)).error(function (err) {
}.bind(this)).error(function () { api.alert('Firmware update failed');
api.alert('Invalid password or bad firmware'); console.error('Firmware update failed', err);
}.bind(this)) }.bind(this))
}, },
show_upgrade: function () { show_upgrade: function () {
if (!this.latestVersion) return false; if (!this.latestVersion) return false;
return is_newer_version(this.config.version, this.latestVersion); return is_newer_version(this.config.version, this.latestVersion);
@@ -333,11 +328,11 @@ module.exports = new Vue({
}.bind(this)) }.bind(this))
}, },
check_ip_address : function() { check_ip_address: function () {
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: 'hostinfo.txt', url: 'hostinfo.txt',
data: {hid: this.state.hid}, data: { hid: this.state.hid },
cache: false cache: false
}).done(function (data) { }).done(function (data) {
@@ -347,11 +342,11 @@ module.exports = new Vue({
}.bind(this)) }.bind(this))
}, },
check_ssid : function() { check_ssid: function () {
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: 'ssidinfo.txt', url: 'ssidinfo.txt',
data: {hid: this.state.hid}, data: { hid: this.state.hid },
cache: false cache: false
}).done(function (data) { }).done(function (data) {
@@ -361,42 +356,23 @@ module.exports = new Vue({
}.bind(this)) }.bind(this))
}, },
// check_disk_space : function() { get_ip_address: function () {
// $.ajax({
// type: 'GET',
// url: 'diskinfo.txt',
// data: {hid: this.state.hid},
// cache: false
//
// }).done(function (data) {
// console.debug('>', data);
// this.diskSpace = data;
// this.$broadcast('diskSpace', data);
// }.bind(this))
// },
get_ip_address : function() {
console.debug('get_ip>', this.ipAddress); console.debug('get_ip>', this.ipAddress);
return this.ipAddress; return this.ipAddress;
}, },
get_ssid : function() { get_ssid: function () {
console.debug('get_ssid>', this.wifiSSID); console.debug('get_ssid>', this.wifiSSID);
return this.wifiSSID; return this.wifiSSID;
}, },
// get_disk_space : function() { shutdown: function () {
// console.debug('get_disk>', this.diskSpace);
// return this.diskSpace;
// },
shutdown : function() {
this.confirmShutdown = false; this.confirmShutdown = false;
api.put('shutdown'); api.put('shutdown');
}, },
reboot : function() { reboot: function () {
this.confirmShutdown = false; this.confirmShutdown = false;
api.put('reboot'); api.put('reboot');
}, },
@@ -456,7 +432,6 @@ module.exports = new Vue({
}; };
}, },
parse_hash: function () { parse_hash: function () {
var hash = location.hash.substr(1); var hash = location.hash.substr(1);
@@ -472,7 +447,6 @@ module.exports = new Vue({
this.currentView = parts[0]; this.currentView = parts[0];
}, },
save: function () { save: function () {
api.put('config/save', this.config).done(function (data) { api.put('config/save', this.config).done(function (data) {
this.modified = false; this.modified = false;
@@ -481,7 +455,6 @@ module.exports = new Vue({
}); });
}, },
close_messages: function (action) { close_messages: function (action) {
if (action == 'stop') api.put('stop'); if (action == 'stop') api.put('stop');
if (action == 'continue') api.put('unpause'); if (action == 'continue') api.put('unpause');

View File

@@ -160,11 +160,6 @@ html(lang="en")
| Are you sure you want to upgrade the firmware to version | Are you sure you want to upgrade the firmware to version
| {{latestVersion}}? | {{latestVersion}}?
p.pure-control-group
label(for="pass") Password
input(name="pass", v-model="password", type="password",
@keyup.enter="upgrade_confirmed")
div(slot="footer") div(slot="footer")
button.pure-button(@click="confirmUpgrade=false") Cancel button.pure-button(@click="confirmUpgrade=false") Cancel
button.pure-button.pure-button-primary(@click="upgrade_confirmed") button.pure-button.pure-button-primary(@click="upgrade_confirmed")
@@ -175,11 +170,6 @@ html(lang="en")
div(slot="body") div(slot="body")
p Are you sure you want to upload firmware #[em {{firmwareName}}]? p Are you sure you want to upload firmware #[em {{firmwareName}}]?
p.pure-control-group
label(for="pass") Password
input(name="pass", v-model="password", type="password",
@keyup.enter="upload_confirmed")
div(slot="footer") div(slot="footer")
button.pure-button(@click="confirmUpload=false") Cancel button.pure-button(@click="confirmUpload=false") Cancel
button.pure-button.pure-button-primary(@click="upload_confirmed") button.pure-button.pure-button-primary(@click="upload_confirmed")
@@ -189,7 +179,7 @@ html(lang="en")
h3(slot="header") Firmware upgrading h3(slot="header") Firmware upgrading
div(slot="body") div(slot="body")
h3 Please wait... h3 Please wait...
p Loss of power during an upgrade may damage the controller. p This process should take less than 5 minutes. If it takes longer than this, please restart the controller and try via USB.
div(slot="footer") div(slot="footer")
message(v-if="popupMessages.length", :show="true") message(v-if="popupMessages.length", :show="true")

View File

@@ -26,18 +26,14 @@
################################################################################ ################################################################################
import os import os
import sys
import json import json
import tornado import tornado
import sockjs.tornado import sockjs.tornado
import datetime import datetime
import shutil
import tarfile
import subprocess import subprocess
import socket import socket
import time
from tornado.web import HTTPError from tornado.web import HTTPError
from tornado import web, gen from tornado import gen
import bbctrl import bbctrl
@@ -257,14 +253,9 @@ class FirmwareUpdateHandler(bbctrl.APIHandler):
def put_ok(self): def put_ok(self):
if not 'password' in self.request.arguments:
raise HTTPError(401, 'Missing "password"')
if not 'firmware' in self.request.files: if not 'firmware' in self.request.files:
raise HTTPError(401, 'Missing "firmware"') raise HTTPError(401, 'Missing "firmware"')
check_password(self.request.arguments['password'][0])
firmware = self.request.files['firmware'][0] firmware = self.request.files['firmware'][0]
if not os.path.exists('firmware'): os.mkdir('firmware') if not os.path.exists('firmware'): os.mkdir('firmware')
@@ -278,7 +269,6 @@ class FirmwareUpdateHandler(bbctrl.APIHandler):
class UpgradeHandler(bbctrl.APIHandler): class UpgradeHandler(bbctrl.APIHandler):
def put_ok(self): def put_ok(self):
check_password(self.json['password'])
self.get_ctrl().lcd.goodbye('Upgrading firmware') self.get_ctrl().lcd.goodbye('Upgrading firmware')
subprocess.Popen(['/usr/local/bin/upgrade-bbctrl']) subprocess.Popen(['/usr/local/bin/upgrade-bbctrl'])

View File

@@ -0,0 +1,326 @@
{
"tool": {
"tool-reversed": false,
"tool-enable-mode": "disabled",
"tool-direction-mode": "disabled",
"tool-type": "PWM Spindle",
"min-spin": 0,
"max-spin": 255
},
"switches": {
"switch-lockout": 250,
"estop": "disabled",
"switch-debounce": 5,
"probe": "normally-open"
},
"probe": {
"probe-diameter": 6.35,
"probe-ydim": 53.975,
"probe-slow-seek": 25,
"probe-fast-seek": 75,
"probe-zdim": 15.4,
"probe-xdim": 53.975
},
"version": "1.0.9",
"outputs": {
"load-1": "disabled",
"fault": "disabled",
"load-2": "disabled"
},
"settings": {
"junction-accel": 200000,
"max-deviation": 0.05,
"units": "METRIC",
"probing-prompts": true
},
"motors": [
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "X",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 3,
"search-velocity": 0.675,
"travel-per-rev": 4,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-max",
"reverse": true,
"stall-microstep": 8,
"min-soft-limit": -133,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Z",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1
}
],
"modbus-spindle": {
"baud": "9600",
"multi-write": false,
"regs": [
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
}
],
"bus-id": "1",
"parity": "None"
},
"pwm-spindle": {
"pwm-min-duty": 1,
"pwm-inverted": false,
"pwm-max-duty": 99.99,
"pwm-freq": 1000,
"dynamic-power": true,
"rapid-auto-off": true
},
"admin": {
"auto-check-upgrade": true
},
"gcode": {
"program-start": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n",
"tool-change": "(Runs on M6, tool change)\nM70\nG21\nS0\nM0 M6 (MSG, Change tool and attach probe)\nF100\n(probe to minimum z soft limit, which is -10)\nG38.2 Z-10\nG92 Z15.4\ng0 Z30\nM0 (MSG, Remove probe, start spindle)\nM72\n\n",
"program-end": "(Runs on M2, program end)\nM2"
}
}

View File

@@ -1,325 +1,14 @@
{ {
"tool": {
"tool-reversed": false,
"tool-enable-mode": "disabled",
"tool-direction-mode": "disabled",
"tool-type": "PWM Spindle",
"min-spin": 0,
"max-spin": 255
},
"switches": {
"switch-lockout": 250,
"estop": "disabled",
"switch-debounce": 5,
"probe": "normally-open"
},
"probe": {
"probe-ydim": 53.975,
"probe-slow-seek": 25,
"probe-fast-seek": 75,
"probe-zdim": 15.4,
"probe-xdim": 53.975
},
"version": "1.0.4",
"outputs": {
"load-1": "disabled",
"fault": "disabled",
"load-2": "disabled"
},
"settings": {
"junction-accel": 200000,
"max-deviation": 0.05,
"units": "METRIC",
"probing-prompts": true
},
"motors": [ "motors": [
{ {
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 16, "travel-per-rev": 16,
"idle-current": 1, "max-soft-limit": 1220
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "X",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 1220,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 3,
"search-velocity": 0.675,
"travel-per-rev": 4,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-max",
"reverse": true,
"stall-microstep": 8,
"min-soft-limit": -133,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Z",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1
}
],
"modbus-spindle": {
"baud": "9600",
"multi-write": false,
"regs": [
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
}
],
"bus-id": "1",
"parity": "None"
},
"pwm-spindle": {
"pwm-min-duty": 1,
"pwm-inverted": false,
"pwm-max-duty": 99.99,
"pwm-freq": 1000,
"dynamic-power": true,
"rapid-auto-off": true
},
"admin": {
"auto-check-upgrade": true
},
"gcode": {
"program-start": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n",
"tool-change": "(Runs on M6, tool change)\nM70\nG21\nS0\nM0 M6 (MSG, Change tool and attach probe)\nF100\n(probe to minimum z soft limit, which is -10)\nG38.2 Z-10\nG92 Z15.4\ng0 Z30\nM0 (MSG, Remove probe, start spindle)\nM72\n\n",
"program-end": "(Runs on M2, program end)\nM2"
} }
]
} }

View File

@@ -1,325 +1,13 @@
{ {
"tool": {
"tool-reversed": false,
"tool-enable-mode": "disabled",
"tool-direction-mode": "disabled",
"tool-type": "PWM Spindle",
"min-spin": 0,
"max-spin": 255
},
"switches": {
"switch-lockout": 250,
"estop": "disabled",
"switch-debounce": 5,
"probe": "normally-open"
},
"probe": {
"probe-ydim": 53.975,
"probe-slow-seek": 25,
"probe-fast-seek": 75,
"probe-zdim": 15.4,
"probe-xdim": 53.975
},
"version": "1.0.4",
"outputs": {
"load-1": "disabled",
"fault": "disabled",
"load-2": "disabled"
},
"settings": {
"junction-accel": 200000,
"max-deviation": 0.05,
"units": "METRIC",
"probing-prompts": true
},
"motors": [ "motors": [
{ {
"latch-velocity": 0.1, "max-soft-limit": 410
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "X",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 410,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 410
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 410,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 410
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 410,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 3,
"search-velocity": 0.675,
"travel-per-rev": 4,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-max",
"reverse": true,
"stall-microstep": 8,
"min-soft-limit": -133,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Z",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1
}
],
"modbus-spindle": {
"baud": "9600",
"multi-write": false,
"regs": [
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
}
],
"bus-id": "1",
"parity": "None"
},
"pwm-spindle": {
"pwm-min-duty": 1,
"pwm-inverted": false,
"pwm-max-duty": 99.99,
"pwm-freq": 1000,
"dynamic-power": true,
"rapid-auto-off": true
},
"admin": {
"auto-check-upgrade": true
},
"gcode": {
"program-start": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n",
"tool-change": "(Runs on M6, tool change)\nM70\nG21\nS0\nM0 M6 (MSG, Change tool and attach probe)\nF100\n(probe to minimum z soft limit, which is -10)\nG38.2 Z-10\nG92 Z15.4\ng0 Z30\nM0 (MSG, Remove probe, start spindle)\nM72\n\n",
"program-end": "(Runs on M2, program end)\nM2"
} }
]
} }

View File

@@ -1,325 +1,13 @@
{ {
"tool": {
"tool-reversed": false,
"tool-enable-mode": "disabled",
"tool-direction-mode": "disabled",
"tool-type": "PWM Spindle",
"min-spin": 0,
"max-spin": 255
},
"switches": {
"switch-lockout": 250,
"estop": "disabled",
"switch-debounce": 5,
"probe": "normally-open"
},
"probe": {
"probe-ydim": 53.975,
"probe-slow-seek": 25,
"probe-fast-seek": 75,
"probe-zdim": 15.4,
"probe-xdim": 53.975
},
"version": "1.0.4",
"outputs": {
"load-1": "disabled",
"fault": "disabled",
"load-2": "disabled"
},
"settings": {
"junction-accel": 200000,
"max-deviation": 0.05,
"units": "METRIC",
"probing-prompts": true
},
"motors": [ "motors": [
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "X",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 3,
"search-velocity": 0.675,
"travel-per-rev": 4,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-max",
"reverse": true,
"stall-microstep": 8,
"min-soft-limit": -133,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Z",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1
}
],
"modbus-spindle": {
"baud": "9600",
"multi-write": false,
"regs": [
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
}
],
"bus-id": "1",
"parity": "None"
},
"pwm-spindle": {
"pwm-min-duty": 1,
"pwm-inverted": false,
"pwm-max-duty": 99.99,
"pwm-freq": 1000,
"dynamic-power": true,
"rapid-auto-off": true
},
"admin": {
"auto-check-upgrade": true
},
"gcode": {
"program-start": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n",
"tool-change": "(Runs on M6, tool change)\nM70\nG21\nS0\nM0 M6 (MSG, Change tool and attach probe)\nF100\n(probe to minimum z soft limit, which is -10)\nG38.2 Z-10\nG92 Z15.4\ng0 Z30\nM0 (MSG, Remove probe, start spindle)\nM72\n\n",
"program-end": "(Runs on M2, program end)\nM2"
} }
]
} }

View File

@@ -1,325 +1,14 @@
{ {
"tool": {
"tool-reversed": false,
"tool-enable-mode": "disabled",
"tool-direction-mode": "disabled",
"tool-type": "PWM Spindle",
"min-spin": 0,
"max-spin": 255
},
"switches": {
"switch-lockout": 250,
"estop": "disabled",
"switch-debounce": 5,
"probe": "normally-open"
},
"probe": {
"probe-ydim": 53.975,
"probe-slow-seek": 25,
"probe-fast-seek": 75,
"probe-zdim": 15.4,
"probe-xdim": 53.975
},
"version": "1.0.4",
"outputs": {
"load-1": "disabled",
"fault": "disabled",
"load-2": "disabled"
},
"settings": {
"junction-accel": 200000,
"max-deviation": 0.05,
"units": "METRIC",
"probing-prompts": true
},
"motors": [ "motors": [
{ {
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 16, "travel-per-rev": 16,
"idle-current": 1, "max-soft-limit": 816
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "X",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
}, },
{ {
"latch-velocity": 0.1, "max-soft-limit": 816
"max-accel": 750,
"max-velocity": 10,
"search-velocity": 1.688,
"travel-per-rev": 10,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-min",
"reverse": false,
"stall-microstep": 8,
"min-soft-limit": 0,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Y",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 816,
"zero-backoff": 1.5
},
{
"latch-velocity": 0.1,
"max-accel": 750,
"max-velocity": 3,
"search-velocity": 0.675,
"travel-per-rev": 4,
"idle-current": 1,
"drive-current": 2.8,
"latch-backoff": 5,
"enabled": true,
"homing-mode": "stall-max",
"reverse": true,
"stall-microstep": 8,
"min-soft-limit": -133,
"max-switch": "disabled",
"step-angle": 1.8,
"stall-current": 1,
"stall-sample-time": 200,
"microsteps": 16,
"stall-volts": 2,
"axis": "Z",
"min-switch": "disabled",
"max-jerk": 1000,
"max-soft-limit": 0,
"zero-backoff": 1
}
],
"modbus-spindle": {
"baud": "9600",
"multi-write": false,
"regs": [
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
},
{
"reg-type": "disabled",
"reg-value": 0,
"reg-addr": 0
}
],
"bus-id": "1",
"parity": "None"
},
"pwm-spindle": {
"pwm-min-duty": 1,
"pwm-inverted": false,
"pwm-max-duty": 99.99,
"pwm-freq": 1000,
"dynamic-power": true,
"rapid-auto-off": true
},
"admin": {
"auto-check-upgrade": true
},
"gcode": {
"program-start": "(Runs at program start)\nG90 (Absolute distance mode)\nG17 (Select XY plane)\n",
"tool-change": "(Runs on M6, tool change)\nM70\nG21\nS0\nM0 M6 (MSG, Change tool and attach probe)\nF100\n(probe to minimum z soft limit, which is -10)\nG38.2 Z-10\nG92 Z15.4\ng0 Z30\nM0 (MSG, Remove probe, start spindle)\nM72\n\n",
"program-end": "(Runs on M2, program end)\nM2"
} }
]
} }