RH-

MrPLC Member
  • Content count

    8
  • Joined

  • Last visited

Community Reputation

1 Neutral

About RH-

  • Rank
    Newbie

Profile Information

  • Country Czech Republic
  1. Hi, yes you are right, it's used in Europe but it's not so frequent as you may think. Mostly it's used by French, because SFC is compatible with French programming standard called "Grafcet" (EN60848).   According my experience SFC is not so bad for overview only in case if you keep function in some reasonable size (number of steps and parallel branching), otherwise it becomes quite messy. For "not programmers" if you use SFC with very good descriptions it's very easy to understand machine functionality. Also in on-line mode you can find this very easy to understand, but it depends on process (if it's very fast process you will end up anyway with trending). Main reason why it's so popular is fact that (I'm not sure about US) in Europe it's quite common that you will receive documentation (flow chart - organic analysis) which completely match flow chart in program. For old Siemens Step7 is possible to export this flow chart to HMI, so you can share flow chart with i.e. maintenance and with some documentation they don't need any computer for basic analysis. According my experience I prefer simple LAD functions according Grafcet std, what is also very easy to understand, it's faster to made and you don't need any special licence as you will need for SFC (only for Enterprise version if Rockwell doesn't changed this). When you are making SFC you will suffer for long time till it goes finally under your skin, than it's OK but still as I thing slower than LAD. Sure you have some embed functions like timer in each Step, that will ensure minimal time to wait in this step, but if you are programmer you will use it minimally. I have used also TIA portal GRAF (more difficult and complex in compare with AB) it's probably better, but any way I prefer simplicity for editing, access and overview. As a programmer I can write it in ST (Structure text) but I have to keep on my mind about people who will work with it after me. Radek
  2. Hello Wumer, regarding HW as it was told to you, both systems are almost equal. Maybe you can consider what you prefer in SW, because in this topic there are some several differences. (user friendly interface) Siemens developing application is Step 7, it supports LAD, FBD, STL languages but according my experience you will find that Step 7 was mainly focused on STL, so if you want to program something bigger you have to use STL. Problem is that if you don't have experience in higher programming languages it will be tough start for you, but after some time you will find that work with indirect addressing or working with accumulators is pretty handy and it can save you a lot of time or allow you solve more complicated applications. Few times I have tried to use some other languages but it wasn't as intuitive as it is in RSLogix500. On the hand SLC500 is using RSlogix500 application which is pretty old as well, but it's more easy to understand, starting from HW configuration (in Siemens it can be sometimes tricky) to main programming language LAD-der. It's very easy to understand quickly how it works, but when it comes to bigger applications code becomes quite heavy and that it loose the advantage before Siemens. Conclusion: If you want to build big project take a Siemens (S300), if you want to just learn how the PLC works take AB (SLC500). Or find some Compact or Control Logix and the other two throw to waste. (That's what I will do :)
  3. Cyclic trigger

    Hello, I enclose an alternative to examples above. If you are interested in flashing bit you can use 2 timers which will reset each other and generate flashing boolean (bit). You can moderate duration by changing timer preset values. For sure due to the cycle time (large applications) of PLC it's not 100% accurate. Best regards, Radek Flashing_bool.bmp
  4. Step 7 - Test Edits

    Hello, I know AB Bradley well, so I can offer you this way of editing similar to AB. Open your project, and go online. Currently you will have two windows in your project manager (online and offline). So you can open functions in online project and make changes, the point is that you do changes and download it into CPU without saving into your offline project, so in case if you want to return, you just switch into your offline project and download function(s) which you have edited. (Sometimes when you close window in online it ask you to save it, don't accept it otherwise your backup will be compromised) Be careful about online edits when machine is running, although Siemens is capable to load your program without stop, it's not so user friendly as AB in case of syntax and program auto control as AB. (CPU can fall in stop) Best regards, Radek
  5. Hello, I don't know your all requests but, this will might works too, but you can, at the start, just copy it. I will avoid to have multiple loop at the start when your code is growing, because afterwards is sometimes problem to find your mistakes. (*Field search 1*) index:=0; i:=0; FOR i:=0 TO 39 BY 1 DO IF array1[index]=number_to_compare1 THEN index:=target1_pos ; i:=39; END_IF; index:=index+1; END_FOR; (*Field search 2*) index:=0; i:=0; FOR i:=0 TO 39 BY 1 DO IF array2[index]=number_to_compare2 THEN index:=target2_pos ; i:=39; END_IF; index:=index+1; END_FOR; (*Field search 3*) index:=0; i:=0; FOR i:=0 TO 39 BY 1 DO IF array3[index]=number_to_compare3 THEN index:=target3_pos ; i:=39; END_IF; index:=index+1; END_FOR; (*Field search 4*) index:=0; i:=0; FOR i:=0 TO 39 BY 1 DO IF array4[index]=number_to_compare4 THEN index:=target4_pos ; i:=39; END_IF; index:=index+1; END_FOR; I should browse array[0] as well because index is set to 0 at the start of function.
  6. ; Ok, if you want to finish, when you find your number, I think this will works fine: index:=0; i:=0; FOR i:=0 TO 39 BY 1 DO IF array[index]=number_to_compare THEN index:=target_pos ; i:=39 END_IF; index:=index+1; END_FOR; You are more than welcome, Radek
  7. Hello, if I'm understand well, you can just create a loop with indirect addressing (DINT have to be in array) something like this: index:=0; i:=0; FOR i:=0 TO 39 BY 1 DO IF array[index]=inumber_to_compare THEN index:=target_pos ; END_IF; index:=index+1; END_FOR; For sure it's just a base and I am not programming in structure text very often so... test it.