MrPLC Member
  • Content count

  • Joined

  • Last visited

Community Reputation

11 Good


About innoaloe

  • Rank
    Omron Engineer
  • Birthday 03/24/91

Contact Methods

  • Website URL,,
  • Skype

Profile Information

  • Gender Male
  • Location Jakarta
  • Country Indonesia
  • Interests Drawings, Piano, Japanese Music

Recent Profile Visitors

1364 profile views
  1. Auto Assign Addresses To Symbols?

    Let's say you make a Variable with BOOL Type, it means it will automatically occupy one bit. Let's say you start by W0, it will occupy W0.00. 'Say next variable is also a BOOL, it will occupy W0.01 Now let's say the 3rd variable you make is a WORD, it will occupy the entire W1 and ignore the rest of W0.02 - W0.15. 4th variable, let's say it's LREAL, it will occupy 4 Words of W2 ~ W5. By any chance in ladder on some parts you're using direct address instead of symbols, you need to check whether that address is occupied by the symbol or not. A good practice for auto-allocation usually is to separate your bit allocation and WORD / longer data allocation. If you notice, auto-allocation lets you allocate certain memory only for certain type of variable. So in practice let's say you can allocate W area memory to BOOLs, and then allocate D words for all numbers and strings. Also keep in mind the PLC will still use the auto-allocated memory for Special IO Units / Functions (let's say like CJ1W-AD081 Unit0 will always occupy D20000) so make sure your auto-allocation doesn't overlap with those.
  2. Auto Assign Addresses To Symbols?

    Yes, it is possible, although I didn't check what PLC model able to do so. At minimum CP1 / CJ Series able to do it.   You go to the menu PLC --> Memory Allocation --> Automatic Allocation, there you add the Starting Memory Address and maximum length of auto-allocation. Afterwards, whenever you create a Symbol, you will see the Auto-Allocated memory assigned to it. You need to consider the word length of each variable too, because Auto Allocation variable will depend on the symbol type you use.
  3. Fatal Error?

    Good to hear that. CJ1M is pretty old... consider using CJ2M if you're going to do real projects later on.
  4. So just for anyone might interested, this past one year Omron had completely acquire Adept Robotics (California based robot manufacturer). The products acquired including all Delta Arms and SCARA (Quattro, Hornet, Cobra), also some Articulated / 6-axes robots (Viper), programmed with the ACE software. Other than that Adept also have Lynx AIV whose name is now changed to LD-Series. Aside from having an already established Robot Controller with by acquiring Adept, Omron also developing it's NJ CPU to control mechanical arms that can be user-built, with condition that it uses EtherCAT based Servo Control. The current version of NJ501-4XXX series PLC supports control over Delta Arms (3-axes + Rotation, 3-axes, 2-axes + Rotation, 2-axes), SCARA, and your usual Gantry XYZ+Rotation robot.   If anyone interest to discuss something about those do post here, or maybe create your own thread.
  5. Fatal Error?

    This error can mean either : 1. You don't put the End Cover properly, or the End Cover is damaged (there is a PCB there) 2. The IO-Table of the PLC was set on the previous machine (for additional slots like IO, communication unit, anything), but you removed it from the PLC and not yet doing resetting of the IO-Table I assume you pull off other things connected to the PLC. Related to your "Clearing Memory" post I saw here too, you can open the menu PLC --> Clear all Memory Areas to delete all settings previously done. Regarding IO Table, you also need to open the IO Table and Unit Setup on the left of CX-Programmer, then go to menu Options --> Delete to clear the previous settings. All this need to be done when you're Online to the PLC and the PLC is in Stop/Program Mode After that you just need to Transfer again all settings done, including the new IO-Table settings.
  6. Sysmac delta robot palletizing

    By that question I assumed all others are completed (Kinematics, Axes Group, etc.) Now onto the palletizing, algorithms went like this : You use MC_SyncLinearConveyor to grab the item on the conveyor. It's a very good FB that already implements Trapezoidal movement, and follows Conveyor movement. After you confirm that the robot already grabbed the item (via sensor or timing or whatever), you execute MC_SyncOut to move the robot up in Z-Axis. This will also remove the synchronization to conveyor movement. Afterwards you can use MC_MoveTimeAbsolute to move the robot on it's palletizing position. This typically need two movement, one is to move the robot on the top of place position, and the next one is to move the robot down on Z-axis. Move the robot back up with the same FB, then repeat from 1.   Another approach that I use often is to use MC_SyncLinearConveyor eventhough the place location is static. The reason is because it implements Trapezoidal movement automatically, compared to MC_MoveTimeAbsolute which requires you to execute two different FB in succession and using a Buffering Mode. I usually created a Virtual Encoder Axis whose position stays at 0, to help place part of the MC_SyncLinearConveyor.
  7. Alternative to SET/RSET

    For some reason though, Japanese programmers tend to love JMP/JME  :D, whose programs I hate to troubleshoot.
  8. NC contact

    The double line on the left indicates that a DIFU instruction is controlling that certain Symbol. You should be able to Search for DIFU instruction where the R1_PUMP_STOP is inside it.
  9. CX-Programmer Unable to Open File

    What version is your CX-Programmer? I think instead of downgrading, you need to upgrade, since CX-Programmer is always backwards compatible.
  10. How to reset

    You can also use MOV instruction to reset the timer. E.g. for your T0 with #30 preset, you can execute [MOV #30 T0] instruction when needed to reset the value. Then again, Mendon's suggestion is far better. Use the RTC
  11. Sysmac Studio Improvement Request

    The answer is No, as far as I know... If you're redefining things inside a program then it's quite an issue, but in the variable table actually you can define an array not from index 0. Usually by default it will shown as e.g. ARRAY OF BOOL [0..9] for a BOOL array with size of 10. However you actually can change the Start and End Index as you want it, such as ARRAY OF BOOL[10..20] will also create BOOL array with size of 10, starting index from 10  
  12. 3D simulation of delta robot

    You can make it without a Hardware (simulated axes), but don't think of it like a real Robot Programming software. Basically you create the Motion instructions to move the Robots and conveyors, then you Trace the positions of the axes using the DataTrace function. At the DataTrace function there are built-in libraries for some 3D Model definitions, including Delta Robot and Conveyor Belt. You playback the Traced Data and see the model move according to that data.
  13. Encoder Program for CW & CCW rotation

    Your Encoder output is Differential Phase, so in good way you can use it for Up/Down or Pulse + Direction method. Let me clarify :   Up/Down mode typically used for counters. You had one switch wired to Up Input and another one to the Down Input. You press Up switch, it counts Up by 1. You press Down switch, it counts Down by 1. Encoder has differential phase which means halfway when A is on, B starts to went On. Halfway when B is on, A starts to went Off. This means you will never have a proper Up/Down counting, only full of noise. Pulse + Direction mode : So one input is to receive Pulse (should be the 0.00 one) which you can wire either Phase A or B from the encoder as the counting input. The Direction input (0.01) is just a simple On/Off from a switch. When Direction input is off, the received pulse will be read as counting up. When Direction input is on, the received pulse will be read as counting down. You're not wiring both Encoder phase at the same time. That's why this method also typically won't be used for Phase A+B output Encoder.
  14. NB HMI update rate

    Glad it's working okay. That might be the case if your tag file was an Array Variable. If you only display one index, the whole tag sets will still need to be read as a whole.
  15. NB HMI update rate

    NB is using FINS communication which cannot handle Read Bit and Read Word at the same time. If you're having multiple Bit object on the screen, it can be seen updating fast since on a same communication time multiple addresses are taken at the same time. However after that it needs to request the Float data separately. The general rule mentioned in the manual is to limit number of variables you have on a single screen to avoid such display lags. Having lags up to 2 minutes like you said means either too many addresses to be read on a same screen (Word / Float addresses), or maybe your PLC program did delay the update of the said address. I had same issue with Rotary Encoder display update in NB, but unfortunately it is not solvable so far. It's the limitation on the hardware and software engine of the HMI itself. However it's not as bad as 120 seconds. Usually only around 300 ms max.