Developer Portal Community

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

    MES-Communication OpconTcpDDL <structArrays>! It's a bug or a feature?

    MES-Communication OpconTcpDDL <structArrays>! It's a bug or a feature?

    PKlein
    Long-established Member

    We had a case this week, which I will try to describe as best as I can:


    So I take the dataDownloadRequired telegram as an example, because we noticed the problem here. However, this problem probably exists with every telegram that uses a <structArrays>.

    Here it is the case that the first item, the item "Counter" defined under <structDef> has also been sent as defined (see point 1 and point 2 in Figure 1).

    The MACRO, perhaps also workflow or whatever in the MES, did not work properly and did not send a "counter" item for the other items of the structure (from two to eight) (see point 3 in Figure 1).

    Pic1.png

    The FB on the PLC for the DDL communication "OpconTcpDDL/DDLV4MessageFB" in version 1.2.2 has now not detected an error here.

    It seems that the FB only checks the first item. If the <counter< item were missing there, the FB would throw an error!

    Furthermore, it is also the case that the FB does not set the data structure on the PLC of the "orderList" array (rDdlData.orderlist) the values ​​of "counter" of items 2 to 8 to the value 0, it was set to the value 14, the value from the first item. (See point 5 and 6 in picture 2)

    Pic2.png

    This means that not only is the error not recognized, but “incorrect” values ​​are also transmitted.

    This could now be a bug within the FB module, but the scheme on the MES side does not recognize this error either, this could also be a desired feature.

    With this option, you could save on communication information if the data remained the same - just leave it out 😊

    Now you can decide for yourself: It's a bug or a feature?

    Maybe the question goes to the guys from BCI!

    11 REPLIES 11

    PKlein
    Long-established Member

    To add something. This problem is not just a problem of the function block at the plc. This problem should not be allowed by the schema of the DDL service in the MES. I think we need to address this on both sides (PLC and MES).

    nexidator
    Community Moderator
    Community Moderator

    We totally agree that using the value from the first instance for all other instances is bad behavior. As Düscha said, we have to look into the code a little bit deeper. (Unfortunately the colleague who developed this has retired in the meantime.) So, I am sure this will be fixed in the next version.

    As I understood, you never had the requirement that elements of the structure should be allowed to be missing in the telegram, but only the number of array elements (i.e. complete struct instances) should be variable. Is that correct? I also feel this makes more sense than allowing just any random struct element to be missing, because in this case it is impossible to find out what elements were actually received from MES and which ones just have default (or because of the current bug even wrong) values.

    Is anyone else using the AcceptIncompStructArray feature? Everyone is welcome to share their opinion about this here!

    PKlein
    Long-established Member

    Yes exactly, only that was the requirement!

    Hello, we have exactly the same use case as PKlein with MatControl, e.g. because the ARRAY size is dynamically changed by the MES for split material.
    Here, too, a change of the ARRAY size should be accepted but not incomplete structures.

    It would be nice if there was a solution.

    nexidator
    Community Moderator
    Community Moderator

    OK, so we have decided that we will change the behavior. In the next version, AcceptIncompStructArray will only allow a dynamic array length. Missing struct elements will lead to errors just as if AcceptIncompStructArray was FALSE. The new version should be available by end of this year at the latest.

    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