08-19-2022 02:13 PM
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).
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)
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!
Solved! Go to Solution.
09-05-2022 02:25 PM
Have you activate AcceptIncompStructArray?
09-05-2022 02:30 PM
yes!
09-05-2022 05:07 PM
then it is correct that no error is set.
The second quastion with the value "counter" we must check in the lib what happens if the parameter AcceptIncompStructArray set.
09-06-2022 07:47 AM - edited 09-06-2022 07:49 AM
If I remember correctly, the AcceptIncompStructArray variables were implemented as a request from our department in November 2019. The requirement here was that the variable StructArrayCount does not have to be set when requesting the telegrams and also not validated.
To explain this requirement more detailed: It can happen that you do not know the number of elements of the "orderList" structure in advance. The number of "OrderList" is only known in the MES and not within the plc. Before this function was implemented , you always had to send two telegrams in order to query the number of elements from the MES with the first and then query the contents with the second telegram.
This led to a large number of duplicate telegrams for one information and a major impact on the system cycle time.
At that time, the requirement was not that missing elements (such as "counter") are not validated or that incorrect values are also assigned to them. The definition of the structure must/should be fulfilled for all items. Here is the screenshot from the implementation at that time! The comment "Incomplete data posible" is a bit misleading and "UnknownStructArrayCount" might have been better.
Unfortunately, the implementation as it is today leads to sensitive MES data being misinterpreted.This has a biginfluence on the quality of the productions and the production. It must not be that wrong values are assumed here.
And why should one use the value of the last valid entry and not the one before or before that?
This issue should be fixed!