Developer Portal Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    Access to SetEvent/SetExtEvent from a self created FB in the project

    tommy3000
    Established Member

    Access to SetEvent/SetExtEvent from a self created FB in the project

    Hello together

    Is it possible to get an access to the methods SetEvent/SetExtEvent in a self created method.

    Would be great, getting an example for this. We have a station, which is a rebuild of an old Opcon project and there are function blocks we would like to reuse them. Therefore, we need to set error messages directly from an instance of a function block.

    If there is an easy way to connect a function block to the mode handler, that would be really helpful.

    Thanks in advance.

    1 REPLY 1
    nexidator
    Community Moderator

    Re: Access to SetEvent/SetExtEvent from a self created FB in the project

    SetEvent/SetExtEvent aren't global functions but instance methods of OpconUnit. That's why they can only be called in the context of Control plus model tree objects. Apart from that, the methods are also available in sequences deriving from OpconBaseChain, but only because the chains are always owned by an OpconUnit which is used internally for setting the events.

    The main reason why the methods need the OpconUnit context is that every Control plus event has a source object (i.e. an instance ID) telling exactly who created the event.

    You could pass a reference to an OpconUnit into another FB allowing it to call SetEvent on the Unit. But that means the FB is no longer independent from the Control plus infrastructure.

    The more common solution would be to pass a result value with an error code from the FB to the calling OpconUnit (e.g. ModeHandler) and doing all the event handling there.

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist