11/22/2014 4:47 PM | |
Posts: 5225 Rating: (1193) |
Which PLC and software? w |
11/22/2014 4:51 PM | |
Posts: 32 Rating: (0) |
Dear Expert , I am Using Simatic Manager 5.5 to Program the PLC. |
11/22/2014 4:54 PM | |
Posts: 5225 Rating: (1193) |
Which PLC? |
11/22/2014 5:06 PM | |
Posts: 32 Rating: (0) |
William , I am using 315-2PNDP CPU and software is Simatic Manager 5.5. Thanks |
11/22/2014 5:29 PM | |
Posts: 32 Rating: (0) |
Please help on this. |
11/22/2014 6:34 PM | |
Joined: 1/28/2009 Last visit: 10/11/2024 Posts: 6852 Rating: (1365) |
Hello fordicon, Generally for S7-300/400, you can use SIMATIC timers in conjunction with functions.It has the drawback of using CPU's timer .While using IEC timers plus FB, it is possible to save SIMATIC Timers.Check my solution:
[code] FUNCTION FC 1 : VOID TITLE = VERSION : 0.1 VAR_INPUT e1 : BOOL ; zeit : TIMER ; wert1 : S5TIME ; END_VAR VAR_OUTPUT aus1 : BOOL ; END_VAR BEGIN NETWORK TITLE = A #e1; L #wert1; SD #zeit; NOP 0; A #zeit; = #aus1; END_FUNCTION ORGANIZATION_BLOCK OB 1 TITLE = "Main Program Sweep (Cycle)" VERSION : 0.1 VAR_TEMP OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY : BYTE ; //Priority of OB Execution OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1) OB1_RESERVED_1 : BYTE ; //Reserved for system OB1_RESERVED_2 : BYTE ; //Reserved for system OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started END_VAR BEGIN NETWORK TITLE = A I 0.0; = L 20.0; BLD 103; CALL FC 1 ( e1 := L 20.0, zeit := T 5, wert1 := S5T#2S, aus1 := Q 0.0); NOP 0; NETWORK TITLE = A I 0.1; = L 20.0; BLD 103; CALL FC 1 ( e1 := L 20.0, zeit := T 6, wert1 := S5T#10S, aus1 := Q 0.1); NOP 0; END_ORGANIZATION_BLOCK [/code] I hope this helps, Hamid Hoseini AttachmentMEIN_FUNKTION.zip (489 Downloads) |
Last edited by: hdhosseini at: 11/22/2014 6:40 PM |
|
This contribution was helpful to1 thankful Users |
11/22/2014 9:15 PM | |
Posts: 5225 Rating: (1193) |
Hi there. Please find some information here: [LINK] In short you have the options.. 1. Use the inbuilt timers that the PLC have, but link to it in an indirect way. (The previous post does that.) 2. Use software timer from standard Siemens provided libraries. 3. Build your own software timer that can be re-used (like above) My contribution to the point 1 (purely academical): [code] A I 0.0 SD T [MW 10] A T [MW 10] = Q 0.0[/code] For point 3, the basic idea is to have a variable count a pulse for as long as the appropriate condition is met. Several posts exists that discuss methods to do this.. but you are also welcome to ask if you wish to know more. I think however that the previous post of the link I have given, should help you out. Hope to hear your feedback. Greetings. w |
11/22/2014 9:43 PM | |
Joined: 1/28/2009 Last visit: 10/11/2024 Posts: 6852 Rating: (1365) |
Hello William B. , You misinterpreted my solution.I have not used the indirect addressing to access a timer.I have used the actual "Timer" parameter type and assign a valid timer number "T5" to the corresponding variable.This is more clear if you download (MEIN_FUNKTION.zip ) and check the whole concept or even import the STL source file and check it in STEP 7.
Anyway, I am still eager to see if your solution to this problem , indirect addressing, can be actualized in STEP 7 within an FC and pass the mentioned requirements in the 1st post. Good Luck from hdhosseini |
Last edited by: hdhosseini at: 11/22/2014 9:50 PMLast edited by: hdhosseini at: 11/22/2014 9:44 PM |
|
11/22/2014 10:17 PM | |
Posts: 5225 Rating: (1193) |
Now what follows is academical and should be ignored by fordicon.. @hdhosseini: Always good to hear from you! In fact I did understand your posting. Splitting hairs.. I said: "link to it in an indirect way"; this does not refer to indirect addressing. Still the timer is passed on by an input parameter of the function and is not called directly in the strict sense. Now for the academical part..
Does this answer your question well enough? |
Last edited by: William B. at: 11/22/2014 10:26 PMerror in coding |
|
Follow us on