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

@@ -32,23 +32,23 @@ var cookie = require('./cookie')('bbctrl-');
var Sock = require('./sock'); var Sock = require('./sock');
function is_newer_version(current, latest) { function is_newer_version(current, latest) {
const pattern = /(\d+)\.(\d+)\.(\d+)(.*)/; const pattern = /(\d+)\.(\d+)\.(\d+)(.*)/;
const currentParts = current.match(pattern); const currentParts = current.match(pattern);
const latestParts = latest.match(pattern); const latestParts = latest.match(pattern);
if (!currentParts || !latestParts) { if (!currentParts || !latestParts) {
return false; return false;
} }
// Normal version comparisons // Normal version comparisons
const major = latestParts[1] - currentParts[1]; const major = latestParts[1] - currentParts[1];
const minor = latestParts[2] - currentParts[2]; const minor = latestParts[2] - currentParts[2];
const patch = latestParts[3] - currentParts[3]; const patch = latestParts[3] - currentParts[3];
// If current is a pre-release, and latest is a release // If current is a pre-release, and latest is a release
const betaToRelease = latestParts[4].length === 0 && currentParts[4].length > 0; const betaToRelease = latestParts[4].length === 0 && currentParts[4].length > 0;
switch (true) { switch (true) {
case major > 0: case major > 0:
case major === 0 && minor > 0: case major === 0 && minor > 0:
case major === 0 && minor === 0 && patch > 0: case major === 0 && minor === 0 && patch > 0:
@@ -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);
@@ -325,80 +320,61 @@ module.exports = new Vue({
this.$emit('check'); this.$emit('check');
} }
this.check_ip_address(); this.check_ip_address();
this.check_ssid(); this.check_ssid();
//.check_disk_space(); //.check_disk_space();
}.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) {
console.debug('>', data); console.debug('>', data);
this.ipAddress = 'IP:' + data; this.ipAddress = 'IP:' + data;
this.$broadcast('ipAddress', data); this.$broadcast('ipAddress', data);
}.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) {
console.debug('>', data); console.debug('>', data);
this.wifiSSID = 'SSID:' + data; this.wifiSSID = 'SSID:' + data;
this.$broadcast('wifiSSID', data); this.$broadcast('wifiSSID', data);
}.bind(this)) }.bind(this))
}, },
// check_disk_space : function() { get_ip_address: function () {
// $.ajax({ console.debug('get_ip>', this.ipAddress);
// type: 'GET', return this.ipAddress;
// 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);
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');
}, },
connect: function () { connect: function () {
@@ -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"
}
} }

View File

@@ -995,12 +995,12 @@ tt.save
width 98% width 98%
.reset-variants .reset-variants
padding-left 40px padding-left 40px
padding-bottom 20px padding-bottom 20px
display grid display grid
grid-template-rows repeat(4, auto) grid-template-rows repeat(4, auto)
grid-template-columns min-content auto grid-template-columns min-content auto
grid-gap 20px 10px grid-gap 20px 10px
input[type="radio"] input[type="radio"]
width 30px width 30px