Jump to content


Popular Content

Showing content with the highest reputation since 01/24/2017 in all areas

  1. 4 points
    The USB in the UniStream acts as an Ethernet card (while in Vision PLC, it acts as a serial port). The USB of the UniStream is an RNDIS device, and for getting // assigning the IP address of the PLC over the USB-Ethernet an uPnP protocol is used. If the firewall blocks the uPnP handshake between windows and the PLC, then UniLogic will not be able to get the IP Address and communicate with the PLC.
  2. 3 points
    Great news, but twice as tall (or 50% taller) is what I need more. I have regular need for 12 contacts in parallel and constantly breaking them into two sets of six is a pain.
  3. 3 points
    What is the answer to this math problem: 7-1x0+3/3=? If you understand the PEMDAS rule you will get the correct answer of 8. However, if you just run the operations from left to right, you'll get 1. Every ladder rung in your program must be compiled to machine language before the PLC can execute the code. Do you know all the rules the compiler will use when you have a very large net? I certainly don't. Remember, like all computers, the PLC can only do one thing at a time and a large net can provide ambiguity (to humans) so the result can sometimes be unpredictable. To avoid this potential problem, always make your nets reasonably simple and break them into functional parts. It's also easier to troubleshoot and for another programmer to understand what you're doing.
  4. 3 points
    Ohh no, the old usb issues! 1 Perhaps Win 7 is now doing the W10 trick of updating drivers to whatever Msoft deems best, regardless of what the user wants/knows. I'm still on 7 and haven't encountered this yet, but I very carefully look at every update that is offered and find what it is doing. The immediate suggestion is if you have System Restore on, you should roll back to before the updates and see what happens. 2 I have had instances where a usb cable has suddenly broken a line internally. I'm assuming you have tried another known good cable in your attempts? In my instances the error messages you're getting were similar..."unknown but I know something has been plugged in." Murphy's law says that this failure is going to happen just after an update that will appear to be the culprit! 3 Have a good read of this entire discussion: In particular note the program I recommend: http://www.pro-it-education.de/software/deviceremover/ Edit: I have discovered this link doesn't work anymore. Can now be found here: http://www.softpedia.com/get/System/System-Miscellaneous/Device-Remover.shtml I have found it incredibly useful for removing dud drivers Windows squirrels away. If you haven't had luck doing 1 & 2, try getting rid of everything using it and start again from known good drivers. ONLY install them. 4 I am finding more and more devices that used to be serial connections, but are now usb in the same looking body. But lo and behold they have just added a prolific/fake chip onto the pcb so that it "looks" like the unit is usb to the user. It is essentially still serial and the onboard chip lets them get into it if they don't have serial connections available, like modern stuff infuriatingly doesn't. I have been exceptionally careful about what I allow to happen during the first insertion of any device that likely falls into this description. It is a minefield. Tread carefully! cheers, Aus
  5. 3 points
    This problem dates back to when the USB to serial adapters were first introduced. It is not a Unitronics-only problem, it's a Windows thing. I have experienced multiple instances of the same driver trying to access the same COM port when it comes to the USB interface. It is a royal pain in the butt and you have to rip them all out and start with a clean slate. The problem is you can't see them all, even if you check "show non-present devices" in the Device manager. There is an environment variable you have to set to truly "Display All Non-Present Devices". This article describes the process to get all your defined COM ports to light up- https://technet.microsoft.com/en-us/library/ff184583.aspx You probably have a bunch of stuff defined that you didn't even know about. Uninstall all the COM ports. Then plug your PLC in and see what happens. Joe T.
  6. 3 points
    This is a UDFB for linear ramp output with rise and fall time. The program detects change in the target value and ramps the output until it reaches the set point. If the new target value is greater than the current value, it makes a rising ramp. If the new target value is less than the current value, it makes a falling ramp. Calculates the relative ramp time according to maximum ramp and fall time given by the user. Function Inputs: Target value Rise time (This is the maximum rise time from the minimum output value to the maximum in msec) Fall time (This is the maximum fall time from the Maximum output value to the Minimum in msec) Maximum value of output Minimum value of output Function Output: Ramped output register Application: I wrote this UDFB to control hydraulic pressure using proportional valve via analog output. It could also be used to drive a stepper motor with acc/dec using pulse width modulation.
  7. 2 points
    I've never done it, but I thought you could run a full-blown webserver off the SD card in the Vision line. No question though that UniStream is more powerful in that regard.
  8. 2 points
    @Cara Bereck Levy may be able to help you. Sales is not Her specific department, however history has shown that She is very quick to respond and assist in any way She can. @Joe Tauser is an authorized distributor and PLC expert in my Land. UPS ships worldwide. Unitronics is an excellent choice.
  9. 2 points
    You must set PLC name in rung 1 at the right of FB's you already have. APP will not work with no PLC name defined in ladder. Name is your password of sorts, I would suggest making it something more unique than SM43 if it is going to be port forwarded to the public internet. Another note: socket 1 is set to 20256 by default. While redefining socket does no harm, it is not required. Happy coding. -dB
  10. 2 points
    @thecarb This version if you want the OPLC to make an audible pulsed BEEP when alarm is active. Lots of other little things I'd change.... but I have to stop somewhere. Happy coding. *FILE REMOVED*
  11. 2 points
    First of all, only put one logical operation per network. When you put several separate rungs in one network, it may not compile the way you think it will. Creating a new network guarantees separation of operations. It is also very helpful in troubleshooting to keep your functionality together. For example, the timers controlling the fan were spread across several networks. I grouped them together and wrote simpler timer pair logic in the Outputs subroutine. Timers reset themselves when power is removed. You don't need separate logic to reset them. I put together a state machine that steps through the tanks in order in automatic mode. I also moved the scaling and the alarms to their own subroutine. You'll notice that the Main routine is now very small. I put all the functions of the system into their own subroutine. I hate the phrase "best practices", but this way really does make it easier to understand what's going on. Let me know if it works the way you want it to. "Likes" are always appreciated. Joe T.
  12. 2 points
    No, this feature does not exist, but you can put elements in a Custom Control, then if you use that custom control in a screen, then it act as one element when copying, pasting moving etc. Custom control has the ability to accept parameters (It can be used more than once but with different tags, just like regular controls).
  13. 2 points
    Hello, Starting from UniLogic 1.19.80, you have the option to set a new global action named "Take Screenshot" that can be triggered through Ladder. (it is linked to a bit tag that you can control from ladder). Hope this helps!
  14. 2 points
    Hi; I have interfaced a V1040 into a couple of Pi's. I used the TCP-RAW Method and it worked well. Sent Integer data between them to trigger the Pi Camera. Used Python 3 for all the programming. Took a bit of research and trial and error to get it going as some information out there is a bit incomplete or misleading. Also used the MODBUS TCP method - there is a Python based Modbus program out there. It works well. I has more flexibility in some ways.. I will get the code for both methods and post it in a day or so. Current project is connecting a Pi to a Blind(display dead) Lego NXT via USB - working, needs cleanup. Aim is to get it all working together ( Vision, Pi, NXT, and a PIFace Digital I/O interface.) Dan .
  15. 2 points
    Hi, You can create a kind of "message box" using a rectangle and some variables on top of it. configure to each one of them Visibility bit. then when you wish to show this message box set the visibility on. Once the operator chose his option you can reset the bit and the message box will disappear. you can do the same with custom control.
  16. 2 points
    Security like that is not built in to Unitronics, as you've concluded. One thing I've done is to roll my own authentication code based on a collection of mathematical operations. Each Unitronics PLC with Ethernet has a unique MAC address located in SDW 22 and 23. You could keep track of these in your server an create a code to send along with your data. Put logic in that matches the reverse of your math operations and use the result to verfiy the proper data origin. You have not given the details of communication. If you are going through the Internet, there are already many security methods available to clamp down on unauthorized data transmissions. This may be a better question for a good IT person. Joe T.
  17. 2 points
    Thank you for posting. We appreciate it! The problem is you are calling the all the Modbus reads with the same trigger and you're not checking to see if the Modbus task is busy. When you call a Modbus read block it actually spins off a separate process that takes a while to complete. It also really helps to put a little breathing room via timer between reads. I've modified your code to make a state machine cycle through the reads in order and slow it down to let the read function reset. I know the examples show chaining read blocks one after another, but my experience has been this doesn't work. You're probably going to have to update your version of Visilogic to open my file. You can fiddle with the delay times to make it go faster. You'll find that when you set them too low the blocks will hang up. Let us know how it works. Joe T. Thermofisher JT.vlp
  18. 2 points
    And while we're at it, we need the ability to lock the elements in place after they're lined up. I am constantly struggling not to move elements by one pixel when double-clicking to modify some property. Just a single property that applies to the entire HMI screen to lock all elements in place would be sufficient.
  19. 2 points
    You've got your work cut out for you. Usually once a customer has AB tattooed on their butt you need hydraulic machinery to get it off. The PLC 5 family has been completely obsoleted by AB and is pretty much only available on eBay and through surplus suppliers. The official AB solution is to convert them to the ControlLogix platform, which carries a hefty ($10K) price tag. Which blows because the PLC 5's actually still work great. PLC 5 Ethernet is the old AB Ethernet protocol, which is not the same as Modbus TCP. It talks to SLC 5/05's and RSLinx AB-ETH drivers. Channel 0 on some PLC 5s can be configured for RS232 DF1 protocol. Unitronics Vision series can be a DF1 master in a convoluted way, but it does work. UniStream does Ethernet I/P, which is not compatible with a PLC 5. If all you've got is Data Highway+ then you'll need a protocol adapter. I've got such an animal that converts DH+ to Modbus TCP - message me if you're interested. Which PLC 5 are you dealing with? Or is it a bunch of different types? Joe T.
  20. 2 points
    It could certainly be implemented with the Protocol block, but it won't get any traction from the Creators unless a large user wants it. I have personally not seen an industrial do-dad that supports this protocol, but that's just me. The Internet of Things makes me very nervous and I tend to pooh-pooh it. The sales presentations I've looked at always show a nebulous "application in the cloud" that ties everything together. Having once implemented an internet-based tank monitoring system, I learned that in a corporate/industrial setting the IT department will do almost everything in it's power to block you. You absolutely have to set up a remote server and throw all your data over port 80. Then you have to support it for years for little or no revenue and you may or may not be able to hang on to your internal people who know how it works. Look up the Amazon reviews on the Nest Thermostat, one of the original IoT devices. It has a five star rating of 58%. Which means it mostly works. Mostly. Joe T.
  21. 2 points
    On Region & Language settings, click on "Additional date, time & regional settings" On Region, click on "Change location" , Then on the window that was opened, click on the "Administrative" tab. Then click on the "Change system locale". You should set the Language for non-Unicode programs to Hebrew
  22. 2 points
    Ok--I get it We have a version release coming up quite soon. At this point, the product and the Help are quite mature. The pdf manuals are actually the same material that is in the Help, just arranged in the hierarchy that is traditional to print - and I do know that many people do prefer to sit down with a manual. I will make this a priority, right after the release. and they will be accessible in the site. BTW - here is the Timers document, if anyone is interested, which I just sent to Andrew. In addition, we have an overhaul of the Youtube channel planned, so that material will be easier to find for those that prefer a video. Happy weekend, people--yup, it's the weekend over here! UnLogic Timers.pdf
  23. 2 points
    Look at these resistance tables- 100 ohm RTD http://www.pyromation.com/Downloads/Data/385_c.pdf You'll note the highest reading is 390 ohms at 850 C 1000 ohm RTD http://www.thermometricscorp.com/PDFs/Platinum-1000-Ohm-385.pdf All the values are increased by a factor of 10. A 100 ohm input will totally barf if you connect a 1000 ohm load to it. Joe T.
  24. 2 points
    Look up the read DT row function in the help file. It allows you to read a row in the DT via a pointer in to operhands you pick. You can then link those to variables on the HMI.
  25. 2 points
    Gonna have to add my thanks to Joe. I still pull up that Help section on timers regularly to check what I'm doing. It is very well done.
  26. 2 points
    Yes, UTC has that limitation. The UTC from 1900 will "expire" in 2038. The one since 1970 will expire about 70 years later. https://en.wikipedia.org/wiki/Year_2038_problem
  27. 2 points
    Hi Jon1711, Attached is an example for sending file from Vision PLC to FTP Server. Using SD card suite - SD card Explorer you can copy files from the PC to the Vision PLC. V570_FTP_client.vlp
  28. 2 points
    OK. Still confusion. I'm assuming you are talking about having your push button "1" connected to Digital Input (DI) 1. Then your button 2 on DI 2 and so on. This will use many of the inputs, which is OK if you have them to spare. You saying "port" in some ways means the serial connection socket, hence my question. There are other ways of doing this, but......... Before I go any further, have you considered using a cheap touch screen computer running Remote Operator, directly linked to the PLC? In some ways this will be the easiest method of the lot as you can use the inbuilt number entry methods in Visilogic etc, but via a touch screen instead of the membrane keys. You may end in similar costs by the time you cost out keypads etc doing it the other way. You can find RO here to trial it: http://unitronicsplc.com/Download/SoftwareUtilities/Remote Operator V1.0.67.zip In the same thinking, maybe go up a PLC model to one that has a touchscreen as standard? cheers, Aus
  29. 2 points
    That description is subject to Israeli trademark number 049 115 116 032 065 112 114 105 108 033, and you need special permission to use it! ho ho. cheers, Aus
  30. 2 points
  31. 2 points
    You need to find another cable to try Jon as this seems to be the common element. Have you tried a different USB port on the PC as well??
  32. 2 points
    OK. 1 Have you tried another type of usb device in the same socket on the PC? Anything at all that previously worked ok. 2 In the same vein, have you tried using another socket on the PC? 3 Re the broken core, yes...it makes no sense that the system still recognises a plug insertion with one line down, but that's what happened, and happened a few times. I don't know the mechanics of the usb process enough. A new cable and away it went. I am not at all hard on cables, but I do know there are many different construction qualities out there! 4 Go back even further on system restore....as far as you can? Maybe it wasn't the update? It still reeks of driver issue. cheers, Aus
  33. 2 points
    The Snap IO modules are an older design and require a separate bit to "turn on" the high speed output. The IO-DI16 is a newer product and the output will turn on just by calling its address. Is this a new installation? I would totally recommend the V560 if it is - color and much more power for $200 more. Joe T.
  34. 2 points
    Hi, even on programming languages like c# it's incorrect to show a view from code (for example a messagebox). Message boxes are usually required for a user input, and are in most cases 'code blocking' (The next command will not executed until the message box is closed, since it is waiting for a dialog result). In UniLogic, message boxes are shown in a response to a user interaction (clicks, for example), and the result of the user interacting with the message box is clicking on one of the buttons (OK/Cancel/Yes/No) is executing 1 or more actions defined by the programmer. This is the correct way or writing UI. I don't know the reason you want to show a message box, but for example, you want to show a message box like: "Temperature is over 80 deg), and you want to call it from Ladder. In that case, I would choose Alarm for several reasons; * Not blocking UI and annoys the user * What happens if the deg reaches 81 and then falls back to 70 and then again reaches 81? Should another messagebox open while an active one is already opened? * If the message box is designed to set a big when the OK is clicked, and the calling function is no longer running, what would you expect to happen? We do want our user to keep a separation of UI from logic (You won't see any "Load Screen" elements in Ladder, but we do give a Load Screen global action which can be triggered from a bit). A workaround for what you want is to have an overlay of something that looks like a message box with the texts and buttons that you want, and control it's visibility with a bit. (You can also design it as a custom control, so you will only need to set the visibility bit once, on the entire instance of the custom control) Another workaround is to design the whole message box as a screen, and load the screen when the bit is set (the global action will automatically reset the bit), and when done, use "Last Screen" action on the clicked button in order to return to the original screen.
  35. 2 points
    Hi Jon, No via the browse SD card function you can only delete 1 file at a time. If you can use a PC and connect to the PLC via the SD explorer software which is part of the SD Card Suite you can then select and delete multiple files at a time. Cam
  36. 2 points
    Okay, I'm stealing this.
  37. 2 points
    But the tag is not a structure. It's not like in c# where everything derives from Object. It's c++, so a INT8 consumes 1 byte exactly. converting the tag name to a string could be done on compile time, so we know which tags are passed to the " magic function", and we compile their name as a const, but it cannot be done in run-time, whereas you pass a different argument to a UDFB each time. The reason why you can't see the actual in/out/locals of a function is because each time you enter the function, it is called with different parameters, and the local tags are not allocated in the global area, but in the stack. When a function exists, the stack is used for the call of another function. However, we are currently working on a solution for watching locals inside a function.
  38. 2 points
    OK, Fixed. On next version, when you import a table from Excel, if the struct contains only strings, then UniLogic will consider empty rows as data. Now if your table has 10 rows and the Excel file has 2 rows of data, then UniLogic will import 10 rows, where the last 8 rows are empty. If the Excel file contains for example 12 rows of data, then it will only take the first 10. When the struct contains any non-string members , then UniLogic will take the num of non-empty rows. If for example, the excel has 2 rows of data (and the data table has 10), then only the first 2 rows will be overwritten. If the excel file has 12 rows of data, then only the first 10 rows will be taken. If you are converting an excel file to UDTF, then UniLogic would detect if the struct contains only string members, and if so, it will open a dialog for asking how many rows to convert to udtf.
  39. 2 points
    Hello Ofir, The addition of Timout and Retries in the default MODBUS operations will be a large help. I Often need the ability to Auto-Detect Slaves in a network - which is why I need the ability to change slave ID's. The Addresses could be from 1-255, and I don't want to have to set up 255 different combinations of possible reads(Last I knew, you could only even set up 32 slaves as a time anyway). I also need to often read multiple different register locations/lengths while switching between slaves - so i am really limited on this by the simple mode, and must use the Advanced Modbus functions. Thanks again for a great software and hardware. I'm sure these abilities will be introduced again eventually. -Matt
  40. 2 points
    Hi Mark, You can read the whole word to an integer (using R.H.R command) and then use the Ladder element NUM to Bits (You can find it under the logic menu in the toolbox). This element will convert the integer to array of bits. (Please make sure to create the array of bits in the correct length).
  41. 2 points
    You can find a manual under the function F1, but this one is very poor. A lot of things are not available. Like how to correct the clock in the PLC. Maybe this is why no one from Unitronics has answered you till now, I have the same problem and I don't like it this way.
  42. 1 point
  43. 1 point
    You can't use a local timer, since local tag means that it is being created on the stack when you enter the function, and deleted when you exit the function. This means that it will not count. The same thing happens with a local int16. Everytime you enter the function, a new int16 is being defined on the stack with a value of 0.
  44. 1 point
    It's the latter. I just tested and VisiLogic still allows multiple networks in a single rung (don't do it, though), but doesn't allow multiple HMI calls in a single ladder rung. Perhaps an older version did allow it.
  45. 1 point
    Great thread! vamalgise, thanks for reporting back with the outcome
  46. 1 point
    The Help says you get nine tries, and then if you reset the PLC you can try again. Did you cycle power on the V120? If that doesn't work, go into Information Mode and reset it from there. Joe T.
  47. 1 point
    OK. I've implemented this feature for meters and tanks, on both HMI and Web Server. On Meters, this feature is enabled only on "Fill Solid" mode.
  48. 1 point
    It doesn't matter if you are an Administrator. Since Windows 8, even if you disable the UAC, it still runs (It just doesn't show the notifications). Writing to Registry (for having the Startup options changed) requires an elevated privileges. You need to right click Remote Operator, and select "Run as Administrator"
  49. 1 point
    Hi all, Probably everyone has made one of these, but even if you have you might find this one useful. The spinner buttons make it much easier to use....sometimes!! It also describes X & Ys to avoid confusion when entering numbers in Visi during a "my brain is tired" session! If I have got any of it wrong please let me know. It doesn't have any number restrictions on it apart from the spinner limitations of 30000, so isn't exactly perfect. However, you can still enter bigger numbers directly in the cell if you need to. For me, it covers most bases pretty well. cheers, and happy using. Aus Unitronics Linz calc.zip
  50. 1 point
    I developed an application with ASCII in Jazz following the next explanation of Help: Communication Utilities Use this utility to enable your controller to receive data from external devices, such as bar-code readers, via an RS232 port. Since there is no Ladder element for this function; you perform it by storing values into SIs. Note that the communication settings stored into these SIs only take effect at power-up. SI Parameter Value to Store Notes 141 STX (Start of Text) Select one of the 3 STX option by storing its value into SI 141: · 0-255(ASCII) · -1: No Start of Text (not recommended) · -2: No Start of Text (Enables access by Unitronics PC applications) The STX parameter indicates where the data block begins. · -1: Note that the ASCII character '/' (backslash) cannot be used to indicate the start of the data block. · -2: enables applications such as U90 Ladder and Remote Access to access a networked PLC. Note that these applications use the 'backslash' character ( / ) (ASCII character 47) as the Start of Text (STX) character. 142 ETX (End of Text) Select one of the 3 ETX option by storing its value into SI 142: · 0-255(ASCII) · -1: ETX marked by Length · -2: ETX marked by 'Silence' The ETX parameter indicates where the data block ends. When the ETX is registered by the function, SB 60 turns ON. · If you use an ASCII character (0-255), note that if this character occurs after the Length parameter defined in SI 143, SB 60 turns ON. · Selecting -1 causes the function to use the length of a data block alone to determine its end. · Selecting -2 causes the function to use the duration of silent time following the STX to determine the end of a data block. 143 ETX Length or Silent · Length: up to 128 (relevant if you store -1, Length, into SI 142 to provide ETX) · Silent: up to 24000 · This defines both the length of text, or silence, that signals the end of text. · Note that the duration of a silent 'counter' unit is approximately 2.509 mS. The 'silent' value should be lower than the TimeOut value. · When defined as length, SI 143 cannot exceed SI 144. 144 Maximum Length Up to 128 · This is the maximum legal length for received text. · When the maximum length is exceeded, the Receive Buffer is automatically cleared, and SB 60 is turned OFF, enabling new data to be received. · This can be used to detect buffer overflow. 145 Start Address: Receive Buffer MI Address This MI contains the start address for the vector of registers that serves as the Receive Buffer. 60 Number of Bytes currently in Receive Buffer Read only SI 60 indicates how many bytes of data are currently in the Receive Buffer. 61 Number of Bytes in Receive Buffer when SB 60=1 Read only SI 61 indicates how many bytes of data are in the Receive Buffer when SB 60 turns ON. 146 Copy Data: Format · 0: copy each received byte · 1: copy in groups of 4 received bytes. · 0 causes each separate byte to be copied to a separate register including STX and ETX. For example, if the PLC receives an STX character, 4 data bytes, and an ETX character, the data will be copied into a vector of 6 MIs: the first containing the STX, 4 MIs for the data bytes; the last MI will contain the ETX. · 1 causes every 4 bytes to be copied to a single register, without the STX and ETX. This is used when the received data is in numeric format. For example 12345 would be copied to 2 consecutive MIs. The first MI would contain 1234, the second would contain 5. 140 Start receiving 300 In your application, use this to call the function after you have entered all of the other parameters. Note that when you run Test (Debug) Mode, the current value in SI 140 will not be displayed. SB Description Notes 60 Data Successfully Received Read only. Turns ON when the ETX condition is registered by the system. 61 Copy Data in Receive Buffer to MI Vector Write only. · Turning this SB ON causes the buffer contents to be copied to the MI vector defined in SI 145. The data will be copied according to the format defined in SI 146. · If SI 146 is set to 0, this SB can be set at any time. If SI 146 is set to 1, this SB can be set after SB 60 turns ON. 62 Clear Receive Buffer, Clear SI 60, Clear SI 61, Reset SB 60 · This SB must be turned ON to enable a new message, or data block, to be received. · Turn this SB ON to enable data to be received before the maximum length, defined in SI 144, is exceeded. Note that if no data is received for a period exceeding the TimeOut, you will lose the data in the buffer. To see how to use the Communications Utility, check the sample application Read Card - Display Number Value.U90. This may be found by accessing Sample U90 Projects from the Help menu. This application demonstrates how to read a magnetic card number using an "IDTECH" card reader, then display that number on the PLC's screen. The card reader transmits the number in ASCII characters in this format: < %?[CR];xxxxx?[CR] > where xxxxx is the card number. The ASCII character used to mark the Start Of Text (STX) is < ; > (semicolon). End Of Text (ETX) is marked with the character < ? > . Since the card number is 5 digits long, the card number is copied to 2 separate MIs. The MIs are linked to 2 variables that are shown on the PLC's screen in 2 separate Displays. The parameters must be written into their respective operands using one scan condition. For this purpose, it is recommended to use SB 2 Power-up bit, as shown in the sample application.