Jump to content

Dave

Members
  • Posts

    74
  • Joined

  • Last visited

  • Days Won

    5

Dave last won the day on August 18

Dave had the most liked content!

1 Follower

Profile Information

  • Gender
    Not Telling

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Dave's Achievements

Advanced Member

Advanced Member (3/4)

6

Reputation

  1. If you don't need high precision, you could use the status of the monitored bit in series with a rising edge of the frequency.frequency 1 (s) tag to increment an integer. This would give you a rough value in seconds how long the bit was on. Store the integer value(and perform conditioning/formatting first, if needs be) in "logging" struct. Use the falling edge of the monitored bit to reset the integer to zero You could use the frequency.frequency 100 (ms) to get a bit more precision. The output of an accumulating timer TA, turns ON when it reaches zero, while the input is still ON(starts counting on the rising edge of the input). You could use that bit to reset the timer. Once the output turns ON, it stays ON, even if the input trigger turns OFF.
  2. Hi Gary. Had a look at your code. Here's what I see so far... The struct you are using to write to the data table doesn't match the format of the data table struct. They must match exactly, the format of each member of the struct, and the order of the members in the struct. I don't see any code that loads the user name into the "logging" struct. The user name is found in the User Access Control struct, and its data format is String-UTF-32. You will need to change the format of the username in the data table struct to match(its currently set to String-ASCII) Also found in the User Access Control struct, is the Event Update Bit . You can use this, along with the Event Type tag, to monitor when a user has logged in or out. The Event UTC, also found in the User Access Control struct, contains the timestamp of the event. The help file has a pretty good description of these tags. I haven't used the Event UTC tag, so I don't know what it looks like, but I'm guessing you may have to do some conversion to get it to a format of your choice. If you are OK with the format as is, then just change the data format of your LOGIN & LOGOUT tags to UINT32 and add some code to load the Event UTC timestamp into the logging struct. Keep in mind that any time the Event Update Bit is set, you must manually reset it with your code in order to be able to capture the next event. Not sure why your complete data table is not getting sent to the SD card. What is the Status code of your Store DTI function when you execute it Looks like you are almost there. Hope this helps.
  3. Hard to help without seeing your logic so far, but here goes anyway.... The data types you are trying to write to the table must match the data types set-up in the Data Table columns struct. For the User name and login, logout times, you can use the event tags in the User Access Control struct to detect each time a user logs in or out. There will be some code required to save a "TimeStamp" to each event The instructions used differ, depending on the type of data table created. If you are using an indexed data table, the easiest way is to use the insert row instruction. The existing data gets pushed down a row and the new data writes to the row number defined in the instruction. If you always insert at row 0, the table acts much the same as a FIFO table, deleting the last row of data(first-in) once the table is full. To save the table's contents to SD card, use the Store DTI to File instruction. That instructions gives you some options such as whether to overwrite the file, append to the file, row # to start from and whether to create a .csv file, .csv-zip file, .udtf file or all types.
  4. Hi Jose. I'm not quite sure what the question is. When you added/configured the URB-TCP in your project, each I/O module attached to the adapter would have needed to be added to your project, in the Hardware Configuration section. When this is done, the structs are automatically created for each I/O module. The name assigned to each module is the model#, followed by the physical position occupied. For example, if you have 2pcs of URD-0800 occupying the first two positions to the right of the adapter and 1pc of URD-0008CH in the third position, the I/O structs would be created as follows: URB Adapter1_Inputs.URD-0800_0[Input0 to Input7] URB Adapter1_Inputs.URD-0800_1[Input0 to Input7] URB Adapter1_Outputs.URD-0008CH_2[Output0 to Output7] (The first position to the right of the adapter is zero) You can edit the Alias and Description for each I/O point, but you cannot change the name. You should not need to manually create any structs for the I/O.
  5. I played around a bit with the drawing tools and came up with a reasonable solution. Have a look at the attached program.(I used a USP-070-B10, with Unistream version 1.30.58) I originally had the circle position updating every scan, but the screen refresh rate could not keep up, so I changed it to update only when the X or Y position values changed. I linked two sliders to the X & Y position tags in the circle struct that was created when I defined the shape tag for the insert shape instruction. It's a bit rough around the edges, but should give you an idea of how the drawing tools function. PositionTracking.ulpr
  6. I believe you can use the INSERT SHAPE instruction, found at the bottom of the Ladder toolbox, under Drawing. I have never used this, and can't find any help or examples, but when I hover my mouse over the input tag, B, it prompts me to enter the "shape struct". This leads me to believe that you must first define a shape and then create a struct that would include X,Y coordinates. Once you have that struct created, you should be able to manipulate the coordinates based on your laser sensor readings. If anybody knows where to find an example or instructions for creating shape groups and structs, I would be very interested to see that. update... I just tried inserting that instruction and when I create a new tag for each input/output of the instruction, there is a brief description of its purpose/use. There are 3 types of shapes available...line, circle & rectangle. The shape struct is automatically created when you according to the shape type selected when you create the tag. the circle struct, for example, has Thickness, Color, X position, Y position, and radius. Well, I tried a few attempts, but I think I need some more info on shape group ID#'s, and color settings. I managed to get the instruction to execute without an error code, but nothing shows up on the screen. Dave.
  7. You could create two same size buttons and place them one on top of the other. Create the message box only for the "ON" button ...Display the "ON" button only when the heater is OFF., and display the "OFF button only when the heater is on.
  8. I was a bit surprised that when I first swapped the CPU out for a new one, the program was still intact when I powered up. I thought the program/configuration would reside in the CPU, but I guess it actually is stored in the panel. When I swapped the panel next, and used the original CPU, then I had to do a full download to restore the program. I wonder why the back-up battery is in the CPU and not the panel? Oh, and the URB-TCP is only about 6 ft (maybe 8-10 ft of cable) away from the panel. I did have a look at the battery status bits, but that was after a "mis-boot" and all the system bits were showing zeros. With the original CPU and new panel, the operating parameters for the equipment are being retained through power cycles, so I am guessing the battery is OK I still have the suspect panel and I think I will power it up back at the shop with a new CPU /URB-TCP, and see what happens. It sure does help to have extra hardware around for this type of troubleshooting. dave
  9. Yes Ausman...many of my customers do indeed abuse their equipment, but in this case, they are very good at keeping enclosures closed and they regularly clean the equipment. While the glitter is everywhere on the machine itself, I found zero signs of debris in any of the electrical enclosures. I had a CPU and panel brought in for another project, so I tried swapping out the CPU today...same problem occurred. When checking on-line status of the system tags, I found that all numeric values were 0 and text values were "", empty quotes. (at least all the ones I looked at) Then I swapped out the panel, using the original CPU, and the problem went away...so far. The client said that while it was intermittent at the beginning, as of last week, it was occurring almost every time they cycle power. They power off during every set-up change(as many as 2 or 3 times a day), as part of their safety procedure. I cycled the power three times today and had no issues. I will give them a couple of days and if the issue has been resolved, I will send the panel back for warranty evaluation.
  10. I believe you need the CPU in order to have it auto connect. With no CPU, someone would have to manually make the connection after each power up.
  11. I don't have the go ahead yet, so I'll wait for the new releases for now. Should I receive a PO. soon, I will take you up on your offer. Thanks,
  12. Thanks for the feedback guys. There are indeed VFD's in the area... not on the same equipment, but nearby. I guess I can try making sure they are off during power up and see if that helps. I always ground the negative side of my power supplies, so if it is a VFD issue, install line reactors for the VFD's (other peoples equipment)? or line filter in my equipment, or both The application is cosmetics, and the glitter does seem to get on mostly everything, but the controls are well protected in new, NEMA12/4 enclosures. I have a second machine to do, so I have an order for the same hardware coming in. At least I'll have those to change out one by one, if it comes to that.
  13. Yes! I was hoping to find that function block in the current Unilogic motion commands, but didn't see it. Any idea when it will be added?
  14. I have a machine with a Unistream 7" modular and some remote I/O attached to a URB-TCP. It has been working fine for about 10 months., but now, occasionally when the machine is powered up, the PLC doesn't establish a connection with the URB-TCP. The hardware model numbers are: Panel: USP-070-B10 CPU: USC-P-B10 I/O Adapter: URB-TCP When it does fail, all the status LED's on the URB are green, except the "Active" LED. I have checked the connections between the URB and the adjacent I/O module and the power supply connections on the front of the URB and they are all good. The cat5e cable between the PLC and the URB has also been verified as OK. The boot-up of the PLC seems to take quite a long time... a little over 2 minutes. Sometimes when it fails, not only does the remote I/O communication not get established, but also a couple of fields on my start up screen don't get populated with the related data. (I have the system tags "Panel SW Version.Unilogic Program Name" and "Panel SW Version.Unilogic Project Version" displayed on the start-up screen). It has, at times, booted up with these fields populated, but still no remote I/O communication. I have not actually been there to hook up my laptop when it fails to see if there are any error codes. The customer "fixes" the problem by powering off/on until it boots up normally. If anyone could shed some light on this behavior, it would be greatly appreciated. At this point, I'm thinking about replacing the CPU, but I am only guessing.
  15. How would I go about synchronizing two identical servomotors, driving two identical ball-screw actuators?
×
×
  • Create New...