-

Steps to convert a MotionWorksIEC project to iCube Engineer

General Observations and Limitations

  1. Automatic conversion process applies only to code
    1. POUs
    2. Global Variables
    3. Cyclic Tasks
      1. System tasks (Cold start, warm start) cannot be automatically converted to iCE Event tasks.
  2. Hardware configuration cannot be automatically converted. Servo and IO requirements should be reevaluated. Manually convert.
    1. Sigma-5 or Sigma-7 MLINK to Sigma-7 eCAT or Sigma-X
    2. LIO cards/slots to Slicebus
    3. E/IP SLIO or MLINK SLIO to eCAT SLIO
    4. Modbus HMI to OPC-UA
    5. External Encoder to Sigma-7 with Feedback Option Card
  3. Libraries should be converted separately
    1. Yaskawa Toolbox Libraries have already been converted by Yaskawa and have been updated.
      1. Datatypes have Yt_ prefix
      2. Datatype worksheets and function blocks have Y_AB_ prefix (where AB is a two-letter abbreviation for the toolbox in which the element is defined)
    2. Custom user libraries should be converted individually
    3. Legacy toolboxes – consider update to standard toolbox or convert individually
  4. Hardware specific function blocks not supported
    1. Y_ResetMechatrolink (No equivalent)
    2. Y_Read Axis Parameters (Use Y_AX_ReadAxisParameters)
  5. Hardware specific variables not supported
    1. Controller (CONTROLLER_INFO system variable planned for 2024.0)
    2. PLCMODE_RUN (Not supported)


