MrPLC Member
  • Content count

  • Joined

  • Last visited

Everything posted by innoaloe

  1. Variable size array

    On it's very core, NJ is still a PLC, so unfortunately such dynamic memory management function is not implemented. IMO if you just have 3 Cam tables, it is way easier to create 3 MC_CamIn instructions and one MC_CamOut. Ensuring the Cam transition is easier by having multiple FBs. In the end if you want to only have one FB, you need to make each Cam Table to be in the same master-slave scale, so the array size of those 3 will be the same.
  2. It's not possible AFAIK. Library is the only way to go. The current version also supports GIT already, but it's not a cheap solution :D
  3. NX_SerialSend

    Yes, but the same requirement about minimum CPU firmware version applies.
  4. CX-Simulator

    This might be old... but I'm trying to do as what @Nibroc said. However when I'm pressing the "Connect" button to activate EtnUnit for example, the Network Address text stays at 0 and it is grayed out. So no chance to change it. This in turn (I think) makes me unable to find the said Simulator through FinsGateway, since FinsGateway can only find devices with Network Number from 1 and above. Anyone have an idea about this?
  5. NX_SerialSend

    Before you update anything, try checking the firmware version of your NJ / NX CPU. Some function blocks only work for firmware version 1.10 or above, so even though you have Sysmac 1.15, it won't be shown since the CPU firmware version does not support it. You can try upgrading the firmware of the CPU, although "legally", only Omron engineer can do that for you... EDIT : As mentioned before, you need CPU Firmware v1.11 or higher to use this instruction. This image taken from the Software User Manual
  6. Batteries will still be needed if you want the PLC clock to keep on synchronized though... otherwise when main power is powered off, the clock data in the A Register can go awry... @Abdul Wajid Yep, leaving by this year from the main company but still got to play with Omron here and there. Who knows though, maybe back in there in a few years. Hhh...
  7. @Abdul Wajid Hi again! Got the business moving now? You've got the answer from the boss up above. If I may add though, you can also use MOVD instruction to take hour digits from A352, put it in MSBs of D1000 for example, then use another MOVD to take minute digits from A351, put it in LSB of D1000. So D1000 will contain "HHMM" values which later you can compare with another Word.
  8. All Array index accessor in the NA usese parentheses since it's based on Visual Basic script. I really hope they used C# for a better script consistency with PLCs ST Language, but I guess VB is easier for most users :(
  9. eMB-60R Not Detected

    If so, the problem might lie with the Subnet Mask. Sometimes I find an eMB-60 using subnet mask of eventhough the IP started with Try changing your PC subnet mask to instead. Cannot guarantee anything though...
  10. eMB-60R Not Detected

    Well, ping command is just sending ICMP packets so no TCP Connection is generated. That's why it will always work as long as the IP is there. Have you tried using another computer to test the connection?   Try the IP Setup in ACE. There's should be a Magnifying Glass icon near the Connect To Controller option which will shows all connected controllers as long as the cable is connected. From there you can modify the controller IP and Subnet Mask too.
  11. eMB-60R Not Detected

    Since you're having Sysmac I believe you're familiar with a tool called DirectEthernetUtility which comes with Sysmac installation. If not you can find the said program in C:\Program Files (x86)\OMRON\Communications Middleware\DirectEthernetUtility.exe This is a very handy tool from Omron which lets you connect to any Omron PLC through Ethernet without knowing it's IP Address (if connected directly with cable). However it causes a royal pain if you're trying to connect to other ethernet devices through your LAN Card (such as Adept robots) because this application generates a secondary Local IP Address starting with All other applications using Ethernet might be affected as well. Two suggestion from me: 1. Keep the DirectEthernetUtility as it is right now, and change Adept Robot IP Address to match the current IP and Subnet Mask using C:\Program Files (x86)\OMRON\Sysmac Studio\AdeptRobotIPAddressSettingTool, or better you can change it from ACE (yes, you can change it even without having a correct IP Subnet in your PC). 2. Open the DirectEthernetUtility, disable it, then set your PC LAN IP and Subnet to match Adept's current
  12. Read EF82 Analog Sensor - CP1E-N30DR-A with CP1W-MAD44

    1. You're using "F" on channel 1. It should be "E" for 1-5 V input. 2. Remove the MOV D104 to 102. It clears your settings in 102. 3. Make sure you wire the signal to VIN1 and COM1 terminal  
  13. Program for CJ1G controlling servo motor

    I'm not sure about the terminal block you're using though. It is never listed for R7D-AP model AFAIK. Seeing the example that you've followed, you're doing an Absolute Movement. Did you execute a Homing operation before that? Because you can only do Absolute Movement if servo's home / zero position is defined. There is another separate section in the manual containing example about Homing. I'd suggest you to try the Relative Movement first (Change the 2000.03 bit to the Relative Movement one). You don't need Homing for Relative movement, just be careful since the calculation is different (Absolute = target position, Relative = increment position). If the servo managed to move using Relative movement, then you can be sure that wiring is correct. So you can continue to check about the Homing operation before trying Absolute Movement.
  14. CX-Drive has definition for that servo (It's and old model also). That model was supposedly only to be sold in China region, so you need to adjust your CX-Drive to look on China region database. Go to menu Tools-->Option-->Drive Regional Defaults : Change to China, and you should be good to go.
  15. ST Language

    No... but you can emulate it using internal memory. CMIIW IF Input = TRUE THEN      IF EdgeDetect = FALSE THEN           'Do "Something", anything you want do be done with the program           EdgeDetect := TRUE;     'This will ensure the "Something" will be called only once      END_IF; ELSE      EdgeDetect := FALSE;     'This will resets the edge detection END_IF;
  16. SCU42 - Communication Cable Type

    I typically use a pair of AWG18 cable especially for long distance communication (more than 150 meters). For short distance, a STP cable will suffice. It came already in a twisted-pair, so signal crosstalk issue already reduced.
  17. OPC & PLC Integration

    No... And in most cases it's very hard to interface old PLC to OPC UA. You will need to implement some hardware-in-the-middle to do it, which is sometimes another PLC also. Depending on the machine, sometimes it is easier and more cost effective by replacing the existing PLC with a newer generation which is connectable with OPC UA.
  18. C200HW-MC402-E help

    Unit number duplication means you have another card (which maybe different than MC402) that uses same Unit Number as your MC402. In this case check whether other card is set to Unit No 0 as well. Sometimes a card may take 2 unit no. space. I don't remember how much MC402 takes, but maybe it uses 2, so you cannot have other cards set to Unit No 0 and 1. Check your IO Table in CX-Programmer first to confirm the unit addressing. If everything okay then you can move on to Motion Perfect
  19. UART (TTL)

    The problem is RS485 signals are typically containing some sort of ID which will tell the slave device who is the target of the current communication. IIRC your MX-106T does not have any settable identifier, so you cannot use conversion from RS-485 protocol to UART. If you want to save number of RS232 port, then you should go with PanicMode's suggestion. Have the PLC talk to the Microcontroller via RS232-to-UART interface, then emulate some digital I/O pins for each motors TX/RX UART signals. Timing should not be critical if you send the data cyclically for every motors. This of course will take more work rather than buying two units of SCU21-V1 to get 4 RS232 ports.
  20. Need Help for Cx-Supervisor Push Button Action

    Use both MouseDown and MouseUp action. On MouseDown, set the Point value to True. On MouseUp, set the Point value to False.
  21. UART (TTL)

    The MAX485 mentioned in the manual is for MX-106R series which indeed supports RS485 (has 4 pin connectors). In your case with MX-106T, the Motor side uses UART, so the easiest way to get it converted on the PLC side is by using MAX232 chip instead. It will convert the UART protocol into RS232. There are plenty of circuit example available online for that chip. Regarding the single pin for both TX and RX on the motor, you can solve the issue pretty easiliy by using a Schottky Diode. Get one with a low forward-bias voltage (0.3 V or less), and use it in a configuration like in the picture below. The diode will ensure that signal goes one way from the MAX232 TX Output into the motors DATA input. When a DATA is sent from the motor, it will only enter the RX Input of the MAX232 since the diode is blocking the TX side.
  22. Half Screen when app is opened.

    Use the GMAN trick. It helps
  23. Socket UDP Send not working

    Good to know that it solved the issue :)
  24. Socket UDP Send not working

    I think I'm starting to get what's happening... but you need to try it. Delete all of the Initial Values set for your Socket variable. In the SktUDPCreate documentation it describes that both SrcAdr and DstAdr sections will be filled with zero once the socket is created. As UDP is an unconnected communication, you don't need to specify any source IP Address. If the UDPCreate is successful, fill the DstAdr with your target device IPAddress and PortNumber, then try the UDPSend command. The Handle value is basically just a pointer. If you Create a socket one time in the entire program, it will be filled with 1. If you create another socket, it will have 2 as the handle value. If say socket 1 is closed properly, next time you open a socket it will get 1 as the handle value. So it's predetermined by the CPU.
  25. Store Recipes on my NJ SD Card

    To save / import in / from SDCard, just use "\SDCard\RecipeName.csv" as the FileName To save / import in / from in USB,  just use "\USB\RecipeName.csv" as the FileName