Jump to content

Adreasler

Members
  • Posts

    16
  • Joined

  • Last visited

Posts posted by Adreasler

  1. 3 hours ago, Cam said:

    I loaded them into a V700 and can send a serial command that my PC will see in Hyper terminal.

    I've got three subroutine calls in the main routine and then changed SB1 in both the Initialize and send  subroutines.

    I suspect you've got an issue with how the subroutines are being called, but can't help as you didn't provide the full code.  Are you using conditional subroutine calls??

    The initialize and format subroutines are conditionally called on a SB2 [start-up bit] signal, which should be correct, those only need to be called once at the beginning.

    The Send subroutine is called by a subroutine that sets the SD card and Program Number values just prior to the Send routine.  The Sequence is as follows:

    1. Operator selects "Product Change" from the main menu display.

    2. The display changes to a Selection screen with buttons for the various products to inspect.  This Selection Screen has a subroutine that runs while it is active, said subroutine reads the buttons to determine what is selected. (This allows me to have multiple "pages" of selections while recycling the Memory Bits for the buttons, also allows making new pages easy when expanding the selections available)

    3. The Selection subroutine attached to the page has a series of rungs for each button. The rungs for a button will, in sequence from top to bottom:

     3a. Write the correct SD card slot and program number into the appropriate slots in the preformated data in the MI bank.

    3b. Call the Send Data subroutine.

    3c. Change the Active Display to the Main Menu Display, thus exiting the subroutine.

    I but the Send function into its own subroutine to avoid duplicating code in multiple subroutines. Should I instead have the selection screens set a MB "flag" to signal a rung in the main routine to call the Send subroutine, and continue to call the Send Subroutine until the "Sending" MB goes low?

  2. On 9/24/2018 at 8:55 PM, Cam said:

    Can you post your code??

    Here are the pertinent sections that work on the serial port. One initializes the port, one preformats the data to be sent, one sends the preformated data.

    In this version of the HMI program, I lowered the baud rate to 9600 to give me a better chance to see activity on the line with an old-fashioned RS-232 Line monitor and the MK I Eyeball.

    Communication - Format Serial Command.vlx

    Communication - Initialize Serial Port.vlx

    Communication - Send Serial Command Message.vlx

  3. To answer your quoting of the manual:

    3: I have confirmed that the dipswitches are all set correctly for RS-232.

    4: I do NOT have the PC connected to the USB port, I am communicating with the PLC over Ethernet for programming.

    4: Also, the manual is wrong, when the PLC has configured COM1, the USB port WILL NOT respond to PC communication unless the PLC is in STOP mode.  This was an earlier hiccup I had with the system, where I had accidentally deleted the "PLC Name" rung while clearing out unused code and could not communicate with the PLC for programming after that. (The warnings that kept showing up on the download windows had let me to believe that I needed to "burn" the download to keep the program in the PLC after power-cycling.) (The information of "The PLC needs to have a working battery installed to retain program data after shutdown." is at best a Note, not a Warning.")

    5: As there is only one device being communicated with via serial, there is no need to add a second serial port.

    Finally, the receiving equipment has a built-in Serial Port monitor, as I stated in the original post, so I can clearly see that it is not a case of garbled strings being ignored, the problem is that there is NO TRANSMISSION of data from the PLC.

  4. I am attempting co connect a Unitronics V700 to a Keyence Vision system by serial cable, in order to send the "change to program X" command to the vision system when the PLC is instructed to change to a new cap style.  I have a cable connected from Port 1 on the PLC (Which should be COM2, since activating COM1 shuts down the micro-USB port) to the Keyence's RS-232C port, I have confirmed thw wiring, baud rate, parity, etc.  The command is "prepackaged" in a set of MI registers (so the "X" of program X can be adjusted before the command is sent) and I have a subroutine that uses the Protocol Send Function block to send the data.

    In theory, at least.

    In practice, I see no data show up on the Keyence's RS-232 monitor, which should show all traffic in both directions; it is as if the function doesn't activate when called.

    What am I doing wrong here? Do Function Blocks need to be scanned every cycle in order to complete, or do they start a "forked process" that handles the multi-scan function after being triggered once?  Do they need to be "energized" for their whole fun time, or do they require only a one-cycle "trigger" to take off and complete their task?

  5. Yes, I thought of that as my post was awaiting moderator review.

    Unfortunately for me, the V700 stores a backup of the program in FLASH memory, so it automatically loads the program from there into RAM if the battery fails.

    It's odd, all the help files state that the COM1 port is disabled when the PLC is physically hooked up to a PC, so, in theory, this problem should not be happening.  However, as Yogi Bera said, "In theory, there's no difference between theory and practice; in practice, there is."

     

  6. The situation is as follows.  (It's a funny story from the outside.)

    I was trying to get a V700 HMI/PLC to communicate with another device through TCP commands, when I realized that both machines have RS-232 ports.  "That will simplify things," I said, and I put in the function blocks to prep COM1 for the communications.  I also removed the now superfluous rungs that set up the Ethernet.

    Little did I realize that COM1 was not Port 1, but the USB port, and I also failed to realize that the "Set PLC name" function block was in the ethernet rung I had deleted.

    Now I cannot reach the PLC through the ethernet at all, and I can only communicate with it by USB when the PLC is in the 'Pre-boot" stage (power the PLC up while pressing on the screen, then remove finger and press again to half the "countdown to O/S load.")

    In this Pre-boot mode, I can communicate with the PLC, but I cannot download a new ladder logic program to it, and if I let the O/S load, it locks out the USB port so I cannot communicate with it to download a new ladder logic program.

    Is there a way to remove the PLC's existing program so I can put a corrected program into the system?

  7. The suggestion to ping the PLC turned out to my the tap on the shoulder I needed.

    The subnet for the plant is XXX.16.1._ _ _

    The PLC had its IP Address set to XXX.161.1.xxx

    One typo had been giving me all this grief.  One. Lousy. Typo.

    Thank you so much for your time and assistance.

  8. Quote

    Do you have a ScanEX block in the PLC program for the socket with the Port assignment you are looking for? Is the Socket initialized to the correct protocol and port number, and as a slave? Are any of the eight sockets assigned to duplicate port numbers? Has the Ethernet card been initialized in the program? Are you trying to communicate over the same subnet as the PLC assignment?

    If you are trying to connect with Remote Access, then you don't need the ScanEX or socket initialization if you are using Socket 1, which defaults to Port 20256 for VisiLogic and Remote Access communication. The other items I mentioned above may apply though.

    I am trying to connect with Remote Access, and I am initializing the Card, and initializing Socket 1 to port 20256.  I know that last part is a redundancy, but I feel to keep important numbers "out in the open."  I have tried initializing the socket both as Master and as Slave, with no response either way.

    Quote

    Also, have you confirmed that unauthorized devices are allowed on your company network?

    I spoke with our IT Manager, and he said he opened up the 20000 - 20999 block of ports for me.

  9. We are trying to connect to a Vision V700 unit by ethernet for remote access, and to confirm the ethernet is working before starting the program block where we will be sending commands to another device over ethernet. The model I am trying to connect to is as follows:
     

    Quote

     

    Model Number: V700-T20BJ

    Hardware Rev: A

    O/S: 4.4 (04)

     

    Every time we try to connect over Ethernet, we get the following error message:
     

    Quote

     

    Communication over TCP/IP could not be established due to one of the following:

    *Cable connection is not secure.

    *Incorrect TCP/IP Settings (IP Address, Protocol type, Port number).

    *Connection is closed.

    *The connection is currently being used by another program.

    Check your cables and TCP/IP settings and try again.

     

    I have checked the cable connections, confirmed that the PLC Name, IP address, and port number set for the PLC match those that the computer is looking for.

    I cave confirmed that the UnCmDrv1.dll driver is installed on my computer. its last log message, timestamped to match my most recent remote access attempt, shows the following:

    Quote

    ********************************************************************
    Record from CommDrive ID: 44812508 (Comm. Driver)
    Error (242): Ethernet remote socket disabled.
    ********************************************************************

    Trying to read the SB values over a USB remote lin does not help much, as many of the bits assigned to ethernet protocols and statuses are annotated (not relevant for V700).

    What am I doing wrong? Why won't an Ethernet-capable PLC connect to the company Ethernet network?

     

    Thank you in advance for your assistance.

  10. On 5/8/2018 at 12:11 AM, Joe Tauser said:

    This one's not as easy as it sounds.

    Don't do math on the encoder register, do math on a buffer you've copied the encoder value to.  What is the actual scaling of the PPR to inches on the belt?

    Are the items evenly spaced?  It may be a simple as counting increments of spaces using the start flag as a shifter / block incrementer and tracking the rejected bits in register.

    If you have to know the exact location of the item for a the reject station, you'll need to know the distance between the reject station and the "item here" start flag.  I'd load a data table and use it as a two-dimensional shift register that is pushed down every time the start flag is triggered.  Let the encoder value keep incrementing  - if you store it as a long you can snapshot it for a quite a while.

    More specific info on the application, please.

    Joe T.

    The items are NOT evenly spaced, these are small (38mm) beverage caps passing under a vision system for inspection, I was planning on using a shift register to track the 'reject flags' as the caps move down the belt, using a Double Word variable for the register, I can get the position to the closest half-inch, which should be sufficient for caps that are about an inch and a half across.

    As far as 'letting it keep incrementing' and snapshoting the value, this is for a production line, running three shifts 5-7 days a week.  Sooner or later (most likely sooner) the encoder's High Speed Counter will roll over, and that will leave some elements 'past the end of time,' so to speak, their count value will never come up, and, if bad, they will not be ejected.  I should point out that I have asked how many bad parts per 100 we are allowed to sent out; zero. Then I asked how many per 1,000; zero, how many per 10,000; zero.  With this as the goal I am to work towards, I need to insure that even the POTENTIAL for an identified pad part to continue down the 'pass' line is eliminated.

  11. I have a project where we are using a belt and encoder to track items on a belt. There will be multiple items on the belt at once, and the current plan is to store the location and 'status' (good/bad part) in shift registers.

    The PLC is an Unitronics V700, and the EX-I/O module will be replaced with a Snap-On V200-18-E1B, when it arrives.

    The theory of operation is as follows:

    The product passes a photosensor, which adds an 'item here' flag to a shift register.

    When the register indicates a part is under the vision system, the 'item here' flag will send a 'trigger pulse' to the vision system to start the inspection.

    Once the vision system has completed the inspection, a 'scan complete' flag and a possible 'reject this part' flag will be added to their respective shift registers.

    When the bad part is at the reject station, the 'reject this part' flag, if present, will trigger the reject blowoff.

    The problem I am facing right now is how to convert the signals from the encoder (100 pulses per revolution, 2-bit incremental) into an accurate signal to trigger the shift register movement. I was intending to count X 'belt pulses' to be 'one inch' (one shift of the shift registers), however previous tests have shown it difficult to perform math on the MI register that holds the encoder's 'value' and have it stick; the encoder's value gets updated and overwrites the math adjustment.

    is it really this difficult to make an "every X pulses" pulse train built in VisiLogic. 

  12. Thank you so much.

    Not to disparage  Unitronics, but their website does not make it easy to cross-reference components in their PLC/HMI section.  The tables of compatible modules are nice, but it would help if they included direct links to either the pertinent documents in the technical library, or to a catalog page that would give a little more detail on the particular module.

  13. We are working on a project that will be using a Vision 700 unit as the PLC and HMI at the heard of the control scheme. However, we would prefer to NOT have a big bundle of discrete wires running from the backplane  to the enclosure door.  Is there some way to attach an expansion I/O unit to the Vision 700 or to an I/O unit mounted on the back of the V700 using a stock cable setup?  Or should we be designing the enclosure so all the components are mounted to the door instead of to the backplane?

×
×
  • Create New...