# Need to parse values from node-red-contrib-s7 node

**URL:** https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386
**Category:** Industrial
**Created:** [6 September 2022 10:31 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386 "2022-09-06T10:31:52Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [6 September 2022 10:31 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/1 "2022-09-06T10:31:53Z")

</div>

Need help to prase MD168 tag. I tried using [buffer-parser](https://flows.nodered.org/node/node-red-contrib-buffer-parser) but no success. The value is supposed to be "88.00".

Below is the payload.

```auto
msg.payload = 
{ 
    "M2.0": true, 
    "MR168": 6.32293893072644e-41, 
    "MR169": 1.6186723662659685e-38, 
    "MR170": -7.057678885757923e-10, 
    "MD168": 45122, 
    "MD169": 11551232, 
    "MD170": 2957115392 
}
return msg;

```

---

<div class="post-metadata">

### Author: ![KarolisL](https://avatars.discourse-cdn.com/v4/letter/k/a4c791/32.png) [@KarolisL](https://discourse.nodered.org/u/KarolisL)
#### Post date: [6 September 2022 20:54 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/2 "2022-09-06T20:54:28Z")

</div>

There shouldn't be any need to parse the values.

By selecting tag reading tag MR168 you should get real value.  
Why do you even read bytes 169 170 and so on?

What result do you get when you read single tag of address MR168?

---

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [7 September 2022 05:24 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/3 "2022-09-07T05:24:41Z")

</div>

> [@KarolisL](#):
>
> By selecting tag reading tag MR168 you should get real value.

> [@sahsha](#):
>
> `"MR168": 6.32293893072644e-41, `

> [@KarolisL](#):
>
> Why do you even read bytes 169 170 and so on?

To see if value occupying consecutive tag space or not. 🤷‍♂️

---

<div class="post-metadata">

### Author: ![KarolisL](https://avatars.discourse-cdn.com/v4/letter/k/a4c791/32.png) [@KarolisL](https://discourse.nodered.org/u/KarolisL)
#### Post date: [7 September 2022 08:02 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/4 "2022-09-07T08:02:45Z")

</div>

What happens if you select to read single tag MR168?

This the first time I see that tags read by s7 node gives different values from the ones in PLC.  
Could you share PLC online VAT table with act values?

Are you reading from S7-1200/1500 or S7-300/400?

---

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [7 September 2022 10:05 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/5 "2022-09-07T10:05:52Z")

</div>

> [@KarolisL](#):
>
> Are you reading from S7-1200/1500 or S7-300/400?

sinumerik 828d

---

<div class="post-metadata">

### Author: ![KarolisL](https://avatars.discourse-cdn.com/v4/letter/k/a4c791/32.png) [@KarolisL](https://discourse.nodered.org/u/KarolisL)
#### Post date: [7 September 2022 10:33 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/6 "2022-09-07T10:33:29Z")

</div>

Haven't worked with SInumerik series. Cannot help, can't you just move this value to DB and read it from there?

---

<div class="post-metadata">

### Author: ![ptnodered](https://avatars.discourse-cdn.com/v4/letter/p/b9bd4f/32.png) [@ptnodered](https://discourse.nodered.org/u/ptnodered)
#### Post date: [8 September 2022 01:41 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/7 "2022-09-08T01:41:54Z")

</div>

The data looks like floating(32bit) in Little endian format. You can use "buffer parser" which can convert to float little endian.

---

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [8 September 2022 08:36 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/8 "2022-09-08T08:36:53Z")

</div>

Can you create a flow and share ?

---

<div class="post-metadata">

### Author: ![ptnodered](https://avatars.discourse-cdn.com/v4/letter/p/b9bd4f/32.png) [@ptnodered](https://discourse.nodered.org/u/ptnodered)
#### Post date: [8 September 2022 12:19 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/9 "2022-09-08T12:19:34Z")

</div>

As you mentioned earlier you were expecting data at MD168 tag "88" but getting "6.32293893072644e-41" so I tested by simulating Modbus data over Little endian format and found that if I read in node-red as float big endian is getting "6.32293893072644e-41" but if I read in Float little endian format getting value of "88". So try in buffer-parser data type as "float (le)".

I am sharing my test flow.

 ![Float_Little_endian_format](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/9/298113de5e59a516c98a626fad5a9fa3f125361a.png)

```auto
[{"id":"bda4aeea932107fe","type":"tab","label":"Flow 5","disabled":false,"info":"","env":[]},{"id":"a0b8845a59395151","type":"modbus-read","z":"bda4aeea932107fe","name":"","topic":"ModbusData","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"2","quantity":"4","rate":"100","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"d3f6a446.e8ec78","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":150,"y":100,"wires":[["301d77ba97dd5d74"],[]]},{"id":"301d77ba97dd5d74","type":"buffer-parser","z":"bda4aeea932107fe","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"floatle","name":"item1","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":390,"y":100,"wires":[["ee2b5dd976ac4b0c"]]},{"id":"ee2b5dd976ac4b0c","type":"debug","z":"bda4aeea932107fe","name":"debug 26","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":700,"y":100,"wires":[]},{"id":"d3f6a446.e8ec78","type":"modbus-client","name":"test","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true}]

```

---

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [8 September 2022 13:24 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/10 "2022-09-08T13:24:49Z")

</div>

getting error

> Error: data is not an array or a buffer

the reason why I asked you to share flow. 😩

---

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [9 September 2022 06:25 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/11 "2022-09-09T06:25:04Z")

</div>

Why ? Make buffer to parse buffer? 😵‍💫  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/9/c/9cebeb3493669ea1cfc7a6c4c9ebac27e5486762.png)

```auto
[{"id":"2f07c697e82592e3","type":"buffer-maker","z":"20f21f0f49f965c7","name":"","specification":"spec","specificationType":"ui","items":[{"name":"item1","type":"floatle","length":1,"dataType":"msg","data":"payload"}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","x":655,"y":780,"wires":[["abaa6ae99d779c03"]],"l":false},{"id":"aad716df25acf09c","type":"inject","z":"20f21f0f49f965c7","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"6.32293893072644e-41","payloadType":"str","x":595,"y":780,"wires":[["2f07c697e82592e3"]],"l":false},{"id":"abaa6ae99d779c03","type":"buffer-parser","z":"20f21f0f49f965c7","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"floatbe","name":"item1","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":715,"y":780,"wires":[["0f68543715c9b093"]],"l":false},{"id":"0f68543715c9b093","type":"debug","z":"20f21f0f49f965c7","name":"debug 9","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":775,"y":780,"wires":[],"l":false}]

```

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/8/c/8cbb196cd173c5f4b9a436036a09f34f125e082a.png)

---

<div class="post-metadata">

### Author: ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)
#### Post date: [9 September 2022 06:55 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/12 "2022-09-09T06:55:02Z")

</div>

The make buffer is to generate a buffer that is then used to show how to parse it. How else can one generate a test flow when one does not have access to the hardware?

---

<div class="post-metadata">

### Author: ![sahsha](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sahsha/32/43845_2.png) [@sahsha](https://discourse.nodered.org/u/sahsha)
#### Post date: [9 September 2022 10:29 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/13 "2022-09-09T10:29:21Z")

</div>

> [@sahsha](#):
>
> `"MR168": 6.32293893072644e-41,`

had no clue that I need to generate a buffer and then parse it. 🤷‍♂️

I used below 👇 code in [function node](https://nodered.org/docs/user-guide/nodes#function) to get result for anyone might need it and cited [link1](https://www.geeksforgeeks.org/node-js-buffer-writefloatbe-method/) & [link2](https://www.geeksforgeeks.org/node-js-buffer-readfloatbe-method/) to get result.

```auto
var value = 6.32293893072644e-41;
var buf1 = Buffer.alloc(4);
buf1.writeFloatLE(value);
var buf2 = Buffer.from(buf1);
msg.payload = buf2.readFloatBE(0);
node.status({ fill: "green", shape: "dot", text: msg.payload});
return msg;

```

---

<div class="post-metadata">

### Author: ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)
#### Post date: [9 September 2022 10:49 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/14 "2022-09-09T10:49:37Z")

</div>

> [@sahsha](#):
>
> had no clue that I need to generate a buffer and then parse it

I think the idea is that you get the buffer from the device, but I don't know the device you are using.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [8 November 2022 10:50 UTC](https://discourse.nodered.org/t/need-to-parse-values-from-node-red-contrib-s7-node/67386/15 "2022-11-08T10:50:24Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
