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 (303 Downloads) |
5/31/2011 3:13 PM | |
Joined: 10/7/2005 Last visit: 9/20/2024 Posts: 3021 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 (277 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 (259 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 (308 Downloads) |
Follow us on