We have several convenience event handling methods, for example SetEventOnce which checks if an event was set before to make it very simple to avoid setting events multiple times, even without event handle variables. Or ClearEventByNumber which works similar to the old clear event function in Opcon. These functions should be available in Units, ExecUnits, ExecHandlers (and its derivatives), AddonEvHdls and AddonExecs. But I don't want to implement these methods 5 or more times in derived FBs, so I put them into a separate FB (called Plugin) that handles all of that. Now my derived FBs just instantiate the Plugin, register themselves with it and then they can use the Plugin to call these convenience methods. Since the plugin is a separate FB and not derived from OpconUnit or OpconEvHdl, it can only access their public methods.
... View more