Programming of the Fuji controller is actually fairly easy, once the concepts are understood. The "Operation Manual" that comes with the product unfortunately is very poorly written. At best, it is a reference manual for those who already understand what the "programming" process is going to be. I had to read it several times, and then begin to "guess" the procedures.
It is a misnomer to call the process "programming". The Fuji's program is written in firmware, and cannot be changed. Only the parameters (or data) that sets up the program are entered by the user to customize the controller.
The last three pages of the Operation Manual provide a PXZ Quick Reference. The table lists the parameters available, how the LED display will appear when a particular parameter is selected, the default data value for the parameter, and something called the DSP setting.
There are 7 DSP variables, dSP1 through dSP7. The value of each variable is an 8 bit number, having a value from 0 to 255. These eight bits of the variable DSP mask eight other variables. When a variable is masked, it cannot be seen from the controller's menu until it is unmasked.
For example, the variable dSP1 may mask the eight variables ProG, P, I, D, AL, AH, TC, and HYS depending upon the value of dSP1. If the binary representation of the dSP1 is 00000101, for example, then the variables "ProG and I" cannot be seen from the menu (compare the binary digits with the eight variables in reverse order). In order to see variable I, then the mask must be changed by subtracting binary 00000100 (or 4) from the value of dSP1 (which is 5 in this example; binary 101 = 5). This can also be seen in the Quick Reference Guide by looking at the column labeled "DSP Settings". You will see "4" mentioned for the variable "I".
The first step in setting up your new controller is to find out which variables are masked and not, and what the default values are. This step is optional, but gave me confidence that I wasn't going to change something that I couldn't undo. Start by turning on your controller. By pressing the button labeled SEL, the first variable that is unmasked will display on the LED. By pressing DATA, the value of that parameter will be displayed. Then by alternately pressing SEL and DATA, the menu will be incremented one variable at a time. Write down the default values of the variables, and which are unmasked. When pressing SEL no longer increments the LED display, you have reached the last unmasked variable of the primary menu.
The variables that you just wrote down will be those in the primary menu. To access the secondary menu, press and hold the SEL key for about 3 seconds. This will access the first variable of the secondary menu. Press DATA to obtain the default value, Then proceed as before to obtain the default values of all the unmasked variables of the secondary menu.
Another choice you could make is to first change the values of all seven DSP variables to be zero. This will unmask all of the variables of the controller, and will later allow you to easily change those that you need to. This is easier than individually unmasking the important and necessary variables later one-by-one. To do this, press and hold the SEL button for three seconds. Then press the SEL button repeatedly until dSP1 shows in the display. Press the DATA button to see the value of dSP1. Press the up-arrow button under the ones digit of the display. The ones digit will begin to blink. Then repeatedly press the down-arrow button until the ones digit reads zero. Repeat for the tens digit, and the hundreds digit, as required. Now that the display reads 0000, press ENT. The display will auto-increment to dSP2. Repeat the process to zero out the remaining six DSP variables. You can now examine every parameter in the controller's menu.
I haven't found a direct means to return to the primary menu from the secondary menu. After about 60 seconds of inactivity, it will revert automatically. A quicker way is to turn the controller off, and then back on.
The following table shows all the parameters with both the original default values as well as the values that exist in my controller today. I've also shown which variables came masked from the factory for my unit. I don't know why. The combination seems a bit odd. For now, you don't have to know what these parameters mean. I've also shown which variables I believe to be important of your consideration.
| Parameter | Description | Default Setting | My Setting | Originally Masked | Important |
| ProG | Ramp/Soak Command | oFF | oFF | N | Y |
| P | Proportional Band | 5 | 6.3 | N | Y |
| I | Integral Time | 240 | 94 | N | Y |
| d | Derivative Time | 60 | 18 | N | Y |
| AL | Low Alarm Setpoint | 10 | 42 | Y | N |
| AH | High Alarm Setpoint | 10 | 42 | Y | N |
| TC | Cycle Time (output 1) | 2 | 2 | N | Y |
| HYS | Hysteresis | 1 | 0 | N | Y |
| Hb | Heater Breakpoint Setpoint | 0.0 | 0.0 | Y | N |
| AT | Auto Tune Command | 0 | 0 | N | Y |
| TC2 | Cycle Time (output 2) | 30 | 30 | Y | N |
| CooL | Proportional band/cooling | 1.0 | 1.0 | Y | N |
| db | Deadband/Overlap | 0.0 | 0.0 | Y | N |
| PLC1 | N/A | -3.0 | -3.0 | Y | N |
| PHC1 | N/A | 103.0 | 103.0 | Y | N |
| PCUT | N/A | 0 | 0 | Y | N |
| bAL | Balance | 0 | 0.0 | N | N |
| Ar | Anti-reset windup | 96.8 | 87.0 | N | N |
| LoC | Parameter Lock | 0 | 0 | N | Y |
| STAT | Ramp/Soak Status | oFF | oFF | Y | Y |
| SV-1 | 1st Setpoint Temp | 32 | 850 | Y | Y |
| TM1r | 1st Ramping Time | 0.00 | 2.00 | Y | Y |
| TM1S | 1st Soaking Time | 0.00 | 0.30 | Y | Y |
| SV-2 | 2nd Setpoint Temp | 32 | 60 | Y | Y |
| TM2r | 2nd Ramping Time | 0.00 | 4.00 | Y | Y |
| TM2S | 2nd Soaking Time | 0.00 | 0.00 | Y | Y |
| SV-3 | 3rd Setpoint Temp | 32 | 32 | Y | N |
| TM3r | 3rd Ramping Time | 0.00 | 0.00 | Y | N |
| TM3S | 3rd Soaking Time | 0.00 | 0.00 | Y | N |
| SV-4 | 4th Setpoint Temp | 0.00 | 0.00 | Y | N |
| TM4r | 4th Ramping Time | 0.00 | 0.00 | Y | N |
| TM4S | 4th Soaking Time | 0.00 | 0.00 | Y | N |
| Mod | Ramp/Soak Mode Control | 0 | 0 | Y | Y |
| P-n1 | Control Action Code | 0 | 0 | N | Y |
| P-n2 | Input type code | 0 | 3 | N | Y |
| P-dF | Input Filter Constant | 5.0 | 5.0 | N | Y |
| P-SL | Lower Range of input | 32 | 32 | N | N |
| P-SU | Upper Range of input | 1000 | 1000 | N | N |
| P-AL | Alarm Type 2 Code | 9 | 0 | Y | N |
| P-AH | Alarm Type 1 Code | 5 | 0 | Y | N |
| P-An | Alarm Hysteresis | 1 | 1 | Y | N |
| P-dP | Decimal Point Position | 0 | 0 | N | Y |
| PUOF | PV Offset | 0 | 0 | N | N |
| SUOF | SV Offset | 0 | 0 | N | N |
| P-F | C/F Selection | F | F | N | Y |
| PCL2 | N/A | -3.0 | -3.0 | Y | N |
| PHC2 | N/A | 103.0 | 103.0 | Y | N |
| FUZY | Fuzzy Control | OFF | OFF | N | N |
| GAIN | N/A | 1 | 1 | Y | N |
| ADJ0 | Zero Calibration | 0 | 0 | Y | N |
| oUT | N/A | -3.0 | 103.0 | Y | N |
| dSP1-dSP7 | Parameter masks | various | 0 | N | Y |
I am certainly not an expert in the Fuji controller. What I am about to explain is what I did, and it seems to work.
The "Process Variable" (PV) is the measured temperature of the kiln. The "Setpoint Variable" (SV) is the desired temperature at any point in time. The user programs a desired Setpoint, followed by a ramp and soak process with up to four ramp/soak pairs.
Here's how to do it. Turn the controller on. The controller will display the current temperature. Press PV/SV to display the current Setpoint (the SV indicator LED will also be lit). Under the LED characters are four buttons. Three are marked with up-arrows. One is marked with a down arrow. The three up-arrow buttons correspond to the hundreds, tens, and units digits of the display. Pressing one of these buttons will cause the corresponding digit to blink. Pressing the button again will cause that digit to increment. Pressing the down-arrow button will cause the digit to decrement. Pressing another of the up-arrow buttons will cause its digit to blink. Then that value can be changed. When the desired temperature has been entered (all three digits), press the button marked ENT. This will enter the value into memory. After a few seconds, the display will revert to the Process Variable (the PV indicator LED will be lit).
Programming the Ramp/Soak: In my case, I planned the Setpoint to be 960°F. The first ramp is to be 2 hours long to 850°F followed by a 30 minute soak. The second ramp is to be 4 hours long to room temperature (I programmed 60°F). Hence, SV-1 is 850, TM1r is 2.00, TM1S is 0.30, SV-2 is 60, and Tm2r is 4.00. I made SV-3 and SV-4 to be less than 60 to ensure that the kiln would stay off at the end of the second ramp. You should understand that the format for the time variables is "hours.minutes", so that 1.50 is 1 hour and 50 minutes, not 1½ hours. To enter these values, press the SEL button repeatedly until SV-1 is shown. Then press the DAT button, then the up-arrow/down-arrow keys as before to enter 850, then press the ENT button. The display will increment to the next variable, which is TM1r. Enter this value (which is 2.00), and then continue to enter the remaining values. End the process by pressing the PV/SV button.
The Control Action Code "P-n1" should be set to 0 for the controller to work properly with a solid state relay. The Input Type "P-n2" is set to 3 for a type K thermocouple. The Ramp/Soak Mode code "MOD" is set to zero so that the controller won't start the ramp/soak upon power up, and the ramp/soak cycle won't automatically repeat at the end of the cycle..
I set the Cycle Time "TC" to be 2 seconds. This means that the kiln will be turned on every two seconds, and remain on a fraction of two seconds. The ratio of the "on time" to the "cycle time" determines the amount of power that the kiln will create, from 0% to 100%. For example, if the on-time is 1/2 second and the cycle time is 2 seconds, then the kiln will be operating at 25% power. This is called pulse-width modulation, or PWM. Fast cycle times such as 2 seconds maintains an even temperature, and this is easier on the heating elements than a slow cycle time which create significant heating/cooling of the elements during each cycle.
A Few Words about P-I-D Control: P-I-D stands for proportional-integral-derivative, and is a standard control algorithm used by engineers. You don't have to understand how this works, but it may be interesting.
The difference between the setpoint and the process variables is the controller "error". At every instant in time, the controller looks at the error, its time integral, and its derivative. First, the error is multiplied by the "proportional gain", and this product is used to drive the heating elements. In order to maintain the kiln at the setpoint of say 960°F, the kiln must be on at, say, 45% power. To create this, there must be a non-zero error in steady state. Therefore, with proportional only control, the kiln would never reach the setpoint. It will never get closer than the error required to generate 45% power.
With the addition of integral control, the error is integrated over time. If the error is always positive, then the integral will get bigger and bigger as time goes on and generate more and more power in the kiln. As a result, the integral term will force the error to eventually become zero. This is good, but often the presence of the integral term causes the controller to oscillate forever around the setpoint.
Finally add the derivative term. As the temperature approaches the setpoint, the error is getting smaller. It's "derivative" is negative, and the controller's output will be reduced in proportion to how fast the setpoint is being approached. Think of this as "putting on the brakes", or damping of the integral terms oscillations. The opposite is also true. If you open the door to your kiln, the temperature will start to drop, and the derivative term will sense this and turn on the heating elements to counteract the heat loss before the temperature drops too much.
Fortunately, you don't have to be a control engineer to determine the P-I-D values for your controller. The Fuji will do this automatically for you in the process called Autotuning.
Autotuning: To perform the autotuning, the controller should have first been set up with all of the other parameters other than the P-I-D variables. This includes especially TC, HYS, bAL, Ar, P-n1, P-n2 and P-dF. I set HYS to zero, as HYS causes a deadband in which the controller makes no corrective action. This is desirable for mechanical relays to prevent chatter, but I think unnecessary for Solid-State relays using pulse-width-modulation. I must admit, that my bAL and Ar values are whatever they turned out to be by default or by accident. I didn't consciously set them before the fact. Now, I'm thinking that bAL should be zero, and Ar should be 100 for this kind of controller. P-n2 tells the controller which kind of thermocouple you are using (critical), and P-dF sets a time-constant determining how rapidly the controller will respond to changes in sensed temperature. I left P-dF at the default value.
The instruction manual tells you that you must decide whether to autotune at the setpoint variable, or at 90% of the setpoint variable. It doesn't tell you how you should choose one over the other. I decided to autotune at the 90% value, but my reasons weren't real strong.
To autotune, first turn the controller on. This will cause the kiln to start heating up at 100% power. My setpoint was 960°F. When the indicated temperature was 850°F, I turned the "autotune" on. This was accomplished by pushing the button SEL until AT was indicated, then the DAT button to show "0", then changing the value to "2" for autotuning at 90% of SV, then pressing ENT. The process of autotuning lasted about 5 minutes for me, which was indicated by the "decimal point" continuing to blink. When completed, the optimal P-I-D parameters had been determined and set by the FUJI. My parameters are shown in the table above.
This completed the programming of the FUJI. To summarize:
Set the controller's parameters
Set the setpoint
Set the ramp/soak programming
Perform the autotuning.
Operation: For my setup, place the Kiln's original controller on high. Then turn the FUJI controller on with the red button. The kiln will heat up with 100% power until the temperature reaches about 900°F. At this point, the FUJI will start to put "the brakes" on, and start reducing the power as the kiln approaches the setpoint of 960°F. It overshoots by about 2°F, and then takes several minutes to fall back to 960°F.
When it is time to start the ramp/soak program, press the SEL button once, then the DAT button, then the up-arrow twice to display rUN, then press ENT, followed by PV/SV. The program will run until the kiln is shut off by the controller after about 6½ hours.
Hope this helps you all to get started. Good luck.