CS-Lab Support Forum for CNC Community
Help to run this brand-new forum and stay with us.
Ask your questions, we are here to help!
Few questions about creating with simCNC
Quote from Koffmatic on 25 October 2024, 09:28Hello,
Finally my project is running well and there is only few little things I haven't yet solved.
1)
I have tool selection buttons made by "toolbuttons" but it's not very good solution. I see that if I configure led state as digital output, even there is no any other functions configured, button writes same output every time as its clicked? Normally I see state function is read only. Can I configure that button to only show output value, not write it and use script for writing output?
There is couple of things to do before output can be written like other tools check, other tools disbaling, tool selection and tool offset selection. After everything of these are good, machine is enabled and not in trajectory state, output can be written.
2)
Machine safety. My machine is such big physically (work area 3000 x 7000mm). There is also such an fast speeds to cut and rapid moves, because we don't have any milling etc tool. Only different tangential knifes or pen to draw. Machine is moving maximum of 85m/min so it takes almost 1,5meter per second.
I desided to protect machine with safety scanner. All lenghts ets are now made correctly and first test have been verified, but its not good. I have made control with Delta ASDA B3 servos and wired these with wiring example. I this case it's almost ok, but because CSMIO controls drive enable signals, drives are not counting encores pulses when enable is off. So if we cut enable signal with safety scanner in movement state, machine could keep moving on few milliseconds without counting encoder pulses. This causes axis depositioning and in this case it could also cause mechanical problems because we have two servos (master/slave) in X axis.
Any thoughts or tips how to solve this situation?
3)
Within scanner functions I'd like to inform user by showing info window to him/her but even I use typical tkinter functions or simCNCmessager, I cannot close window automatically. I tried to use root.after(5000, root.destroy) but python terminal tells me that destroy is not acceptable function when we are working on 'wm'. Any thoughts about this situation?
I can make it by normal tkinter, but it creates new blank window with default size to left upper corner of the screen in same time as messagewindow is generated. Also messagewindow not look same as other windows. Or is it possible to create whole new info window by CS-labs in ___MSG.py script? If there is one self disappearing script for example "infoWithDelay(self, text, head, delay)"
4)
I have made some machine parameters which operator can change. Is it possible to name / comment these parameters like machine own parameters are?
Hello,
Finally my project is running well and there is only few little things I haven't yet solved.
1)
I have tool selection buttons made by "toolbuttons" but it's not very good solution. I see that if I configure led state as digital output, even there is no any other functions configured, button writes same output every time as its clicked? Normally I see state function is read only. Can I configure that button to only show output value, not write it and use script for writing output?
There is couple of things to do before output can be written like other tools check, other tools disbaling, tool selection and tool offset selection. After everything of these are good, machine is enabled and not in trajectory state, output can be written.
2)
Machine safety. My machine is such big physically (work area 3000 x 7000mm). There is also such an fast speeds to cut and rapid moves, because we don't have any milling etc tool. Only different tangential knifes or pen to draw. Machine is moving maximum of 85m/min so it takes almost 1,5meter per second.
I desided to protect machine with safety scanner. All lenghts ets are now made correctly and first test have been verified, but its not good. I have made control with Delta ASDA B3 servos and wired these with wiring example. I this case it's almost ok, but because CSMIO controls drive enable signals, drives are not counting encores pulses when enable is off. So if we cut enable signal with safety scanner in movement state, machine could keep moving on few milliseconds without counting encoder pulses. This causes axis depositioning and in this case it could also cause mechanical problems because we have two servos (master/slave) in X axis.
Any thoughts or tips how to solve this situation?
3)
Within scanner functions I'd like to inform user by showing info window to him/her but even I use typical tkinter functions or simCNCmessager, I cannot close window automatically. I tried to use root.after(5000, root.destroy) but python terminal tells me that destroy is not acceptable function when we are working on 'wm'. Any thoughts about this situation?
I can make it by normal tkinter, but it creates new blank window with default size to left upper corner of the screen in same time as messagewindow is generated. Also messagewindow not look same as other windows. Or is it possible to create whole new info window by CS-labs in ___MSG.py script? If there is one self disappearing script for example "infoWithDelay(self, text, head, delay)"
4)
I have made some machine parameters which operator can change. Is it possible to name / comment these parameters like machine own parameters are?
Uploaded files:
Quote from CS-Lab Support on 29 October 2024, 09:011) Unfortunately, the DigitalIOControl object always changes its state after clicking.
You can't force it to only change its state after changing the output state. But you can use the "ToolButtonWithProgress" object instead. Below is an example of saving the state of the LED diode for the spindle button.
gui.btnSpindle.setValue( 1 )
To make it work, set the min and max values to 0 and 1.
This way, you will light the LED diode whenever you want.
2) In my answer, I assume that you have a CSMIO/IP-A controller. If you have a CSMIO/IP-S or CSMIO/IP-M controller, there is nothing you can do about it.
I suspect that during an emergency stop, you turn off the power supply to the entire DELTA servo drive.
This is an error because then the CSMIO/IP-A controller actually loses the ability to count encoder pulses.
In an emergency, only the Servo ON signal should be turned off, thanks to which the CSMIO/IP-A controller will still count encoder pulses.3) Simply use "window.destroy()".
Attached is an example macro. Al500To test it, provide a high state to input number 3 and run the macro.
When digital input number 3 goes low, the window will disappear.4) Do you mean naming the parameter in the parameter table?
1) Unfortunately, the DigitalIOControl object always changes its state after clicking.
You can't force it to only change its state after changing the output state. But you can use the "ToolButtonWithProgress" object instead. Below is an example of saving the state of the LED diode for the spindle button.
gui.btnSpindle.setValue( 1 )
To make it work, set the min and max values to 0 and 1.