Step 1: Convert and Configure Hardware in iCube Engineer

  1. New blank project
    1. Recommended not to use a template project as the autogenerated data may interfere with imported data, resulting in more work.
  2. Servos
    1. Convert parameters using SigmaWin
    2. Connect to old servopack
    3. Export *.usrs file
    4. Connect to new eCAT servopack
    5. Compare to file, consider each Pn
    6. Set PnB9C.0=1. Electronic Gear Ratio Pn20E and Pn210 are forced to 16:1 at reboot and this makes the user units wrong by factor of 16 too far and fast.
    7. Test run in SigmaWin+
    8. Re-tuning likely to be required, especially if change in motor or change in drive product generation Sigma-5 to Sigma-7/X or Sigma-7 to Sigma-X
    9. Configure feed constant, gear ratio, etc
    10. Test run in iCube Engineer (feature under development - write simple test code.
  3. Virtual Axes
    1. Manually add to PLANT from COMPONENTS
  4. Simulated Axes
    1. Supported in 2024.0.
    2. Simulated axes are more of a testing and troubleshooting tool. If there is a permanently simulated axis, consider deletion or conversion to virtual.
  5. External Encoder
    1. The current exclusive external encoder solutions are FBOC on SGD7S (OFA01A : How to add an external encoder to a servo option card (SGDV-OFA01A) ) and the 050-1BA00 counter module (on an EtherCAT bus coupler or on the local slicebus How to add an external encoder axis with a 050-1BA00 counter module  ).
  6. Local IO
    1. Convert to SliceBus
    2. The iC9200 does not supply power to SliceBus - the power module is required
  7. Networked IO (Modbus/TCP, Ethernet/IP, MLINK)
    1. Consider converting all networked IO to EtherCAT
    2. Existing Modbus/TCP IO can be programmed using function blocks
    3. Ethernet/IP IO is supported
    4. MECHATROLINK-III should be converted to EtherCAT to maintain determinism
  8. HMI 
    1. OPC-UA with Yaskawa HMI Designer (Exor Jmobile) is the preferred protcol for HMI. 
    2. HMI Editor (Movicon) does have limited capability with OPC-UA
    3. E/IP Protocol is supported
    4. MODBUS/TCP is supported with function blocks at 2024 release. Direct configuration support scheduled for future release.
  9. Upper level controller (eg. Siemens or Rockwell PLC)
    1. EtherCAT, OPC-UA, Ethernet/IP, Modbus/TCP protocols are supported
  10. IO Variables
    1. IO variables will be imported from the exported MWiec project as global variables.
    2. iCube Engineer automatically creates new global IO variables when a module is added to the configuration. 
    3. Depending on the project, consider one of the following strategies
      1. Write code to exchange data between the new IO variables and the original imported IO variables
      2. Delete the new IO variables and manually assign each process data item (similar to %IO address) of the new hardware to the original imported IO variables
        1. Or use INport and OUTport in local variable list
      3. Replace the imported IO variables in the code with the new IO variables
  11. IO Task Assignment
    1. One task is assigned to each IO module in MWiec
    2. One task is assigned to the entire network protocol in iCE (Slicebus, EtherCAT, Ethernet/IP)
    3. When IO task timing is critical, move the auto-generated IO variable from the global variable list (PLC data list) to the program where the IO is used and set usage to IN Port or OUT Port.
  12. Tasks
    1. Cyclic tasks can be imported from MWiec
    2. Project template contains auto-generated tasks so it is best not to use a template
  13. Groups (Multi-Axis Mechanisms)
    1. Manually rebuild multi-axis groups

Step 2: Export IEC Code from MotionWorks IEC

  1. Export as PLCOpen XML V101 ext(*.xml)
    1. Select the project folder
    2. All project data will be exported
  2. File> Export
  3. Export PLCopen xml file
  4. Save as type: PLCOpen XML V101 ext(*.xml)
  5. Enter File name and save
  6. Export any custom user libraries directly from the library project source code and follow the same steps as above.

Step 3: Compile Code in iCube Engineer (2024.3)

  1. Confirm/adjust compiler settings
    1. Extras> Options> Compiler> IEC Compiler Settings
    2. Check “Allow write on variables with usage ‘Input’
  2. Add required libraries
    1. Add all equivalent iCube Toolbox libraries used in original MWiec project
    2. Or blindly add all the toolboxes by adding user libraries in the COMPONENT section.
  3. Import
    1. File> Import> Import from PLCOpen XML
    2. Uncheck “Use Network Oriented Graphical Worksheets”.
    3. Uncheck “Libraries”
      1. Convert libraries separately
  4. Verify the Import Result
    1. COMPONENTS> Programming> Local
      1. Remember that worksheets are listed at the top of the open POU
    2. Tasks in PLANT>Project> … PLCnext
  5. Manually Build System Tasks as Event Tasks in PLANT>Project> … PLCnext
    1. Cold Start
    2. Warm Start
    3. Others?
  6. “The Specified IEC type … is inaccessible” or “Invalid Variable Name” errors
    1. A list of all data types and Function blocks that are named differently in iCE is provided.
  7. “Invalid Statement” or “ ‘*)’ expected” errors
    1. Comment Syntax
      1. Compiler does not allow (* asdf (*asdf*) or comments that span multiple lines.
  8. “Not a Valid Function Block” or “The specified function block type… does not match” Errors
    1. REFACTOR may be able to be used to correct these errors.
    2. Enter search filter “valid function” to list only these errors.
    3. Unsupported Function Blocks
      1. Remove these blocks or reprogram using alternates listed
        1. Y_ResetMechatrolink
    4. Function Blocks with updated name
      1. See document table of updated names
      2. Use Refactor to update
      3. Alternate to Refactor
        1. Open alarm message to find worksheet location
        2. Filter Components to find updated block
        3. Drag and drop to update. Will remain red because datatype definition does not update
    5. Function Blocks with updated datatypes
      1. If the block uses a custom datatype that does not match the attached variable, then updating it will disconnect the variable. If it is Var_IN_OUT it will not compile.
      2. Change the affected variable datatype to match
  9. “Invalid Data Type” errors
    1. Use search filter “invalid” to list only these errors.
    2. These errors exist due to updated naming conventions of blocks or variable datatypes
    3. Open each error and update the Type in the variable list
      1. Often you can just press ENTER since the names are similar
    4. Unsupported
      1. Y_RebootController
      2. Y_ResetMechatrolink
      3. Y_RebootController
  10. “The Variable … Does Not Exist” errors
    1. Direct references to deleted function blocks result in this error.
    2. Reprogram or delete from code
  11. “The function block … does not have …” errors
    1. Known issue for MC_ReadActualVelocity. Either we got it wrong in MWiec, wrong in iCube, or there’s been a change to the PLCopen spec
    2. Update the block by drag and drop
  12. “ Invalid initial value …” errors
    1. Multi-element variable initial values are not imported properly. Elements with null initial value are assigned ‘0’ without regard to the datatype of the element. These ‘0’ do not exist in the exported XML file.
    2. In PLC data list, right click offending variable for Show Init Value Configuration. Edit the text to delete elements.
    3. Alternatively, initialize the variables in a code worksheet.

Step 4: Test and Debug Code on Hardware

  1. Set logical axis numbers for AXIS_REF
    1. Error 4625 is an indicator of this problem
  2. PLCMODE_RUN
    1. Add rung to set TRUE and use as a global variable.
  3. Servo Status (HBB, PON etc)
    1. Use the auto-generated AXIS Variables (Axis.status.HBB). 
    2. If timing is critical, create local BOOL variables with Usage = 'IN Port' and connect to the axis process data individually using the GDS Port List.

Thoughtfully consider each element in MWiec Hardware Configuration, IO usage in the code, and task assignment. Convert to products compatible with iCube platform. Manually configure the new hardware in iCube Engineer

 


This help information is valid for iCube Engineer Online Help 2025.6

Copyright © 2025 YASKAWA EUROPE GmbH and © 2025 YASKAWA America, Inc.