SLC 500
SLC 500
(OP)
I'm working on an SLC 500 based combustion control system. My fuel gas valve moves much quicker than the air control valve due to the size of the FCV on the FD fan. When increasing TIC output I end up with CO exceeding 30ppm for 30 seconds. There is no 'cross-linking' in the program for 'lead-lag' control, so I'm looking at alterantive methods of slowing the fuel gas valve when the TIC output increases.
Does anyone have any proposals.
I'm thinking of directing the output word to a PID instruction then to the output.
The other way is to use the 'RMP' instruction, but this looks complicated
Thanks
Does anyone have any proposals.
I'm thinking of directing the output word to a PID instruction then to the output.
The other way is to use the 'RMP' instruction, but this looks complicated
Thanks





RE: SLC 500
best regards, PLCSAVVY
RE: SLC 500
Otherwise, program your own "ramp" function, like this:
(psudocode)
IF intermediatevalue1 > outputvalue THEN
(IF timetick THEN
(intermediatevalue2:=intermediatevalue2 + rampvalue
IF intermediatevalue2 > intermediatevalue1 THEN
(intermediatevalue2 := intermediatevalue1)
)
)
IF intermediatevalue1 < outputvalue THEN
(IF timetick THEN
(intermediatevalue2:=intermediatevalue2 - rampvalue
IF intermediatevalue2 < intermediatevalue1 THEN
(intermediatevalue2 := intermediatevalue1)
)
)
outputvalue := intermediatevalue2
RE: SLC 500
Often, this is done with a single output (called "firing rate") from the controller, and the fuel and air valves are mechanically linked to a single actuator. The linkage creates the proper relationship between fuel valve position and air damper position for each firing rate.
I would consider developing a piecewise linear curve for proper fuel valve position and air damper position at various firing rates. This might be done by ramping firing up manually, and tweaking each position to get an acceptable CO level. Then add some logic that calculates those positions on the fly based on the firing rate output from your PID.
RE: SLC 500
I started programming Friday, the first attempt wasn't quite right but I think I'm closer now.
Thanks for all your help
RE: SLC 500
John
RE: SLC 500
I would write the code much as JesperMP has suggested, although he has not clearly defined the variables.
I would put it simpler. This is my standard ramping logic.
You need to set up a clock pulse, say 1 second.
Define your Maximum Rate of change per second RATE
Each second check
If your required position is greater than your output, then add Rate to your output.
If your required position is less than your output, then subtract Rate from your output.
If your required position is within RATE to your output, set OUTPUT to the required position.
RE: SLC 500