This way, you will light the LED diode whenever you want.
2) In my answer, I assume that you have a CSMIO/IP-A controller. If you have a CSMIO/IP-S or CSMIO/IP-M controller, there is nothing you can do about it.
I suspect that during an emergency stop, you turn off the power supply to the entire DELTA servo drive.
This is an error because then the CSMIO/IP-A controller actually loses the ability to count encoder pulses.
In an emergency, only the Servo ON signal should be turned off, thanks to which the CSMIO/IP-A controller will still count encoder pulses.
3) Simply use "window.destroy()".
Attached is an example macro. Al500
To test it, provide a high state to input number 3 and run the macro.
When digital input number 3 goes low, the window will disappear.
4) Do you mean naming the parameter in the parameter table?
Quote from Koffmatic on 29 October 2024, 22:16Quote from CS-Lab Support on 29 October 2024, 09:011) Unfortunately, the DigitalIOControl object always changes its state after clicking.
You can't force it to only change its state after changing the output state. But you can use the "ToolButtonWithProgress" object instead. Below is an example of saving the state of the LED diode for the spindle button.
gui.btnSpindle.setValue( 1 )
To make it work, set the min and max values to 0 and 1.
This way, you will light the LED diode whenever you want.
2) In my answer, I assume that you have a CSMIO/IP-A controller. If you have a CSMIO/IP-S or CSMIO/IP-M controller, there is nothing you can do about it.
I suspect that during an emergency stop, you turn off the power supply to the entire DELTA servo drive.
This is an error because then the CSMIO/IP-A controller actually loses the ability to count encoder pulses.
In an emergency, only the Servo ON signal should be turned off, thanks to which the CSMIO/IP-A controller will still count encoder pulses.3) Simply use "window.destroy()".
Attached is an example macro. Al500To test it, provide a high state to input number 3 and run the macro.
When digital input number 3 goes low, the window will disappear.4) Do you mean naming the parameter in the parameter table?
1) ok need to test
2) Controller is IP-S. And no I don't turn power off never from the drive. Just control drive enable signal via CSMIO-IP-S ENA functionality and also STO is connected to emergency relays. Safety scanner does not drive STO inputs right now but emergency stops buttons yes. CSMIO also gets emg state from same relays as delta STO inputs.
3) Did you forgot to add attachment?
4) Yes naming parameters on the list. My own parameters does not have any comments or names right now but machine fixed parameters have some little explanations so its nice to have it also to my params.
Quote from CS-Lab Support on 29 October 2024, 09:011) Unfortunately, the DigitalIOControl object always changes its state after clicking.
You can't force it to only change its state after changing the output state. But you can use the "ToolButtonWithProgress" object instead. Below is an example of saving the state of the LED diode for the spindle button.
gui.btnSpindle.setValue( 1 )
To make it work, set the min and max values to 0 and 1.
This way, you will light the LED diode whenever you want.
2) In my answer, I assume that you have a CSMIO/IP-A controller. If you have a CSMIO/IP-S or CSMIO/IP-M controller, there is nothing you can do about it.
I suspect that during an emergency stop, you turn off the power supply to the entire DELTA servo drive.
This is an error because then the CSMIO/IP-A controller actually loses the ability to count encoder pulses.
In an emergency, only the Servo ON signal should be turned off, thanks to which the CSMIO/IP-A controller will still count encoder pulses.3) Simply use "window.destroy()".
Attached is an example macro. Al500To test it, provide a high state to input number 3 and run the macro.
When digital input number 3 goes low, the window will disappear.4) Do you mean naming the parameter in the parameter table?
1) ok need to test
2) Controller is IP-S. And no I don't turn power off never from the drive. Just control drive enable signal via CSMIO-IP-S ENA functionality and also STO is connected to emergency relays. Safety scanner does not drive STO inputs right now but emergency stops buttons yes. CSMIO also gets emg state from same relays as delta STO inputs.
3) Did you forgot to add attachment?
4) Yes naming parameters on the list. My own parameters does not have any comments or names right now but machine fixed parameters have some little explanations so its nice to have it also to my params.
Quote from CS-Lab Support on 4 November 2024, 07:262) I was hoping you have a CSMIO/IP-A controller. In the case of the CSMIO/IP-S controller, losing position after deactivating the drive with the ena signal is normal. This controller does not have feedback so it requires re-homing the axis after each drive deactivation.
3) The attachment is present, click on the blue AL500 inscription.
4) Something like this is planned.
2) I was hoping you have a CSMIO/IP-A controller. In the case of the CSMIO/IP-S controller, losing position after deactivating the drive with the ena signal is normal. This controller does not have feedback so it requires re-homing the axis after each drive deactivation.
3) The attachment is present, click on the blue AL500 inscription.
4) Something like this is planned.






















