TIA PID Compact control

chandrapaul

Member
Join Date
Mar 2016
Location
bangladesh
Posts
119
Hi,
I am testing compact pid control. i used %MD0 (Real) as a set value. but when i modify the value then it does not change properly. check the picture. i put 50 but its showing 47 point something. then again inserting some value but it does not change. what is the problem? may be i am doing something wrong. kindly help i am new in TIA portal.

Thanks

1.JPG 2.JPG
 
Is that memory word used elsewhere?

What is that Tank function doing? Is the SetValue an input or InOut variable that is perhaps changed inside the Tank block?
 
Have you use M0.0 - M, or MB0, or MW0 anywhere. A value doesn't change itself, if you enter 50 and it changes it to 47.xxx then something else is accessing that memory. Actually looking at your pictures you are referencing the same memory - MD0 and MD1 and MD2 overlap, if you are using MD0 then that covers memory locations 0,1, and 3, the next memory you can use is MD4. I am surprised that TIA Portal hasn't complained about the overlap.
 
Have you use M0.0 - M, or MB0, or MW0 anywhere. A value doesn't change itself, if you enter 50 and it changes it to 47.xxx then something else is accessing that memory. Actually looking at your pictures you are referencing the same memory - MD0 and MD1 and MD2 overlap, if you are using MD0 then that covers memory locations 0,1, and 3, the next memory you can use is MD4. I am surprised that TIA Portal hasn't complained about the overlap.

i think that is the problem. but why the md0 covers 0,1,2 memory locations?how to know that?
 
i think that is the problem. but why the md0 covers 0,1,2 memory locations?how to know that?

MD stands for Memory Double Word. A word is 2 bytes, meaning a double word is 4 bytes. I think the M technically stands for "Merker" in german, but I don't think that really means anything.

M0.0 references bit 0 of byte 0. M1.0 references bit 0 of byte 1. M0.1 references bit 1 of byte 0. MB0 references the whole byte 0, overlapping with M0.0 - M0.7. MW0 references the word starting at byte 0, meaning it overlaps with MB0 and MB1. MW2 references the word starting at byte two, so it overlaps with MB2 and MB3. If you declare a tag at MW1, it uses MB1 and MB2, which means it overlaps with MW0 AND MW2.

MD0 uses MB0-MB3.

The different ways of writing it only change how much data you're getting, it's all the same data area either way.

All that said: If you're using a 1500, I'd recommend declaring your global tags inside a data block. Then you don't have to worry about the addresses at all.
 

Similar Topics

Hi, i used a compact pid in my program. i am using s7 1500 cpu. i selected the pid mode automatic, selected the output and input type from the pid...
Replies
1
Views
1,325
I have set up some "PID_Temp" loops in a 1517F3 processor and they seem to work ok. For pressure and flow rate I've used "PID_Compact". The issue...
Replies
2
Views
2,617
Using siemens block to control pressure level. The PV is pressure in Bar and the output is vsd fan speed in %. What I require is when the PV is...
Replies
6
Views
3,069
Hi Guys, I'm setting up a PID control for S7-300 in TIA Portal using the CONT_C Block in cyclic interrupt OB35. My Analog output is taking 0-10V...
Replies
17
Views
5,015
Dear all . I made a program for boiler tank using TIA V15 , the program consists of 2 PID blocks in OB30 . but the PID didn’t work automatically...
Replies
3
Views
2,657
Back
Top Bottom