Jump to content

Joe Tauser

MVP 2023
  • Posts

    2,851
  • Joined

  • Last visited

  • Days Won

    308

Everything posted by Joe Tauser

  1. Unitronics has not made that product in many years. Reach out to them directly at support@unitronics.com and they many be able to help. Joe T.
  2. From your post I gather that you have your input temperature resolution set to 0.1 deg C. I would seriously consider knocking that decimal point off your temperature. If your input is a type K thermocouple your sensor has +/- 2 deg C accuracy and that extra decimal gives managers something to focus on and get upset about when it moves 0.5 degrees. Everyone expects perfection these days. To answer your question - if this is the resolution of the PV input the the PID block then your P band will be 0.1% times the P value times PV, or (0.001 * P * PV). So at 548.8 degrees C with P = 1 your P Band is 0.55 degrees C. In a PID loop the Proportional band is the first and most weighted component of the equation. Outside the Proportional band the output is either full on or full off. A proportional band of 1 is effectively an ON/OFF control. Changing the I and D parameters will have no effect on the output at this point. Sometimes the Autotune doesn't work. Your loop is drooping slightly. If you want it to go higher you need to set your D = 0, set your P =10, and start incrementing I until the temperature starts coming up. If it starts oscillating double your P value. Are you monitoring the actual electrical value of the 4/20 output signal? If you logic is working with a P value of 1 it should be effectively alternating between 4 mA and 20 mA with nothing in-between. The difference between ON/OFF and the PID you have defined at this point is ON/OFF switches off at the setpoint, PID is switching off at 0.55 degrees below the setpoint. Honestly if you're able to maintain 548.8 degrees at a 550.0 degree setpoint I wouldn't be worrying about it. Joe T.
  3. Submit this problem to Official Unitronics Support at support@unitronics.com. Joe T.
  4. We usually do something like this: With this in the first network of the Main: Joe T.
  5. Information Mode over-rides your program, as you've seen. I generally keep Information Mode a secret from end users. Making your own interface to edit the values in the Ethernet address Memory integers is relatively simple. I usually put that screen behind a password. After editing you either cycle power to for the new Ethernet information to take or put a negative transition on the Display Active it tied to your editing screen. Use that to re-trigger the Card Init block to make the settings take effect immediately. Joe T.
  6. The PLC must be turned on. You can't upload or download anything otherwise. Don't import or export the PLC operands at this point - that's Unitronics' way of describing the actual numerical values in the memory. You probably want to leave those alone. To upload the actual PLC program to the PC you select "Upload". However, as Flex said, if the original programmer did not enable this you won't be able to get the program. You'll probably need to contact the original programmer to get this. Joe T.
  7. The relay closing and opening is considered one operation. Joe T.
  8. Is it 20 separate records or one block of 20? Which version of UniLogic are you using, and could you upload your program? Joe T.
  9. We're not official Unitronics support, but if Unitronics doesn't get back to you right away (it is Saturday) I'd start by downloading the oldest version of UniLogic that you can and starting the firmware update with that. If you go to the UniLogic download area, you'll see a box called "Previous Versions". The oldest one on there is version 1.21.51. I've seen a problem with a UniStream not recognizing cheap USB drives. When you're making your upgrade USB drive, make sure you have a good quality one like a SanDisk or other name brand. It needs to be at least 8 GB. Joe T.
  10. I didn't know your background so I didn't want to start brand dropping. We use Weintek screens as the HMI when we do an Allen Bradley project. We frequently use VNC server and the webserver aspect of UniStream for remote display. Using the Weintek VNC client as you describe is an excellent solution. No programming needed! Joe T.
  11. You're probably right on that. Are other exposed metal parts (typically terminals or lugs) showing signs of corrosion? That sounds kind of specific to Unitronics. Does the customer have PanelViews or other HMIs that do not have the failure mode? If this is a Unitronics problem, we need to bring this up with them. Either way, you have three choices: 1. Remove the controls from the environment by re-locating the panels 2. Remove the environment from the controls by installing an air purge system in the panel to push the gas out 3. Accept that environment tears up your controls and keep spares loaded with the program handy. Joe T.
  12. We ran into this with a customer who wanted decimal pounds or integer grams with the units displayed. I would convert your number into text inside your code and then display a string. Then you can make it look however you want on the fly. Joe T.
  13. The EX-RC1 used the UniCan protocol. The CANbus port can't run two protocols at the same time. Joe T.
  14. The forum is not the Official Unitronics Support channel - it is manned by volunteer users. Send your request to support@unitronics.com Joe T.
  15. Translated - A question.... And how are the sub routines created? I have the same problem every time I try to delete a "hide vars". Greetings While in the ladder editor click this button In the menu you can also Find "Add New Subroutine" under "Insert". Regarding removing "Hide Vars" - anytime there's a little eraser next to the field that's how you clear it Joe T.
  16. Point taken on me modifying the Grafcet. Your drawing illustrates it perfectly. But I modified it to suit my needs as a programmer. My State Machine style grew from my frustration with PLC Direct 400 series Stage Programming (now I'm really dating myself). Each stage was controlled by an S-bit and if you wanted to see where you were in the program you had to pull up a watch window and then remember what stage did what. The bits were in sequential order and if you need to insert another operation between stages then you needed to either re-number all your sequence bits or use a fresh bit that was out of order with the others. The graphical representation of the software at the time didn't like the bits being out of order. Plus, there was a limited number of them. My work these days consists primarily of Unitronics (I am a distributor / system integrator) but also a fair amount of older Allen Bradley. Neither of these has stage programming or is even close to IEC 61131-3 compliant, so the other languages aren't really on the table for me personally. Both brands have ladder. Both brands have Equal and Store (MOV) blocks. Your CODESYS solution with Sets and Resets is only slightly removed from my pointer method, and it uses functions common to all PLCs. Which is good. The main reason I don't program that way is because when you set a bit you have to remember to reset it. A numerical pointer takes care of itself and you can look anywhere in your sequence and see what the value is. It most certainly can. If I've got separate State Machines running in parallel I clean up the code by putting them in their own subroutine that is always called. Each one has its own Idle state, and the Main loop starts them by pushing a value into their pointers, as you did in your CodesysSnippet document. I'm sorry I don't have the magic bullet you're looking for. I can tell you're an accomplished programmer and this is a most interesting discussion. Joe T.
  17. I did draw squares and a circle on it. What would your argument be? For your second question, your solution would match mine. Using the same technique with different pointers, you can step through each branch independently. You set your "step" tag to 99 at I5, which is a holding state for the main loop. Now all you have to do while your main pointer = 99 is have an AND statement looking for each sub-loop pointer to reach its final value. Joe T.
  18. Visilogic installs quite a few examples as part of its install package. In Visilogic they are accessed from the Help menu under "Examples". You'll find Loadcell examples under the Project Examples directory. Joe T.
  19. I sent a PM to brooksg44 asking further details and learned this question is based on a whitepaper describing converting Petri net to of three of the Five 61131-3 languages. https://abcm.org.br/symposium-series/SSM_Vol5/Section_IV_Industrial_Informatics_Discrete_and_Hybrid_Systems/24333.pdf For summary and illustration purposes, I took screenshots of relevant sections. Here's the example process and description (page 6: The I/O consists of three lamps, a button, three valves, three level switches, a motor, and a heater. Nothing is really mentioned about the heater and temperature control loop. This is an academic exercise, so I'm going to assume that the heater is a frictionless device with the power of the sun that instantly brings the process to whatever setpoint temperature is specified. 😁 The file brooksg44 posted is a Grafcet diagram, which is a fine way to represent to the process. I brought his diagram into Visio and added some annotations to help with the State Machine program: I only needed one pointer. By putting the Outputs in their own subroutine, they are easily referenced from the state sequence logic. I did this example program in Visilogic 9.8.65, because that's still my favorite version and anyone should be able to open it. I also used a 7" Samba because those seem to be very popular these days. I didn't spend much time on the graphics. If someone wants to make it pretty and upload a fancy version knock yourself out. Joe T. P. S. - Take a look at the LD program in that paper. Yow! Tank Fill State Machine JT.vlp
  20. I would use more than one pointer, with state 2 in one path and 3 and 4 in another. You can kill the path by setting the pointer to zero when it's no longer needed. I always have a separate subroutine called "Outputs" where all my coils go and they are turned on and off by the values in the pointers. There's no rule that you can't have more than one compare block controlling a coil. What are your exit transitions for states 3, 4, 5, and 6? Joe T.
  21. Hi Luis - Thank you for attaching your program. I opened this using Visilogic 9.8.94. For starters, your PLC ID and your Slave ID are the same. That's generally a no-no. The PLC is the Master. You have a SCAN_EX block tied to Socket 2, which by default will also be port 502. This makes the PLC into a Slave as well as a Master. That's OK, but if you want both you need a second MODBUS IP CONFIG block using a different socket and a different port. Will this unit be a Slave to a SCADA system or something like that? If Socket 3 disconnects you can just re-trigger the Connect block. You can also put a value into SI 110 for Socket 3. Take a look at the Help for "System Operands" for a detailed explanation. Your MI 150 pointer is incremented by a 0.01 sec timer that doesn't take into account whether the Modbus function is busy (MB 32). That's probably too fast. Your RHR blocks also don't consider whether the Modbus function is busy. It's like you're screaming at the "I don't care if the last function isn't done yet! Do this NOW!!" Anyway, I hacked on it a bit. Program attached. Let us know how it goes. Joe T. Luis_REV_11_JT.vlp
  22. System bit SB 8 turns on when the battery is low. I always put a small indicator on the screen for this. If the settings will never change you can either check the power-up box or put them in a Data Table with the "Part of Project" checked. You could load them when the PLC powers up. We have to deal with the cards we're dealt. The battery is rated for 7 years and they typically last for 10 years. Your client will have to change them from time to time. Joe T.
  23. I'm afraid that without the proper USB driver none of these solutions will work. The PLC has no idea what's connected to it in that little USB box. You need to get something with a real RS232 port. Joe T.
×
×
  • Create New...