Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


kvlada last won the day on March 1 2018

kvlada had the most liked content!

Community Reputation

1 Neutral

About kvlada

  • Rank

Recent Profile Visitors

455 profile views
  1. This sounds like a good idea. All screen buttons have a Disable bit if there's no user logged in. In every screen I could place a tiny button at the top, which is hard to be pressed by a local operator (because it's only 3x3 pixels wide for example). But it can be pressed using Remote Operator (because screen is bigger, and there's mouse). Remote operator presses the hidden button, enters the password, local user doesn't see the password because it shows as ******, and it enables, say, 5 minutes of PLC use. After that the Remote operator presses the tiny button again and locks the panel. Even easier, there could be no password, just the hidden touch element which turns on and off Disable buttons bit. Thanks!
  2. I'm having a very interesting issue that requires creative thinking Imagine having 3 - 4 Vision PLCs with a touchscreen, working in the field, which are all connected to Control Room via Unitronics Remote Operator software. I want for the Remote Operator to be able to use the PLCs, but for a local operator to have no access - only view screen contents. PLC should not accept any touches. So, the Control Room operator has all the HMIs on his computer screen, and can do whatever he wants on the PLCs: click on buttons, enter variables, change screens, etc. But a local operator can only watch the PLC screen. He can make touches but PLC will ignore them. Now, the twist: the Control Room operator should be able to remotely "activate" touchscreen on the PLCs, allowing local operator to use it for a limited time. Then, after a timer runs out, or the CR operator clicks on a button, the PLCs switch back their HMI to "Read-only" mode. Would this be possible with Vision? I mean, technically, I could cannibalize the touchscreen cable, install a relay or some analog multiplexer which turns it off when a certain output is on. Unfortunately that would void the warranty of the PLCs, and would be rather brutal. Any ideas?
  3. In IoT projects, one of the most common problems I've encountered so far was Remote Access. Usually I have to connect a modem or a specialized WiFi/LAN gateway, and then configure DDNS, and setup some firewalling to be able to safely access PLC over the Internet. Wouldn't it be great for Unitronics to have a kind of own cloud service, which would allow a remote access to a PLC, regardless of their internet connection? Something similar to what Secomea is doing. You buy a subscription from Unitronics, and for example, $50/year you can access up to 20 different PLCs worldwide, through Unitronics Cloud, without the hassle of setting up VPNs, DDNS, and all that network stuff which usually fail the first time an engineer opens the cabinet and resets a router
  4. Bump. I was curious too, but couldn't find any data. So far I've found that: - SI280 is a read-only register. Writes to it are ignored. - SI280 is incremented every 60 seconds while PLC is powered on. - SI280 increments even while PLC is in Stop Mode. I'm not sure the wording in the description is correct. "OS init" is when all memory registers are reset to 0, and I've had multiple Vision PLCs working 24/7 for many months without their memory getting reset.
  5. My fear is that somewhere, some crazy team of open-source enthusiasts will make a Soft-PLC Linux Distro for Raspberry Pi, and a product line of I/O shields. That would be the end for low-budget automation companies. A screenless UniStream performance for under $100? Totally disruptive.
  6. - RS-485/232 custom protocol - for digital scales, barcode scanners, etc. - CANopen - for distributed I/O modules - MODBUS TCP/IP - connecting multiple Unitroncis PLCs together - MODBUS RTU - for various slave devices, VFDs, etc - MODBUS ASCII (very rarely) - Rinstrum weighing indicators, and other exotic devices I wish there was a 4-port or 8-port I/O module with integrated protocol FB. For example: "IO-4RS2-2RS4" with 4xRS-232 and 2xRS-485 port. Configure protocols via FBs or hardware configuration.
  7. I made arrays in the struct definition. And then, defined aliases in a global var. Kinda cumbersome, but gets the job done. If I want to put more motors, just increase array length in struct definition, and copy-paste more UDFB to take care of data processing. UniStream has 2 MB memory for variables, and that's awesome. Don't have to worry about losing free space. Still, it would be really nice to be able to make arrays of structs.
  8. But I can't set aliases to individual fields in a data table. That's what I resorted to, after trying out everything else.
  9. Okay, I just got an interesting idea. Problem: Unitronics will probably never have enough time or manpower to implement a software PLC simulator. Fact #1: Most Vision and UniStream PLCs can be equipped with an Ethernet port. Fact #2: The PLC you need for application debugging is almost never on your local distributor's stock. (Murphy's law!) Solution: Unitronics makes a rent-a-PLC farm: a room with every PLC they produce, each connected to Internet via a VPN firewall. If a programmer needs a PLC to test and debug his app, he pays some hourly fee, and gets VPN access to PLC's Ethernet port. From there he can download his app, and carry out testing over Remote Access or VNC. If he needs to reboot his rented PLC, he either accesses a power-control web interface which flips 24VDC on the PLC supply, or contact an attendant with whom he solves the problem via live chat or Skype. Thus, the coders will get to test their apps on real-world hardware, and Unitronics (or some other company hosting the PLC farm) will get extra income. $20/hour seems like a good starting fee. What do you think?
  10. Is it possible to implement struct arrays in UniLogic? For example, I have a struct for a motor: STRUCT MotorData: BIT RunCommand BIT Feedback BIT IgnoreFeedback [retained] TIMER FeedbackDelay [retained] BIT Fault UINT8 FaultCounter [retained] UINT16 WorkingHoursTotal [retained] And I want to do: GLOBALVAR MyMotors: Type: MotorData[37] Because I have 37 motors to control. And then later, I want to do things like: SET ALIAS: MyMotors.RunCommand[12] = "Motor_K4-5A_Run" SET ALIAS: MyMotors.Fault[12] = "Motor_K4-5A_Fault" SET ALIAS: MyMotors.FaultCounter[12] = "Motor_K4-5A_FaultCounter" And other wicked things, like: if (Motor_K4-5A_Fault && Motor_K4-5A_FaultCounter < 255) Motor_K4-5A_FaultCounter++; This would ease things up so much! Instead of creating 37 individual global variables for each motor, I'll need only one.
  11. How about: "Motion Detect" and "Deviation" UDFB. Motion detect is very useful in digital scales, where you need to watch if a specific analog value isn't changing for more than X within a specified time. Deviation is useful when you have to monitor an analog value overnight, to watch for drift, changes, etc. What happened to filtering? VisiLogic had a very nice Filter FB, which had rolling and order-weighed average filter. Also, we're still short of UniStream loadcell module. (Hello everyone! It's been like, 6 years since I last posted here. After ten large and interesting projects and many Unitronic PLCs installed, I'm back^^)
  • Create New...