1/29/2020 6:21 PM | |
Joined: 11/30/2015 Last visit: 3/23/2022 Posts: 1 Rating: (0) |
Interesting article. What about using SFC20 to copy a range of input data from a Profibus device. Will there be a risk of inconsistency due to input area being updated asynchronously on Profibus from the hardware side during block transfer ? I'm facing issues with a device containing multiple internal data sets, where I send a number to request either of 2 datasets and receive a response containing dataset number and rest of related data in a 96 byte input range. This data range I then transfer to either datablock 641 or 642 depending upon the received data set #. Apparently some parts of the data belong to dataset #1, even when I request #2 and receive response showing #2 in the start of dataset. Meaning that I can find values from dataset #1 in my datablock 642. Should I use SFC81:UBLKMOV instead ? Will it make any difference, since SFC20 in my case is only interrupted by 100 ms timed interrupt with OB35 ? Best regards Ove Bonde ------------------------------------------------------------------------------------------ |
Last edited by: Jen_Moderator at: 01/30/2020 11:12:45New subject after splitting |
|
1/30/2020 11:44 AM | |
Joined: 10/10/2005 Last visit: 8/29/2024 Posts: 1917 Rating: (136) |
Hello AutoGen_484192 Try the indirect addressing method if you use the SFC20. You can access the I/O address area indirectly and you can watch out for when copying with the SFC20. The input data, which lies outside the process image, must be copied to a global data block in consecutive order first of all. You can then copy the data from the global data block (source field) to the target field (outputs, flags, data blocks) with the SFC20. ANY pointer "P#PE300.0 BYTE 16 cannot be specified. See the example by the link: https://support.industry.siemens.com/cs/ww/en/view/22783999 With best regards |
This contribution was helpful to1 thankful Users |
Follow us on