Jump to content

Joe Tauser

MVP 2023
  • Posts

    2,860
  • Joined

  • Last visited

  • Days Won

    308

Everything posted by Joe Tauser

  1. Unfortunately, this is very true and represents only half of what the tool needs to do. The higher probability is the Unitronics device will be nothing more than a slave node in someone else's Grand Building Control System. I have one of these belonging to a customer sitting on the floor of my BearCave (like a ManCave, only darker, smoke-filled, and prone to being a location for taking a nap) with the exact same issue - we determined after installation that we are a BACnet slave and I'm going to have to crawl through the documentation Unitronics sent me to configure it manually. I'll post what I come up with. Joe T.
  2. Please post the make and model of the CT. A link to a data sheet would be even better. Joe T.
  3. Do tell so others may learn! Most hardware problems have a way of being repeated by more than one person. Joe T.
  4. I like your way, too! It demonstrates that you can think in terms of bits, which are the foundation of all the other data types. There's a cat being skinned multiple ways somewhere.... 😁 Joe T.
  5. Look in the Help for the Slave Address definition table. Timer presets start at C000 hex, and timer currents start at D000 hex and are 32 bit words. For T35 preset, try address hex C023 (decimal 49187). Joe T.
  6. Those would be the Visilogic function blocks. As you've already done, read the data from the device into a UINT32 tag. For testing I made one called "Read Data" that I could simulate, and a tag called "Conv Value" to hold the swapped bytes. The data will land in a REAL called "Converted". In UniStreamSpeak- 1. Copy the data you read from the device to the working tag and Swap the bytes using "Logic->Swap Single Tag Bytes" with Swap Type.ABCD_CDAB. 2. Copy the swapped data to a 4 byte BUFFER array type so you can manipulate the memory directly. Mine is "Conv Buffer[4]". 3. Use "Buffer Tools->Copy Tag to Buffer" to get the "Conv Value" data into the buffer tag and "Copy Buffer to Tag" to get it from the buffer to the REAL "Converted". There you go. Sorry it doesn't have all the digits you're looking for. If you need to convert several values write a UDFB to move the data into this logic with a pointer. Joe T.
  7. +1 to what Aus said. If you're still having trouble post your program so we can see all the details and hack it a bit. Joe T.
  8. Justin, Thank you for posting your code with your question. For starters, download the examples and take a look at them. Also look at the Help under Contents->Tags->Data Types. I've looked at your code and have a couple of suggestions- 1. Your tag names are way too long - you can't easily see what you're doing in the code and selecting them when you drop a contact becomes cumbersome. I know UniStream allows these long names but the Creators didn't give us a method of displaying more text on the display so it's easy to get lost with overly verbose names. 2. Similarly, use short names in the "Alias Name" in the IO tags tab. "URB Adapter1_O..." means nothing. I see you have three four output modules, so I'd suggest "Out1" to "Out12" as I don't know what these really are. The alias tag is set at the bit level, and you can use that name when writing your code. 3. An easy thing to be confused about is thinking that timer function blocks act the same as a contact themselves. They do not. A timer is an object that has .Preset, .Current, and .Out properties. The .Out is what you assign to your contact elsewhere in your logic. 4. You do understand that a TE timer is a pulse, right? Usually people use TD (delay) timers. Always start a TE with a positive transitional, unless you want it to keep pulsing. I hacked on the first few rungs of your code, renaming things per the above suggestions for the East Lane DDA In. You'll see I shortened the tag names considerably and aliased the outputs. Let us know what further questions you have. Joe T. P.S. - You may want to ask your local friendly distributor to help with some initial training on the product. I do this for my people. EIDSpeedLanes_modified1 JT.ulpr
  9. Actually, it's not. According to the Unitronics Help under Contents->Tags->Data Types So that leaves me to believe you may have a byte order problem, which is not unusual in reading 32 bit data from a Modbus device. I'm looking into if it's possible to read the data into a UINT32, swap bytes, and then convert to Real. Otherwise someone at Support may be able to help. Joe T.
  10. That's cutting it awful close on analog I/O counts. You've picked modules that will work, but you've left yourself no room. I would keep your analog ins and outs separate - (2) UIA-0800N (1) UIA-0006N Room to grow. Any of these inputs thermocouples? Joe T.
  11. The proportional band is symmetrical around the setpoint by definition - you don't get to have one side bigger than the other. Sorry. Joe T.
  12. Send your request to support@unitronics.com and let us know what they answer. Joe T.
  13. I don't know definitively on the UniStream, but the Modbus command to read float registers is the same as the one to read holding registers (3). Have you tried reading the value from the meter to a Real type tag? Joe T.
  14. There are a couple of I/O module that can you can directly connect a 100 ohm RTD to - the V200-18-E3XB snaps onto the back of the V700 and the IO-PT400 expansion module is similar to the IO-ATC8. Both of these modules return the temperature directly in 0.1 degree units, which probably what's confusing you. But this is not what you have in the Prosense (translation: Evil Empire) transmitter. You need to understand what you'll be feeding the IO-ATC8 electrically from the transmitter. It's not ohms. Let's lay it out: 0 F = 4 mA 300 F = 20 mA The IO-ATC8 is an A/D (analog to digital) converter that produces a number to the PLC based on it's input. You said you understand it's 14 bit, but do you know what that means? Let's lay that out, too: 0 mA = 0 counts to PLC 20 mA = all 14 bits on = 2^14 = 16384 counts to the PLC So your transmitter starts at 4 mA. This means at 0 F the IO module will return (4/20*16384) = 3276.8 counts, which it will round to 3277. At 300 F it will return 16384 counts. Read the Help on the LINEAR block, which includes some fun diagrams under the subtopic "Linearizing Analog I/O Values" So you set your linear block up like this: X1 = 3277 (point 1 input) Y1 = 0 (point 1 output) X2 = 16384 (point 2 input) Y2 = 300 (point 2 output) Map X to the register assigned to the channel on your IO module and Y to whatever MI you want to use for the output. If you still need help post your program. Joe T.
  15. No need to convert to real, but could you give a specific example of exactly what you're receiving? Joe T.
  16. Also look at SI 103 .. SI 108 which are internal timers to close socket after a period of silence. Try disabling your timer networks and setting SI 105 to 600 to achieve the same results. If your system is the Master use SI 109. If you open the Help and search for "SI 105" you can navigate your way to a more thorough description. Joe T.
  17. You can have up to four sockets on a Vision. But that's not your problem. To use the SMTP protocol the mail sender must also be capable of SSL (secure socket layer) encoding to use outlook: Almost all of the email services (gmail, etc) have gone to SSL which was conceived and implemented after the Vision product was released. I have brought this up to the Creators and this is a complex problem that is not going to be added to the Vision OS. So you can't send email from the Vision unless you have your own non-SSL email server. You'll have to go to a UniStream if you want to send email this way. Joe T.
  18. I do not. I probably wouldn't promote it if I did - I get very suspicious of people who don't respond to my questions. Joe T.
  19. No, not really. It's just something I do for my logical mind - "don't scan until after you configure". Joe T.
  20. Leave Socket 1 mapped to port 20256 and don't use it in your program. Visilogic uses these for programming over Ethernet. Actually, the default is 502 but it can be any port. And the Master and Slave don't have to be the same, you just have to know what the number is on each side. @Edilson Adriano Lucas - you didn't post any documentation links to cfw011 so I didn't dig into the specifics of it's communication. I'm guessing from looking at your program that you've already figured out the register map. I hacked on your code a bit for the socket assignment. I picked port 503 on the PLC side using local Socket 3 to talk the the VFD on it's port 502. If all this port / socket stuff sounds confusing that's because it is. Especially for someone new to Ethernet communications who's trying to understand Modbus and wondering why the PLC can't talk to whatever they want because their computer has no problem with this. The UniStream series buries all this under the hood and is much easier to configure. Anyway, off my soapbox. You have to get what you have working. Let us know your further questions. Joe T. TestModbusCFW11_JT.vlp
  21. I've never had any luck getting the Data Table RAW function to work. Have you played with the regular data table read row function? Look in the Help under Examples and navigate your way to the Data Table directory. If you have questions post your code. Joe T.
  22. You're experiencing the "Lost Window" phenomenon, most often caused by doing development on a dual-monitor system and then switching to a single monitor such as a laptop. Short answer - press "Alt-Space" (together) then release and press "M". Then you can move the window with your arrow keys - just try holding different ones until it shows up. It's an ancient Windows key trick that still works. Check out this page: https://winaero.com/blog/how-to-move-a-window-using-keyboard-only-in-windows-10-and-other-versions/ Joe T.
  23. To format the number in the data table, select one of the actual data elements and right-click- Choose Format, which opens the Number Format dialog- + 1 on the Row Height adjustment.... Joe T.
  24. It is not possible to dynamically position an image in UniLogic or load it into a data table. Unfortunately, the end user is going to have to settle for something simpler that you can achieve with the tools we have. What they want requires a development environment with more graphics horsepower, like .NET. Joe T.
×
×
  • Create New...