5/21/2006 9:45 PM | |
Joined: 1/7/2006 Last visit: 11/17/2023 Posts: 2705 Rating: (318) |
Hi Dave, You have to make first a few symbolic names, they are given in the start of the file thats hereby. This is because SCL couldn't have Global Data [:(] AttachmentSCL WriteAll.zip (1860 Downloads) |
I hope that the answer will help, if you have still questions, don't hesitate to ask me. |
|
This contribution was helpful to5 thankful Users |
5/25/2007 12:47 AM | |
Joined: 8/10/2006 Last visit: 8/13/2024 Posts: 298 Rating: (29) |
Late, Very nice. Thank you for sharing your work! Jim |
3/16/2012 5:14 PM | |
Joined: 1/28/2009 Last visit: 10/11/2024 Posts: 6852 Rating: (1365)
|
Dear Georgio, What do you think about using "Real_TO_Dword" conversion! You can try that or upload part of your program related to the problem. // To copy content a DB to another, possibly you can use SFC20 Best regards, Hamid Hosseini AttachmentSFC20.pdf (759 Downloads) |
Last edited by: hdhosseini at: 3/16/2012 5:23 PM |
|
3/16/2012 5:27 PM | |||||
Joined: 10/28/2008 Last visit: 7/21/2023 Posts: 245 Rating: (14) |
Dear hdhosseini. I was thinking about using REAL_TO_DWORD and DWORD_TO_REAL but I think that it is working like conversion from real to DINT in FBD/STL (DI_R, ROUND, TRUNC, CEIL and FLOOR). But now I can see that in help:
Now I am a little bit confused about these function.. I do not know exactly if these funtion work in the same way like DWORD to real and real to DWORD conversion in FBD/STL. I simply have 2 data blocks with real numbers and only want to address these values indirectly. Thats all. Please see attached snapshot with my solution in DWORD. I know that for copying I can use SFC20, but further I want to make another things with matrices and I need to know how to access real values indirectly... Thank you a lot for your answers. Georgio |
||||
Last edited by: Georgio at: 3/16/2012 5:35 PMLast edited by: Georgio at: 3/16/2012 5:32 PMGeorgio |
|||||
3/16/2012 6:02 PM | |
Joined: 1/28/2009 Last visit: 10/11/2024 Posts: 6852 Rating: (1365)
|
Dear Georgio, About the conversion from Real to DWORD (and vice versa): [code] ORGANIZATION_BLOCK OB1 VAR_TEMP // Reserved info : ARRAY[0..19] OF BYTE; // Temporary Variables END_VAR //Real to DWORD MD4:= DINT_TO_DWORD((TRUNC (MD8))); //DWORD TO REAL //md8 := (DINT_TO_REAL (DWORD_TO_DINT (MD4))); ; END_ORGANIZATION_BLOCK [/code] Let me check your codes,I will update here Best regards, Hamid Hosseini |
Last edited by: hdhosseini at: 3/16/2012 6:16 PM// CODE OPTIMIZED |
|
3/16/2012 6:24 PM | |||||
Joined: 10/28/2008 Last visit: 7/21/2023 Posts: 245 Rating: (14) |
Dear hdhosseini I know how conversion from real to dword in STL/FBD works But as I wrote I am a little bit confused about these function in SCL now.. If it is working like TRUNC, DI_R.... From help:
Now I think I maybe solved my problem. I use REAL_TO_DWORD and DWORD_TO_REAL. Now I have 2 DB with real numbers. I read 4 bytes like DWORD, convert it with and the real value and store with conversion to another DB. Please see attached file... Problem is that I read and write DWORD, but in DBs I have real numbers.. I read DWORD, convert it to REAL, and than REAL number convert to DWORD and store to DB. It works, but I think that it is not correct... My code: [code] FUNCTION FC60: BOOL VAR_INPUT InVal : REAL := 0.0; END_VAR VAR_OUTPUT Val : REAL := 0.0; END_VAR VAR ConVar : INT; Inkrement : INT; END_VAR VAR_TEMP cms1 : BOOL; cms0 : BOOL; dummy : BOOL; SaveVar : DWORD; SaveVarReal : REAL; END_VAR // cms0 and cms1 cms0 := cms0 AND NOT(cms0); cms1 := cms1 OR NOT(cms1); ConVar := "MatrixA.DB".NoOfRow; FOR Inkrement:= 4 TO 36 BY 4 DO SaveVarReal:= DWORD_TO_REAL("MatrixA.DB".DD[Inkrement]); "MatrixB.DB".DD[Inkrement] := REAL_TO_DWORD(SaveVarReal); END_FOR; FC60 := cms1; END_FUNCTION [/code] Thank you for your answers. Best regards. Georgio AttachmentSCL.pdf (524 Downloads) |
||||
Last edited by: Georgio at: 3/16/2012 6:30 PMLast edited by: Georgio at: 3/16/2012 6:30 PMGeorgio |
|||||
3/16/2012 8:28 PM | |
Joined: 1/28/2009 Last visit: 10/11/2024 Posts: 6852 Rating: (1365)
|
Hello again, I did not have your source code so I tried to create situation similar to yours.I created 2 DBs identical with some real numbers as cell elements(See the snapshots for my case): Following codes working perfectly in my case as I checked with PLCSIM. Why do not you use assignment ":=" because both cells are real? [code] ORGANIZATION_BLOCK OB1 VAR_TEMP // Reserved info : ARRAY[0..19] OF BYTE; // Temporary Variables HD:INT; END_VAR FOR HD:= 0 TO 20 BY 4 DO // Statement Section DB2.DBD[HD] := DB1.DBD[HD]; ; END_FOR; ; END_ORGANIZATION_BLOCK [/code] Best regards AttachmentForum_SCL_16_MARCH.zip (465 Downloads) |
Follow us on