Ignition 8.1.3: exception caught during sendRequest

I’m using Ignition 8.1.3 (b2021030309) and an S7-1500 device. I’m experiencing the following issue while trying to write to the PLC with a system.tag.writeBlocking instruction:

I’ve defined two S7-1500 devices, one for INTs, FLOATs and one for STRINGs (I have some STRINGs which span up to 255 chars): the writeBlocking instruction should write at the same time to variables some of which are defined on one device and the remaining on the other device.

Any suggestion?

Does it happen with every invocation of writeBlocking with some combination of tags?

Hallo Kevin, thanks for your help. Yes it does. If I print the writeBlocking return array I get such an array of issues:
This occurs independent on the group of tags I try to update in the same writeBlocking instruction - I tried to leave the STRINGs variables out of the instruction and it happens all the same. Howevere tags can be written to from the tag browser with no problem.

Side note: this morning all was working like a charm! … but nothing changed …

Hmm, well seems like it’s a bug to me. I would just open a ticket with support.

If you can provide the list of tags that triggers this it should be easy to reproduce and fix.

Hallo Kevin, I’ve tried to post the gateway backup, but the file is too big.
However next the code that causes the Excption:

tags.append('[default]GestioneLavorazione/Stazione%d/ActionCode' % (stationNr)	)
tags.append('[default]GestioneLavorazione/Stazione%d/iParam1' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/iParam2' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/iParam3' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/fParam1' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/fParam2' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/fParam3' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/sParam1' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/sParam2' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/sParam3' % (stationNr)		)
tags.append('[default]GestioneLavorazione/Stazione%d/HMIlabel' % (stationNr)	)
tags.append('[default]GestioneLavorazione/Stazione%d/HMIjpeg' % (stationNr)		)
values.append(row['ActionCode']	 )
values.append(row['iParam1']	 )
values.append(row['iParam2']	 )
values.append(row['iParam3']	 )
values.append(row['fParam1']	 )
values.append(row['fParam2']	 )
values.append(row['fParam3']	 )
values.append(row['sParam1']	 )
values.append(row['sParam2']	 )
values.append(row['sParam3']	 )
values.append(row['HMIlabel']	 )
values.append(row['HMIjpeg']	 )
print system.tag.writeBlocking(tags,values)

where row is a row in a pyDataset resulting from a query on the database, ActionCode and iParamX are integer, fParamX are FLOATs, sParamX and HMIlabel are STRINGs. As noted above, STRINGs are isolated in their own device, but the error occures even if I leave the STRING variables out of the writeBlocking instruction.

If you can add print tags and print values statements before the writeBlocking call it would help to see that output.

Hallo Kevin, I think I’ve found: the recipe I’m trying to download to the PLC this afternoon has a NULL for one of its field which is a None for one of the values submitted to the writeBlocking instruction. That is causing the writing issue for sure.

Many thanks for your valuable help!

Ok. I still think there’s a bug here because the driver should handle receiving a null value better than throwing an NPE.