Hugo Brown

MrPLC Member
  • Content count

    12
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Hugo Brown

  • Rank
    Sparky

Profile Information

  • Country United Kingdom
  1. I have a very large program which is about to go in to testing when I noticed that at some point we have ended up with multiple BOR instructions in a FBD referencing the same BOR tag e.g. BOR_01. I was hoping there would be some way that one of you could recommend that would allow me to quickly check for duplicate uses of the same tag. So far the only way I can think of doing this would be to cross reference each BOR/BAND etc tag and see if it used in different sheets (which should be a good indicator something has gone wrong). Ideally some way of getting the tag export tool to export a cross reference of where the tag is used down to the sheet level. Anyone got any bright ideas? Thanks
  2. How to use Fault OBs for Error Reporting

    Hi, So looking at that i created an example project with some basic info being taken from the OBs which my PLC is compatible with. The basic idea is that i have split the OBs in to 2 categories: 1) ones which run repeatedly when the error is active 2) ones which run at the beginning and end of a fault for the type 2 I evaluate the temp variables as moggie pointed out and set an error flag using that. for type 1 I set a temporary flag which i evaluate every second on a trigger: i copy this to another location and reset the temp one, if the temp one is returned to high within a second I keep my second flag high, otherwise it is reset. anyone got any thoughts on this? (see project attached) Oberrort.zip
  3. How to use Fault OBs for Error Reporting

    aha. Thanks for the pointer Moggie.
  4. How to use Fault OBs for Error Reporting

    Hi Moggie, thanks for responding and sorry for the late reply. Thanks for the example. I tried reading the “System and Standard Functions” document but didn’t find anything specific about each of the OBs and when they run and in what pattern (as regards running for the duration of the error or pulsing) but I will read through again. I was really hoping for an example setup someone had for an S7-300 with all the logic already in place for tracking errors as OBs flash up but I don’t think it’s going to be that simple.
  5. Hi Guys, I have a small project with an S7-300 (CPU 317-2 DP – 317-1EA00-0AA0). I have been tasked with setting this PLC up as a glorified remote I/O base. We are connecting it to an Allen Bradley system (which is all working fine). What I am struggling with is how to report any faults. I have the error OBs which seem appropriate set up in my project and latching a flag when they are run. The problem is I’m struggling to figure out the logic of when the OBs are running. OB82 seems to fire once when a diagnostic fault from an I/O card appears and then once again when it goes. Others seem to stay on consistently. But since they don’t all do this I can’t stick to the logic of detecting a fault going away by the OB no longer running. So my question: Is there a standard way of using the fault OBs purely for error reporting and detecting when the error goes? Or does anyone know of a document which will explain when they run? Some googling (lots of it in fact) brought me to the “System Software for S7-300/400 System and Standard Functions Volume 1 of 2” which was quite handy but didn’t really answer my question. Thanks
  6. Hi Guys, We are using the POVR and PCMD commands to move manage phases but for some reason they dont like taking an alias for the phase they are controlling. This is a bit of a pain because as you can probably imagine we refer to the phase name directly alot. So whats happening is: we run the command: PCMD(PH,Start,Result) to run the command 'start' on the phase which is referenced in as an alias by tag 'PH'. 'PH' is being used elsewhere succesfully so its not a problem with the alias but i get the error 'Invalid reference to object that doesn't verify' on complile. Any suggestions of how to make this work?
  7. Logix 5000 tag descriptions

    aha, that's going to be useful. Thanks
  8. Logix 5000 tag descriptions

    Seems they were there all along just hidden my the setting: Tools -> Options -> Application -> Display -> Check: "Show Pass-Through Descriptions" That was several hours of my life i'll never get back.
  9. Hi Guys, Is there any way in Control Logix 5000 for the description for each item in a User-Defined data type appear as the description of the tag in the declared tag? I just assumed this would happen automatically but it doesn’t seem to. See the attached pic for an example of what I’m on about; I have descriptions written for each of the two bools in my UDT but when I create a version of it the descriptions don’t appear next to the actual tag?? Many thanks in advance if anyone can help with this.
  10. Logix 5000 COP and data types

    Hi guys, thanks for the info about the data differences. you are right it did do that. I had the pro soft card transferring everything as INTS so I think it did an element of that conversion for me but I still need to swap round the words of a real and play with the bools to make everything line up and fall in to place. All a bit less neat than I was hoping for but it works and only need to do it once. Also good diagram, searched high and low on the Siemens website for something like that. And I have failed to come up with any other way of doing this so we are going to bite the bullet and change the s7 data structure, seems to be the only realistic way to make this work. obviously I could put all the tags in individually but we are talking thousands and a very slow interface, so that's not an option anyone is keen on.
  11. Logix 5000 COP and data types

    Aha ok that makes sense now! Thank you. Unfortunately the structure of the Siemens DB is outside my control so I can’t do anything about the fact that a real is in word starting on byte number 46 (not divisible by 4). For anyone who happens across this in google, example below: So I have a User-Defined type as below: Int_no_01 INT Int_no_02 INT Int_no_03 INT Int_no_04 INT Real_no_01 Real Real_no_02 Real Int_no_05 INT Real_no_03 Real Real_no_04 Real If I use a COP instruction to put this in to a series of SINTs (makes more sense to me when they are in bytes) I end up with the example in the attached pic. So you can see that Real_no_01 and 02 go where you expect as they start on the 8th and 12th byte. Real_no_03 however lands on byte 18 but the controller wont put it there so it ends up on byte 20 leaving 2 bytes empty. Then Real_no_04 is fine because it’s been pushed back to the correct place So at least I know why its happening even if it doesn’t fix my problem. I’ll post again if I come up with some work around other than changing the Siemens block. Thanks for your help.
  12. Hi Guys, So I have a ControlLogix 5000 PLC which we are linking through a Prosoft Technology ILX56-MM card to a S7-300 plc. There are a lot of individual tags so I am trying to transfer it all across as an array of INTs. All good so far.. The problem comes when I try and transfer data from a User Defined data type tag which consists of all the data I’m trying to send (mix of int, bool and real) to the array of INTs. For some reason when I run a COP instruction to transfer the structure in to the INTs data types which are Real and Exponential sometimes take up 6 bytes but not always. To be clear: there isn’t data in all 6 bytes just the last 4, but there is still a two byte spacer in the middle of my block which doesn’t line up with the DB in my Siemens PLC causing all sorts of problems. So my question basically is: Is there any reason why the real type is some times (not always??) 6 bytes? Is there anyway I can limit it to 4? Is there anyway of seeing the specific memory locations which are being used by a tag? I’m hoping this will make me understand why it’s doing this. P.s like the forum, been reading it for a while but this is my first post. Any help anyone can give would be most appreciated and I’ll do my best to reciprocate.