Hi guys. I appreciate not many people are experienced with ladder vs. the text based languages but the same goes for me. I've been tasked with writing a ladder program (I'm definitely no stranger to ladder) for a programmable relay. I feel like I could bang out a programme within just a few lines if it were C++ but I'm really stuck here and would love some help.
I'm working on an electric heating system. 6 elements are used to heat a large area and are each controlled by their own thermostat (I know it sounds silly but it's actually quite complicated and this is putting it very simply). It's a domestic supply to the heating system and so I'm limited to drawing 63A at any given time. Each element draws about 25A and so I can't have more than 2 elements on at once.
I want to write a programme which will cycle through the outputs one by one, making an output (heating coil) high if the signal for the corresponding input (thermostat) is high, keep it high for 5 minutes, turn it off and then continue the cycle. So, if 3 inputs are high, the routine may look something like this:
Read I1 - I1 is high - turn on Q1 and start T1(5m) - T1 expires - turn off Q1
Read I2 - I2 is high - turn on Q2 and start T2(5m) – T2 expires - turn off Q2
Read I3 – I3 is low - do nothing
Read I4 – I4 is low - do nothing
Read I5 – I5 is high - turn on 5 and start T5(5m) – T5 expires - turn off Q5
Read I6 – I6 is low - do nothing
Rinse, wash, repeat.
I’m not asking anyone to simply supply me with the programme of course, but any advice would be appreciated. It’s the “do nothing” bit that I’m struggling with. Unlike a language like C++, ladder is not line-by-line executed and so this is messing with my mind. I’ve written about 5 different programmes that kinda-sorta work, though (in the example above) if Q2 is high and I3 goes high in the middle of Q2’s timer, Q3 will turn high regardless unless I put some sort of x-or logic in which fixes that problem but brings other problems like recursion errors.
I'm using Siemens Comfort Soft for a Logo! 8.2 and so because it's not a "proper" PLC, its pretty limiting.
I feel like I need to start from scratch with some fresh ideas >.<
Cheers
I'm working on an electric heating system. 6 elements are used to heat a large area and are each controlled by their own thermostat (I know it sounds silly but it's actually quite complicated and this is putting it very simply). It's a domestic supply to the heating system and so I'm limited to drawing 63A at any given time. Each element draws about 25A and so I can't have more than 2 elements on at once.
I want to write a programme which will cycle through the outputs one by one, making an output (heating coil) high if the signal for the corresponding input (thermostat) is high, keep it high for 5 minutes, turn it off and then continue the cycle. So, if 3 inputs are high, the routine may look something like this:
Read I1 - I1 is high - turn on Q1 and start T1(5m) - T1 expires - turn off Q1
Read I2 - I2 is high - turn on Q2 and start T2(5m) – T2 expires - turn off Q2
Read I3 – I3 is low - do nothing
Read I4 – I4 is low - do nothing
Read I5 – I5 is high - turn on 5 and start T5(5m) – T5 expires - turn off Q5
Read I6 – I6 is low - do nothing
Rinse, wash, repeat.
I’m not asking anyone to simply supply me with the programme of course, but any advice would be appreciated. It’s the “do nothing” bit that I’m struggling with. Unlike a language like C++, ladder is not line-by-line executed and so this is messing with my mind. I’ve written about 5 different programmes that kinda-sorta work, though (in the example above) if Q2 is high and I3 goes high in the middle of Q2’s timer, Q3 will turn high regardless unless I put some sort of x-or logic in which fixes that problem but brings other problems like recursion errors.
I'm using Siemens Comfort Soft for a Logo! 8.2 and so because it's not a "proper" PLC, its pretty limiting.
I feel like I need to start from scratch with some fresh ideas >.<
Cheers