Developer Portal Community

    We are moving! We are currently migrating our community to the new Bosch Connected Industry Online Portal. The community will be available latest in the new year again, until then it will be in read-only mode. Click here for more information.

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

    How to design object for this type of device?

    How to design object for this type of device?

    maj9bj
    Long-established Member

    I am developing an object for very specific welding device because of its ardware structure.

    Communication with device is done using 2 pcs of slave bridge EL6695 modules. The problem is following: 

    1. Device has 2 servo axis which can be controlled using separate commands, so it has to work independently.
    2. For control of Axis 1 the first EL6695 module is used. For Axis 2 the second.
    3. But... Part of data area of first EL6695 is also used for common control of top level section of device which is common to both axes. It has command like PowerOn, PowerOff, ProgNoSelection.

    maj9bj_0-1680165312405.png

    Now I am not sure how to structure my object. I have some scenarios and i would like to know your opinion.

    Solution 1

    Create command handler for control of common functionality of device and 2 separate objects for both Axis.

    maj9bj_1-1680165621390.png

    Solution 2

    Create independent objects. One for control of device itself and 2 other for separete control of Axes.

    maj9bj_2-1680165780218.png

    Do you have any experience with similar task?

     

     

    4 REPLIES 4

    MarvinW
    Long-established Member

    There are some information missing for me to make a proper decision, so I'll assume the following: You want to use the NexeedAxis object to control the axes and the whole object should provide a single interface for your object users so that they can integrate it nicely into their stations. Reuse is a concern, or else why create an object for it...

    With these requirements I would create a single command handler object with 2 NexeedAxis objects as internal elements. The common control and status signals and all logic and sequences related to them I'd try to put into the handler itself, but if that proves impractical because there's just too much to do there, maybe create a separate object for it (which has visibility "hidden", because it can't be used without the handler).

    Then I would create 1 or maybe 2 separate peripherals for the EL6695 which provide "IMyDeviceChannel1" and "IMyDeviceChannel2" so that linking the terminals with my object is easy. All the internal signal allocation from the terminals to the axes and the general stuff is done object-/peripheral internally. This also requires a base object for the interfaces. Not sure if NexeedAxis can be used as an internal element like that or its parameter requirements somehow make this impossible/impractical, but it'd probably work.

    With this solution, users of my object would only need to drag 1 object instance into their model tree to get the whole thing. Linking to IO requires only 2 parameters in total. When scanning the peripherals from the PLC, the correct peripheral type for the terminals has to be selected though, but a single page of documentation in your object can cover this entirely.

    maj9bj
    Long-established Member

    I am sorry but I did not metion the axis is not controlled by standard Axis object. It is very specific welding device so I have to create everything from scratch. I will try to explain it more detailed. I created image of the architecture.

    The main problem is I have two EL6695 peripherals and they are not the same. One is used for control of the Device itself + control of Axis 1 and second is used for only for control of Axis 2. 

    maj9bj_0-1680521998830.png

    My idea is to create:

    WeldingDevice (ComamndHandler) that consists from Axis 1 and Axis 2. The reason for that is I need Axis 1 and Axis 2 controlled independently (independent commands), but they both are dependending on WeldingDevice state. For example none of the axis can be started if the welding device is not powered on or calibrated.

    What I do not know is how to transfer the data from area "Device Control" of EL6695 to Command handler Welding device.

    It is hard to explain it in the forum, but if you can, we can discuss it together in Teams.

     

     

    Düscha
    New Contributor

    You can add 2 interfaces to your peripheral.

    One for the Axis and one for the device.

    Over this two interfaces you can send your state from the peripheral to your booth units.

    maj9bj
    Long-established Member

    Yes this is the right way. In the meantime i consulted this with @Thorsten_Brach and he recommended the same thing to me.

    I just started with programming and it seems it will work as I expected. Thanks to both of you guys.

    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