Description
Key Learnings
- Learn how to program a multitasking machine like Mori-Seiki NTX or Doosan SMX3100
- Understand what to look for in a multitasking machine and post processor
- Learn how to change the CAM setting to get the desired output
- Understand the actual limits of the software
Speaker
- Laurens WijnschenkYoungster amongst the Expert Elite members but I have been working with the CAM Development team way before it was part of Autodesk. Started in the trade at my brother’s machine shop a couple of years ago. As the “computer nerd” in the family naturally, I was the guy to help move from old handwheels to CNC controls. Now responsible for everything that happens on the shop floor, in the manufacturing business that has grown from myself and my brother to a 10 man jobshop. The business that is specialized in machining the more complicated parts, can take an idea to a prototype and even to a complete series production. All in a small town in The Netherlands. You’ll find my name on the CAM sections of the Autodesk forums quite often. Loves to share my experience and tips and tricks there and at Autodesk University. Since I went there the first time three years ago, I have been back to teach each year.
LAURENS WIJNSCHENK: I'm Laurens Wijnschenk, which most of you probably know when you're here, but not everyone might know. I'm actually from the Netherlands. It's been a long way here. I've done a couple of classes this week. This is the final one. I'm kind of the HSM guru in Europe. And we've got Rob Lockwood here. This is kind of the same guy in--
AUDIENCE: [INAUDIBLE]
LAURENS WIJNSCHENK: From Australia, yeah, too. But that's what I asked if I could do some classes this year. So--
AUDIENCE: You've been working [INAUDIBLE]
LAURENS WIJNSCHENK: Yeah? You sure?
AUDIENCE: Yeah.
LAURENS WIJNSCHENK: It's at least the first compliment I got today.
[APPLAUSE]
All right. It's kind of weird that I've got to tell you this, but we're going beyond what software was actually designed for. So whatever I'm doing here that makes it possible to run these machines-- well, it might not even be totally tested and thought of by the development team. So it works great for me, but it's got some workarounds. You could call it a hack at some point. So I'm just trying to inform you of that.
Just a little explanation of what I'm going to call a multi-task machine. We're not talking about a dual-channel machine or a machine doing multiple tasks at the same time. We're talking about a machine that can do multiple tasks-- so turning, milling, stuff like that-- all in one machine, even with a sub-spindle. So you actually have, like, a turning machine with a sub-spindle and then a full, 5-axis milling head attached to it.
These are some of the things that we've actually made. The left top is a part that is actually used in a drag race bike. It's part of the clutch. The part you see in the back is a aluminium one that broke. So we actually made a titanium version this time. And the bottom part, we actually-- it was a mold for plastic to clean out pipes in the oil industry. The right top is all parts of a drone that's still being developed. And the right bottom is a valve. This is the aluminium test part we actually ran to check if we could do it.
Before you start programming such a machine, the thing I would like to tell you is that it's not always about just doing the actual motions, but a lot of it depends on if your machine is able to do that correctly, and if you know what kind of code it would like, what kind of motions it's good at. So some things you need to consider is the rigidity of the machine, what options you've got with the B-axis to swivelhead, and the control that's on there. The rigidity, I just took a picture of the-- there was an [INAUDIBLE] machine we actually have. While it might be a very rigid machine in its class, it's still the same kind of weight-- but double the workspace-- of our 5-axis machine. So you still got to remember that it's not going to be as rigid as your usual 5-axis machine.
Like with the Swivelhead, we get a whole lot of options, actually, to use. Like for turning, we use the same head for turning inside, outside. You can have these multi-tools built on. I don't use these quite a lot, but you could. And on the other hand, for the milling you actually have your ordinary 3-axis milling that you could probably do on a lathe with different tools, which you can actually go beyond that. I have a 3 plus 2. Most of these machines actually do that, and full 5-axis is usually an option you have to buy. But there is that option.
Just listed a bunch of controls here. But what I'm just trying to show is that there's a lot, and they all have their benefits over the other. So usually you can choose between a couple for your own machine. On ours, there's the Fanuc control, the B5, which actually means that it's 5-axis simultaneous. But all these controls want a different input, so get to know your machine and your control before you actually start complaining about the software or anything else.
So I wanted to show a video of our machine actually making a part.
LAURENS WIJNSCHENK: That's me.
AUDIENCE: And you checked your [INAUDIBLE]
LAURENS WIJNSCHENK: It was actually me checking if the GoPro was on. But I thought it was cool to show that. It was not totally set up. I just wanted to make a video.
AUDIENCE: Yeah.
LAURENS WIJNSCHENK: So here is just the raw stock that I put in the machine. You see a turning tool coming up. Usually when there's coolant, the GoPro is not going to show you much. But at least you can see the motions now. It's just facing off the front of the stock right now, and now it's doing the first roughing pass. Let's see if we can just skip along a little.
Can you actually-- do you see it go up here? Now the tool will come down-- which is a threading tool. You see, actually, that the head is at 45 degrees, which is one of the issues we will run into when we actually start the programming. Here we got into what I call the fun stuff. I mean the turning is kind of easy. Turning is turning. It's 2-axis, usually. I mean, you could have it B-axis motion, which, of course, the software does not support.
We're just making a mark on the back side so we actually know how the [INAUDIBLE] is used in real life. And now we're actually calling the sub-spindle to actually take the part so we can finish the other side. This is all programmed within the software. There was no hand-coding in this anywhere.
This was actually, I believe, the third part we actually made on the machine. So not everything is fully up to speed with what I would do now, but it means I've not always got the time to just put in videos and run the part a million times until I got at least some good footage. That's why we're still working with the old footage for this.
Just the view-- the same thing from the other side so we actually have an idea on what goes on. All right. It's [INAUDIBLE] the back now. And now we're going to start doing some milling on it, or maybe first face it off. That might be the case in this-- first do a facing operation. Yeah.
AUDIENCE: Just curious-- will the machine change it to a [INAUDIBLE]?
LAURENS WIJNSCHENK: Yes, it could. Not saying I would actually advise doing it, because it gets pretty tricky pretty fast. But you also see that I didn't know my machine very well, so the adaptive isn't really fast still here. But the trick is just to show you what we actually do with the machine. I mean, I can show you how to program it all day, but you got no clue to what the machine actually looks like, it doesn't help you much.
Just chamfering it off, and it should be fine. I actually can do the chamfering from the other side, too. Probably in this video. We fixed it going back all the way now too, but in the start, you just want to be safe, just move everything to a safe plane before you start rotating your spindles, or z-axis, in this case.
All right. This actually is a part we now fabricate on a regular basis. It's used to actually tow trucks. They're very new Scania trucks. We'll have this bolted on the moment they break down to be towed to a safe location. We developed this together with an actual towing company. So we do the design and fabrication of it, and they give us the know how on how to do it-- on how to make this work. So what I'm actually going to show is that it's almost as easy as programming something like this, so your ordinary milling machine or turning machine. At least, that was the idea. [INAUDIBLE]. All right. [INAUDIBLE] something like that.
What I got to do is change the work offset, because otherwise my post will start whining about it. What we usually do is have templates for a lot of the stuff. This is inside stuff. This is outside. Didn't copy them all to my laptop, but most of this-- we've got a lot more on our server at the shop. They're all called-- in this case-- Outside, Stainless, Premachining, and Finishing. So it's got four operations in this case. Usually, the first thing I do is just hit Generate, and see what happens.
Already see I made a mistake in this case. The facing works, but I didn't turn on Spin Profile. So the system doesn't actually know how to react to it in Turning operations. It's creating a spin profile now, so this might take a minute. All right. There we are. So what we can see here how are the operations. Something went wrong. Just this model. Yeah. Actually, these are just the operations to machine the part now, or, at least, turn the first side. What you might ask now is like, how do we actually know at what angle the B-axis should be at? This is a very good question for the type of machine we've got.
If we go into the Tool Library, this is the first tool. I actually see that in the Vendor box I just put 45. So this is the kind of hack I was talking about. What we just do here is tell the system within a box at what angle the Turning tool will be at. The tool I defined is just the same tool you would use in a normal lathe. This is one of the things we had to do to just make it work. It has worked great for us. There's something in the works to make this easier for us. I mean, the tool will never look exactly like we've got in the machine.
But in the future, we could have a Turning tool that actually has-- it's neutral like this. And if we make that, we could actually-- if we select that different tool right now-- it's just 5, I believe. Yup. What we could say, if you would use a tool like this, it would produce a pretty weird path, because it wouldn't be able to go into the corner, which is about right. But we could actually change the Tool Orientation right here it's 45 degrees and it will produce the correct path.
AUDIENCE: Is there a way you could call in the first process [INAUDIBLE] that value from the [INAUDIBLE] instead of using the vendor set to 45?
LAURENS WIJNSCHENK: Yeah. You could just have it call this Tool Orientation value now. The post processor can actually get any value. You can change-- the only thing holding us back here is that, for example, a Threading operation doesn't have the Tool Orientation yet. So this is in the works. The guys know that. But we thought about this. That's the first time to actually make it work, but, sadly, not all operation is allowed for the tool orientation. So we had to make this work.
AUDIENCE: That's also because of the Tool Type, though, right? So if you used the other tool you had on it previously, and then used 0.5, then you would have gotten a nicer result.
LAURENS WIJNSCHENK: No, no, no. So you would have to define as a Neutral tool, and then put it on 45. Or you do it the usual way, so have, like, just 45 in the Vendor, and have the tool-- looks silly in this case. But we're using the product to actually make the paths. And I'm not actually concerned about the rest of it. Because I can't simulate it anyway, not properly, so to speak. So with that, I'll just put this back. Pretty sure it was this one.
Because if you look at it now, I could put in 45. You'll see the tool going right. You just can't do this now, so. Generate this one. Will put on the Thread as well. Want to do it like that? Fine.
So after we've done this, the main side of this has been done. But we need to make sure that we get it to the sub-spindle There's been a lot of changes on this as well. So still, things that need improvement in the software is that the actual values you put in are considered diameters here in the View, which is not true. But they look like that. So we put in 5 to feed until 5 in front of the part of this selection. Everything works. It just shows it wrong.
I have 20 here. Now it's grabbed onto the actual part, and our next move is to be returning the actual spindle-- sub-spindle to its home position so we can do the machining over there. Of course, we check Unclamp Primary Spindle. Because if you do the other one, it will just drop. And this will be fine. But if we post this now-- the other way.
This is just your actual Facing operation you would probably see in any turning machine as well. But this is the code we actually need to make the machine run at 45 degrees. What you see here is B minus 45 minus 45 is for the main spindle. If you want to go the other way, it's going to be positive. J2 is actually for in what orientation the milling spindle needs to be. Because the tool could be a left-hand tool or a right-hand tool. And it can actually position the Turning tool at every 15 degrees. But there's two main ones, just zero and 180 degrees.
This is kind of the stuff that has been thought about with myself and Rob, for example, to getting this right in the post. So the post actually looks for if this is a left-hand tool. If it's a left-hand tool and you're working on the main spindle, you get a J2. The R value is actually the composition point for your Turning tool, because the machine can calculate that for you as well. And the W is actually just the Wear Offset, because you can change the Wear Offset here to have different values for Tool 1 on the main spindle and on the sub-spindle, for example.
AUDIENCE: So are you using the control to deal with compensation-- tip compensation to overcome the limitation of the software?
LAURENS WIJNSCHENK: No. Actually, what you're doing here is just telling the control the way the compensation is in the software. Because you measure the tool just at minus 90. So it just knows the length of it. So it needs to know how many degrees you turn it and how you're going to use the tool. Because if you would be turning on the inside, you would have a different compensation for your radius. So it mainly needs--
AUDIENCE: [INAUDIBLE]
LAURENS WIJNSCHENK: From there on out, actually, for every operation it has the same kind of thing. We go through-- [INAUDIBLE] And we would do the transfer. The transfer is two parts, because we program one in the what we call the upper program in the machine. It's also got a lower program which you use for moving to sub-spindle moving, for example, if you've got a lower [INAUDIBLE] doing that kind of stuff. The post actually handles that, too, where it's this-- file now. It's called [INAUDIBLE] lower.
And we immediately get the same. [INAUDIBLE] need a program to move the sub-spindle as well, so it's all part of the--
AUDIENCE: So yours doesn't use two channels? It's just [INAUDIBLE]?
LAURENS WIJNSCHENK: Yes. Yes, the machine does use two channels. It's not like you really need the second channel, except for moving the sub-spindle and the steady rest, for example.
AUDIENCE: On your single-channel, standard, normal [INAUDIBLE] currently have the exact same axis combination. [INAUDIBLE]
LAURENS WIJNSCHENK: And don't need it. But you shouldn't ask me about that. Ask the [INAUDIBLE] guys about it. So we need the dual channel to actually move it. So here you see just the [INAUDIBLE] moving it about. One thing I forgot to program now is that what I actually do is make a set up for the main side and make a set up for the sub-spindle side, which actually produces two different programs. I post the first one and then the second one.
But it would mean that I would have to start the second program all the time. So what we usually just do is put a manual [INAUDIBLE] in and call program, in this case, 1,001 would be fine. We could actually just copy this one. Duplicate work. All right. The only thing-- why is this on primary? So what we see here is that it's going to be on a secondary spindle.
This is what we would need in a post to actually make good guesses on if we got an invert axis or not. Because it depends on the control you have-- if the Z-axis flips to the other side or not, stuff like that. This is all reprogrammed. So I'll just toss these. We'll make this the default folder. In fact, what I could do is just take the same template, do the Facing operations. There's no need to turn the outside in this case.
So we generated a Facing operation, but now we need to start thinking about actually milling the side of this part, because we're not going to be able to do this in Turning. I already made a sketch here. This 19 millimeters on the back is actually the space we've got before we hit the actual jaws of the chuck. They were actually modeled as well in this case. Usually when I'm just programming a part, I find it annoying that it's in there, because if I just make the sketch, it will be fine.
So we used that to actually drive our adaptive path. It seems that I didn't flip the-- yeah, this is fine. Should work. Adaptive. Why is the Tool Orientation wrong? All right? So we'll need to set the Tool Orientation to just machine this from the side. Use the selection as our Containment box and set the Height Reference just here so it doesn't go below what we actually need. You probably still-- got the correct tool already. So we just hit Generate.
It's going to take a little while, but not too long, actually, I suspect. Because I didn't set it to a very shallow path. So it should generate quite quickly. What you can see is actually that the system already knows what has been machined on the other side, even if it's been turned or milled. It can actually keep that in mind and just machine any stock that's left here. So there's no machining being done even if it's allowed to go here.
We need to do the same thing on the other side. So we could just go ahead and duplicate this operation. If we set it up all right, it should be just as easy as flipping the z-axis and [INAUDIBLE] come up with the correct path. After that, we need to finish this side. Let me first allow it to generate more operations at the same time. Seems to be a good plan in this case.
What I would usually just do in such a case is just select this. Use a very long tool. It's this one. And actually program it like that. It's a different-- multiple finishing passes in this case. And multiple-- that one might be a little overkill, so something like 15. Use Even Step Pass. It would be great.
So you got something easy like this. Why I started talking about the rigidity of your machine, this is going to be a pretty big tool, pretty long tool, and the stability of your B-axis is not going to be sufficient if you're actually holding this on a threaded part. So when we started thinking about what the capabilities of the machine actually were, we came up with a different solution. Just do it 5-axis, just have a chamfer mill, and it could be an inserted one or just a full [INAUDIBLE] one. It doesn't really matter. In this case, it's just a 45-degree taper. We select this.
And what we can just do is select the bottom side, top side of this. If we just do a single pass, it will just one pass. But we actually need more of them. So we'll just tell it the Step Down will be about 5 millimeters. Let's see if this works. Oh, you can laugh now, but you did it five minutes ago. And now you just missed one option, and it doesn't-- you all know it's like that.
So you actually see we already got a tool path. If we simulate it, it will look pretty decent. The tool's red because it thinks it collides with stuff, because it didn't simulate all the operations in front of this. But you can see, actually, it does make a path, and it works. But if you will do this on the machine, you'll actually see that there's a weird move right here. It's going down a little. And we would expect that if you look at the actual lines and model we selected, because it's not designed very well. You should blame my brother for that.
So what I would do is make a surface that I can actually use to drive the Swarf operation with. Again, it remains easier to just turn off anything I do not need. So what we're actually doing in this case is tossing these contours. and selecting the new ones, and see if we ever actually get a better path, which I suspect we do. We do. It looks much cleaner already. One of the main things that you could actually still run into if you show the points is-- I guess we will see it here-- is that due to the tolerance we used, the system will actually have the tool move back and forth here.
So it comes in around the corner. And it will go back and forth before continuing its move. If you've been to Rob's class, you probably know why things like that actually happen. 9 out of 10 times, actually, it helps to just change the tolerance and be done with it. In this case, we selected Contours. So there's nothing on the Surface Triangulation we can do. So it's just the Contours we can actually change.
Since this is going to take a very long time to generate, I'll just show you the one I did before, which actually doesn't do it anymore. You also see that's got a lot more points, actually, being generated here. It needs extra points to be as precise. But I also set one of these parameters here. At the bottom, you can actually tell it to make line segments never longer than a couple of millimeters. So in this case, the default is 5.
AUDIENCE: [INAUDIBLE] I was just thinking about the [INAUDIBLE]
LAURENS WIJNSCHENK: Yeah.
AUDIENCE: And you [INAUDIBLE] the contour from the [INAUDIBLE]
LAURENS WIJNSCHENK: Yeah.
AUDIENCE: Have you tried to create the [INAUDIBLE] if you [INAUDIBLE] or create the steps from the same problem [INAUDIBLE]
LAURENS WIJNSCHENK: Yeah. So you mean with the problem I had here? Yeah. But what I actually did in this case was make a ruled surface from the top selection and just made it this long. I could have also, indeed, made a sketch on this plane, and it would have given me the same result.
AUDIENCE: I think we calculated [INAUDIBLE]
LAURENS WIJNSCHENK: But it shouldn't matter if I calculate it from a sketch or in this case. Because I'm selecting the contour only. So if it's the contour from the face-- the surface-- I created or from a sketch should give the same result.
AUDIENCE: [INAUDIBLE]
AUDIENCE: In this case, it wouldn't because it's a rail [INAUDIBLE] Surfacing tool [INAUDIBLE] But in this case, it's a rail.
LAURENS WIJNSCHENK: Yeah. It doesn't really care about the surface in this case. Essentially, I'm doing the same thing as having two sketches and selecting those to drive the tool path. You could also say too little path in this case. Because this is what I selected-- Drive [INAUDIBLE] Contours. But you can also use Drive [INAUDIBLE] Surfaces. So I can also use the surface to actually drive it. But in this case, it's just using the contour I selected at the bottom and the top.
AUDIENCE: But if you're doing the sketch for the same contour, you're saying the sketch is better [INAUDIBLE]
AUDIENCE: No. Not [INAUDIBLE]
LAURENS WIJNSCHENK: If you ask--
AUDIENCE: [INAUDIBLE]
AUDIENCE: For a [INAUDIBLE]?
AUDIENCE: Yeah.
AUDIENCE: [INAUDIBLE] if you look at the [INAUDIBLE]
LAURENS WIJNSCHENK: Let me put it this way. It shouldn't be different. If you notice it being different, you should talk to our guy Rene. He's around here somewhere. And be able to explain to you why it shouldn't be different and what he has to do to actually fix it. Because it's just the actual contour it uses you select from the part. So if you drive it with a sketch or the actual part shouldn't make a difference.
So but if you would use a surface in this case, then it would make a difference. Because if I used a surface-- actual surface-- to drive it, you would have a triangulation of that surface, which would actually drive the tool path, and you would see a lot more tilting motion on your tool, which you do not want. I used the Swarf on this path a lot, because we also used it to do it this bottom chamfer from that side as well.
So we'll just get the Manual Geometry of the selection turned on. I got to admit that I'm not the best at doing the selections in the Inventor. We do use it on a daily basis but usually more for the turning kind of stuff. I'm the guy that was already with HSMWorks before it was acquired by Autodesk. So for me, HSMWorks is still the product I use the most, but Inventor is getting just as close to doing everything HSMWorks does. But this is one of those things that, for me, was much easier to do in HSMWorks, so that's why we programmed it.
I see I was doing it on the wrong side. Here. So even just doing the back chamfer for us works doing it 5-axis. Here, I didn't really care about the way the points were distributed anyway. Because its just a chamfer. As long as it moves smoothly in the machine, it was fine by me. I mean, I just got to break the edge, and that was it for me.
But one of those things-- this tool was already in the machine, and doing a tool change on such a machine actually takes a very long time. So going through a chamfer tool usually takes up more time than actually doing it with your tool you've got. So swarfing it around usually is the way to go if you can. So we can do the same kind of thing just on top edge.
And it should just be the quickest way for us to actually finish this whole part and actually machine it on the multi-tasking machine in the quickest way. We have actually tried to machine this part on a lathe and putting it in the 3-axis machine. And it took about three times as long to actually machine the part. So that's why we actually wanted to move it to the multi-tasking machine.
Actually, we're getting really close to what we would actually need to do to just program this part. I mean, we're just engraving this on the back here. We can do this 3-axis with just doing a project on the surface, or use a multi-axis contour if you actually select these like that. Let's see if I can find anything that will actually work for such a thing.
This is not allowed.
AUDIENCE: [INAUDIBLE]
LAURENS WIJNSCHENK: Yeah, it's usually the easiest thing to do. Well, see if this works.
AUDIENCE: Good luck, man.
LAURENS WIJNSCHENK: You're telling me the wrong thing, Rob.
AUDIENCE: Sorry. I [INAUDIBLE]
LAURENS WIJNSCHENK: I thought you were the guy that actually knew this kind of stuff-- something like that. Should work. There we go. As you see, the linking now actually comes from the top of the part, which might not be the most convenient way to do this. Let me see if I can turn the other planes off. If we actually use Tool Orientation in the 5-axis operation before this-- so the Tool Orientation we have here, just select the z-axis. It doesn't change much on the actual path, but it actually changes where the linking starts from. So like this, now you see the linking actually starts almost straight above the surface, which usually causes it to be much smoother and actually moving there before the actual cutting path. It doesn't really matter much.
Something else I wanted to show you-- if you really go crazy with your post, you can actually do stuff like this. So here we're holding onto the valve I showed you earlier. The sub-spindle is actually supporting the part in this case. But what we usually do-- the machine has just moved back to its center location, but I would crash into our sub-spindle in this case. Since we cannot fully simulate this all in the software, you've got to be a little inventive to get this actually to work.
So I already did the Tool Change that was going to come in. And move to a certain location. This is a value I just give before posting. And then we'll move the z-axis and x-axis to another location while it's turning the B-axis. These are the kinds of things that we would have made in the post which I call B-axis rotation location and B-axis turning rotation location. And we made different locations for that so we could actually move on to the part.
I'd actually like to show you a little bit of the post work that was needed to get something like this to work. So what we're checking for is, is the tool left-hand or, in this case, maybe even neutral? If you've got a neutral tool, usually you can choose which way you want to use it. And if that's true, we set different parameters like the R-value and stuff like that to get actually the output we want. The same goes for the [INAUDIBLE] to actually rotate the tools to correct rotation in our milling spindle.
So if you look at it right now, it's easy to use. But it took some time to think this through and have it working. So we actually worked together with [? Aachen, ?] one of the post guys, and Rob, on the other side of the world. He has a similar kind of machine. So with the three of us together, we could actually make this work, even though the software wasn't really meant to ever do this up until now.
AUDIENCE: So your position for the rotation was to take into account the link?
LAURENS WIJNSCHENK: No, no, no. I actually positioned this to the machine zero. So it was always going to be on the same location, no matter what the tool length was going to be.
AUDIENCE: Right.
LAURENS WIJNSCHENK: Cause it's more like you know where the end point of your tool's going to be, so it doesn't really matter much how long the tool is as long as the face of your spindle has got to be at the correct location to actually make the turn. Because, otherwise, it will actually run into it. I tried it with the actual tool length already called, and it didn't work out. So that's one of the things. You usually end up trying stuff, and you think, mm, this might not be the best way to actually do this and move on.
AUDIENCE: Is that [INAUDIBLE] move [INAUDIBLE] effectively.
LAURENS WIJNSCHENK: Effectively, if you do it in TCP, you would actually have the x-axis move up. So that's why we're actually not doing it guided like that-- just moving it from the machine zero, effectively. So we've done the video, done the cam. This is my contact in any way. I mean, you've probably seen people walk around with the Instagram stickers. As machinists, we've sort of moved all to Instagram. No one really knows why. But it seems to work for us, so you can check out what we do.
Most of us have problems actually posting everything they do. But we try and post as much as we can and everything else. So if you want to reach out, please do so. One of the things that I haven't seen mentioned a lot, but go on the forum. Because it's one of those places where people like myself, Rob, and Scott actually are a lot, and they're willing to help out anyone with even the most complicated problems.
Usually, they're more engaging for people like us than the simple things like, how do I program this? We tend to leave that to other people, but if you come with really cool stuff, we try and help you out. So that's what I wanted to say. The forum really is something that is a big value to us, still, but to new customers even more. That was it.
[APPLAUSE]