5/19/2011 11:43 AM | |
Posts: 30 Rating: (0) |
Hi,
I'm working on programming a PLC program in Step7. For wich I need to calculate an average value. First I have 144 samples in a DB8 and second I have 180 samples in a DB9. So I need a block wich can just say: ADD all the samples in DB8 and DEV them by the number of samples (= DB8.DBW12?). And the same for DB9. So I found a block that might do the trick at: https://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objId=39333121&load=treecontent&lang=en&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=WW I put the file in my program and I hit compile STL source file. When I do so I get 6 error's: E Ln 000026 Col 013: Syntax error at #RESET. E Ln 000027 Col 013: Syntax error at _001. E Ln 000034 Col 013: Syntax error at ;. E Ln 000043 Col 013: Syntax error at #BY_VALUE_CHANGE. E Ln 000044 Col 013: Syntax error at nmw. E Ln 000052 Col 013: Syntax error at ;. Now I don't know how to fix this and so I'm stuck at this point. I'm not a great programmer and I can only work with FBD and not with STL so if somebody would know a solution I would be very thankful. Thanks in advance. Kind regards, MatthiasV |
5/19/2011 12:15 PM | |
Joined: 3/21/2006 Last visit: 9/10/2024 Posts: 10228 Rating: (1181) |
Hello, For Step7 the right link is http://support.automation.siemens.com/WW/view/en/19345299 And another one - http://support.automation.siemens.com/WW/view/en/1021364 Best regards, Hristo Mihalev |
Last edited by: UMENCHO at: 5/19/2011 12:17 PM |
|
5/19/2011 1:15 PM | |
Posts: 30 Rating: (0) |
Thanks for the quick response UMENCHO. The second link you send me is the one I tried to use in the program but like I said I had 6 errors that I described in the above post. This one looks like the easiest way for me to program because It's for a project at school in wich I need to every step in the program. The first link looks a little hard for me. I can open the file but it doesn't allow a FBD view and only STL view. And like I said I reallydon't know anything about STL programming :s. Do you maybe know a way to make the second link work without the errors I'm having? Or is there a simple explanation for the first link that I could understand without any knowledge of accu, STL, ...? Kind regards, MatthiasV |
5/19/2011 1:25 PM | |
Joined: 3/21/2006 Last visit: 9/10/2024 Posts: 10228 Rating: (1181) |
My suggestion is to follow MM1234' answer. There everything is explained very well with details. Meanwhile if you have still troubles of course I could try to do compiling of source code on my PC and attch here the result. But really you can to do it alone. Just follow the MM1234. Best regards, Hristo Mihalev |
This contribution was helpful to4 thankful Users |
5/31/2011 12:59 AM | |
Posts: 30 Rating: (0) |
Sorry the attachment is in this post, I forgot it in the previous post! ps: the input in the program is a HART signal so I start by sending it to a DWORD (MD), I Unscale it to send the values directly to the output cards and also pass them forward to the DB8 table. After that I take samples every 10 min and store them in DB8. The table is used to calculate the average if I can fit in your program their. I repeat the same structure by taking samples (this time of the calculated average values) every 4 hours and then make a new average of those values. The two averages are send to outputs. That's a short reminder of my program and I hope it looks a little bit good and is not to wrong :s ps2: the place where the average has to come is filled with an ADD function and a DIV function just to mark the place where it has to come. So it might be easier to find. Kind regards, Matthias V
AttachmentMilieu_1.zip (306 Downloads) |
5/31/2011 3:13 PM | |
Joined: 10/7/2005 Last visit: 9/23/2024 Posts: 3022 Rating: (1054)
|
Hello MM1234 |
Cheers |
|
This contribution was helpful to1 thankful Users |
6/1/2011 10:50 AM | |
Posts: 30 Rating: (0) |
Hi I did what Fritz told me about the language part so that should be fixed now. In attachment you can find the full project to be opened in S7. AttachmentMilieuSTL.zip (284 Downloads) |
6/1/2011 10:55 AM | |
Posts: 30 Rating: (0) |
Hi, When I use addressing to DB8 I have to call it up first don't I? Just say: And do I have to do this in every block as well? Problems: AttachmentMilieuTXTfiles.zip (268 Downloads) |
6/2/2011 10:21 AM | |
Posts: 270 Rating: (53) |
Hello MatthiasV, unfortunately, I don't get to my PC with Step 7 today either. So, I did fix the code for your average value so it works as I proposed before and the way you need it. It loads the first value from the specified first element of the data block and then loads as many elements after it as specified, makes an average of them which is not rounded integer and then returns it back. That's for FC10, now regarding your FB3. The outcome of the FC10 is in the #RET_VAL, so you can assign that value anywhere you need. You should be able to save it into a data block as well as some temporary value and then save it anywhere you need. If you need to save the values in a manner you said, into a DB9, you should make a variable somewhere (that persists, perhaps save that into a DB) for the position where you are at and then just simply store it to that positions address - code is pretty much same as in the loop in FC10, you will not add, though, but just store somewhere and then increase the position. Last thing not to forget, calling of FC10. As I said, it returns in REL_VAL the average value. It has also one incoming parameter, which is values_to_average := P#DB8.DBX12 INT 1 and you dont have to worry about it, as long as the [12] is the number, where is stored the amount of elements in DB8 and the remaining elements are right behind it. So wherever you want to use this average on those values, just call it this way and specify the right way to handle the RET_VAL and you are good. AttachmentMatti_avg.zip (313 Downloads) |
Follow us on