Coder Social home page Coder Social logo

Comments (4)

zappfinger avatar zappfinger commented on May 24, 2024

Sorry, my fault, I was doing something wrong. Ignore this.

from python-snap7.

spreeker avatar spreeker commented on May 24, 2024

I spend significant time making sure writing strings is done safely.
There was a serious bug where the set_string function did not check if the input string fitted in the intended space and just used some extra memory in the plc if the string was too big.. oops..

from python-snap7.

zappfinger avatar zappfinger commented on May 24, 2024

Are you aware that there are two types of strings in the S7 series? The String type is preceded by 2 bytes. Byte one is the maximum string length, byte 2 is the actual string length. I believe your string function does nothing with byte one, only byte 2 is written?
But the other type is a character array, that can start anywhere in a DB and has no preceding bytes...
This type has no functions for it to read or write...

from python-snap7.

spreeker avatar spreeker commented on May 24, 2024

no I had no need for the character array so i have not encountered it.

The reason I don't write the first byte is is that the first byte value (max_size) is set by the siemens step7 project and snap7 / python should under no circumstance change the first byte!!
By setting the actual string size it was still needed for the functions to clear's out the rest of the bytes with ' ' empty space to make it work correctly and prevent weird string values to show 'newvalue_partoflargeroldstring' on the siemen screens.

The max size is given to the function set_string for two reasons. 1 to make sure you know about what you put in and 2 set_string function among others is user by the DB class to edit large a object. The DB object expects a specification / layout of the data and in it the max string size is also specified.
The DB object makes it possible to use a DB in a PLC like a Dict in Python but it is rather hard to setup correctly and I don't know how to make it any more easy..

from python-snap7.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.