2
Makefile
2
Makefile
@@ -107,7 +107,7 @@ $(TARGET_DIR)/index.html: $(wildcard src/pug/templates/*)
|
|||||||
$(TARGET_DIR)/index.html: $(wildcard src/js/*)
|
$(TARGET_DIR)/index.html: $(wildcard src/js/*)
|
||||||
$(TARGET_DIR)/index.html: $(wildcard src/stylus/*)
|
$(TARGET_DIR)/index.html: $(wildcard src/stylus/*)
|
||||||
$(TARGET_DIR)/index.html: src/resources/config-template.json
|
$(TARGET_DIR)/index.html: src/resources/config-template.json
|
||||||
$(TARGET_DIR)/index.html: $(wildcard src/resources/onefinity_*_defaults.json)
|
$(TARGET_DIR)/index.html: $(wildcard src/resources/onefinity*defaults.json)
|
||||||
|
|
||||||
$(TARGET_DIR)/%.html: src/pug/%.pug node_modules
|
$(TARGET_DIR)/%.html: src/pug/%.pug node_modules
|
||||||
@mkdir -p $(shell dirname $@)
|
@mkdir -p $(shell dirname $@)
|
||||||
|
|||||||
@@ -448,6 +448,19 @@ module.exports = new Vue({
|
|||||||
},
|
},
|
||||||
|
|
||||||
save: function () {
|
save: function () {
|
||||||
|
const selected_tool = this.config.tool['selected-tool'];
|
||||||
|
const saveModbus = selected_tool !== "pwm" &&
|
||||||
|
selected_tool !== "laser" &&
|
||||||
|
selected_tool !== "router";
|
||||||
|
const settings = {
|
||||||
|
['tool']: { ...this.config.tool },
|
||||||
|
['pwm-spindle']: { ...this.config['pwm-spindle'] },
|
||||||
|
['modbus-spindle']: saveModbus ? { ...this.config['modbus-spindle'] } : undefined
|
||||||
|
}
|
||||||
|
delete settings.tool['tool-type'];
|
||||||
|
|
||||||
|
this.config['selected-tool-settings'][selected_tool] = settings;
|
||||||
|
|
||||||
api.put('config/save', this.config).done(function (data) {
|
api.put('config/save', this.config).done(function (data) {
|
||||||
this.modified = false;
|
this.modified = false;
|
||||||
}.bind(this)).fail(function (error) {
|
}.bind(this)).fail(function (error) {
|
||||||
|
|||||||
@@ -27,97 +27,224 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var api = require('./api');
|
const api = require('./api');
|
||||||
var modbus = require('./modbus.js');
|
const modbus = require('./modbus.js');
|
||||||
|
const merge = require("lodash.merge");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
template: '#tool-view-template',
|
template: '#tool-view-template',
|
||||||
props: ['config', 'template', 'state'],
|
props: ['config', 'template', 'state'],
|
||||||
|
|
||||||
|
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
address: 0,
|
address: 0,
|
||||||
value: 0
|
value: 0,
|
||||||
|
toolList: [
|
||||||
|
{
|
||||||
|
id: "disabled",
|
||||||
|
name: "Disabled"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "router",
|
||||||
|
type: "PWM Spindle",
|
||||||
|
name: "Router (Makita, etc)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "laser",
|
||||||
|
type: "PWM Spindle",
|
||||||
|
name: "Laser (J Tech, etc)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "pwm",
|
||||||
|
name: "PWM Spindle"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "unsupported-separator",
|
||||||
|
name: "Unsupported Tools",
|
||||||
|
disabled: true,
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "huanyang-vfd",
|
||||||
|
name: "Huanyang VFD",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "custom-modbus-vfd",
|
||||||
|
name: "Custom Modbus VFD",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "ac-tech-vfd",
|
||||||
|
name: "AC-Tech VFD",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "nowforever-vfd",
|
||||||
|
name: "Nowforever VFD",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "delta-vfd",
|
||||||
|
name: "Delta VFD015M21A (Beta)",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "yl600-vfd",
|
||||||
|
name: "YL600, YL620, YL620-A VFD (Beta)",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "fr-d700-vfd",
|
||||||
|
name: "FR-D700 (Beta)",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "sunfar-e300-vfd",
|
||||||
|
name: "Sunfar E300 (Beta)",
|
||||||
|
unsupported: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "omron-mx2-vfd",
|
||||||
|
name: "OMRON MX2",
|
||||||
|
unsupported: true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
components: {
|
||||||
components: {'modbus-reg': require('./modbus-reg.js')},
|
'modbus-reg': require('./modbus-reg.js')
|
||||||
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
'state.mr': function () {this.value = this.state.mr}
|
'state.mr': function () { this.value = this.state.mr }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
events: {
|
events: {
|
||||||
'input-changed': function() {
|
'input-changed': function () {
|
||||||
this.$dispatch('config-changed');
|
this.$dispatch('config-changed');
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
ready: function () {
|
||||||
|
this.value = this.state.mr;
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
regs_tmpl: function () {
|
||||||
|
return this.template['modbus-spindle'].regs;
|
||||||
|
},
|
||||||
|
|
||||||
|
tool_type: function () {
|
||||||
|
return this.config.tool['tool-type'].toUpperCase();
|
||||||
|
},
|
||||||
|
|
||||||
|
selected_tool: function () {
|
||||||
|
return this.config.tool['selected-tool'];
|
||||||
|
},
|
||||||
|
|
||||||
|
is_pwm_spindle: function () {
|
||||||
|
return this.selected_tool == 'pwm';
|
||||||
|
},
|
||||||
|
|
||||||
|
is_modbus: function () {
|
||||||
|
switch (this.selected_tool) {
|
||||||
|
case "disabled":
|
||||||
|
case "laser":
|
||||||
|
case "router":
|
||||||
|
case "pwm":
|
||||||
|
return false;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
modbus_status: function () {
|
||||||
ready: function () {this.value = this.state.mr},
|
return modbus.status_to_string(this.state.mx);
|
||||||
|
}
|
||||||
|
|
||||||
computed: {
|
|
||||||
regs_tmpl: function () {return this.template['modbus-spindle'].regs},
|
|
||||||
tool_type: function () {return this.config.tool['tool-type'].toUpperCase()},
|
|
||||||
|
|
||||||
|
|
||||||
is_modbus: function () {
|
|
||||||
return this.tool_type != 'DISABLED' && this.tool_type != 'PWM SPINDLE'
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
modbus_status: function () {return modbus.status_to_string(this.state.mx)}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
get_reg_type: function (reg) {
|
change_selected_tool: function () {
|
||||||
return this.regs_tmpl.template['reg-type'].values[this.state[reg + 'vt']]
|
const selectedToolSettings = this.config['selected-tool-settings'] || {};
|
||||||
|
const settings = selectedToolSettings[this.selected_tool] || {};
|
||||||
|
this.config.tool = merge({}, this.config.tool, settings['tool']);
|
||||||
|
this.config['pwm-spindle'] = merge({}, this.config['pwm-spindle'], settings['pwm-spindle']);
|
||||||
|
this.config['modbus-spindle'] = merge({}, this.config['modbus-spindle'], settings['modbus-spindle']);
|
||||||
|
|
||||||
|
const tool = this.toolList.find(tool => tool.id == this.config.tool['selected-tool']);
|
||||||
|
this.config.tool["tool-type"] = tool.type || tool.name;
|
||||||
|
|
||||||
|
this.$dispatch("config-changed");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
show_tool_settings: function (key) {
|
||||||
|
switch (true) {
|
||||||
|
case key === "tool-type":
|
||||||
|
case key === "selected-tool":
|
||||||
|
return false;
|
||||||
|
|
||||||
get_reg_addr: function (reg) {return this.state[reg + 'va']},
|
case this.selected_tool === "disabled":
|
||||||
get_reg_value: function (reg) {return this.state[reg + 'vv']},
|
return false;
|
||||||
|
|
||||||
|
case this.selected_tool === "laser":
|
||||||
|
case this.selected_tool === "router":
|
||||||
|
switch (key) {
|
||||||
|
case "tool-enable-mode":
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
get_reg_type: function (reg) {
|
||||||
|
return this.regs_tmpl.template['reg-type'].values[this.state[reg + 'vt']];
|
||||||
|
},
|
||||||
|
|
||||||
|
get_reg_addr: function (reg) {
|
||||||
|
return this.state[reg + 'va'];
|
||||||
|
},
|
||||||
|
|
||||||
|
get_reg_value: function (reg) {
|
||||||
|
return this.state[reg + 'vv'];
|
||||||
|
},
|
||||||
|
|
||||||
get_reg_fails: function (reg) {
|
get_reg_fails: function (reg) {
|
||||||
var fails = this.state[reg + 'vr']
|
const fails = this.state[reg + 'vr']
|
||||||
return fails == 255 ? 'Max' : fails;
|
return fails == 255 ? 'Max' : fails;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
show_modbus_field: function (key) {
|
show_modbus_field: function (key) {
|
||||||
return key != 'regs' &&
|
return key != 'regs' &&
|
||||||
(key != 'multi-write' || this.tool_type == 'CUSTOM MODBUS VFD');
|
(key != 'multi-write' || this.tool_type == 'CUSTOM MODBUS VFD');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
read: function (e) {
|
read: function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
api.put('modbus/read', {address: this.address});
|
api.put('modbus/read', { address: this.address });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
write: function (e) {
|
write: function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
api.put('modbus/write', {address: this.address, value: this.value});
|
api.put('modbus/write', { address: this.address, value: this.value });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
customize: function (e) {
|
customize: function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.config.tool['tool-type'] = 'Custom Modbus VFD';
|
this.config.tool['tool-type'] = 'Custom Modbus VFD';
|
||||||
|
|
||||||
var regs = this.config['modbus-spindle'].regs;
|
const regs = this.config['modbus-spindle'].regs;
|
||||||
for (var i = 0; i < regs.length; i++) {
|
for (let i = 0; i < regs.length; i++) {
|
||||||
var reg = this.regs_tmpl.index[i];
|
const reg = this.regs_tmpl.index[i];
|
||||||
regs[i]['reg-type'] = this.get_reg_type(reg);
|
regs[i]['reg-type'] = this.get_reg_type(reg);
|
||||||
regs[i]['reg-addr'] = this.get_reg_addr(reg);
|
regs[i]['reg-addr'] = this.get_reg_addr(reg);
|
||||||
regs[i]['reg-value'] = this.get_reg_value(reg);
|
regs[i]['reg-value'] = this.get_reg_value(reg);
|
||||||
@@ -126,13 +253,12 @@ module.exports = {
|
|||||||
this.$dispatch('config-changed');
|
this.$dispatch('config-changed');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
clear: function (e) {
|
clear: function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.config.tool['tool-type'] = 'Custom Modbus VFD';
|
this.config.tool['tool-type'] = 'Custom Modbus VFD';
|
||||||
|
|
||||||
var regs = this.config['modbus-spindle'].regs;
|
const regs = this.config['modbus-spindle'].regs;
|
||||||
for (var i = 0; i < regs.length; i++) {
|
for (let i = 0; i < regs.length; i++) {
|
||||||
regs[i]['reg-type'] = 'disabled';
|
regs[i]['reg-type'] = 'disabled';
|
||||||
regs[i]['reg-addr'] = 0;
|
regs[i]['reg-addr'] = 0;
|
||||||
regs[i]['reg-value'] = 0;
|
regs[i]['reg-value'] = 0;
|
||||||
@@ -141,11 +267,10 @@ module.exports = {
|
|||||||
this.$dispatch('config-changed');
|
this.$dispatch('config-changed');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
reset_failures: function (e) {
|
reset_failures: function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var regs = this.config['modbus-spindle'].regs;
|
const regs = this.config['modbus-spindle'].regs;
|
||||||
for (var reg = 0; reg < regs.length; reg++)
|
for (let reg = 0; reg < regs.length; reg++)
|
||||||
this.$dispatch('send', '\$' + reg + 'vr=0');
|
this.$dispatch('send', '\$' + reg + 'vr=0');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ script#templated-input-template(type="text/x-template")
|
|||||||
|
|
||||||
select(v-if="template.type == 'enum' || template.values", v-model="view",
|
select(v-if="template.type == 'enum' || template.values", v-model="view",
|
||||||
:name="name", @change="change")
|
:name="name", @change="change")
|
||||||
option(v-for="opt in template.values", :value="opt") {{opt}}
|
option(v-for="opt in template.values", track-by="$index", :value="opt" :disabled="opt === '-----' ? true : false") {{opt}}
|
||||||
|
|
||||||
input(v-if="template.type == 'bool'", type="checkbox", v-model="view",
|
input(v-if="template.type == 'bool'", type="checkbox", v-model="view",
|
||||||
:name="name", @change="change")
|
:name="name", @change="change")
|
||||||
|
|||||||
@@ -31,16 +31,21 @@ script#tool-view-template(type="text/x-template")
|
|||||||
|
|
||||||
.pure-form.pure-form-aligned
|
.pure-form.pure-form-aligned
|
||||||
fieldset
|
fieldset
|
||||||
templated-input(v-for="templ in template.tool", :name="$key",
|
.pure-control-group
|
||||||
:model.sync="config.tool[$key]", :template="templ",
|
label(for="tool-type") tool-type
|
||||||
v-if="tool_type != 'DISABLED' || $key == 'tool-type'")
|
|
||||||
|
|
||||||
label.extra(slot="extra",
|
select(v-model="config.tool['selected-tool']", name="tool-type", @change="change_selected_tool")
|
||||||
v-if="$key == 'tool-enable-mode' || $key == 'tool-direction-mode'")
|
option(v-for="tool in toolList", :value="tool.id", :disabled="tool.disabled") {{tool.name}}
|
||||||
|
|
||||||
|
templated-input(v-for="templ in template.tool",
|
||||||
|
:name="$key", v-if="show_tool_settings($key)"
|
||||||
|
:model.sync="config.tool[$key]", :template="templ")
|
||||||
|
|
||||||
|
label.extra(slot="extra", v-if="$key == 'tool-enable-mode' || $key == 'tool-direction-mode'")
|
||||||
| Pin {{templ.pin}}
|
| Pin {{templ.pin}}
|
||||||
io-indicator(:name="$key", :state="state")
|
io-indicator(:name="$key", :state="state")
|
||||||
|
|
||||||
fieldset(v-if="tool_type == 'PWM SPINDLE'")
|
fieldset(v-if="is_pwm_spindle")
|
||||||
h2 PWM Spindle
|
h2 PWM Spindle
|
||||||
templated-input(v-for="templ in template['pwm-spindle']",
|
templated-input(v-for="templ in template['pwm-spindle']",
|
||||||
:name="$key", :model.sync="config['pwm-spindle'][$key]",
|
:name="$key", :model.sync="config['pwm-spindle'][$key]",
|
||||||
|
|||||||
@@ -28,8 +28,6 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
import subprocess
|
|
||||||
import copy
|
|
||||||
from pkg_resources import Requirement, resource_filename
|
from pkg_resources import Requirement, resource_filename
|
||||||
|
|
||||||
|
|
||||||
@@ -55,14 +53,6 @@ class Config(object):
|
|||||||
except Exception: self.log.exception('Internal error: Failed to load config template')
|
except Exception: self.log.exception('Internal error: Failed to load config template')
|
||||||
|
|
||||||
|
|
||||||
def get(self, name, default = None):
|
|
||||||
return self.values.get(name, default)
|
|
||||||
|
|
||||||
|
|
||||||
def get_index(self, name, index, default = None):
|
|
||||||
return self.values.get(name, {}).get(str(index), None)
|
|
||||||
|
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
path = self.ctrl.get_path('config.json')
|
path = self.ctrl.get_path('config.json')
|
||||||
|
|
||||||
@@ -72,7 +62,7 @@ class Config(object):
|
|||||||
else: config = {'version': self.version}
|
else: config = {'version': self.version}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.upgrade(config)
|
self._upgrade(config)
|
||||||
except Exception: self.log.exception('Internal error: Failed to upgrade config')
|
except Exception: self.log.exception('Internal error: Failed to upgrade config')
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -83,6 +73,33 @@ class Config(object):
|
|||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
def reload(self):
|
||||||
|
self._update(self.load(), True)
|
||||||
|
|
||||||
|
|
||||||
|
def get(self, name, default = None):
|
||||||
|
return self.values.get(name, default)
|
||||||
|
|
||||||
|
|
||||||
|
def save(self, config):
|
||||||
|
self._upgrade(config)
|
||||||
|
self._update(config, False)
|
||||||
|
|
||||||
|
with open(self.ctrl.get_path('config.json'), 'w') as f:
|
||||||
|
json.dump(config, f, indent=2)
|
||||||
|
|
||||||
|
os.sync()
|
||||||
|
|
||||||
|
self.ctrl.preplanner.invalidate_all()
|
||||||
|
self.log.info('Saved')
|
||||||
|
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
if os.path.exists('config.json'): os.unlink('config.json')
|
||||||
|
self.reload()
|
||||||
|
self.ctrl.preplanner.invalidate_all()
|
||||||
|
|
||||||
|
|
||||||
def _valid_value(self, template, value):
|
def _valid_value(self, template, value):
|
||||||
type = template['type']
|
type = template['type']
|
||||||
|
|
||||||
@@ -136,7 +153,7 @@ class Config(object):
|
|||||||
self.__defaults(conf, name, tmpl)
|
self.__defaults(conf, name, tmpl)
|
||||||
|
|
||||||
|
|
||||||
def upgrade(self, config):
|
def _upgrade(self, config):
|
||||||
version = config['version']
|
version = config['version']
|
||||||
version = version.split('b')[0] # Strip off any "beta" suffix
|
version = version.split('b')[0] # Strip off any "beta" suffix
|
||||||
version = tuple(map(int, version.split('.'))) # Break it into a tuple of integers
|
version = tuple(map(int, version.split('.'))) # Break it into a tuple of integers
|
||||||
@@ -168,27 +185,14 @@ class Config(object):
|
|||||||
config['settings']['max-deviation'] = 0.05
|
config['settings']['max-deviation'] = 0.05
|
||||||
config['settings']['junction-accel'] = 200000
|
config['settings']['junction-accel'] = 200000
|
||||||
|
|
||||||
|
if version < (1, 0, 9):
|
||||||
|
with open(get_resource('http/onefinity_defaults.json'), 'r', encoding = 'utf-8') as f:
|
||||||
|
defaults = json.load(f)
|
||||||
|
config['selected-tool-settings'] = defaults['selected-tool-settings'];
|
||||||
|
|
||||||
config['version'] = self.version.split('b')[0]
|
config['version'] = self.version.split('b')[0]
|
||||||
config['full_version'] = self.version
|
config['full_version'] = self.version
|
||||||
|
|
||||||
def save(self, config):
|
|
||||||
self.upgrade(config)
|
|
||||||
self._update(config, False)
|
|
||||||
|
|
||||||
with open(self.ctrl.get_path('config.json'), 'w') as f:
|
|
||||||
json.dump(config, f, indent=2)
|
|
||||||
|
|
||||||
os.sync()
|
|
||||||
|
|
||||||
self.ctrl.preplanner.invalidate_all()
|
|
||||||
self.log.info('Saved')
|
|
||||||
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
if os.path.exists('config.json'): os.unlink('config.json')
|
|
||||||
self.reload()
|
|
||||||
self.ctrl.preplanner.invalidate_all()
|
|
||||||
|
|
||||||
|
|
||||||
def _encode(self, name, index, config, tmpl, with_defaults):
|
def _encode(self, name, index, config, tmpl, with_defaults):
|
||||||
# Handle category
|
# Handle category
|
||||||
@@ -238,6 +242,3 @@ class Config(object):
|
|||||||
for name, tmpl in self.template.items():
|
for name, tmpl in self.template.items():
|
||||||
conf = config.get(name, None)
|
conf = config.get(name, None)
|
||||||
self._encode(name, '', conf, tmpl, with_defaults)
|
self._encode(name, '', conf, tmpl, with_defaults)
|
||||||
|
|
||||||
|
|
||||||
def reload(self): self._update(self.load(), True)
|
|
||||||
|
|||||||
@@ -93,16 +93,15 @@ class State(object):
|
|||||||
observer.start()
|
observer.start()
|
||||||
|
|
||||||
|
|
||||||
#def is_metric(self): return self.get('units', 'METRIC') == 'METRIC'
|
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
# Init machine units
|
# Init machine units
|
||||||
metric = self.ctrl.config.get('units', 'METRIC').upper() == 'METRIC'
|
metric = self.ctrl.config.get('units', 'METRIC').upper() == 'METRIC'
|
||||||
self.log.info('INIT Metric %d' % metric)
|
self.log.info('INIT Metric %d' % metric)
|
||||||
if not 'metric' in self.vars: self.set('metric', metric)
|
if not 'metric' in self.vars: self.set('metric', metric)
|
||||||
if not 'imperial' in self.vars: self.set('imperial', not metric)
|
if not 'imperial' in self.vars: self.set('imperial', not metric)
|
||||||
#Bit diameter for probing
|
|
||||||
diameter = self.ctrl.config.get('probe-diameter',6.35)
|
# Bit diameter for probing
|
||||||
|
diameter = self.ctrl.config.get('probe-diameter', 6.35)
|
||||||
self.log.info('INIT Diameter %f' % diameter)
|
self.log.info('INIT Diameter %f' % diameter)
|
||||||
self.set('bitDiameter',diameter)
|
self.set('bitDiameter',diameter)
|
||||||
|
|
||||||
|
|||||||
@@ -225,7 +225,8 @@ class PasswordHandler(bbctrl.APIHandler):
|
|||||||
|
|
||||||
|
|
||||||
class ConfigLoadHandler(bbctrl.APIHandler):
|
class ConfigLoadHandler(bbctrl.APIHandler):
|
||||||
def get(self): self.write_json(self.get_ctrl().config.load())
|
def get(self):
|
||||||
|
self.write_json(self.get_ctrl().config.load())
|
||||||
|
|
||||||
|
|
||||||
class ConfigDownloadHandler(bbctrl.APIHandler):
|
class ConfigDownloadHandler(bbctrl.APIHandler):
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
"default": true
|
"default": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"motors": {
|
"motors": {
|
||||||
"type": "list",
|
"type": "list",
|
||||||
"index": "0123",
|
"index": "0123",
|
||||||
@@ -248,12 +249,25 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"tool": {
|
"tool": {
|
||||||
|
"selected-tool": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "disabled"
|
||||||
|
},
|
||||||
"tool-type": {
|
"tool-type": {
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"values": ["Disabled", "PWM Spindle", "Huanyang VFD", "Custom Modbus VFD",
|
"values": [
|
||||||
"AC-Tech VFD", "Nowforever VFD", "Delta VFD015M21A (Beta)",
|
"Disabled",
|
||||||
"YL600, YL620, YL620-A VFD (Beta)", "FR-D700 (Beta)",
|
"PWM Spindle",
|
||||||
"Sunfar E300 (Beta)", "OMRON MX2"],
|
"Huanyang VFD",
|
||||||
|
"Custom Modbus VFD",
|
||||||
|
"AC-Tech VFD",
|
||||||
|
"Nowforever VFD",
|
||||||
|
"Delta VFD015M21A (Beta)",
|
||||||
|
"YL600, YL620, YL620-A VFD (Beta)",
|
||||||
|
"FR-D700 (Beta)",
|
||||||
|
"Sunfar E300 (Beta)",
|
||||||
|
"OMRON MX2"
|
||||||
|
],
|
||||||
"default": "Disabled",
|
"default": "Disabled",
|
||||||
"code": "st"
|
"code": "st"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"version": "1.0.9",
|
||||||
|
"settings": {
|
||||||
|
"junction-accel": 200000,
|
||||||
|
"max-deviation": 0.05,
|
||||||
|
"units": "METRIC",
|
||||||
|
"probing-prompts": true
|
||||||
|
},
|
||||||
"tool": {
|
"tool": {
|
||||||
"tool-reversed": false,
|
"tool-reversed": false,
|
||||||
"tool-enable-mode": "disabled",
|
"tool-enable-mode": "disabled",
|
||||||
@@ -7,138 +14,14 @@
|
|||||||
"min-spin": 0,
|
"min-spin": 0,
|
||||||
"max-spin": 255
|
"max-spin": 255
|
||||||
},
|
},
|
||||||
"switches": {
|
"pwm-spindle": {
|
||||||
"switch-lockout": 250,
|
"pwm-min-duty": 1,
|
||||||
"estop": "disabled",
|
"pwm-inverted": false,
|
||||||
"switch-debounce": 5,
|
"pwm-max-duty": 99.99,
|
||||||
"probe": "normally-open"
|
"pwm-freq": 1000,
|
||||||
|
"dynamic-power": true,
|
||||||
|
"rapid-auto-off": true
|
||||||
},
|
},
|
||||||
"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": {
|
"modbus-spindle": {
|
||||||
"baud": "9600",
|
"baud": "9600",
|
||||||
"multi-write": false,
|
"multi-write": false,
|
||||||
@@ -307,6 +190,15 @@
|
|||||||
"bus-id": "1",
|
"bus-id": "1",
|
||||||
"parity": "None"
|
"parity": "None"
|
||||||
},
|
},
|
||||||
|
"selected-tool-settings": {
|
||||||
|
"laser": {
|
||||||
|
"tool": {
|
||||||
|
"tool-reversed": false,
|
||||||
|
"tool-enable-mode": "disabled",
|
||||||
|
"tool-direction-mode": "disabled",
|
||||||
|
"min-spin": 0,
|
||||||
|
"max-spin": 1000
|
||||||
|
},
|
||||||
"pwm-spindle": {
|
"pwm-spindle": {
|
||||||
"pwm-min-duty": 1,
|
"pwm-min-duty": 1,
|
||||||
"pwm-inverted": false,
|
"pwm-inverted": false,
|
||||||
@@ -314,7 +206,168 @@
|
|||||||
"pwm-freq": 1000,
|
"pwm-freq": 1000,
|
||||||
"dynamic-power": true,
|
"dynamic-power": true,
|
||||||
"rapid-auto-off": true
|
"rapid-auto-off": true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
"router": {
|
||||||
|
"tool": {
|
||||||
|
"tool-reversed": false,
|
||||||
|
"tool-enable-mode": "disabled",
|
||||||
|
"tool-direction-mode": "disabled",
|
||||||
|
"min-spin": 0,
|
||||||
|
"max-spin": 255
|
||||||
|
},
|
||||||
|
"pwm-spindle": {
|
||||||
|
"pwm-min-duty": 1,
|
||||||
|
"pwm-inverted": false,
|
||||||
|
"pwm-max-duty": 99.99,
|
||||||
|
"pwm-freq": 1000,
|
||||||
|
"dynamic-power": false,
|
||||||
|
"rapid-auto-off": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pwm": {
|
||||||
|
"tool": {
|
||||||
|
"tool-reversed": false,
|
||||||
|
"tool-enable-mode": "disabled",
|
||||||
|
"tool-direction-mode": "disabled",
|
||||||
|
"min-spin": 0,
|
||||||
|
"max-spin": 255
|
||||||
|
},
|
||||||
|
"pwm-spindle": {
|
||||||
|
"pwm-min-duty": 1,
|
||||||
|
"pwm-inverted": false,
|
||||||
|
"pwm-max-duty": 99.99,
|
||||||
|
"pwm-freq": 1000,
|
||||||
|
"dynamic-power": true,
|
||||||
|
"rapid-auto-off": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
"outputs": {
|
||||||
|
"load-1": "disabled",
|
||||||
|
"fault": "disabled",
|
||||||
|
"load-2": "disabled"
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
],
|
||||||
"admin": {
|
"admin": {
|
||||||
"auto-check-upgrade": true
|
"auto-check-upgrade": true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ span.unit
|
|||||||
height 12em
|
height 12em
|
||||||
|
|
||||||
> select, > input:not([type=checkbox])
|
> select, > input:not([type=checkbox])
|
||||||
min-width 200px
|
min-width 300px
|
||||||
|
|
||||||
> tt
|
> tt
|
||||||
min-width 15.25em
|
min-width 15.25em
|
||||||
@@ -1009,3 +1009,9 @@ tt.save
|
|||||||
label
|
label
|
||||||
font-size 16pt
|
font-size 16pt
|
||||||
align-self center
|
align-self center
|
||||||
|
|
||||||
|
.pure-form-aligned .pure-control-group label:not(.extra)
|
||||||
|
width 12em
|
||||||
|
|
||||||
|
.pure-form-aligned .pure-control-group label.extra
|
||||||
|
width 8em
|
||||||
|
|||||||
Reference in New Issue
Block a user