Fuzzycontrol Step7

kolchak

Member
Join Date
Dec 2016
Location
Moscow
Posts
20
Hello!

At the moment, there is a need for the implementation of fuzzy logic (fuzzy controller) for S7-300, writing specifically for cfc, stl, ladder - does not really matter. The essence of the project is to create a fuzzy PID controller under STEP7, object of regulation in Matlab / simulink.
The problem itself is to write fuzzy controller using Step7.
Need help in the implementation, of course, for a fee, for your time. :)
Who can help, write to the PM or this thread, I will wait for responses, we shall discuss in more detail.

Does anyone have projects for fuzzy logic implemented in Step7?
Please help me to implementation of the program in STL or LAD...

An example of a possible implementation I've seen in this article: http://sci-hub.cc/10.1109/itec-ap.2014.6940881 , but due to lack of knowledge can not apply this LAD or ST algorithm.
 
Last edited:
check the siemens site as they do have a good explanation on how PID control is to be used, they even have control blocks for
otherwise look for oscat.de they have a nice library (in STL) with lots of functions. good readable when you download the ST version of it with the PDF as manual.
 
Siemens got smart

https://support.industry.siemens.com/cs/pd/66639?pdti=pi&lc=en-WW
Looks like Siemens had it but discontinued the project. So some people will still have it or it will still be in old projects.
Fuzzy logic is a waste of time/money. It looks like Siemens got smart and realized that.

I have read many articles about FL and its different implementations and have even played around with a FL. All the articles like to compare FL to PID. The examples always make the PID look worse than the FL but that just shows me the authors no nothing about control theory.

I put FL in the same category as ZN. It is an attempt to control a system with little real knowledge of the system itself.

Another point against FL is that it is terribly in-efficient. This is why implmenting a FL controller is difficult to do. A PID can be as simple as 3 multiples and 3 adds. I would add some limit checking just to be safe though. It is hard to beat the efficiency of a PID.

FL has its place in some applications but not in those that compete with a PID. A PID will always be better if used correctly.

Finally, the type of system that is to be controlled makes a difference even when choosing the different types of PID. I don't see how it is possible to optimally control something without understanding it or just being lucky.
 
@Peter:
i do not agree with you, The advantage of FL is pretty simple, as FL has many different speeds and ways of control.
PID can be used with several settings, although when is which setting to be done.

PID is fine when the process is always the same, FL will change its control when the parameters are changed.

In PID there is only one optimum position, while in FL there are as many as you program.
For a simple control FL is overdone, however if there are >1 inputs it can be very simple to implement.
 
@Peter:
i do not agree with you, The advantage of FL is pretty simple, as FL has many different speeds and ways of control.
What do you mean by different speeds?
So does PID control. The issue is not how many ways there are of controlling something but how one gets to the optimal way. How many membership zones do you need? What shape must they be? How much should they overlap? How are the results defuzzified? There are many methods to do this. Which one is right? If you know control theory the number of gains for a PID falls out in the math. In my case a PID with yet a second derivative gain is often used. Try implementing that in FL.

PID can be used with several settings, although when is which setting to be done.
That is easy. As I said before, the people that like FL also have no clue about control systems. If they knew better they would see what I mean.

PID is fine when the process is always the same, FL will change its control when the parameters are changed.
It is easy to change gains on-the-fly using PID. That isn't the problem. The problem is knowing what to change them too but the same applies to FL.

In PID there is only one optimum position, while in FL there are as many as you program.
This isn't right. What do you mean by optimum position? How do you know which one is right?

For a simple control FL is overdone, however if there are >1 inputs it can be very simple to implement.
So how do you know your solution is optimal? When there are more than 1 inputs linear quadratic control (LQC) should be used that calculates the gains that minimize a cost function for the PID gains.

This is a PLC forum, not a control theory forum, however to really understand control one needs to be able to do 3 things.
1 Identify the system. This means estimating an open loop model of the system. The method of closing the loop will vary depending on the open loop model. There is NO one size fits all. That goes for PID and FL.
2. CALCULATE gains that move the open loop poles to desired closed loop pole locations.
3. Be able to estimate the PV,PV' and perhaps the PV'' accurately. For simple systems one simple uses the feed back.
FL does none of this. It is a hit or miss method that works only by a lot of trial and error.
I can calculate gains to place the closed loop poles and zeros where I want them. This will result in getting the response I desire. I can convert a forcing function and closed loop system to a response as a function of time to check my calculations.
So basically it all comes down to placing closed loop poles. I don't see how FL helps here except to use trial and error.

People that use FL are naive and haven't got past tweaking parameters or controller gains. On top of that FL is very inefficient.
 

Similar Topics

This is the first time I am working with Simatic Manager Step7 as I started my siemens journey with TIA which is pretty easy and do a lot of stuff...
Replies
3
Views
138
When you download a DB, the values get overwritten by what is in the "actual" column in offline DB. Does this happen at the start of the PLC...
Replies
6
Views
142
Hello Inside a FB, I´m trying to transfer a string from a DB to a IN_OUT var that was define as a UDT. The problem is that i can´t determine the...
Replies
4
Views
127
Hi all, I am trying to convert RSLogix 5000 program to Step7. I need to bit shift left my array of double integers for tracking the product on...
Replies
2
Views
519
I have a word in some DB which I want to load to AR1 and use as a pointer. In order to do this I need to write L DBxy.DBW xy SLD 3 LAR1 I...
Replies
3
Views
533
Back
Top Bottom