Michael Walsh

MrPLC Admin
  • Content count

    1801
  • Joined

  • Last visited

Everything posted by Michael Walsh

  1. NB designer "layering" screens

    Yes, it would work, but there should be another way to do this.  I will look some a bit later today if I get some time to do so.
  2. Ping from PLC

    Ok.  The point of the connect is to see if the device is out there and establish the link.  There are no "ping" functions.
  3. Ping from PLC

    Are you using the MTCP Function block library from MyOmron.com?  If so, when you go to connect using the MTCP_Client_Connect FB, you will get an error if the device is not there.... Even if you are not using this library, you will get an error when you try to make the connection.  
  4. Help Program C40P Using Computer

    Yes, I was telling you that there was no way to do this as gtsuport says.  You already had your answer.  No direct connection.
  5. Help Program C40P Using Computer

    You have found the answer already ^.  This PLC is old (25-30 years or so old.....).  
  6. Simple PID explanation

    I think you understand correctly.
  7. cycle or scan time my program?

    If you double click on the scan time in my first post, you get this:
  8. cycle or scan time my program?

    Bottom of the screen in CX-Programmer:
  9. Simple PID explanation

    What I was referring to was the fact that if your analog input value coming in for the feedback dips below zero (when monitored as a signed integer), that would like a large number when monitored as an unsigned integer.  The input range is set in number of input data bits.  So, if your input data bits are set to 12 for example, then your input range is from 0  to (2^12-1) or from 0 to 4095.  Therefore your setpoint cannot be negative.  It also has to be between 0-4095.  If 0-4095 means -3 to +3  (units, whatever your units are).  You would need to scale your setpoint to 0-4095 to match your feedback.  I am not sure if this explanation is helping or not. Maybe an example would help.  Lets assume the analog input is -4 to 4 units and it ranges from 0-8000.  You would scale your setpoint to work between 0 - 8000.   Lets say your setpoint needs to be -2.5.  You are using an signed integer on your HMI such that -2.5 on the screen = -25 in D500. You would need to run your setpoint through this equation in ladder: scaled_sp = 100*sp +4000.  So, with sp = -25, scaled_sp = 1500 Then use scaled_sp as the setpoint in your PIDAT instruction.  1500 would be used as the setpoint for the PIDAT instruction. The ladder would look like this:   You should also clamp your feedback just in case it dips below 0.  If the analog input comes into channel 2000 for instance, do this:     It is important that both of these be before the PIDAT instruction in the ladder order.
  10. Fins commands through the cpu serial

    You don't need the @00, FA, 5, Checksum or *<CR> if you are just sending a FINS command over Ethernet for example.   Start with the ICF and end with the FINS command, my example would then look like this: 80 00 07 01 3C 00 00 00 00 01 0101 32 0007 00 0004 It looks like you have it correct in your code above for your application.... If you want to use serial, yes, you need to include everything in my response above and the port needs to be configured for Hostlink.  If you are using Hostlink though, just use the @00 RD Hostlink command.  You had asked how to send a FINS command using a serial connection though. And for that, you need the FA hostlink command which encapsulates a FINS message inside a hostlink command.
  11. NB designer "layering" screens

    Ok, here is a suggestion.  A colleague of mine just pointed it out.   On the screen that you want the pop up to happen,  you can add an Indirect Screen.  It will allow you to specify an address in the PLC.  If you put a 10 in this address, Frame 10 will show up in the window that you specify when you add the Indirect Screen object.  Putting a 0 in this register will make the screen disappear.
  12. Fins commands through the cpu serial

    I am assuming that you want to read 4 bits starting at H7.00.  Lets also assume that the node you want to read from is FINS Net 1, Node 60.   This would be your command (Spaces are just there for explanation): @00 FA 5 80 00 07 01 3C 00 00 00 00 01 0101 32 0007 00 0004 0F *<CR> @00 - host link header and node  FA - Host link command for encapsulated FINS message 5 - Response wait time, I just chose 5 = 50 ms 80 - ICF  80 for commands 00 - RSV - not used always 00 07 - GCT - Gateway counter.  Max 7 for newest products 01 - DNA - Destination network address - given as 1 in this example 3C = 60 - DA1 - Destination Node address given as 60 in this example 00 - DA2 00 points at the CPU 00 - SNA - Source network address leave at 00 00 - SA1 -Source node address, leave at 00 00 - SA2 - Source unit number, leave at 00 01 - SID - Number that is typically incremented to keep track of which response is to which command, response will have 01 in this same field.  Arbitrarily chose 01 0101 - FINS memory Area Read command 32 - FINS code for Bit level read in HR area  0007 Start read in word 7 of that area 00 - Start read with bit 00 of word 7 in that area 0004 - read 4 bits 0F - Host link Checksum *<CR> - CR = 0D in HEX - Host link terminator Response (HR7 = 0000 0000 0000 0101 in binary): @00 FA 00 C0 00 02 00 00 00 01 3C 00 01 0101 0000 01000100 46 *<0D> @00 - Host link header and node number FA - Host link response for encapsulated FINS message 00 - always 00 C0 - ICF - C0 for responses. 00 - RSV - not used leave at 00 02 - Gate counter - response set it back to 2 00 - DNA - Destination network number - echo back of source from command. 00 - DA1 - Destination node address  - echo back of source from command. 00- - DA2 - Destination unit address  - echo back of source from command. 01 - SNA - Source network number  - echo back of destination from command. 3C - SA1 - Source node number  - echo back of destination from command. 00 - SA2 - Source node number -  - echo back of destination from command. 01 - SID - Echo back of SID from command 0101 FINS command  0000 FINS Response Code 0000 means success 01000100 is the data in reverse.  The first 01 is H7.00, the next 00 is H7.01, the next 01 is H7.02 and the last 00 is H7.03 46 - Hostlink checksum *<CR> - Hostlink terminator CR = 0D HEX.  
  13. NB designer "layering" screens

    Yes, create pop up screens.  Right click on the screen and choose properties.  The size and position are shown and can be changed and the pop up properties can be chosen in the bottom right corner of this window also.  Use the Function Key, then Switch Screens:  Pop up and point it at the screen.  <-For testing.  You can have other functions like errors call the screen also.
  14. Why does the BCD Indirect not move data for me???

    I understand, I was just making the statement that he @D function gets you access to everything in the D range and the *D does not.  Good luck!
  15. Why does the BCD Indirect not move data for me???

    The indirect addressing you are trying to use means the pointer value is in BCD.  You can only use 0-9 numbers in a BCD number.  So, BCD numbers only range from 0 - 9999.  The number that you have in your pointer (when monitored in Hex (or BCD)) is 4E4C, which is not a valid BCD number.  To clarify, 20044 when monitored in HEX / BCD (button with 16 in toolbar) is 4E4C.  When you use the BCD pointer, it limits the range that you can use from 0 - 9999.  Thus limiting the access to D0 - D9999.  There is really no reason to use it except for when converting an old program.  
  16. Cannot recieve a string RDX

    Try this:
  17. Cannot recieve a string RDX

    Did you cycle power to the controller after changing the End Code to 000D?  
  18. MOTOR REPLACEMENT DETECTED ERROR (95.01) ON 1S SERVO

    This is correct.     You can download the 1S library here: http://www.ia.omron.com/product/tool/sysmac-library/ You just need the email address that the software is registered under and the license number for your software. Then find this library, download and run the exe file:
  19. PUSH and FIFO

    @Rashed Ahmed Fixed the link.
  20. Cannot recieve a string RDX

    Ok, now the message that is being sent to the controller needs to have a CR at the end...  CR was an example.  I don't know what the terminator is on your device.
  21. Copy array element to member of a structure

    You mean like this: I only did 3, but you get the point.   Here is my structure: Here are my variables:
  22. Cannot recieve a string RDX

    1st, check dip switch 5 (assuming this is a CJ2 or something).  I don't know which PLC.  It should be in the OFF position. 2nd, you chose to use Set End code as your end code and then did not set one.  If you want to use CR for example, you need to put 000D in that field and download it to the PLC.  3rd, how did you wire the serial communications?  The port is not a standard pinout.   Also, I would replace the 0.00 contact with the Reception Completed flag for that port.  I don't have time to look up the address now.
  23. Generic EDS file for use with Omron PLC View File Generic EDS file for use with Omron controls and a document on how to use the generic file. Submitter Michael Walsh Submitted 04/01/20 Category Omron
  24. Generic EDS file for use with Omron PLC

    Version 1.0.0

    301 downloads

    Generic EDS file for use with Omron controls and a document on how to use the generic file.
  25. Omron CP1L-M40EDT with CP1W-CIF41 FINS Communication

    00 will work as long as nothing changes.