RMA
Member
Up until now, I've only been involved with relatively small projects with S7 (on my own, anyway) and I've been in the habit of putting all my error checking in a single FB or FC which I then called right at the start of OB1, or right at the end, depending on whether simple blocking of further operation or immediate shutdown to a safe state was required.
For my current project, which involves 21 functionally identical capacitor bank power supplies (modules), (but with different energy capacities) for a system to develop a 100T magnetic field by dumping the stored energy (Max 49 MJ) through up to four concentric magnetic coils, I've been doing most of the error handling on a per module basis. There are several reasons I chose to do this, but not least among them was the fact that although I'm working on a basis that ANY fault ANYWHERE shuts the whole system down, given the past history of the customer it's an odds on certainty, (despite the original specification, which is now unrecognisable), that somewhere along the line they're going to request the option to carry on with the experiment if one module faults on the basis that "OK, we only have 47,6 MJ instead of 49MJ, but we don't want to waste them, do we!", or whatever!
However, I'm finding that because there are also some common components which need to be included in the error checking, I'm starting to run into contradictions, in particular with regard to acknowledgements.
I'd be very interested to know how you guys with lots of PLC experience plan your fault supervision and error handling.
Not unconnected with this question, as I suspect applies to many people coming from an interrupt driven background, I'm still not (after about three years working with Step7) entirely comfortable with the cyclical programme characteristics of PLCs. This means that on the one hand, I tend to try and "bend" things to a sort of quasi-interrupt driven situation, using flags to mark "first time through" or "already done" etc. On the other hand, I suspect it also leads to me feeling more comfortable using SET / RESET commands rather than ASSIGN (=). I followed the discussion in the "To Latch or not to Latch" thread with considerable interest, but got the impression that some of the points raised were very AB specific. I would be very interested if somebody could expand on how far some of those points are relevant to the Step7 world and whether there are any peculiarities in Step7 (analagous to the unused blocks being run during Init, for example) which one should be aware of.
My whole period of working with Step7 has been with companies who because of their history and background would have preferred to have nothing to do with it (beneath their dignity, in most cases), so I got flung in and told to get on with it - it's only a PLC, it can't be that difficult! As a result, while I get by not too badly, I'm well aware that my knowledge is full of some pretty big holes!
By the way, just a few points about the project, this is not a machine which can seriously damage itself or people in the event of something going wrong, in most cases the worst thing that can happen is a few blown fuses on the individual module capacitors. The whole system is encased in a blast-proof building which nobody is allowed in during the experiment and the modules are so built that in the event of a power down (i.e. emergency stop) the capacitors will be drained to ground in < 5 seconds. As a result, the customer is not going to be too happy with what he regards as "unnecessary" aborts. (Though this will probably only become a priority once they manage to get the magnetic coils to hold together for more than one or two shots!)
Just to complete the picture, when the system is complete and assuming they ever get their coils to stay in one piece (probably the biggest questionmark!), the 100T should be achieved by dumping the capacitors at 24 kV with a peak current (for 10mS) of 340 kA - should make quite a bang!
For my current project, which involves 21 functionally identical capacitor bank power supplies (modules), (but with different energy capacities) for a system to develop a 100T magnetic field by dumping the stored energy (Max 49 MJ) through up to four concentric magnetic coils, I've been doing most of the error handling on a per module basis. There are several reasons I chose to do this, but not least among them was the fact that although I'm working on a basis that ANY fault ANYWHERE shuts the whole system down, given the past history of the customer it's an odds on certainty, (despite the original specification, which is now unrecognisable), that somewhere along the line they're going to request the option to carry on with the experiment if one module faults on the basis that "OK, we only have 47,6 MJ instead of 49MJ, but we don't want to waste them, do we!", or whatever!
However, I'm finding that because there are also some common components which need to be included in the error checking, I'm starting to run into contradictions, in particular with regard to acknowledgements.
I'd be very interested to know how you guys with lots of PLC experience plan your fault supervision and error handling.
Not unconnected with this question, as I suspect applies to many people coming from an interrupt driven background, I'm still not (after about three years working with Step7) entirely comfortable with the cyclical programme characteristics of PLCs. This means that on the one hand, I tend to try and "bend" things to a sort of quasi-interrupt driven situation, using flags to mark "first time through" or "already done" etc. On the other hand, I suspect it also leads to me feeling more comfortable using SET / RESET commands rather than ASSIGN (=). I followed the discussion in the "To Latch or not to Latch" thread with considerable interest, but got the impression that some of the points raised were very AB specific. I would be very interested if somebody could expand on how far some of those points are relevant to the Step7 world and whether there are any peculiarities in Step7 (analagous to the unused blocks being run during Init, for example) which one should be aware of.
My whole period of working with Step7 has been with companies who because of their history and background would have preferred to have nothing to do with it (beneath their dignity, in most cases), so I got flung in and told to get on with it - it's only a PLC, it can't be that difficult! As a result, while I get by not too badly, I'm well aware that my knowledge is full of some pretty big holes!
By the way, just a few points about the project, this is not a machine which can seriously damage itself or people in the event of something going wrong, in most cases the worst thing that can happen is a few blown fuses on the individual module capacitors. The whole system is encased in a blast-proof building which nobody is allowed in during the experiment and the modules are so built that in the event of a power down (i.e. emergency stop) the capacitors will be drained to ground in < 5 seconds. As a result, the customer is not going to be too happy with what he regards as "unnecessary" aborts. (Though this will probably only become a priority once they manage to get the magnetic coils to hold together for more than one or two shots!)
Just to complete the picture, when the system is complete and assuming they ever get their coils to stay in one piece (probably the biggest questionmark!), the 100T should be achieved by dumping the capacitors at 24 kV with a peak current (for 10mS) of 340 kA - should make quite a bang!