# Mesa7c81
Mesa7c81 over SPI - WIP
* Board: [Mesa7c81](https://github.com/multigcs/riocore/blob/main/riocore/boards/Mesa7c81/README.md)
* Config-Path: None
* Output-Path: /tmp/rio-test-build/Mesa7c81
* Toolchain: ise
* Protocol: UDP
## Axis/Joints
| Axis | Joint | Plugin | Home-Seq. |
| --- | --- | --- | --- |
| X | 0 | stepdir0 ([stepdir](https://github.com/multigcs/riocore/blob/main/riocore/plugins/stepdir/README.md)) | -2 |
| X | 1 | stepdir1 ([stepdir](https://github.com/multigcs/riocore/blob/main/riocore/plugins/stepdir/README.md)) | -2 |
| Y | 2 | stepdir2 ([stepdir](https://github.com/multigcs/riocore/blob/main/riocore/plugins/stepdir/README.md)) | 2 |
| Z | 3 | stepdir3 ([stepdir](https://github.com/multigcs/riocore/blob/main/riocore/plugins/stepdir/README.md)) | 1 |
## Plugins
| Type | Info | Instance | Image |
| --- | --- | --- | --- |
| [blink](https://github.com/multigcs/riocore/blob/main/riocore/plugins/blink/README.md) | blinking output pin | blink0 |
|
| [stepdir](https://github.com/multigcs/riocore/blob/main/riocore/plugins/stepdir/README.md) | step/dir output for stepper drivers | stepdir0, stepdir1, stepdir2, stepdir3 |
|
| [bitout](https://github.com/multigcs/riocore/blob/main/riocore/plugins/bitout/README.md) | singe bit output pin | bitout0, bitout1, bitout2, bitout3, bitout4, bitout5, bitout6 |
|
| [bitin](https://github.com/multigcs/riocore/blob/main/riocore/plugins/bitin/README.md) | single input pin | bitin0, bitin1, bitin2, bitin3, bitin4, bitin8, bitin5, bitin6, bitin7, bitin10, bitin12, bitin11, bitin9 |
|
| [modbus](https://github.com/multigcs/riocore/blob/main/riocore/plugins/modbus/README.md) | generic modbus plugin | mb0, mb1 |
|
| [signal](https://github.com/multigcs/riocore/blob/main/riocore/plugins/signal/README.md) | virtual signal | mainpower, waterflow_status, spindle, spindle |
|
| [freqin](https://github.com/multigcs/riocore/blob/main/riocore/plugins/freqin/README.md) | frequency input | waterflow |
|
| [w5500](https://github.com/multigcs/riocore/blob/main/riocore/plugins/w5500/README.md) | udp interface for host comunication | w55000 |
|
# Pins
| Plugin | ID | Name | Board | Alias |
| --- | --- | --- | --- | --- |
| blink | blink0 | led | P48 | |
| stepdir | stepdir0 | step | P141 | |
| | | dir | P139 | |
| | | en | - | |
| | stepdir1 | step | P137 | |
| | | dir | P133 | |
| | | en | - | |
| | stepdir2 | step | P132 | |
| | | dir | P131 | |
| | | en | - | |
| | stepdir3 | step | P127 | |
| | | dir | P126 | |
| | | en | - | |
| bitout | bitout0 | bit | P142 | |
| | bitout1 | bit | P134 | |
| | bitout2 | bit | P82 | |
| | bitout3 | bit | P81 | |
| | bitout4 | bit | P80 | |
| | bitout5 | bit | P79 | |
| | bitout6 | bit | P138 | |
| bitin | bitin0 | bit | P124 | |
| | bitin1 | bit | P123 | |
| | bitin10 | bit | P94 | |
| | bitin11 | bit | P87 | |
| | bitin12 | bit | P92 | |
| | bitin2 | bit | P121 | |
| | bitin3 | bit | P120 | |
| | bitin4 | bit | P140 | |
| | bitin5 | bit | P93 | |
| | bitin6 | bit | P88 | |
| | bitin7 | bit | P85 | |
| | bitin8 | bit | P83 | |
| | bitin9 | bit | P84 | |
| modbus | mb0 | tx | P43 | |
| | | rx | P41 | |
| | | tx_enable | P44 | |
| | mb1 | tx | P35 | |
| | | rx | P34 | |
| | | tx_enable | P40 | |
| freqin | waterflow | freq | P78 | |
| w5500 | w55000 | mosi | P15 | |
| | | miso | P16 | |
| | | sclk | P14 | |
| | | sel | P56 | |
| | | rst | P12 | |
| | | intr | - | |
# Signals
| Plugin | ID | Name | Dir | Hal-Pin | Type | Description |
| --- | --- | --- | --- | --- | --- | --- |
| bitout | bitout0 | senable.bit | <- | halui.machine.is-on | net | |
| | bitout4 | Cooling-Water.bit | <- | iocontrol.0.user-enable-out | net | |
| | bitout5 | Cooling-Air.bit | <- | iocontrol.0.coolant-mist | net | |
| | bitout6 | chargepump.bit | <- | chargepump(4) | net | |
| bitin | bitin0 | homeX1.bit | -> | joint.0.home-sw-in | net | |
| | bitin1 | homeX2.bit | -> | joint.1.home-sw-in | net | |
| | bitin10 | ServoX1.bit | -> | &motion.enable | net | |
| | bitin11 | ServoY.bit | -> | &motion.enable | net | |
| | bitin12 | ServoX2.bit | -> | &motion.enable | net | |
| | bitin2 | homeY.bit | -> | joint.2.home-sw-in | net | |
| | bitin3 | homeZ.bit | -> | joint.3.home-sw-in | net | |
| | bitin5 | p24ok.bit | -> | &motion.enable | net | |
| | bitin7 | touchprobe.bit | -> | motion.probe-input | net | |
| | bitin9 | ServoZ.bit | -> | &motion.enable | net | |
| modbus | mb0 | mb0.spindle_speed_fb_rps | -> | spindle.0.speed-in | net | |
| | | mb0.spindle_speed_command | <- | spindle.0.speed-out | net | |
| | | mb0.spindle_spindle_at_speed_tolerance | <- | 4.0 | setp | |
| | | mb0.spindle_spindle_forward | <- | spindle.0.forward | net | |
| | | mb0.spindle_spindle_reverse | <- | spindle.0.reverse | net | |
| | | mb0.spindle_spindle_on | <- | spindle.0.on | net | |
| signal | mainpower | Mainpower.value | <- | rio.mb1.power < 3600.0 | net | |
| | spindle | Spindleload.value | <- | delay((rio.mb0.spindle_ampere < 4.0), 0, 2) | net | |
| | waterflow_status | Waterflow.value | <- | rio.Waterflow.frequency > 3.0 | net | |
# Interface
## Host to FPGA
| POS | SIZE | NAME |
| --- | --- | --- |
| 0 | 32bits | RX_HEADER |
| 32 | 96bits | VAROUT96_MB0_TXDATA |
| 128 | 96bits | VAROUT96_MB1_TXDATA |
| 224 | 32bits | VAROUT32_STEPDIR0_VELOCITY |
| 256 | 32bits | VAROUT32_STEPDIR1_VELOCITY |
| 288 | 32bits | VAROUT32_STEPDIR2_VELOCITY |
| 320 | 32bits | VAROUT32_STEPDIR3_VELOCITY |
| 352 | 1bit | VAROUT1_STEPDIR0_ENABLE |
| 353 | 1bit | VAROUT1_STEPDIR1_ENABLE |
| 354 | 1bit | VAROUT1_STEPDIR2_ENABLE |
| 355 | 1bit | VAROUT1_STEPDIR3_ENABLE |
| 356 | 1bit | VAROUT1_BITOUT0_BIT |
| 357 | 1bit | VAROUT1_BITOUT1_BIT |
| 358 | 1bit | VAROUT1_BITOUT2_BIT |
| 359 | 1bit | VAROUT1_BITOUT3_BIT |
| 360 | 1bit | VAROUT1_BITOUT4_BIT |
| 361 | 1bit | VAROUT1_BITOUT5_BIT |
| 362 | 1bit | VAROUT1_BITOUT6_BIT |
## FPGA to Host
| POS | SIZE | NAME |
| --- | --- | --- |
| 0 | 32bits | TX_HEADER |
| 32 | 32bits | TIMESTAMP |
| 64 | 96bits | VARIN96_MB0_RXDATA |
| 160 | 96bits | VARIN96_MB1_RXDATA |
| 256 | 32bits | VARIN32_STEPDIR0_POSITION |
| 288 | 32bits | VARIN32_STEPDIR1_POSITION |
| 320 | 32bits | VARIN32_STEPDIR2_POSITION |
| 352 | 32bits | VARIN32_STEPDIR3_POSITION |
| 384 | 32bits | VARIN32_WATERFLOW_FREQUENCY |
| 416 | 1bit | VARIN1_BITIN0_BIT |
| 417 | 1bit | VARIN1_BITIN1_BIT |
| 418 | 1bit | VARIN1_BITIN2_BIT |
| 419 | 1bit | VARIN1_BITIN3_BIT |
| 420 | 1bit | VARIN1_BITIN4_BIT |
| 421 | 1bit | VARIN1_BITIN8_BIT |
| 422 | 1bit | VARIN1_BITIN5_BIT |
| 423 | 1bit | VARIN1_BITIN6_BIT |
| 424 | 1bit | VARIN1_BITIN7_BIT |
| 425 | 1bit | VARIN1_BITIN10_BIT |
| 426 | 1bit | VARIN1_BITIN12_BIT |
| 427 | 1bit | VARIN1_BITIN11_BIT |
| 428 | 1bit | VARIN1_BITIN9_BIT |
| 429 | 1bit | VARIN1_WATERFLOW_VALID |
# LinuxCNC
## Hal-Graph

# JSON-Config
```
{
"name": "Mesa7c81",
"boardcfg": "Mesa7c81",
"async": true,
"protocol": "UDP",
"c_defines": {
"SPI_SPEED": "BCM2835_SPI_CLOCK_DIVIDER_64"
},
"_flashcmd": "./spiflash.sh rio-2048.bin",
"flashcmd": "openFPGALoader -v -c usb-blaster --fpga-part xc6slx9tqg144 rio.bit -f",
"breakouts": [
{
"slot": "B",
"breakout": "china-bob5x",
"name": "bob1",
"pos": [
-2510.0,
540.0
],
"rotate": 180
}
],
"linuxcnc": {
"_debug_info": true,
"_gui": "axis",
"gui": "qtdragon",
"_vcp_type": "gladevcp",
"ini": {
"DISPLAY": {
"MAX_FEED_OVERRIDE": 5.0,
"MAX_LINEAR_VELOCITY": 150.0,
"DEFAULT_LINEAR_VELOCITY": 100.0
},
"TRAJ": {
"MAX_LINEAR_VELOCITY": 150.0,
"DEFAULT_LINEAR_VELOCITY": 100.0
},
"EMCMOT": {
"SERVO_PERIOD": 300000,
"_SERVO_PERIOD": 1000000
}
},
"machinetype": "mill",
"net": [
{
"comment": "if main-power > 3.6kw, disable motion",
"source": "rio.mb1.power < 3600.0",
"target": "&motion.enable"
},
{
"comment": "if waterflow < 3Hz, disable motion",
"source": "rio.Waterflow.frequency > 3.0",
"target": "&motion.enable"
},
{
"comment": "if spindle not at speed for 5sec, disable motion",
"source": "delay(rio.mb0.spindle_at_speed, 0, 5)",
"target": "&motion.enable"
},
{
"comment": "if spindle-current > 4A for 2sec, disable motion",
"source": "delay((rio.mb0.spindle_ampere < 4.0), 0, 2)",
"target": "&motion.enable"
}
],
"_setp": {
"mpg.dongle.analog.jog": "1"
},
"mxmpg": {
"enable": false,
"device": "/dev/ttyS0",
"buttons": {
"03": {
"toggle-on": "halui.mist.on",
"toggle-off": "halui.mist.off"
},
"05": {
"long": "halui.mdi-command-03"
},
"enc01": {
"long-toggle-on": "halui.machine.on",
"long-toggle-off": "halui.machine.off"
},
"enc03": {
"long-toggle-on": "halui.home-all"
}
}
},
"camjog": [
{
"enable": false,
"device": "rtsp://192.168.10.183:8554/cam",
"tabname": "camjog-0",
"height": "480"
}
]
},
"plugins": [
{
"type": "blink",
"pins": {
"led": {
"pin": "LED:L0",
"modifier": [
{
"type": "onerror",
"invert": true,
"pos": [
-1700.0,
1000.0
]
}
]
}
},
"uid": "blink0",
"pos": [
-1580.0,
1000.0
],
"image": "led",
"rotate": 0
},
{
"type": "stepdir",
"pins": {
"dir": {
"pin": "bob1:X:dir"
},
"step": {
"pin": "bob1:X:step"
}
},
"uid": "stepdir0",
"pos": [
-2820.0,
300.0
],
"signals": {
"velocity": {
"net": "",
"setp": ""
},
"position": {
"net": "",
"setp": ""
},
"enable": {
"net": "",
"setp": ""
}
},
"is_joint": true,
"joint": {
"scale": 2000.0,
"ferror": 2.0,
"min_ferror": 0.1,
"max_velocity": 150.0,
"max_acceleration": 400.0,
"home_offset": -5.0,
"min_limit": -4.0,
"max_limit": 900.0
},
"axis": "X",
"name": "X1",
"pulse_len": 2.0,
"image": "stepper",
"rotate": 180
},
{
"type": "stepdir",
"pins": {
"dir": {
"pin": "bob1:Y:dir"
},
"step": {
"pin": "bob1:Y:step"
}
},
"pos": [
-2820.0,
570.0
],
"uid": "stepdir1",
"signals": {
"velocity": {
"net": "",
"setp": ""
},
"position": {
"net": "",
"setp": ""
},
"enable": {
"net": "",
"setp": ""
}
},
"is_joint": true,
"joint": {
"scale": 2000.0,
"ferror": 2.0,
"min_ferror": 0.1,
"max_velocity": 150.0,
"max_acceleration": 400.0,
"home_offset": -5.0,
"min_limit": -4.0,
"max_limit": 900.0
},
"axis": "X",
"name": "X2",
"pulse_len": 2.0,
"image": "stepper",
"rotate": 180
},
{
"type": "stepdir",
"pins": {
"dir": {
"pin": "bob1:Z:dir"
},
"step": {
"pin": "bob1:Z:step"
}
},
"pos": [
-2820.0,
840.0
],
"uid": "stepdir2",
"signals": {
"velocity": {
"net": "",
"setp": ""
},
"position": {
"net": "",
"setp": ""
},
"enable": {
"net": "",
"setp": ""
}
},
"is_joint": true,
"joint": {
"scale": 2000.0,
"ferror": 2.0,
"min_ferror": 0.1,
"max_velocity": 150.0,
"max_acceleration": 400.0,
"home": 0.0,
"home_offset": -5.0,
"min_limit": -4.0,
"max_limit": 450.0
},
"axis": "Y",
"name": "Y",
"pulse_len": 2.0,
"image": "stepper",
"rotate": 180
},
{
"type": "stepdir",
"pins": {
"dir": {
"pin": "bob1:A:dir"
},
"step": {
"pin": "bob1:A:step"
}
},
"pos": [
-2820.0,
1110.0
],
"uid": "stepdir3",
"signals": {
"velocity": {
"net": "",
"setp": ""
},
"position": {
"net": "",
"setp": ""
},
"enable": {
"net": "",
"setp": ""
}
},
"is_joint": true,
"joint": {
"scale": -2000.0,
"ferror": 2.0,
"min_ferror": 0.1,
"max_velocity": 150.0,
"max_acceleration": 400.0,
"home": 95.0,
"home_offset": 100.0,
"min_limit": 0.0,
"max_limit": 100.0
},
"axis": "Z",
"name": "Z",
"pulse_len": 2.0,
"image": "stepper",
"rotate": 180
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "bob1:ALL:en",
"modifier": [
{
"type": "onerror",
"pos": [
-2460.0,
1260.0
]
},
{
"type": "invert",
"pos": [
-2580.0,
1260.0
]
}
]
}
},
"uid": "bitout0",
"pos": [
-2340.0,
1240.0
],
"signals": {
"bit": {
"net": "halui.machine.is-on",
"setp": ""
}
},
"name": "senable"
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "bob1:RELAIS:out"
}
},
"uid": "bitout1",
"pos": [
-2370.0,
1000.0
],
"signals": {
"bit": {
"net": "",
"setp": ""
}
},
"image": "relay",
"rotate": 90
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "bob1:OPTO:in0"
}
},
"uid": "bitin0",
"pos": [
-2220.0,
260.0
],
"signals": {
"bit": {
"net": "joint.0.home-sw-in",
"setp": ""
}
},
"name": "homeX1",
"image": "proximity",
"rotate": -90
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "bob1:OPTO:in1"
}
},
"signals": {
"bit": {
"net": "joint.1.home-sw-in",
"setp": ""
}
},
"name": "homeX2",
"uid": "bitin1",
"pos": [
-2290.0,
260.0
],
"image": "proximity",
"rotate": -90
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "bob1:OPTO:in2"
}
},
"signals": {
"bit": {
"_net": "joint.2.home-sw-in,joint.2.neg-lim-sw-in",
"net": "joint.2.home-sw-in",
"setp": ""
}
},
"name": "homeY",
"uid": "bitin2",
"pos": [
-2360.0,
260.0
],
"image": "proximity",
"rotate": -90
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "bob1:OPTO:in3"
}
},
"signals": {
"bit": {
"net": "joint.3.home-sw-in",
"setp": ""
}
},
"name": "homeZ",
"uid": "bitin3",
"pos": [
-2430.0,
260.0
],
"image": "proximity",
"rotate": -90
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "bob1:OPTO:in4"
}
},
"signals": {
"bit": {
"net": "",
"setp": ""
}
},
"name": "salarm",
"uid": "bitin4",
"pos": [
-2530.0,
240.0
],
"image": "switch",
"rotate": -90
},
{
"type": "modbus",
"tx_buffersize": 96,
"rx_buffersize": 96,
"pins": {
"rx": {
"pin": "MODBUS1:RX"
},
"tx": {
"pin": "MODBUS1:TX"
},
"tx_enable": {
"pin": "MODBUS1:TX_EN",
"modifier": [
{
"type": "invert",
"pos": [
-2050.0,
1350.0
]
}
]
}
},
"uid": "mb0",
"pos": [
-1910.0,
1290.0
],
"signals": {
"spindle_speed_command": {
"net": "spindle.0.speed-out",
"setp": ""
},
"spindle_speed_fb_rps": {
"net": "spindle.0.speed-in",
"setp": ""
},
"spindle_speed_fb": {
"display": {
"section": "status",
"group": "Spindle",
"title": "RPM",
"_type": "meter",
"min": 0,
"max": 24000,
"size": 200,
"region": [
[
0,
6000,
"gray"
],
[
6000,
20000,
"green"
],
[
20000,
24000,
"red"
]
]
},
"net": "",
"setp": ""
},
"spindle_spindle_on": {
"net": "spindle.0.on",
"setp": ""
},
"spindle_spindle_forward": {
"net": "spindle.0.forward",
"setp": ""
},
"spindle_spindle_reverse": {
"net": "spindle.0.reverse",
"setp": ""
},
"spindle_error_count": {
"_display": {
"title": "Modbus-Errors",
"section": "status",
"group": "Spindle",
"type": "number"
},
"net": "",
"setp": ""
},
"spindle_frq_set": {
"net": "",
"setp": ""
},
"spindle_frq_get": {
"net": "",
"setp": ""
},
"spindle_ampere": {
"net": "",
"setp": "",
"display": {
"title": "Load",
"section": "status",
"group": "Spindle",
"type": "none",
"height": 70,
"min": 0.0,
"max": 4.0
}
},
"spindle_rpm": {
"net": "",
"setp": ""
},
"spindle_dc_volt": {
"net": "",
"setp": ""
},
"spindle_ac_volt": {
"net": "",
"setp": ""
},
"spindle_max_freq": {
"net": "",
"setp": ""
},
"spindle_base_freq": {
"net": "",
"setp": ""
},
"spindle_freq_lower_limit": {
"net": "",
"setp": ""
},
"spindle_rated_motor_voltage": {
"net": "",
"setp": ""
},
"spindle_rated_motor_current": {
"net": "",
"setp": ""
},
"spindle_rpm_at_50hz": {
"net": "",
"setp": ""
},
"spindle_rated_motor_rev": {
"net": "",
"setp": ""
},
"spindle_at_speed": {
"net": "",
"setp": ""
},
"spindle_hycomm_ok": {
"net": "",
"setp": ""
},
"spindle_spindle_at_speed_tolerance": {
"setp": "4.0",
"net": ""
}
},
"config": {
"spindle": {
"address": 1,
"type": 101,
"register": 0,
"values": 1,
"datatype": "float",
"scale": 1.0,
"unit": "",
"error_values": "",
"format": "d",
"timeout": 150,
"delay": 100,
"priority": 0,
"direction": "output"
}
},
"sub_pos": {
"dev-1": [
-1680.0,
1290.0
]
}
},
{
"type": "modbus",
"tx_buffersize": 96,
"rx_buffersize": 96,
"pins": {
"rx": {
"pin": "MODBUS0:RX"
},
"tx": {
"pin": "MODBUS0:TX"
},
"tx_enable": {
"pin": "MODBUS0:TX_EN",
"modifier": [
{
"type": "invert",
"pos": [
-2060.0,
1200.0
]
}
]
}
},
"uid": "mb1",
"pos": [
-1920.0,
1140.0
],
"signals": {
"power": {
"net": "",
"setp": "",
"display": {
"title": "Power",
"section": "status",
"group": "Power-Usage",
"type": "bar",
"height": 70,
"min": 0.0,
"max": 3700.0,
"size": 100,
"region": [
[
0,
20,
"red"
],
[
20,
2500,
"green"
],
[
2500,
3700,
"red"
]
]
}
},
"power_total": {
"net": "",
"setp": "",
"display": {
"title": "Power-Total",
"section": "status",
"group": "Power-Usage",
"type": "number"
}
},
"voltage": {
"net": "",
"setp": ""
},
"voltage_valid": {
"net": "",
"setp": ""
},
"voltage_errors": {
"net": "",
"setp": ""
},
"current": {
"net": "",
"setp": ""
},
"current_valid": {
"net": "",
"setp": ""
},
"current_errors": {
"net": "",
"setp": ""
},
"power_valid": {
"net": "",
"setp": ""
},
"power_errors": {
"net": "",
"setp": ""
},
"power_total_valid": {
"net": "",
"setp": ""
},
"power_total_errors": {
"net": "",
"setp": ""
}
},
"config": {
"voltage": {
"address": 16,
"type": 4,
"register": 0,
"datatype": "float",
"values": 1,
"scale": 1.0,
"unit": "V",
"error_values": "",
"format": "0.1f",
"timeout": 300,
"delay": 150,
"direction": "input",
"priority": 0
},
"current": {
"address": 16,
"type": 4,
"register": 8,
"datatype": "float",
"values": 1,
"scale": 1.0,
"unit": "A",
"error_values": "",
"format": "0.2f",
"timeout": 300,
"delay": 150,
"direction": "input"
},
"power": {
"address": 16,
"type": 4,
"register": 18,
"datatype": "float",
"values": 1,
"scale": 1.0,
"unit": "W",
"error_values": "",
"format": "0.1f",
"timeout": 300,
"delay": 150,
"direction": "input"
},
"power_total": {
"address": 16,
"type": 4,
"register": 256,
"datatype": "float",
"values": 1,
"scale": 1.0,
"unit": "kWh",
"error_values": "",
"format": "0.1f",
"timeout": 300,
"delay": 150,
"direction": "input"
}
},
"sub_pos": {
"dev-16": [
-1690.0,
1140.0
]
}
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P17",
"modifier": [
{
"type": "invert",
"pos": [
-1310.0,
940.0
]
}
]
}
},
"uid": "bitin8",
"pos": [
-1190.0,
940.0
],
"image": "opto",
"rotate": 0
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P14",
"pull": "",
"modifier": [
{
"type": "invert",
"pos": [
-1320.0,
840.0
]
}
]
}
},
"uid": "bitin5",
"pos": [
-1190.0,
840.0
],
"signals": {
"bit": {
"net": "&motion.enable",
"setp": "",
"display": {
"title": "24V-Power"
}
}
},
"name": "p24ok",
"image": "opto",
"rotate": 0
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P15",
"pull": ""
}
},
"uid": "bitin6",
"pos": [
-1190.0,
890.0
],
"signals": {
"bit": {
"net": "",
"setp": ""
}
},
"image": "opto",
"rotate": 0
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P16",
"modifier": [
{
"type": "invert",
"pos": [
-1410.0,
740.0
]
},
{
"type": "debounce",
"pos": [
-1290.0,
740.0
]
}
]
}
},
"uid": "bitin7",
"pos": [
-1150.0,
670.0
],
"signals": {
"bit": {
"net": "motion.probe-input",
"setp": ""
}
},
"name": "touchprobe",
"rotate": 0,
"image": "probe"
},
{
"type": "signal",
"signals": {
"value": {
"net": "rio.mb1.power < 3600.0",
"setp": "",
"display": {
"section": "status",
"type": "rectled",
"color": "green",
"off_color": "red",
"group": "MACHINE-STATUS"
}
}
},
"uid": "mainpower",
"vtype": "bool",
"dir": "output",
"name": "Mainpower",
"pos": [
-935.056280954525,
989.5002251238182
]
},
{
"type": "signal",
"signals": {
"value": {
"net": "rio.Waterflow.frequency > 3.0",
"setp": "",
"display": {
"title": "Waterflow",
"section": "status",
"group": "MACHINE-STATUS",
"type": "rectled",
"color": "green",
"off_color": "red"
}
}
},
"uid": "waterflow_status",
"vtype": "bool",
"dir": "output",
"name": "Waterflow",
"pos": [
-935.056280954525,
839.5002251238182
]
},
{
"type": "signal",
"signals": {
"value": {
"net": "delay(rio.mb0.spindle_at_speed, 0, 5)",
"setp": "",
"display": {
"section": "status",
"type": "rectled",
"color": "green",
"off_color": "red",
"group": "MACHINE-STATUS"
}
}
},
"uid": "spindle",
"vtype": "bool",
"dir": "output",
"name": "Spindlespeed",
"pos": [
-935.056280954525,
889.5002251238182
]
},
{
"type": "signal",
"signals": {
"value": {
"net": "delay((rio.mb0.spindle_ampere < 4.0), 0, 2)",
"setp": "",
"display": {
"section": "status",
"type": "rectled",
"color": "green",
"off_color": "red",
"group": "MACHINE-STATUS"
}
}
},
"uid": "spindle",
"vtype": "bool",
"dir": "output",
"name": "Spindleload",
"pos": [
-935.056280954525,
939.5002251238182
]
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P1",
"pull": "",
"modifier": [
{
"type": "debounce",
"delay": 100.0,
"pos": [
-940.0,
1090.0
]
},
{
"type": "invert",
"pos": [
-820.0,
1090.0
]
}
]
}
},
"pos": [
-700.0,
1070.0
],
"name": "ServoX1",
"uid": "bitin10",
"signals": {
"bit": {
"net": "&motion.enable",
"setp": ""
}
}
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P2",
"pull": "",
"modifier": [
{
"type": "debounce",
"delay": 100.0,
"pos": [
-940.0,
1160.0
]
},
{
"type": "invert",
"pos": [
-820.0,
1160.0
]
}
]
}
},
"pos": [
-700.0,
1140.0
],
"name": "ServoX2",
"uid": "bitin12",
"signals": {
"bit": {
"net": "&motion.enable",
"setp": ""
}
}
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P3",
"modifier": [
{
"type": "debounce",
"delay": 100.0,
"pos": [
-940.0,
1230.0
]
},
{
"type": "invert",
"pos": [
-820.0,
1230.0
]
}
]
}
},
"pos": [
-700.0,
1210.0
],
"name": "ServoY",
"uid": "bitin11",
"signals": {
"bit": {
"net": "&motion.enable",
"setp": ""
}
}
},
{
"type": "bitin",
"pins": {
"bit": {
"pin": "C:P4",
"modifier": [
{
"type": "debounce",
"delay": 100.0,
"pos": [
-940.0,
1300.0
]
},
{
"type": "invert",
"pos": [
-820.0,
1300.0
]
}
]
}
},
"pos": [
-700.0,
1280.0
],
"name": "ServoZ",
"uid": "bitin9",
"signals": {
"bit": {
"net": "&motion.enable",
"setp": ""
}
}
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "C:P5",
"modifier": [
{
"type": "invert",
"pos": [
-1300.0,
1030.0
]
}
]
}
},
"uid": "bitout2",
"pos": [
-1180.0,
1010.0
],
"signals": {
"bit": {
"net": "",
"setp": ""
}
},
"name": "sdr1",
"image": "ssr2a",
"rotate": 0
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "C:P6",
"modifier": [
{
"type": "invert",
"pos": [
-1300.0,
1100.0
]
}
]
}
},
"uid": "bitout3",
"pos": [
-1180.0,
1080.0
],
"name": "sdr2",
"signals": {
"bit": {
"net": "",
"setp": ""
}
},
"image": "ssr2a",
"rotate": 0
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "C:P7",
"modifier": [
{
"type": "onerror",
"pos": [
-1300.0,
1170.0
]
},
{
"type": "invert",
"pos": [
-1420.0,
1170.0
]
}
]
}
},
"uid": "bitout4",
"pos": [
-1180.0,
1150.0
],
"name": "Cooling-Water",
"signals": {
"bit": {
"net": "iocontrol.0.user-enable-out",
"setp": ""
}
},
"image": "ssr2a",
"rotate": 0
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "C:P8",
"modifier": [
{
"type": "invert",
"pos": [
-1300.0,
1240.0
]
}
]
}
},
"uid": "bitout5",
"pos": [
-1180.0,
1220.0
],
"name": "Cooling-Air",
"signals": {
"bit": {
"net": "iocontrol.0.coolant-mist",
"setp": ""
}
},
"image": "ssr2a",
"rotate": 0
},
{
"name": "Waterflow",
"type": "freqin",
"pins": {
"freq": {
"pin": "C:P9",
"modifier": [
{
"type": "debounce",
"delay": 10.0,
"pos": [
-1300.0,
1350.0
]
}
]
}
},
"freq_min": 2,
"freq_max": 100,
"uid": "waterflow",
"signals": {
"frequency": {
"filters": [
{
"type": "avg",
"depth": 10
}
],
"display": {
"title": "Waterflow",
"section": "status",
"group": "Spindle",
"type": "bar",
"height": 70,
"min": 0.0,
"max": 10.0,
"size": 100,
"region": [
[
0,
3,
"red"
],
[
3,
4,
"yellow"
],
[
4,
10,
"green"
]
]
},
"net": "",
"setp": ""
}
},
"pos": [
-1140.0,
1310.0
],
"image": "flow",
"rotate": 0
},
{
"type": "bitout",
"pins": {
"bit": {
"pin": "bob1:B:step"
}
},
"uid": "bitout6",
"pos": [
-2510.0,
1030.0
],
"signals": {
"bit": {
"net": "chargepump(4)",
"function": "",
"setp": ""
}
},
"name": "chargepump",
"image": "ssr",
"rotate": 90
},
{
"type": "w5500",
"pins": {
"sclk": {
"pin": "SPI:SCLK"
},
"sel": {
"pin": "SPI:SEL"
},
"miso": {
"pin": "SPI:MOSI"
},
"mosi": {
"pin": "SPI:MISO"
},
"rst": {
"pin": "RPI:GPIO25"
}
},
"uid": "w55000",
"pos": [
-1770.0,
470.0
],
"speed": 20000000,
"gw": "192.168.11.1",
"ip": "192.168.11.194",
"image": "w5500",
"rotate": 0
}
],
"flow": {
"view": {
"pos": [
-2749,
179
],
"scale": 0.96
},
"board": {
"pos": [
-1900.0,
580.0
],
"rotate": 90
},
"hal": {
"joint": [
1410.0,
300.0
],
"spindle": [
1400.0,
100.0
],
"spindle.0": [
-668.1191259398493,
1436.6246582365002
],
"joint.4": [
1380.0,
190.0
],
"joint.3": [
-898.1191259398493,
126.62465823650024
],
"joint.2": [
-898.1191259398493,
206.62465823650024
],
"joint.1": [
-898.1191259398493,
286.62465823650024
],
"joint.0": [
-898.1191259398493,
366.62465823650024
],
"misc": [
-678.1191259398493,
826.6246582365002
]
}
},
"description": "Mesa7c81 over SPI - WIP",
"comment": "The bitstream can be written via SPI, but you should have a USB Blaster handy so that you can flash via JTAG in an emergency.\n\nIt is also possible to operate this board with a W5500 via Ethernet, but flashing is then only possible via JTAG.\n\nSmartserial is not supported by RIO, but the 2 ports can be used for Modbus.",
"url": "https://eusurplus.com/index.php?route=product/product&product_id=131",
"toolchain": "ise",
"family": "xc6",
"type": "xc6slx9-2tqg144",
"package": "tqg144",
"clock": {
"osc": "50000000",
"speed": "100000000",
"pin": "P50",
"startup": "CClk"
},
"slots": [
{
"name": "SPI",
"comment": "",
"default": "",
"pins": {
"MOSI": {
"pin": "P16",
"pos": [
446,
570
],
"direction": "all"
},
"MISO": {
"pin": "P15",
"pos": [
427,
570
],
"direction": "all"
},
"SCLK": {
"pin": "P14",
"pos": [
408,
570
],
"direction": "all"
},
"SEL": {
"pin": "P56",
"pos": [
408,
590
],
"direction": "all"
}
}
},
{
"name": "RPI",
"comment": "",
"default": "",
"pins": {
"GPIO14": {
"pin": "P29",
"pos": [
560,
590
],
"direction": "all"
},
"GPIO15": {
"pin": "P27",
"pos": [
541,
590
],
"direction": "all"
},
"GPIO18": {
"pin": "P24",
"pos": [
522,
590
],
"direction": "all"
},
"GPIO23": {
"pin": "P21",
"pos": [
484,
590
],
"direction": "all"
},
"GPIO24": {
"pin": "P17",
"pos": [
465,
590
],
"direction": "all"
},
"GPIO25": {
"pin": "P12",
"pos": [
427,
590
],
"direction": "all"
}
}
},
{
"name": "EEPROM",
"comment": "",
"default": "",
"pins": {
"REBOOT": {
"pin": "P67",
"pos": [
510,
420
],
"direction": "output"
},
"MOSI": {
"pin": "P64",
"pos": [
540,
420
],
"direction": "output"
},
"MISO": {
"pin": "P65",
"pos": [
560,
420
],
"direction": "input"
},
"SCLK": {
"pin": "P70",
"pos": [
580,
420
],
"direction": "output"
},
"SEL": {
"pin": "P38",
"pos": [
600,
420
],
"direction": "output"
}
}
},
{
"name": "LED",
"comment": "",
"default": "",
"pins": {
"L0": {
"pin": "P48",
"pos": [
680,
262
],
"direction": "output"
},
"L1": {
"pin": "P47",
"pos": [
700,
262
],
"direction": "output"
},
"L2": {
"pin": "P46",
"pos": [
720,
262
],
"direction": "output"
},
"L3": {
"pin": "P45",
"pos": [
740,
262
],
"direction": "output"
}
}
},
{
"name": "MODBUS0",
"comment": "",
"default": "",
"pins": {
"RX": {
"pin": "P34",
"pos": [
450,
700
],
"direction": "input"
},
"TX": {
"pin": "P35",
"pos": [
470,
700
],
"direction": "output"
},
"TX_EN": {
"pin": "P40",
"pos": [
490,
700
],
"direction": "output"
}
}
},
{
"name": "MODBUS1",
"comment": "",
"default": "",
"pins": {
"RX": {
"pin": "P41",
"pos": [
650,
700
],
"direction": "input"
},
"TX": {
"pin": "P43",
"pos": [
670,
700
],
"direction": "output"
},
"TX_EN": {
"pin": "P44",
"pos": [
690,
700
],
"direction": "output"
}
}
},
{
"name": "A",
"comment": "P1",
"default": "",
"pins": {
"P1": {
"pin": "P119",
"pos": [
115,
59
],
"direction": "all"
},
"P2": {
"pin": "P117",
"pos": [
134,
59
],
"direction": "all"
},
"P3": {
"pin": "P115",
"pos": [
153,
59
],
"direction": "all"
},
"P4": {
"pin": "P112",
"pos": [
172,
59
],
"direction": "all"
},
"P5": {
"pin": "P105",
"pos": [
191,
59
],
"direction": "all"
},
"P6": {
"pin": "P104",
"pos": [
210,
59
],
"direction": "all"
},
"P7": {
"pin": "P102",
"pos": [
229,
59
],
"direction": "all"
},
"P8": {
"pin": "P101",
"pos": [
248,
59
],
"direction": "all"
},
"P9": {
"pin": "P100",
"pos": [
267,
59
],
"direction": "all"
},
"P10": {
"pin": "P99",
"pos": [
286,
59
],
"direction": "all"
},
"P11": {
"pin": "P98",
"pos": [
305,
59
],
"direction": "all"
},
"P12": {
"pin": "P97",
"pos": [
324,
59
],
"direction": "all"
},
"P13": {
"pin": "P95",
"pos": [
343,
59
],
"direction": "all"
},
"P14": {
"pin": "P118",
"pos": [
115,
40
],
"direction": "all"
},
"P15": {
"pin": "P116",
"pos": [
134,
40
],
"direction": "all"
},
"P16": {
"pin": "P114",
"pos": [
153,
40
],
"direction": "all"
},
"P17": {
"pin": "P111",
"pos": [
172,
40
],
"direction": "all"
}
}
},
{
"name": "B",
"comment": "P7",
"default": "",
"pins": {
"P1": {
"pin": "P143",
"pos": [
345,
733
],
"direction": "all"
},
"P2": {
"pin": "P141",
"pos": [
326,
733
],
"direction": "all"
},
"P3": {
"pin": "P139",
"pos": [
307,
733
],
"direction": "all"
},
"P4": {
"pin": "P137",
"pos": [
288,
733
],
"direction": "all"
},
"P5": {
"pin": "P133",
"pos": [
269,
733
],
"direction": "all"
},
"P6": {
"pin": "P132",
"pos": [
250,
733
],
"direction": "all"
},
"P7": {
"pin": "P131",
"pos": [
231,
733
],
"direction": "all"
},
"P8": {
"pin": "P127",
"pos": [
212,
733
],
"direction": "all"
},
"P9": {
"pin": "P126",
"pos": [
193,
733
],
"direction": "all"
},
"P10": {
"pin": "P124",
"pos": [
174,
733
],
"direction": "all"
},
"P11": {
"pin": "P123",
"pos": [
155,
733
],
"direction": "all"
},
"P12": {
"pin": "P121",
"pos": [
136,
733
],
"direction": "all"
},
"P13": {
"pin": "P120",
"pos": [
117,
733
],
"direction": "all"
},
"P14": {
"pin": "P142",
"pos": [
345,
752
],
"direction": "all"
},
"P15": {
"pin": "P140",
"pos": [
326,
752
],
"direction": "all"
},
"P16": {
"pin": "P138",
"pos": [
307,
752
],
"direction": "all"
},
"P17": {
"pin": "P134",
"pos": [
288,
752
],
"direction": "all"
}
}
},
{
"name": "C",
"comment": "P2",
"default": "",
"pins": {
"P1": {
"pin": "P94",
"pos": [
464,
59
],
"direction": "all"
},
"P2": {
"pin": "P92",
"pos": [
483,
59
],
"direction": "all"
},
"P3": {
"pin": "P87",
"pos": [
502,
59
],
"direction": "all"
},
"P4": {
"pin": "P84",
"pos": [
521,
59
],
"direction": "all"
},
"P5": {
"pin": "P82",
"pos": [
540,
59
],
"direction": "all"
},
"P6": {
"pin": "P81",
"pos": [
559,
59
],
"direction": "all"
},
"P7": {
"pin": "P80",
"pos": [
578,
59
],
"direction": "all"
},
"P8": {
"pin": "P79",
"pos": [
597,
59
],
"direction": "all"
},
"P9": {
"pin": "P78",
"pos": [
616,
59
],
"direction": "all"
},
"P10": {
"pin": "P75",
"pos": [
635,
59
],
"direction": "all"
},
"P11": {
"pin": "P62",
"pos": [
654,
59
],
"direction": "all"
},
"P12": {
"pin": "P61",
"pos": [
673,
59
],
"direction": "all"
},
"P13": {
"pin": "P59",
"pos": [
692,
59
],
"direction": "all"
},
"P14": {
"pin": "P93",
"pos": [
464,
40
],
"direction": "all"
},
"P15": {
"pin": "P88",
"pos": [
483,
40
],
"direction": "all"
},
"P16": {
"pin": "P85",
"pos": [
502,
40
],
"direction": "all"
},
"P17": {
"pin": "P83",
"pos": [
521,
40
],
"direction": "all"
}
}
}
]
}
```