Wafer map viewer

I have created a component with parameter of x y and bins.

asking a question how can i create a wafermap viewer using this component ? the input is .json file for instance .
[
{
"x": 0,
"y": 0,
"bin": 1
},
{
"x": 1,
"y": 0,
"bin": 4
},
{
"x": 2,
"y": 0,
"bin": 1
},
{
"x": 3,
"y": 0,
"bin": 5
},
{
"x": 0,
"y": 1,
"bin": 2
},
{
"x": 1,
"y": 1,
"bin": 3
},
{
"x": 2,
"y": 1,
"bin": 3
},
{
"x": 3,
"y": 1,
"bin": 4
},
{
"x": 0,
"y": 2,
"bin": 3
},
{
"x": 1,
"y": 2,
"bin": 2
},
{
"x": 2,
"y": 2,
"bin": 2
},
{
"x": 3,
"y": 2,
"bin": 1
},
{
"x": 0,
"y": 3,
"bin": 3
},
{
"x": 1,
"y": 3,
"bin": 5
},
{
"x": 2,
"y": 3,
"bin": 3
},
{
"x": 3,
"y": 3,
"bin": 1
}
]

Please see Wiki - how to post code on this forum. It will format your code properly and limit the length of your post by putting it in a scrollable frame. You can edit to fix your post. Thanks.

[
{
"x": 0,
"y": 0,
"bin": 1
},
{
"x": 1,
"y": 0,
"bin": 4
},
{
"x": 2,
"y": 0,
"bin": 1
},
{
"x": 3,
"y": 0,
"bin": 5
},
{
"x": 0,
"y": 1,
"bin": 2
},
{
"x": 1,
"y": 1,
"bin": 3
},
{
"x": 2,
"y": 1,
"bin": 3
},
{
"x": 3,
"y": 1,
"bin": 4
},
{
"x": 0,
"y": 2,
"bin": 3
},
{
"x": 1,
"y": 2,
"bin": 2
},
{
"x": 2,
"y": 2,
"bin": 2
},
{
"x": 3,
"y": 2,
"bin": 1
},
{
"x": 0,
"y": 3,
"bin": 3
},
{
"x": 1,
"y": 3,
"bin": 5
},
{
"x": 2,
"y": 3,
"bin": 3
},
{
"x": 3,
"y": 3,
"bin": 1
}
]

You can't really do it easily. There is no native component in Ignition that allows that.
However, there are 3rd modules that you can use to do that.

For example, you can use vCortex to paint charts.

1 Like

I just thought that you could also create one on your own.

:warning: Note: All of this code is not test, you may have to change a few things

Create a grid of embedded views that show color on a message received, using system.perspective.sendMessage().

for i in your_array:
    payload = {
        "x": i.get("x"),
        "i": i.get("y"),
        "bin": i.get("bin")
    }
    system.perspective.sendMessage("wafermap_spread", payload)

Inside of the messageHandler code you could do something like this:

def onMessageReceived(self, payload):
    if view.params.x == payload.get("x") and view.params.y == payload.get("y"):
        custom.bin = payload.get("bin")

I'm not sure how efficient is flooding the system with messages and you would have to configure each view parameters on it's own.

I suposse you could also declare in custom properties of the view an array of all square components.
Later you could do a for to fill all the values that you have in your array.

for i in your_array:
    view.custom.bins[i.get("x")][i.get("y")] = i.get("bin")

All the custom properties would have to be linked with the correct square.

Hope this helps, but is some work. If I were you I would try looking at the module I mentioned (i tried and its pretty nice for showing data).

Documentation:

Can you give an example of how your "wafer map" is supposed to look? An image search for the term shows up circular semiconductor dies but your data is a rectangular grid.

Tip: you can edit previous posts to correct them rather than repost. That's what I requested in post #2.

2 Likes

I believe that's what it is....a circular wafer with a grid of the dies and a heat map showing what dies are good/bad. But that's just me guessing.

Looks like a job for a view canvas component, in a coordinate container, using a transform to produce the instances from the given JSON. Different "bin" values would yield different view paths for customized visuals.

2 Likes

I was thinking it might be as simple as the https://docs.inductiveautomation.com/docs/8.1/appendix/components/perspective-components/perspective-chart-palette/perspective-xy-chart/xy-chart-example-heat-map.


wafermaps sample

i will explore how view canvas component works


i already generate a wafermap viewer but its cpu consuming . it lost connection when more instance has been used.

Consider creating an SVG using code and rendering that to the page, as in this similar task: