We make machines for tube handling, in the metal industry. I've been working for 8 years in a carpet factory, this was more process industry then machine building. I remember that I used a lot FB's back then. I used them for memory bit's (rising and falling edges) mostly and for memorising a status of something that had to do with the code written in that FB. FC's were used to make a function that could be used many times in a program, or for simplify the program a bit.
Now in the machine building, I have other methods.
The only FB's that I have are Graph-FB's, Pdiag-FB's and sometimes an FB with some SCL code, again for making rising and falling edges.
All other stuff like conditions, alarms, buttoncolors, machineobject, valves, motors, etc... is allways interfaced via shared DB's. Hydraulic logic , Pneumatic logic , positioning logic, alarm logic, etc etc... is allways written in FC's. I don't like the use of instance DB's when not needed. I only use instance DB's when I have to re-use an FB many times. So I kinda prefer FC's where I can.