That's what I thought at first until I worked with it for a while.
If you work directly at the machine, you simply copy the whole structure and only change the contents of the files from L1101 and further for channel 1 and L2101 and further for channel 2.
The files are synchronized in the main program 1000 and 2000 by If queries.
You don't really have to change anything except that you need several synchronization points.
There are 9 synchronization points in the attached program.
If I don't need that many I simply delete it for a simple program.
RG703 and RG704 are status variables for the spindle status.
As soon as he has finished program L1101, there is 101 etc. Exactly the same for the other channel.
In the machine there is a mask where you can see the status of the program. You can see this variable and the value. If I cancel the program I can also change these numbers.
If I want to execute the operation from subroutine L1108, I simply enter 108 there. The controller calculates nothing, it just starts there and it always fits.
If you enter the status 0, 1 and 2 in the variable, you control whether the spindle is empty, raw material clamped or the part is finished.
With 99 you can stop editing on one page.
Example. On the left spindle I have a part that is broken. I'm stopping the program. I set the variable to Raw material status. There is a finished part on the counter spindle. This already indicates the finished part status. I'm starting the program. The machine automatically makes a cut-off and cuts off the defective part and then automatically carries out only the operations on the left spindle. As soon as the left spindle is finished, the part is transferred and then both sides run synchronously again.
When the main spindle is finished with the last part and only the second side has to be machined, I can simply stop. Enter status 99 on the main spindle. Then the part is handed over and finished on the counter spindle. However, no new part is started from the main spindle.
Whenever a new material bar is fetched, the program automatically makes a cut-off at the tip as this is usually ground.
All the variables are available in program L1000. If I want to reschedule something, I'll do it here. If I want to leave the part more out of the spindle, the depth of the transfer to the counter spindle, the blank diameter, finished part length etc. everything is set here.
For example, if I want my material to look more out of the spindle, I just have to change the variable here.
The turret automatically moves with the stop to the new position to fetch the material and moves together with the material to the end position. If the material is a new bar, it is automatically cut off at the front, if not, then not and the program starts.
If the material bars are ground more this time I can increase the cutting-off with a variable.
If I want to run the program on another machine because this machine is busy and the other one has a different clamping system I just have to change the length for the variable of the clamping system and everything runs.
I don't have to program or change anything in the existing program. You only need the individual operations in individual files once. Everything else can be changed using the variable.
There are many files, but you always copy them just because all the presets are already there. You always change only the operation files and a few variables the rest always stays as it is you just need the other files in the same folder.
If you want to unload and clamp manually, this is also no problem. You only have to press one button on the control. The lines "/" and "/7" are responsible for this.
These are just a few advantages. I was looking for an English documentation but couldn't find anything. Everything I have is in German and from DMG.
Here a link to DMG, there is just not so much.
https://nl.dmgmori.com/products/digitization/production/technology-cycles/control-of-program-status
The structure is really good, you can work with it much faster and make fewer mistakes.
You find them complicated at first sight and bad if you have never worked with them before. That's what I thought at first.
At the moment the operations can be done in HSM. Select the groups I want to synchronize and manually post as L1101 and so on. Just drop it into the structure folder and change the variables manually. It's just a little annoying.
EdgeCam, EspritCam and DMG's own programmer can completely let out the structure.
@ArjanDijk Of course I have already asked a HSM sales partner who is still checking it. I don't know if he's gonna be able to do this or not yet.
I just wanted to share it with the community, maybe it is interesting for others and we do something for everyone.
Is that what the community is for? Sometimes someone writes something unimportant sometimes something interesting. I find it more interesting to hear several opinions, not just those of a sales partner.
With all the other things I've requested here, a reseller can't help me.
If a function is not available, what should it do?
I can't even be sure if he takes the proposal seriously and forwards it to development at all. Here you have the chance that others will read it and if it interests enough people it's good and if not it's ok.