IO_Rack

MrPLC Member
  • Content count

    1714
  • Joined

  • Last visited

Everything posted by IO_Rack

  1. edit time variable in Recipe NA HMI

    This is correct. For the purposes of reading and writing time to/from the HMI, I create the following custom Functions: REAL_TO_TIME REAL_tmp:=In*REAL#1000000000; LINT_tmp:=REAL_TO_LINT(REAL_tmp); Out:=NanoSecToTime(LINT_tmp);   TIME_TO_REAL LINT_tmp:=TimeToNanoSec(In); REAL_tmp:=LINT_TO_REAL(LINT_tmp); Out:=REAL_tmp/REAL#1000000000;
  2. edit time variable in Recipe NA HMI

    I'm not aware of an elegant method. I don't use the TimeSpan data type in the NA. I create Functions in the controller that will convert REAL to TIME and TIME to REAL (in seconds), then enter my time in [Seconds].[Fraction of a Second].
  3. It is but unfortunately, this is usually the problem. A colleague of mine just fixed an older version of AutoCAD due to the newer touch screen drivers. I had this issue on FactoryTalk View some time ago. It turned out to be the Windows screen 'scaling'. Try setting your display to 1:1 scaling or 100%. This particular fix was called out in the RA knowledge base.
  4. how take a data

    I'm not sure I understand the question. Do you want to move D200 (Gross Weight) to D1010? If so, this is performed with the MOV(021) instruction. MOV D220 D1010
  5. CX Common Components / CPS Upgrade Fail

    First, perform the Omron Automation Software AutoUpdate. If there are on new updates then uninstall CX One completely and reinstall.  CX Programmer is trying open Position Control Unit (Support for EtherCAT) Setting Component. This is integrated software for CX Programmer. There is no separate download for it that I'm aware of. 
  6. String shift register

    00 is Zero Zero. Just write it to the location. Keep in mind that your string may end on an Even or Odd byte. You'll have to determine which then do something like ANDW in Hex. ANDW, #FF00 to write zeros to the lower byte and preserve the higher byte. ANDW, #00FF to write zeros to the higher byte and preserve the lower byte.
  7. String shift register

    One of the points I was trying to make is that you can use any MOV or XFER type instruction to move your string. It doesn't have to be a "$" instruction. The special thing about the "$" instructions is that it will operate on the byte data up to and including the "00" or Null character. Using MOV or XFER, you would have to know how many to move. The important thing is displaying. The HMI will take care of interpreting the data as String so long as it is set to read the data as "String", "ASCII" or "Text" or whatever the setting is. (I'm not that well versed on the NBs).  
  8. String shift register

    It looks like you may have your answer. I don't know because I haven't explored the function block in your link. If you decide to do the CF writing discretely, you can have a look at this example: https://forums.mrplc.com/index.php?/files/file/276-compact-flash-memory-write/ If you are required to do the shifting discretely, think about this. MOV$ will move a string, or bytes starting from your address specification up to (and including) the first null character. So the length is indeterminate until it is executed. For this reason, if you would need to know that maximum possible length of the strings you are using. Then you can shift using the Block Transfer instruction (XFER 070). The XFER will move the data byte for byte and bit for bit, so it will remain unchanged. For example:  If your string length is less than 200 characters (100 Words), then you could do an XFER, N: &100, S: D100, D: D200. Now you would most likely require a table. To do this you would Indirectly Address D100 and D200 where you could control the locations. If you function block doesn't work out, we could provide a simple example for this method.
  9. CX Common Components / CPS Upgrade Fail

    CX One has been updated a few times since the start of this post. You didn't mention what version you are trying to install. Have you tried the Auto Update? Did you try to uninstall CX One then reinstall?
  10. Plants with many PLCs OMRON

    Our plant used to standardize on Omron PLCs. We've since acquired several different brands but still use about 200 or more in our plant. Why do you ask?
  11. Yes, that article explains pretty much what I was told.  I was able to open v20. I had to dig into the C:\Program Files (x86)\Rockwell Software\RSLogix 5000\ENU\v20\Bin directory to do it. I'm assuming the Loader or Launcher was trying to load an older version when I clicked on the RSLogix5000 icon. I'm still unable to upgrade my v19 project. 
  12. Do you have a TechConnect contract? I find it interesting that my TechConnect keeps me automatically upgraded and shows a version number. Where one that is version locked does not.... but then Rockwell is usually counter-intuitive. 
  13. LCD Screen Error Message

    Now that's funny!
  14. CP1E PWM out to CP1E Input?

    Have a look at CP1E CPU Unit Software User’s Manual(W480). There are lengthy sections on High Speed Inputs and Pulse Outputs. - Make sure you have the correct CP1E. Relay outputs will not perform Pulse Output. - Use the P_ER (Instruction Error) contact after your pulse output instructions. I've found this is helpful when determining if I have a data (programming) issue or a wiring issue. - Use very slow pulses at first. You can watch the outputs LEDs turn ON and OFF. This can also be helpful when troubleshooting. 
  15. Ah! you are correct. That completely eluded me as I was focusing on Software versions rather than Firmware versions. Now I just need to get my Software version 20.05 to open...
  16. C200HE Backup

    The PLC Backup Tool is a relatively new function in CX Programmer. As Crossbow as mentioned, the C200HE is an old platform. The PLC Backup Tool did not exist even when C200HE was current.  You can do a complete backup manually.  1) Transfer From PLC from the PLC > Transfer menu.  2) Transfer from the PLC in the IO Table (Project Tree). Include SIOU unit parameters if you have any. 3) Transfer from PLC from the PLC Settings (Project Tree).  4) Double click Memory from the project tree. Double click HR and DM (These are your retentive memory). Perform a Transfer data from PLC. Make sure you have "ALL" selected. Then perform a Save in Project.  There may be options to transfer IO Table and Settings from the PLC > Transfer dialog but I never trust it. It may not be a problem now in CX Programmer but It became a habit for me to at least compare everything individually.
  17. New to CX programmer

    From the project tree, select 'Symbols'. Perform a select all (Ctl + A). Copy and paste into Excel or some other spreadsheet program. Make your changes. Take note to the number of columns for when you copy and paste back to CX Programmer Symbol table. It should be 6 columns. (A-F).  Also, make sure you delete all the symbols in CX Programmer before pasting them back. CX Programmer allows multiple symbols for the same address.
  18. Old Cqm1H CPU51 with NS11

    Assuming you are using a serial connection: - Do you have the correct cable? The cable diagram can be found in the NS Series Programmable Terminals Setup Manual. - CQM1 serial port settings must match NS serial port settings. In CX Programmer, from the project tree, select 'Settings' > 'Serial Port'. - For the NS, in CX Designer.... From the menu, select 'PT' > 'Communication Settings'. You'll need an item under 'Serial PortA'. Set it to 'PLC', 'SYSMAC-PLC". The easiest method is to use 'Host Link'. Default settings (in both NS and CQM1) are 9600, 7, 2, Even. Again, make sure they match.
  19. NT31C System Installer Time Out

    The programming cable for the NT is different than the programming cable for the CJ2. Specifications for the 'Connecting Cable' can be found here: https://forums.mrplc.com/index.php?/files/file/1003-nt-series-support-software-v47-for-windows-manual/  
  20. Cx-p Rung error

    Is the CQM1H in error? I've seen where an upload will not compile from an old PLC. Most likely it was programmed with an older software package. Maybe LSS or CPT. Are you able to post your CX Programmer project here? If not, are you able to host it on a site like DropBox? This website has been troublesome for posting items in the forums lately. Alternatively, open the project in CX Programmer, select the rung with the error, right click "Show Rung As" > "Statement List. Then you can copy the text and paste it here in the forums.
  21. DWord to Data Types

    An image would be nice here but I still can't seem to upload one. You'll need to use a Union found under Data Types. A Union will share the same space between the specified Data Types. Example:  u_DWORD        Union                      data               DWORD                      bit                  ARRAY[0...31] of BOOL   Create your variable:  MyDWORD of Data Type u_DWORD Use in programming:  MyDWORD.data as DWORD                                    MyDWORD.bit[3] as BOOL
  22. I don't see where you are clearing the buffer. Here is an example that I've used to receive bytes on an NX102. I haven't tried the NX102 as a server. // Start sequence when Trigger changes to TRUE. IF ((Trigger=TRUE) AND (DoTCP=FALSE) AND (_EIP2_EtnOnlineSta=TRUE)) THEN  DoTCP :=TRUE;  Stage :=INT#1;  SktTCPConnect_instance(Execute:=FALSE);   // Initialize instance.  SktClearBuf_instance(Execute:=FALSE);   // Initialize instance.  SktGetTCPStatus_instance(Execute:=FALSE);   // Initialize instance.  SktTCPSend_instance(   // Initialize instance.   Execute :=FALSE,    SendDat :=SendSocketDat[0]);   // Dummy  SktTCPRcv_instance(   // Initialize instance.   Execute :=FALSE,   RcvDat :=RcvSocketDat[0]);   // Dummy  SktClose_instance(Execute:=FALSE);   // Initialize instance. END_IF; IF (DoTCP=TRUE) THEN  CASE Stage OF  1 : // Connection request   SktTCPConnect_instance(    Execute :=TRUE,    SrcTcpPort :=UINT#0,  // Local TCP port number Automatically assigned    DstAdr :='192.168.251.57',  // Remote IP address    DstTcpPort :=UINT#6000,   // Destination TCP port number    Socket =>WkSocket);   // Socket   IF (SktTCPConnect_instance.Done=TRUE) THEN    Stage :=INT#2;   // Normal end   ELSIF (SktTCPConnect_instance.Error=TRUE) THEN    Stage :=INT#10;   // Error end END_IF;  2 :   // Receive buffer clear   SktClearBuf_instance(   Execute :=TRUE,   Socket :=WkSocket);   // Socket   IF (SktClearBuf_instance.Done=TRUE) THEN    Stage :=INT#3;   //Normal end   ELSIF (SktClearBuf_instance.Error=TRUE) THEN    Stage :=INT#20;   //Error end   END_IF;     3 :   // Status read request   SktGetTCPStatus_instance(   Execute :=TRUE,   Socket :=WkSocket);   // Socket   IF (SktGetTCPStatus_instance.Done=TRUE) THEN    Stage :=INT#4;   // Normal end   ELSIF (SktGetTCPStatus_instance.Error=TRUE) THEN    Stage :=INT#30;   // Error end   END_IF;     4 :   // Send request   SktTCPSend_instance(   Execute :=TRUE,   Socket :=WkSocket,   // Socket   SendDat :=SendSocketDat[0],   // Send data   Size :=UINT#2000);   // Send data size   IF (SktTCPSend_instance.Done=TRUE) THEN    Stage :=INT#5;   // Normal end   ELSIF (SktTCPSend_instance.Error=TRUE) THEN    Stage :=INT#40;   // Error end   END_IF;     5 :   // Receive request   SktTCPRcv_instance(   Execute :=TRUE,   Socket :=WkSocket,   // Socket   TimeOut :=UINT#0,   // Timeout value   Size :=UINT#2000,   // Receive data size   RcvDat :=RcvSocketDat[0]);   // Receive data   IF (SktTCPRcv_instance.Done=TRUE) THEN    Stage :=INT#6;   // Normal end   ELSIF (SktTCPRcv_instance.Error=TRUE) THEN    Stage :=INT#50;   // Error end   END_IF;     6 :   // Request to close the socket   SktClose_instance(   Execute :=TRUE,   Socket :=WkSocket);   // Socket  IF (SktClose_instance.Done=TRUE) THEN   Stage :=INT#0;   // Normal end  ELSIF (SktClose_instance.Error=TRUE) THEN   Stage :=INT#60;   // Error end  END_IF;    0 :   // Normal end   DoTCP :=FALSE;   Trigger :=FALSE;  ELSE   // Interrupted by error.   DoTCP :=FALSE;   Trigger :=FALSE;  END_CASE; END_IF;
  23. CS1G-CPU44H restore program from SD card

    In my experience, this method did not work very well unless it was completely tested. The files you show will restore the user program. What may be missing is any SIOU setup. I did this once a very long time ago. What I mean is, I created a backup then completely restored the PLC to factory condition by clearing the program, memory areas, I/O Table, SIOU setup and PLC Settings.  My CF backup did not work. To fix it, I had to program the SIOU setup in PLC Ladder.  If any setup is done using dialog boxes in CX Programmer, the appropriate memory areas will be set. When those memory areas are cleared, your setup is gone.
  24. These are always interesting and fun projects to play around with. By today's standards, you can get HMIs, SCADA and/or PC drivers to accomplish what you are trying to do. The costs will vary. You can communicate with Omron PLCs in a few different methods depending upon the PLC hardware. Almost any programming language will work. I've done a few in the old days using BASIC language and Omron's Host Link commands (RS232C). You are using Ethernet so you have found the options are FINS and Ethernet/IP. Ethernet/IP will prove to be very difficult. Unless you are well versed in EtherNet/IP protocol, it will consume your time in understanding it, deciding on the type of EIP method use, then establishing communications with the PLC.  FINS will be your best bet if you wish to pursue your quest. There are several examples using DotNet and ActiveX in the downloads section here at MrPLC. https://forums.mrplc.com/index.php?/files/category/48-utilities/ It should be easy enough to see exactly what the programming is sending the PLC. You'll just need to change your code to Python. Along with the examples, you'll also want to use the FINS Command Reference Manual W227 to better understand what these programs are doing.
  25. De-Normalize the binary Data

    As Michael has suggested, a Union would be the easiest method to view it in different Data Types. Where is the data coming from? Maybe we can help you simplify the process. If it is part of a group of data (EtherNet/IP for example) then a Structure may be helpful.