Yes it is a habit I had at one time, although I did not have any real problems using set/reset, after many calls to systems that others wrote I realised how difficult it was to sort out, one particular system was a strapping machine (quite a complex one) there were about 12 different strapping patterns these comprised of straps on pallets without bottom runners, with, different sizes straps one way, straps both ways (rotate), for example if the pallet had bottom runners, swords would extend between the top/bottom wood runners to feed the strap through so depending on size could be 3 straps with/without swords, rotate & strap etc. plenty of combinations, originally this was selected by an operator on the hmi before the pallet entered, the original mods were to add pallet length encoders, width detection, photocells on the swords to align with the gaps (if no clear route was found between the spacing blocks it would move back/fwd to try & see a gap 3 times) so it would not require the operator to select but do it automatically. so quite complex I worked with the original programmer, it was a disaster, even he had problems there were so many set/resets and he was adding more to overcome gliches, at one time the machine was doing a dance without a pallet i.e. the compression head was cycling, the swords extending & retracting. The machine went to site, customer requested more support I went to site with another engineer from the manufacturer, still had problems tried to re-write it in sections but every time we did this some other problem would occur, in the end the customer took it out of service & demanded it be sorted, I ended up completely scrapping the original & re-wrote it, worked a treat, ended up re-writing another two machines on other sites.
Anyway, back to your code.
I noticed that your alarm handling seems rather complex a lot of ST code.
My approach is create a standard function block for valves & another one for motors, pass the relevant signals to & from the FB & call the instances for each motor/valve etc.
I generally create different functions for variable speed or direct drive motors but on valves just one with selectable parameters for N/O or N/C etc.
The block handles everything like alarms for limits, output(s). write once & forget.
I had a quick look at the PI&D sketch & it is so similar to a CIP (cleaning in Place) system. This one is a small one I did some years ago, based on another one I did a few years before but that one had 3 tanks, heat exch rather than coils & 7 channels.
You will notice that as I used sequence values, the status of the tanks convieniently is the sequence number so the status is just a lookup of the sequence numbers i.e.
0 = IDLE
10 = Starting
.....
100 Pre-rinse to Cooler
& so on.