Okuma recently kicked off their new Tips & Tricks video series, and Episode 1 features some handy info that can be used with Okuma’s CNC control. This quick tutorial will teach you:

  • What I/O’s (inputs and outputs) are
  • Where to find them
  • When to use them
  • Two programming codes for sounding an alarm / running a CNC machine


In order to use the I/O variables on Okuma’s OSP control, you need to know what an I/O is and where to find it. They can be used for troubleshooting or for preventive programing. Today we’re going to focus on preventive programing using the I/O variables. On the Okuma OSP control, they can be found in the black bar on the side, under the I/O monitor. In the I/O monitor, this lists all of the I/Os. The “I”s being inputs, the “O”s being the outputs. They’re all indicators of whether something is currently on or off.


Here we see a list of inputs and outputs. This list shows the current state of any given switch on a machine tool. Gray representing off, red representing on. Any switch or light is going to have an on or off indicator listed in here, and it will have a description in the top left corner telling what it is. The way we use these in a program, to prevent problems, is to read from the program whether that light is on or off, so we can check for things such as the “All Coolant Off” button being on or off. If you were drilling a deep hole for example, you wouldn’t want a through-spindle coolant drill running without coolant. So if an operator had the “All Coolant Off” button currently lit, that would cause a problem, probably a tool failure, and possibly a loud noise.


This is a list of inputs and outputs on the machine tool. On the left we have inputs, on the right outputs. Inside the code, I have an “if statement” using a VIRD. VIRD being an input. It consists of five digits.

Those five digits are the address, 0005 and the bit, 0. So inside my code I have VIRD00050.

What this says is if this light is on, alarm the machine. It’s on, the machine alarms.

Resetting the machine clears the alarm, and turning the feed rate back to zero turns the light off.

I’ll run the exact same code and the machine runs just fine.


Now what we’re going to do is find that specific output and read that, and monitor its state from inside the part program and trigger an alarm if it’s in the wrong condition. The ORD, the one that we’re referencing specifically, is the “All Coolant Off” button. We want to be sure that coolant is running with this program. The difference in how this is addressed starts with it being a VORD as opposed to a VIRD and carries on to the number.

Unlike the inputs, where you simply take the address and bit value and input them, this address is 548. On outputs, you subtract the value 512, therefore your code becomes, 0036.

Then there’s the F. The reason for the F is because the bit value for 548 goes higher than 10. Once I hit 10, we use a letter to address it instead.

So the bit is now A, B, C, D, E and F.

Inside my code then, I have 0036, which is 548 minus 512, F, that is currently off. In our code it says if this light is on, run the alarm. It’s currently off. So when I run this code, the machine will run.

When I change that condition, and I run the code again, I instead get an alarm.

What we are doing is checking to see if the operator currently has the “All Coolant Off” button on, and if he does, alarming the machine, preventing further operation. And hopefully, preventing any damage.

This image has an empty alt attribute; its file name is Okuma_LogoWEB.png