using System.Runtime.InteropServices; using System.Text; static class NMCDEF { public const uint MAX_EEPROM_SIZE = 0xFFFF; //16bit max (64k) public const uint ECAT_MAX_NAME = 0xFF; //255 public const uint MAX_BOARD_CNT = 4; public const uint MAX_AXIS_CNT = 64; public const uint MAX_AXIS_ID = 65535; //Ver_0c010012_6 public const uint MAX_NODE_CNT = 256; public const uint MAX_PHYSICAL_ADDR = 65535; //Ver_0c010012_3 public const uint MAX_MASTER_ID = 10; public const uint MAX_ERR_LEN = 128; public const uint MAX_PROFILE_ITEM_COUNT = 6; public const uint MAX_AXES_IN_GROUP = 8; //3->8 //v12.1.0.45 public const uint MAX_AXES_GROUP_CNT = 32; public const uint MAX_AXES_STATUS_SIZE = 8; public const uint MAX_ALL_STATUS_SIZE = 1536; //Ver_0c010019_1 : 계산식 = (MAX_AXIS_CNT + MAX_AXES_GROUP_CNT) public const uint MAX_LOGICAL_AXIS_COUNT = 64; //v12.1.0.41 public const uint MAX_LOGICAL_DEVICE_COUNT = 1024; //v12.1.0.41 public const ushort INVALID_BOARD = 0xFFFF; public const ushort INVALID_AXIS = 0xFFFF; public const ushort INVALID_MASTERID = 0xFFFF; public const uint INVALID_FLASH = 0xFFFFFFFF; // Axis Parameter Definition public const uint COMMANDED_POSITION = 1; public const uint SW_LIMIT_POS = 2; public const uint SW_LIMIT_NEG = 3; public const uint ENABLE_LIMIT_POS = 4; public const uint ENABLE_LIMIT_NEG = 5; public const uint ENABLE_POS_LAG_MONITORING = 6; public const uint MAX_POSITION_LAG = 7; public const uint MAX_VELOCITY_SYSTEM = 8; public const uint MAX_VELOCITY_APPL = 9; public const uint ACTUAL_VELOCITY = 10; public const uint COMMANDED_VELOCITY = 11; public const uint MAX_ACCELERATION_SYSTEM = 12; public const uint MAX_ACCELERATION_APPL = 13; public const uint MAX_DECELERATION_SYSTEM = 14; public const uint MAX_DECELERATION_APPL = 15; public const uint MAX_JERK = 16; public const uint ACTUAL_POSITION = 1001; public const uint PROFILE_DACCEL = 1100; // public const uint IOMAP_HEADER_SIZE = 16; public const uint IOMAP_HEADER_SIZE = 28;//DSP 0.13 이상에서 변경됨 , 2014.08.26 (32 - 4) public const uint IOPAGE_SIZE = 4096; } namespace MMCE_Test { /// /// Library Class /// /// public partial class NMCSDKLib { // DLL name should be specified what you have. public const string NMC_DLL_NAME = "NMC_Motion.dll"; // axis_source status public enum MC_STATUS : uint { MC_OK = 0x00000000, //Device Driver Error Defines MC_ERROR_HW_NOT_INSTALLED = 0x000000DC, MC_ERROR_DD_SEND_ERROR = 0x000000DD, MC_ERROR_DD_READ_ERROR = 0x000000DE, MC_DD_ERROR_SEND = 0x000000DF, MC_DD_ERROR_RECV = 0x000000E0, MC_DD_OPEN_FAIL = 0x000000E6, MC_DD_NOT_OPENED = 0x000000E7, MC_DD_CONN_FAIL = 0x000000E8, MC_DD_CLIENT_START_FAIL = 0x000000E9, MC_DD_OK = 0x00000000, MC_CN_NOT_CONNECTED = 0x000000F0, MC_CN_CONNECTED = 0x000000F1, MC_CN_CONNERROR = 0x000000F2, //PLCOpen Motion Command Response Error Defines (F/W) MC_INVALID_SYSTEM_STATE = 0x00010000, MC_UNSUPPORT_CMD = 0x00020000, MC_INVALID_AXIS_STATE_NOT_HOMING_MODE = 0x00020047, //v12.1.0.42 Add MC_INVALID_PARAM = 0x00030000, MC_INVALID_PARAM_1 = 0x00030001, MC_INVALID_PARAM_2 = 0x00030002, MC_INVALID_PARAM_3 = 0x00030003, MC_INVALID_PARAM_4 = 0x00030004, MC_INVALID_PARAM_5 = 0x00030005, MC_INVALID_PARAM_6 = 0x00030006, MC_INVALID_PARAM_7 = 0x00030007, MC_INVALID_PARAM_8 = 0x00030008, MC_INVALID_PARAM_9 = 0x00030009, MC_INVALID_PARAM_10 = 0x0003000A, MC_INVALID_SIZE = 0x00040000, MC_INVALID_AXIS_NUM = 0x00050000, MC_NOT_ENOUGH_RESOURCE = 0x00060000, MC_LIMIT_ERROR_PARAM = 0x00070000, MC_LIMIT_ERROR_PARAM_1 = 0x00070001, MC_LIMIT_ERROR_PARAM_2 = 0x00070002, MC_LIMIT_ERROR_PARAM_3 = 0x00070003, MC_LIMIT_ERROR_PARAM_4 = 0x00070004, MC_LIMIT_ERROR_PARAM_5 = 0x00070005, MC_LIMIT_ERROR_PARAM_6 = 0x00070006, MC_LIMIT_ERROR_PARAM_7 = 0x00070007, MC_LIMIT_ERROR_PARAM_8 = 0x00070008, MC_LIMIT_ERROR_PARAM_9 = 0x00070009, MC_LIMIT_ERROR_PARAM_10 = 0x0007000A, MC_INVALID_DEVICE_STATE = 0x00080000, MC_INVALID_DEVICE_STATE_ERROR = 0x00080001, MC_INVALID_AXIS_STATE_DISABLED = 0x00090000, MC_INVALID_AXIS_STATE_STANDSTILL = 0x00090001, //v12.1.0.42 Add MC_INVALID_AXIS_STATE_DISCRETE_MOTION = 0x00090002, //v12.1.0.42 Add MC_INVALID_AXIS_STATE_CONTINUOUS_MOTION = 0x00090003, //v12.1.0.42 Add MC_INVALID_AXIS_STATE_SYNC_MOTION = 0x00090004, MC_INVALID_AXIS_STATE_HOMING = 0x00090005, //v12.1.0.42 Add MC_INVALID_AXIS_STATE_STOPPING = 0x00090006, MC_INVALID_AXIS_STATE_ERRORSTOP = 0x00090007, MC_INVALID_AXIS_STATE_MODE_CHANGE = 0x00090008, //v12.1.0.42 Add MC_INVALID_AXIS_CONFIG = 0x000A0000, MC_INVALID_AXIS_CONFIG_POS_LIMIT_SWITCH = 0x000A0006, //v12.1.0.42 Add MC_INVALID_AXIS_CONFIG_NEG_LIMIT_SWITCH = 0x000A0009, //v12.1.0.42 Add MC_INVALID_AXIS_CONFIG_HOME_SWITCH = 0x000A000B, //v12.1.0.42 Modify MC_INVALID_AXIS_CONFIG_Z_PHASE_INPUT = 0x000A000D, //v12.1.0.42 Add MC_INVALID_AXIS_CONFIG_HOME_SENSOR = 0x000A0010, MC_INVALID_AXIS_CONFIG_MARK_PULSE = 0x000A0012, MC_INVALID_AXIS_CONFIG_HOME_TYPE = 0x000A0032, //v12.1.0.42 Add MC_INVALID_AXIS_CONFIG_HOME_FLAG_HANDLE = 0x000A003A, //v12.1.0.42 Add MC_INVALID_AXIS_CONFIG_HOMING_MODE = 0x000A0064, MC_GEARING_RULE_VIOLATION = 0x000B0000, MC_LIMIT_POSITION_OVER = 0x000C0000, MC_POS_HW_LIMIT_POSITION_OVER = 0x000C0001, //v12.1.0.42 Add MC_NEG_HW_LIMIT_POSITION_OVER = 0x000C0002, //v12.1.0.42 Add MC_POS_SW_LIMIT_POSITION_OVER = 0x000C0004, //v12.1.0.42 Add MC_NEG_SW_LIMIT_POSITION_OVER = 0x000C0008, //v12.1.0.42 Add MC_INVALID_AXES_GROUP_NUM = 0x000D0000, MC_AXIS_ALREADY_ASSIGNED = 0x000E0002, //v12.1.0.42 Add MC_IDENT_ALREADY_ASSIGNED = 0x000E0004, //v12.1.0.42 Add MC_AXES_GROUP_INVALID_STATE = 0x000F0000, MC_GROUP_INVALID_STATE_MOVING = 0x000F0002, //v12.1.0.42 Add MC_GROUP_INVALID_STATE_HOMING = 0x000F0003, //v12.1.0.42 Add MC_GROUP_INVALID_STATE_STOPPING = 0x000F0004, //v12.1.0.42 Add MC_GROUP_INVALID_STATE_ERRORSTOP = 0x000F0005, //v12.1.0.42 Add MC_AXIS_IN_SINGLE_MOTION_STATE = 0x00100000, MC_1ST_AXIS_IN_MOTION_STATE = 0x00100001, //v12.1.0.42 Add MC_2ND_AXIS_IN_MOTION_STATE = 0x00100002, //v12.1.0.42 Add MC_3RD_AXIS_IN_MOTION_STATE = 0x00100003, //v12.1.0.42 Add MC_4TH_AXIS_IN_MOTION_STATE = 0x00100004, //v12.1.0.42 Add MC_5TH_AXIS_IN_MOTION_STATE = 0x00100005, //v12.1.0.42 Add MC_6TH_AXIS_IN_MOTION_STATE = 0x00100006, //v12.1.0.42 Add MC_7TH_AXIS_IN_MOTION_STATE = 0x00100007, //v12.1.0.42 Add MC_8TH_AXIS_IN_MOTION_STATE = 0x00100008, //v12.1.0.42 Add MC_GROUP_MEMBER_EMPTY = 0x00110000, MC_1ST_AXIS_IN_GROUP_LIMIT_OVER = 0x00120000, //v12.1.0.42 Add MC_2ND_AXIS_IN_GROUP_LIMIT_OVER = 0x00120001, //v12.1.0.42 Add MC_3RD_AXIS_IN_GROUP_LIMIT_OVER = 0x00120002, //v12.1.0.42 Add MC_4TH_AXIS_IN_GROUP_LIMIT_OVER = 0x00120003, //v12.1.0.42 Add MC_5TH_AXIS_IN_GROUP_LIMIT_OVER = 0x00120004, //v12.1.0.42 Add MC_6TH_AXIS_IN_GROUP_LIMIT_OVER = 0x00120005, //v12.1.0.42 Add MC_7TH_AXIS_IN_GROUP_LIMIT_OVER = 0x00120006, //v12.1.0.42 Add MC_8TH_AXIS_IN_GROUP_LIMIT_OVER = 0x00120007, //v12.1.0.42 Add MC_GROUP_CMD_SIZE_ERROR = 0x00130000, MC_GROUP_CMD_PARAMETER_SIZE_ERROR = 0x00130003, //v12.1.0.42 Add MC_GROUP_MEMBER_NOT_ALLOCATED_X = 0x00140000, //v12.1.0.42 Add MC_GROUP_MEMBER_NOT_ALLOCATED_Y = 0x00140001, //v12.1.0.42 Add MC_AXIS_IN_GROUP_MOTION = 0x00150000, //Motion Library Error Defines MC_FAIL = 0xE00C0001, MC_ERROR = 0xE00C0002, MC_IOMAPING_ERR = 0xE00C0003, MC_COMMINIT_ERR = 0xE00C0004, MC_COMM_EVENT_INIT_ERR = 0xE00C0005, MC_READ_ENI_NODE_ERR = 0xE00C0006, MC_INVALID_AXIS_ERR = 0xE00C0007, MC_INVALID_BOARD_ERR = 0xE00C0008, MC_XML_PARSING_ERR = 0xE00C0009, MC_XML_ITEM_COUNT_MISMATCH = 0xE00C000A, MC_NO_BOARD_INSTALLED = 0xE00C000B, MC_INVALID_DOWNLOAD_FILE_TYPE = 0xE00C000C, MC_OPEN_ENI_ERR = 0xE00C000D, MC_FILE_OPEN_FAIL = 0xE00C000E, MC_NO_MATCHING_DOWNLOADINFORMATION = 0xE00C000F, MC_NONE_OP = 0xE00C0010, MC_FAIL_GEN_DOWNLOAD_FILE = 0xE00C0011, MC_REG_KEY_READ_FAIL = 0xE00C0012, MC_NOT_ALLOWED_IN_THIS_MASTER_MODE = 0xE00C0014, MC_MASTERID_OUT_OF_RANGE = 0xE00C0015, MC_BOARDNO_OUT_OF_RANGE = 0xE00C0016, MC_AXISNO_OUT_OF_RANGE = 0xE00C0017, MC_BOARDCNT_OUT_OF_RANGE = 0xE00C0018, MC_RETURN_SIZE_NOT_EQUAL = 0xE00C001A, MC_MASTERID_DUPLICATION_ERR = 0xE00C001B, MC_PARAM_ERROR_FILE_IS_NULL = 0xE00C001C, MC_NO_MATCHING_BOARDID_FOUND = 0xE00C001D, MC_NOT_READY_NETWORK_CONFIGURATION = 0xE00C001E, MC_INVALID_MASTERID_ERR = 0xE00C001F, MC_MASTER_MODE_CHANGE_NOT_ALLOWED = 0xE00C0020, MC_MASTER_REQUEST_PARAM_ERROR = 0xE00C0021, MC_MASTER_INVALID_STATE = 0xE00C0022, MC_NOT_MOTION_LIBRAY_INITIALIZED = 0xE00C0023, //2014.08.22 Ver_0c01000D_2 MC_IOMANAGER_NOT_RUNNING = 0xE00C0024, //2014.08.22 Ver_0c01000D_2 MC_ANOTHER_PROGRAM_IS_USING_NMC_LIBRARY = 0xE00C0025, //2014.10.02 Ver_0c010010_2 MC_SLAVE_ITEM_MISMATCH = 0xE00C0026, // MC_SLAVE_ITEM_COUNT_MISMATCH = 0xE00C0027, MC_AXIS_COUNT_OUT_OF_RANGE = 0xE00C0028, //v12.1.0.46 //Comm Library Error Defines MC_PCICIP_GEN_10 = 0xCC100000, COMM_CONNECTION_ESTABLISHED = 0xED000001, COMM_CONN_CONFIG_FAILED_INVALID_NETWORK_PATH = 0xED000002, COMM_CONN_CONFIG_FAILED_NO_RESPONSE = 0xED000003, COMM_CONN_CONFIG_FAILED_ERROR_RESPONSE = 0xED000004, COMM_CONNECTION_TIMED_OUT = 0xED000005, COMM_CONNECTION_CLOSED = 0xED000006, COMM_INCOMING_CONNECTION_RUN_IDLE_FLAG_CHANGED = 0xED000007, COMM_ASSEMBLY_NEW_INSTANCE_DATA = 0xED000008, COMM_ASSEMBLY_NEW_MEMBER_DATA = 0xED000009, COMM_CONNECTION_NEW_INPUT_SCANNER_DATA = 0xED00000A, COMM_CONNECTION_VERIFICATION = 0xED00000B, COMM_CONNECTION_RECONFIGURED = 0xED00000C, COMM_REQUEST_RESPONSE_RECEIVED = 0xED000064, COMM_REQUEST_FAILED_INVALID_NETWORK_PATH = 0xED000065, COMM_REQUEST_TIMED_OUT = 0xED000066, COMM_CLIENT_OBJECT_REQUEST_RECEIVED = 0xED000067, COMM_NEW_CLASS3_RESPONSE = 0xED000068, COMM_CLIENT_PCCC_REQUEST_RECEIVED = 0xED000069, COMM_NEW_LIST_IDENTITY_RESPONSE = 0xED00006A, COMM_ID_RESET = 0xED00006B, COMM_BACKPLANE_REQUEST_RECEIVED = 0xED00006C, COMM_OUT_OF_MEMORY = 0xED0000C8, COMM_UNABLE_INTIALIZE_WINSOCK = 0xED0000C9, COMM_UNABLE_START_THREAD = 0xED0000CA, COMM_ERROR_USING_WINSOCK = 0xED0000CB, COMM_ERROR_SETTING_SOCKET_TO_NONBLOCKING = 0xED0000CC, COMM_ERROR_SETTING_TIMER = 0xED0000CD, COMM_SESSION_COUNT_LIMIT_REACHED = 0xED0000CE, COMM_CONNECTION_COUNT_LIMIT_REACHED = 0xED0000CF, COMM_PENDING_REQUESTS_LIMIT_REACHED = 0xED0000D0, COMM_PENDING_REQUEST_GROUPS_LIMIT_REACHED = 0xED0000D1, COMM_ERROR_UNABLE_START_MODBUS = 0xED0000D2, COMM_ERROR_HW_NOT_INSTALLED = 0xED0000DC, COMM_ERROR_DD_SEND_ERROR = 0xED0000DD, COMM_ERROR_DD_READ_ERROR = 0xED0000DE, COMM_DD_ERROR_SEND = 0xED0000DF, COMM_DD_ERROR_RECV = 0xED0000E0, COMM_DD_OPEN_FAIL = 0xED0000E6, COMM_DD_NOT_OPENED = 0xED0000E7, COMM_DD_CONN_FAIL = 0xED0000E8, COMM_DD_CLIENT_START_FAIL = 0xED0000E9, COMM_DD_OK = 0xED000000, COMM_CN_NOT_CONNECTED = 0xED0000F0, COMM_CN_CONNECTED = 0xED0000F1, COMM_CN_CONNERROR = 0xED0000F2, // COMM_ERROR_SUCCESS = 0xEE000000, COMM_ERROR_FAILURE = 0xEE010000, COMM_EXT_ERR_DUPLICATE_FWD_OPEN = 0xEE010100, COMM_EXT_ERR_CLASS_TRIGGER_INVALID = 0xEE010103, COMM_EXT_ERR_OWNERSHIP_CONFLICT = 0xEE010106, COMM_EXT_ERR_CONNECTION_NOT_FOUND = 0xEE010107, COMM_EXT_ERR_INVALID_CONN_TYPE = 0xEE010108, COMM_EXT_ERR_INVALID_CONN_SIZE = 0xEE010109, COMM_EXT_ERR_DEVICE_NOT_CONFIGURED = 0xEE010110, COMM_EXT_ERR_RPI_NOT_SUPPORTED = 0xEE010111, COMM_EXT_ERR_CONNECTION_LIMIT_REACHED = 0xEE010113, COMM_EXT_ERR_VENDOR_PRODUCT_CODE_MISMATCH = 0xEE010114, COMM_EXT_ERR_PRODUCT_TYPE_MISMATCH = 0xEE010115, COMM_EXT_ERR_REVISION_MISMATCH = 0xEE010116, COMM_EXT_ERR_INVALID_CONN_POINT = 0xEE010117, COMM_EXT_ERR_INVALID_CONFIG_FORMAT = 0xEE010118, COMM_EXT_ERR_NO_CONTROLLING_CONNECTION = 0xEE010119, COMM_EXT_ERR_TARGET_CONN_LIMIT_REACHED = 0xEE01011A, COMM_EXT_ERR_RPI_SMALLER_THAN_INHIBIT = 0xEE01011B, COMM_EXT_ERR_CONNECTION_TIMED_OUT = 0xEE010203, COMM_EXT_ERR_UNCONNECTED_SEND_TIMED_OUT = 0xEE010204, COMM_EXT_ERR_PARAMETER_ERROR = 0xEE010205, COMM_EXT_ERR_MESSAGE_TOO_LARGE = 0xEE010206, COMM_EXT_ERR_UNCONN_ACK_WITHOUT_REPLY = 0xEE010207, COMM_EXT_ERR_NO_BUFFER_MEMORY_AVAILABLE = 0xEE010301, COMM_EXT_ERR_BANDWIDTH_NOT_AVAILABLE = 0xEE010302, COMM_EXT_ERR_TAG_FILTERS_NOT_AVAILABLE = 0xEE010303, COMM_EXT_ERR_REAL_TIME_DATA_NOT_CONFIG = 0xEE010304, COMM_EXT_ERR_PORT_NOT_AVAILABLE = 0xEE010311, COMM_EXT_ERR_LINK_ADDR_NOT_AVAILABLE = 0xEE010312, COMM_EXT_ERR_INVALID_SEGMENT_TYPE_VALUE = 0xEE010315, COMM_EXT_ERR_PATH_CONNECTION_MISMATCH = 0xEE010316, COMM_EXT_ERR_INVALID_NETWORK_SEGMENT = 0xEE010317, COMM_EXT_ERR_INVALID_LINK_ADDRESS = 0xEE010318, COMM_EXT_ERR_SECOND_RESOURCES_NOT_AVAILABLE = 0xEE010319, COMM_EXT_ERR_CONNECTION_ALREADY_ESTABLISHED = 0xEE01031A, COMM_EXT_ERR_DIRECT_CONN_ALREADY_ESTABLISHED = 0xEE01031B, COMM_EXT_ERR_MISC = 0xEE01031C, COMM_EXT_ERR_REDUNDANT_CONNECTION_MISMATCH = 0xEE01031D, COMM_EXT_ERR_NO_MORE_CONSUMER_RESOURCES = 0xEE01031E, COMM_EXT_ERR_NO_TARGET_PATH_RESOURCES = 0xEE01031F, COMM_EXT_ERR_VENDOR_SPECIFIC = 0xEE010320, COMM_ERROR_NO_RESOURCE = 0xEE020000, COMM_ERROR_INVALID_PARAMETER_VALUE = 0xEE030000, COMM_ERROR_INVALID_SEG_TYPE = 0xEE040000, COMM_ERROR_INVALID_DESTINATION = 0xEE050000, COMM_ERROR_PARTIAL_DATA = 0xEE060000, COMM_ERROR_CONN_LOST = 0xEE070000, COMM_ERROR_BAD_SERVICE = 0xEE080000, COMM_ERROR_BAD_ATTR_DATA = 0xEE090000, COMM_ERROR_ATTR_LIST_ERROR = 0xEE0A0000, COMM_ERROR_ALREADY_IN_REQUESTED_MODE = 0xEE0B0000, COMM_ERROR_OBJECT_STATE_CONFLICT = 0xEE0C0000, COMM_ERROR_OBJ_ALREADY_EXISTS = 0xEE0D0000, COMM_ERROR_ATTR_NOT_SETTABLE = 0xEE0E0000, COMM_ERROR_PERMISSION_DENIED = 0xEE0F0000, COMM_ERROR_DEV_IN_WRONG_STATE = 0xEE100000, COMM_ERROR_REPLY_DATA_TOO_LARGE = 0xEE110000, COMM_ERROR_FRAGMENT_PRIMITIVE = 0xEE120000, COMM_ERROR_NOT_ENOUGH_DATA = 0xEE130000, COMM_ERROR_ATTR_NOT_SUPPORTED = 0xEE140000, COMM_ERROR_TOO_MUCH_DATA = 0xEE150000, COMM_ERROR_OBJ_DOES_NOT_EXIST = 0xEE160000, COMM_ERROR_NO_FRAGMENTATION = 0xEE170000, COMM_ERROR_DATA_NOT_SAVED = 0xEE180000, COMM_ERROR_DATA_WRITE_FAILURE = 0xEE190000, COMM_ERROR_REQUEST_TOO_LARGE = 0xEE1A0000, COMM_ERROR_RESPONSE_TOO_LARGE = 0xEE1B0000, COMM_ERROR_MISSING_LIST_DATA = 0xEE1C0000, COMM_ERROR_INVALID_LIST_STATUS = 0xEE1D0000, COMM_ERROR_SERVICE_ERROR = 0xEE1E0000, COMM_ERROR_VENDOR_SPECIFIC = 0xEE1F0000, COMM_ERROR_INVALID_PARAMETER = 0xEE200000, COMM_ERROR_WRITE_ONCE_FAILURE = 0xEE210000, COMM_ERROR_INVALID_REPLY = 0xEE220000, COMM_ERROR_BAD_KEY_IN_PATH = 0xEE250000, COMM_ERROR_BAD_PATH_SIZE = 0xEE260000, COMM_ERROR_UNEXPECTED_ATTR = 0xEE270000, COMM_ERROR_INVALID_MEMBER = 0xEE280000, COMM_ERROR_MEMBER_NOT_SETTABLE = 0xEE290000, COMM_ERROR_UNKNOWN_MODBUS_ERROR = 0xEE2B0000, COMM_ERROR_HW_NOT_INSTALLED1 = 0xEE2C0000, COMM_ERROR_ENCAP_PROTOCOL = 0xEE6A0000, COMM_ERROR_STILL_PROCESSING = 0xEEFF0000, MC_DOWNLOAD_FAIL_DUE_TO_ANOTHER_PROGRAM_IS_RUNNING = 0xEE800000,//Ver_0c010012_1 } public enum EcState : uint { eST_UNKNOWN = 0, eST_INIT = 0x01, // Ver_0c010016_2 eST_PREOP = 0x02, // Ver_0c010016_2 eST_BOOTSTRAP = 0x03, // v12.1.0.48 eST_SAFEOP = 0x04, // Ver_0c010016_2 eST_OP = 0x08, // Ver_0c010016_2 eST_ACKERR = 0x10, // Ver_0c010016_2 eST_NA = 0x14 // Ver_0c010016_2 } //=========================================================================================================== Hslee public enum ActiveLevel : uint { LOW = 0, HIGH } public enum Use : uint { UNUSED = 0, USE } public enum ABSREL : uint { Absolute = 0, Relative } public enum HOME_TYPE : uint { RefPulse = 0, AbsSwitch, LimitSwitch, MC_Direct, } public enum HOME_FLAG : uint { Clear = 0, Not_Clear, Drive_Clear } //=========================================================================================================== Hslee public enum AxisType : uint { OpenLoop = 0, Feedback_Only, OpenLoop_PositionCommand, } public enum ModuloType : uint { Type_Linear = 0, Type_Modulo, } public enum FeedbackMode : uint { Type_Linear = 0, Type_Modulo, } public enum EcMstMode : uint { eMM_IDLE = 0, eMM_SCAN, eMM_RUN, eMM_INTRANSITION, eMM_ERR, eMM_LINKBROKEN, eMM_FREE_RUN, //v12.1.0.54 } public enum EcScanMode : uint { SCAN_ALL = 0, SCAN_SINGLE, } public enum EcScanSts : uint { SCAN_NONE = 0, SCAN_BUSY, SCAN_DONE } public enum IOBufMode : ushort { BUF_OUT = 0, BUF_IN = 1, } public enum MC_AXISSTATUS : uint { mcErrorStop = 0x00000001, mcDisabled = 0x00000002, mcStopping = 0x00000004, mcStandStill = 0x00000008, mcDiscreteMotion = 0x00000010, mcContinuousMotion = 0x00000020, mcSynchroMotion = 0x00000040, mcHoming = 0x00000080, mcReserved_as_8 = 0x00000100, mcReserved_as_9 = 0x00000200, mcConstantVelocity = 0x00000400, mcAccelerating = 0x00000800, mcDecelerating = 0x00001000, mcDirectionPositive = 0x00002000, mcDirectionNegative = 0x00004000, mcLimitSwitchNeg = 0x00008000, mcLimitSwitchPos = 0x00010000, mcHomeAbsSwitch = 0x00020000, mcLimitSwitchPosEvent = 0x00040000, mcLimitSwitchNegEvent = 0x00080000, mcDriveFault = 0x00100000, mcSensorStop = 0x00200000, mcReadyForPowerOn = 0x00400000, mcPowerOn = 0x00800000, mcIsHomed = 0x01000000, mcAxisWarning = 0x02000000, mcMotionComplete = 0x04000000, mcGearing = 0x08000000, mcGroupMotion = 0x10000000, mcBufferFull = 0x20000000, mcReserved_as_30 = 0x40000000, mcReserved_as_31 = 0x80000000, } //MC_ReadStatus public enum MC_Status : uint { mcASErrorStop = 0x00000001, mcASDisabled = 0x00000002, mcASStopping = 0x00000004, mcASStandStill = 0x00000008, mcASDiscreteMotion = 0x00000010, mcASContinuousMotion = 0x00000020, mcASSynchroMotion = 0x00000040, mcASHoming = 0x00000080, } //MC_ReadMotionState public enum MC_MOTIONSTATE : uint { mcMSConstantVelocity = 0x00000001, mcMSAccelerating = 0x00000002, mcMSDecelerating = 0x00000004, mcMSDirectionPositive = 0x00000008, mcMSDirectionNegative = 0x00000010, } //MC_ReadAxisInfo public enum MC_AXISINFO : uint { mcAIHomeAbsSwitch = 0x00000001, mcAILimitSwitchPos = 0x00000002, mcAILimitSwitchNeg = 0x00000004, mcAIReserved3 = 0x00000008, mcAIReserved4 = 0x00000010, mcAIReadyForPowerOn = 0x00000020, mcAIPowerOn = 0x00000040, mcAIIsHomed = 0x00000080, mcAIAxisWarining = 0x00000100, mcAIMotionComplete = 0x00000200, mcAIGearing = 0x00000400, mcAIGroupMotion = 0x00000800, mcAIBufferFull = 0x00001000, mcAIReseved13 = 0x00002000, } public enum MC_AXISERROR : uint { mcAxis_NO_ERROR = 0x0000, mcAxis_DEVICE_ERROR = 0x0001, mcAxis_INVALID_AXIS_STATE = 0x0002, mcAxis_PARAMETER_INVALID = 0x0003, mcAxis_UNSUPPORT_CMD_REQUEST = 0x0004, mcAxis_CMD_REQUEST_FORMAT_WRONG = 0x0005, mcAxis_RESOURCE_ERROR = 0x0006, mcAxis_CONFIG_INVALID = 0x0007, mcAxis_POSITION_FOLLOWING_ERROR = 0x0008, mcAxis_VELOCITY_FOLLOWING_ERROR = 0x0009, mcAxis_SYSTEM_MAX_VELOCITY_OVER_ERROR = 0x000A, mcAxis_SYSTEM_MAX_ACCEL_OVER_ERROR = 0x000B, mcAxis_SYSTEM_MAX_DECEL_OVER_ERROR = 0x000C, mcAxis_SYSYEM_MAX_JERK_OVER_ERROR = 0x000D, mcAxis_MALFUNCTION_ERROR = 0x000E, mcAxis_GEARING_RULE_VIOLATION = 0x000F, mcAxis_HW_LIMIT_REACHED_WARNING = 0x8001, mcAxis_SW_LIMIT_REACHED_WARNING = 0x8002, } public struct MC_AxisErrorInfo { ushort ErrorId; ushort ErrorInfo0; ushort ErrorInfo1; } public struct MC_AxesGroupRawDataStatus { byte Mode; // Raw Data Mode byte Enabled; // Enabled Flag uint EmptyBufferCount; // Empty Buffer Count ushort InBufferIndex; // In Buffer Index ushort OutBufferIndex; // Out Buffer Index uint CurrentRawDataID; // Current Out RawDataSet ID byte CoordSystem; // Reserved } public enum MC_SOURCE : uint { mcSetValue = 0, //Synchronization on master set value mcActualValue, //Synchronization on master actual value mcSetValueFixedGear = 0x10, mcActualValueFixedGear = 0x11, mcSetValueFixedGear__ = 0x20, mcActualValueFixedGear__ = 0x21, } public enum MC_EXECUTION_MODE : uint { mcImmediately = 0, mcQueued, } public enum MC_BUFFER_MODE : uint { //0:Aborting, 1:Buffered, 2:BlendingLow, 3:BlendingPrevious, 4:BlendingNext, 5:BlendingHigh mcAborting = 0, mcBuffered, mcBlendingLow, mcBlendingPrevious, mcBlendingNext, mcBlendingHigh, mcBufferedBlendingLow, mcBufferedBlendingPrevious, mcBufferedBlendingNext, mcBufferedBlendingHigh, } public enum MC_DIRECTION : uint { // 0:Positive Direction, 1:Shortest_way, 2:Negative_Direction, 3:Current_Direction mcPositiveDirection = 0, mcShortestWay, mcNegativeDirection, mcCurrentDirection, } public enum MC_GearStatus : ushort { mcGearActive = 0x0001, mcGearIn = 0x0002, mcGearReserved2 = 0x0004, mcGearReserved3 = 0x0008, mcGearReserved4 = 0x0010, mcGearReserved5 = 0x0020, mcGearReserved6 = 0x0040, mcGearReserved7 = 0x0080, mcGearReserved8 = 0x0100, mcGearReserved9 = 0x0200, mcGearReserved10 = 0x0400, mcGearReserved11 = 0x0800, mcGearReserved12 = 0x1000, mcGearReserved13 = 0x2000, mcGearReserved14 = 0x4000, mcGearReserved15 = 0x8000, } public enum AxisStopType : uint { DECE = 0, IMMEDIATE } //Do not use!!! (Old Version) public enum MC_AXIS_DIRECTION : uint { CW = 0, CCW } //New Version public enum MC_HOME_AXIS_DIRECTION : uint { HOMING_DIR_CCW = 0, HOMING_DIR_CW } public enum MC_AXIS_CONTROL : uint { OL_PULSE_DIRECTION = 0, OL_TWO_PULSE, OL_QUDARATURE_PULSE, CL_VELOCITY_LEVEL_ANALOG, CL_TORQUE_LEVEL_ANALOG, } public enum MC_AXIS_I_MODE : uint { IN_STANDING = 0, ALWAYS, } public enum BinFileType : uint { BIN_BOOT = 1, BIN_A8OS = 2, BIN_TM = 3, BIN_DSPOS = 5, BIN_ENI = 6 } public enum SWVerType : ushort { SW_VER_MOTION = 0, SW_VER_PCICIP, SW_VER_DDSDK, SW_VER_DD, } public enum MC_CoordSystem : byte { mcACS = 1, mcMCS, mcPCS, } public enum MC_TRANSITION_MODE : byte { mcTMNone = 0, //Insert no transition curve (default mode) mcTMStartVelocity, //Transition with given start velocity mcTMConstantVelocity, //Transition with given constant velocity mcTMCornerDistance, //Transition with given corner distance mcTMMaxCornerDeviation, //Transition with given maximum corner deviation //5 - 9 Reserved by PLCopen //10 -… Supplier specific modes } public enum MC_CIRC_MODE : byte { mcBORDER = 0, mcCENTER, mcRADIUS, mcCENTER_ANGLE = 10, mcBORDER_ANGLE = 11, } public enum MC_CIRC_PATHCHOICE : byte { mcClockWise = 0, mcCounterClockWise, } public enum MC_RAW_DATA_MODE : byte { mcPositionCmdMode = 0, mcVelocityCmdMode, mcTorqueCmdMode, } public enum MC_SAVE_MODE : byte { mcSMAuto = 0, mcSMIndex, } public enum MC_GroupStatus : uint { GroupMoving = 0x00000001, GroupHoming = 0x00000002, GroupErrorStop = 0x00000004, GroupStandby = 0x00000008, GroupStopping = 0x00000010, GroupDisabled = 0x00000020, ConstantVelocity = 0x00000040, Accelerating = 0x00000080, Decelerating = 0x00000100, InPosition = 0x00000200, } public enum MC_ParamID : uint { mcpCommandedPosition = 1, mcpSWLimitPos_ = 2, mcpSWLimitNeg_ = 3, mcpEnableLimitPos_ = 4, mcpEnableLimitNeg_ = 5, mcpEnablePosLagMonitoring = 6, mcpMaxPositionLag_ = 7, mcpMaxVelocitySystem_ = 8, mcpMaxVelocityAppl_ = 9, mcpActualVelocity = 10, mcpCommandedVelocity = 11, mcpMaxAccelerationSystem_ = 12, mcpMaxAccelerationAppl = 13, mcpMaxDecelerationSystem_ = 14, mcpMaxDecelerationAppl = 15, mcpMaxJerkSystem = 16, mcpMaxJerkAppl_ = 17, mcpActualPosition = 1000, mcpCommandedAccel = 1001, mcpActualAccel = 1002, mcpCommandedJerk = 1003, mcpActualJerk = 1004, mcpTotalBufferCount = 1010, mcpAvailableBufferCount = 1011, mcpAxisType = 2002, mcpModuloAxis = 2003, mcpModuloValue = 2004, mcpEnableHWLimitPos = 2010, mcpHWLimitPosInputNum = 2011, mcpHWLimitPosActLevel = 2012, mcpEnableHWLimitNeg = 2013, mcpHWLimitNegInputNum = 2014, mcpHWLimitNegActLevel = 2015, mcpHomeInputNum = 2016, mcpHomeActLevel = 2017, mcpMarkerInputNum = 2018, mcpMarkerActLevel = 2019, mcpInputActLevel = 2020, mcpEnableLimitPos = 2030, mcpSWLimitPos = 2031, mcpEnableLimitNeg = 2032, mcpSWLimitNeg = 2033, mcpMaxVelocityAppl = 2034, mcpMaxAccelAppl = 2035, mcpMaxDecelAppl = 2036, mcpMaxJerkAppl = 2037, mcpMaxVelocitySystem = 2038, mcpMaxAccelerationSystem = 2039, mcpMaxDecelerationSystem = 2040, mcpmcpMaxJerkSystem = 2041, mcpmcpEStopType = 2060, mcpEStopDecel = 2061, mcpEStopJerk = 2062, mcpInvertCmdDir = 2070, mcpCmdScaleFactor = 2071, mcpFeedbackMode = 2072, mcpInvertFeedbackDir = 2073, mcpFeedbackScaleFactor = 2074, mcpPositionFeedbackFilter = 2075, mcpVelocityFeedbackFilter = 2076, mcpAccelerationFeedbackFilter = 2077, mcpStartVelocityOffset = 2078, mcpStopVelocityOffset = 2079, mcpInPositionCheckType = 2080, mcpInPositionWindowSize = 2081, mcpInVelocityWindowSize = 2082, mcpEnablePositionLagMonit = 2083, mcpMaxPositionLag = 2084, mcpPositionLagCalMethod = 2085, mcpEnableVelocityLagMonit = 2086, mcpMaxVelocityLag = 2087, mcpVelocityLagCalMethod = 2088, mcpHomingType = 2100, mcpHomingDir = 2101, mcpHomingVelocity = 2102, mcpHomingAcceleration = 2103, mcpHomingDeceleration = 2104, mcpHomingJerk = 2105, mcpHomingCreepVelocity = 2106, mcpHomePositionOffset = 2107, mcpHomeCompleteFlagHandle = 2108, //v12.1.0.33 syna mcpSensor0StopEnable = 2109, mcpSensor0StopMode = 2110, mcpSensor0StopIOOffset = 2111, mcpSensor0StopIOSize = 2112, mcpSensor0StopIOBit = 2113, mcpSensor0StopPosOffset = 2114, mcpSensor1StopEnable = 2115, mcpSensor1StopMode = 2116, mcpSensor1StopIOOffset = 2117, mcpSensor1StopIOSize = 2118, mcpSensor1StopIOBit = 2119, mcpSensor1StopPosOffset = 2120, mcpSensor2StopEnable = 2121, mcpSensor2StopMode = 2122, mcpSensor2StopIOOffset = 2123, mcpSensor2StopIOSize = 2124, mcpSensor2StopIOBit = 2125, mcpSensor2StopPosOffset = 2126, mcpSensor3StopEnable = 2127, mcpSensor3StopMode = 2128, mcpSensor3StopIOOffset = 2129, mcpSensor3StopIOSize = 2130, mcpSensor3StopIOBit = 2131, mcpSensor3StopPosOffset = 2132, mcpSensor4StopEnable = 2133, mcpSensor4StopMode = 2134, mcpSensor4StopIOOffset = 2135, mcpSensor4StopIOSize = 2136, mcpSensor4StopIOBit = 2137, mcpSensor4StopPosOffset = 2138, //v12.1.0.40 mcpPositiveLimitErrorStop = 2139, mcpNegativeLimitErrorStop = 2140, // mcpSensor0MovingVelocity = 2141, mcpSensor1MovingVelocity = 2142, mcpSensor2MovingVelocity = 2143, mcpSensor3MovingVelocity = 2144, mcpSensor4MovingVelocity = 2145, //v12.1.0.48 mcpPositionOffset = 2146, } } } namespace MMCE_Test { // MMC Library APIs public partial class NMCSDKLib { //============================================================================ // > APIs < //---------------------------------------------------------------------------- // Initialization // General & Utiltiy Functions //=============================================================================== #region Public Function [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_Init(); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MasterInit(ushort MasterID); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MasterRUN(ushort MasterID); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MasterSTOP(ushort MasterID); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetSWVersion(ushort Type, ref ushort Major, ref ushort Minor); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetErrorMessage(uint ErrorCode, uint Size, StringBuilder ErrorMessage); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetMasterMap(ushort[] MasterMap /*MAX_BOARD_CNT*/, ref ushort MasterCount); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetMasterCount(ref ushort MasterCount); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetBoardScanNo(ushort BoardID, ref ushort BoardScanNo); //=========================================================================== // Master Utility APIs //--------------------------------------------------------------------------- //============================================================================ [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetCurMode(ushort BoardID, ref byte MasterMode); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetBoardID(ushort MasterScanNo, ref ushort MasterID); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetAxesCount(ushort BoardID, ref uint TotalAxisCount); //Add Start (v12.1.0.38) [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetAxesID(ushort BoardID, ushort[] AxisID); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetDeviceCount(ushort BoardID, ref uint TotalDeviceCount); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetDeviceID(ushort BoardID, ushort[] DeviceID); //Add End [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetOSRevision(ushort BoardID, ref byte Major, ref byte Minor); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetMCRevision(ushort BoardID, ref byte Major, ref byte Minor); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetSDOData( ushort BoardID, ushort SlaveNo, ushort SDOIndex, byte SubIndex, uint DataSize, ref uint respDataSize, byte[] bDataArray ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetSDODataEcatAddr( ushort BoardID, ushort EcatAddr, ushort SDOIndex, byte SubIndex, uint DataSize, ref uint respDataSize, byte[] bDataArray ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterSetSDOData( ushort BoardID, ushort SlaveNo, ushort SDOIndex, byte SubIndex, uint DataSize, ref uint respDataSize, byte[] bDataArray ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterSetSDODataEcatAddr( ushort BoardID, ushort EcatAddr, ushort SDOIndex, byte SubIndex, uint DataSize, ref uint respDataSize, byte[] bDataArray ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGetLastError( ushort BoardID, ref uint pSequenceNo, ref uint pErrorCode, byte[] ExtErrorInfo ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterClearError( ushort BoardID ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterECatDirectAccess( ushort BoardID, byte EcatCmd, ushort Adp, ushort Ado, ushort ReqDataSize, byte[] bReqDataArray, ref ushort RespDataSize, byte[] bRespDataArray, ref ushort WC ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS SlaveGetAliasNo( ushort BoardID, ushort EcatAddr, ref ushort AliasID ); //Ver_0c010012_8 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS SlaveSetAliasNo( ushort BoardID, ushort EcatAddr, ushort AliasID ); //21 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS SlaveGetCurState( ushort BoardID, ushort EcatAddr, ref byte data ); //=========================================================================== // Motion APIs //--------------------------------------------------------------------------- //5.1.1.1 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_Power( ushort BoardID, // BoardID ushort AxisID, //Axis number bool Enable// Axis enable : 0:Disable, 1:Enable ); //5.1.1.2 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveAbsolute( ushort BoardID, // BoardID ushort AxisID, //Axis number double Position, //Target Position double Velocity, // Max Velocity double Accel, // Max Acceleration double Decel, // Max Deceleration double Jerk, //Max Jerk MC_DIRECTION Dir, // 0:Positive Direction, 1:Shortest_way, 2:Negative_Direction, 3:Current_Direction MC_BUFFER_MODE BufferMode //Buffer Mode : 0:Aborting, 1:Buffered, 2:BlendingLow, 3:BlendingPrevious, 4:BlendingNext, 5:BlendingHigh ); //5.1.1.3 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveRelative( ushort BoardID, // BoardID ushort AxisID, //Axis number double Distance, //Distance double Velocity, // Max Velocity double Accel, // Max Acceleration double Decel, // Max Deceleration double Jerk, //Max Jerk MC_BUFFER_MODE BufferMode //Buffer Mode : 0:Aborting, 1:Buffered, 2:BlendingLow, 3:BlendingPrevious, 4:BlendingNext, 5:BlendingHigh ); //5.1.1.6 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveVelocity( ushort BoardID, // BoardID ushort AxisID, //Axis number double Velocity, // Max Velocity double Accel, // Max Acceleration double Decel, // Max Deceleration double Jerk, //Max Jerk MC_DIRECTION Dir, // 0:Positive Direction, 1:Shortest_way, 2:Negative_Direction, 3:Current_Direction MC_BUFFER_MODE BufferMode //Buffer Mode : 0:Aborting, 1:Buffered, 2:BlendingLow, 3:BlendingPrevious, 4:BlendingNext, 5:BlendingHigh ); //5.1.1.7 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_Home( ushort BoardID, // BoardID ushort AxisID, //Axis number double Position, // MC_BUFFER_MODE BufferMode ); //5.1.1.8 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_Stop( ushort BoardID, // BoardID ushort AxisID, //Axis number bool Execute, double Decel, // Max Deceleration double Jerk //Max Jerk ); //5.1.1.9 MCReadStatus [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadStatus( ushort BoardID, // BoardID ushort AxisID, //Axis number ref uint pStatus ); //5.1.1.10 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadAxisError( ushort BoardID, // BoardID ushort AxisID, //Axis number ref ushort pErrorID, ref ushort pErrorInfo, ref ushort pErrorInfoExt ); //5.1.1.11 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_Reset( ushort BoardID, // BoardID ushort AxisID //Axis number ); //5.1.1.12 MCReadParameter [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadParameter( ushort BoardID, // BoardID ushort AxisID, //Axis number, uint ParameterNum, //PN ref double pValue ); //5.1.1.12 MCReadBoolParameter [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadBoolParameter( ushort BoardID, // BoardID ushort AxisID, //Axis number, uint ParameterNum, //PN ref bool pValue ); //5.1.1.12 MCReadIntParameter [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadIntParameter( ushort BoardID, // BoardID ushort AxisID, //Axis number, uint ParameterNum, //PN ref uint pValue ); //5.1.1.13 MCWriteParameter [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteParameter( ushort BoardID, // BoardID ushort AxisID, //Axis number, uint ParameterNum, //PN double dValue ); //5.1.1.13 MCWriteBoolParameter [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteBoolParameter( ushort BoardID, // BoardID ushort AxisID, //Axis number, uint ParameterNum, //PN bool Value ); //5.1.1.13 MCWriteIntParameter [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteIntParameter( ushort BoardID, // BoardID ushort AxisID, //Axis number, uint ParameterNum, //PN uint dwValue ); //5.1.1.14 MCReadActualPosition [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadActualPosition( ushort BoardID, // BoardID ushort AxisID, //Axis number ref double pPosition // Position Acutal Value ); //5.1.1.21 MC_GearIn [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GearIn( ushort BoardID, ushort MasterAxisID, ushort SlaveAxisID, uint RatioNumerator, uint RatioDenominator, MC_SOURCE MasterValueSource, double Acceleration, double Deceleration, double Jerk, MC_BUFFER_MODE BufferMode ); //5.1.1.22 MC_GearOut [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GearOut( ushort BoardID, ushort SlaveAxisID ); //5.1.1.24 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_TouchProbe( ushort BoardID, ushort AxisID, uint TriggerInput, bool WindowOnly, double FirstPosition, double LastPosition ); //5.1.1.25 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_AbortTrigger( ushort BoardID, ushort AxisID, uint TriggerInput ); //5.1.1.26 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadDigitalInput( ushort BoardID, ushort AxisID, uint InputNumber, ref bool pValue ); //5.1.1.27 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadDigitalOutput( ushort BoardID, ushort AxisID, uint OutputNumber, ref bool pValue ); //5.1.1.28 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteDigitalOutput( ushort BoardID, ushort AxisID, uint OutputNumber, bool Value ); //5.1.1.29 MCSetPosition [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_SetPosition( ushort BoardID, // BoardID ushort AxisID, //Axis number double Position, bool Relative, MC_EXECUTION_MODE Mode ); //5.1.1.31 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadActualVelocity( ushort BoardID, // BoardID ushort AxisID, //Axis number ref double pVelocity // Velocity Acutal Value ); //5.1.1.37 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_Halt( ushort BoardID, ushort AxisID, double Deceleration, double Jerk, MC_BUFFER_MODE BufferMode ); //5.1.1.38 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_TriggerMonitor( ushort BoardID, ushort AxisID, uint TriggerInput, ref bool pDone, ref double pRecordedPosition, ref bool pProbeActive ); //5.1.1.39 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadMotionState( ushort BoardID, // BoardID ushort AxisID, //Axis number ref uint pMotionState // MC_MOTIONSTATE ); //5.1.1.40 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadAxisInfo( ushort BoardID, // BoardID ushort AxisID, //Axis number ref uint pAxisInfo //MC_AXISINFO ); //5.1.1.41 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadAxisStatus( ushort BoardID, // BoardID ushort AxisID, //Axis number ref uint pAxisStatus //MC_AXISSTATUS ); //5.1.1.42 MC_GearMonitor [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GearMonitor( ushort BoardID, ushort AxisID, ref ushort pStatus ); //5.1.1.43 MC_ReadProfileData [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadProfileData( ushort BoardID, ushort AxisID, ref uint TickCount, ref double Position, ref double Velocity, ref double Accel, ref double Jerk, ref double ActPos, ref double ActVel ); //=========================================================================== //GROUP Motion //--------------------------------------------------------------------------- //5.1.1.44 MC_AddAxisToGroup [32] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_AddAxisToGroup( ushort BoardID, ushort AxisID, ushort AxesGroupNo, ushort IDInGroup ); //5.1.1.45 MC_RemoveAxisFromGroup [33] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_RemoveAxisFromGroup( ushort BoardID, ushort AxesGroupNo, ushort IDInGroup ); //5.1.1.46 MC_UngroupAllAxes [34] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_UngroupAllAxes( ushort BoardID, ushort AxesGroupNo ); //5.1.1.47 MC_GroupReadConfiguration [35] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadConfiguration( ushort BoardID, ushort AxesGroupNo, ushort IDInGroup, MC_CoordSystem CoordSystem, ref ushort AxisNo ); //5.1.1.48 MC_GroupEnable [36] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupEnable( ushort BoardID, ushort AxesGroupNo ); //5.1.1.49 MC_GroupDisable [37] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupDisable( ushort BoardID, ushort AxesGroupNo ); //5.1.1.50 MC_MoveLinearAbsolute [43] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveLinearAbsolute( ushort BoardID, ushort AxesGroupNo, ushort PositionCount, double[] PositionData, double Velocity, double Acceleration, double Deceleration, double Jerk, MC_CoordSystem CoordSystem, //Coordination System 을 지정한다. //ACS, MCS, PCS MC_BUFFER_MODE BufferMode, //Buffer Mode 를 지정한다. MC_TRANSITION_MODE TransitionMode, //Transition Mode 를 지정한다. ushort TransitionParameterCount, //TransitionParameter 의 Count 를 명시한다. double[] TransitionParameter //TransitionParameterCount 에 명시된 크기 만큼의 Data 를 입력한다. ); //5.1.1.51 MC_GroupHalt [42] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupHalt( ushort BoardID, ushort AxesGroupNo, double Deceleration, double Jerk, MC_BUFFER_MODE BufferMode //Buffer Mode 를 지정한다. ); //5.1.1.52 MC_GroupStop [41] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupStop( ushort BoardID, ushort AxesGroupNo, bool Execute, double Deceleration, double Jerk ); //5.1.1.53 MC_MoveCircularAbsolute2D [44] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveCircularAbsolute2D( ushort BoardID, ushort AxesGroupNo, MC_CIRC_MODE CircMode, MC_CIRC_PATHCHOICE PathChoice, double[] AuxPoint, double[] EndPoint, double Angle, double Velocity, double Acceleration, double Deceleration, double Jerk, MC_CoordSystem CordSystem, MC_BUFFER_MODE BufferMode, MC_TRANSITION_MODE TransitionMode, ushort TransitionParamCount, double[] TransitionParameter ); //5.1.1.54 MC_GroupStop [38] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadStatus( ushort BoardID, ushort AxesGroupNo, ref uint pGroupStatus ); //5.1.1.55 MC_GroupReadError [39] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadError( ushort BoardID, ushort AxesGroupNo, ref ushort pErrorID, ref ushort pErrorInfo0, ref ushort pErrorInfo1 ); //5.1.1.56 MC_GroupReset [40] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReset( ushort BoardID, ushort AxesGroupNo ); //5.1.1.57 MC_GroupReadProfileData [] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadProfileData( ushort BoardID, ushort AxesGroupNo, ref ushort AxisCount, ref uint TimeTick, double[,] ProfileDataArray ); //5.1.1.58 MC_GroupReadInfo [] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadInfo( ushort BoardID, ushort AxesGroupNo, ref ushort LastIdentNum, ushort[] IdentAxisNumList ); //5.1.1.59 MC_ReadAllStatus [] //[DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] //public static extern MC_STATUS MC_ReadAllStatus ( // ushort BoardID, // uint StatusData[MAX_ALL_STATUS_SIZE] // ); //5.1.1.60 MC_GroupSetRawDataMode [] [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupSetRawDataMode( ushort BoardID, ushort AxesGroupNo, MC_RAW_DATA_MODE Mode, bool Enable, // Raw data mode enable : 0:Disable, 1:Enable byte ReservedZero1, // MC_COORDSYSTEM CoordSystem, byte ReservedZero2 // MC_BUFFER_MODE BufferMode ); ////5.1.1.61 MC_GroupReadRawDataStatus [] : //[DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] //public static extern MC_STATUS MC_GroupReadRawDataStatus( // ushort BoardID, // ushort AxesGroupNo, // MC_AxesGroupRawDataStatus *AxesGroupRawDataStatus // ); //5.1.1.62 MC_GroupClearRawData [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupClearRawData( ushort BoardID, ushort AxesGroupNo, ushort ReservedZero1, ushort ReservedZero2 ); //5.1.1.63 MC_GroupSetRawData [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupSetRawData( ushort BoardID, ushort AxesGroupNo, MC_SAVE_MODE SaveMode, ushort IndexNum, ushort RawDataSize, ushort RawDataCount, byte[] RawDataArray, ref ushort StoredNum ); //5.1.1.64 MC_ReadRemainBuffer [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadRemainBuffer( ushort BoardID, ushort AxesNo, ref uint BufferSize ); //5.1.1.65 MC_GroupReadRemainBuffer [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadRemainBuffer( ushort BoardID, ushort AxesGroupNo, ref uint BufferSize ); //=========================================================================== // Motion APIs Add //--------------------------------------------------------------------------- //5.1.1.66 MC_MoveAbsoluteMultiAxis [] : //v12.1.0.40 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveAbsoluteMultiAxis( ushort BoardID, //Board ID ushort AxisCount, //Number of Axis ushort[] AxisArray, //Array of Axis ID double[] PositionArray, //Target Position Array double Velocity, //Max Velocity double Acceleration, //Max Acceleration double Deceleration, //Max Deceleration double Jerk, //Max Jerk MC_DIRECTION[] DirectionArray, //Array of Moving Direction for each Axis(0,1,2,3) byte ErrorStopMode //Mode of multi-axes Motion Stop when Error occurred in one(or more) of multi-axes. ); //0:Remainder axes do not Stop (Continue their Motion), 1:Remainder axes also Stop with E-Stop Parameters. //5.1.1.67 MC_MoveRelativeMultiAxis [] : //v12.1.0.40 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_MoveRelativeMultiAxis( ushort BoardID, //Board ID ushort AxisCount, //Number of Axis ushort[] AxisArray, //Array of Axis ID double[] PositionArray, //Target Position Array double Velocity, //Max Velocity double Acceleration, //Max Acceleration double Deceleration, //Max Deceleration double Jerk, //Max Jerk byte ErrorStopMode //Mode of multi-axes Motion Stop when Error occurred in one(or more) of multi-axes. ); //0:Remainder axes do not Stop (Continue their Motion), 1:Remainder axes also Stop with E-Stop Parameters. //5.1.1.67 MC_HaltMultiAxis [] : //v12.1.0.42 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_HaltMultiAxis( ushort BoardID, //Board ID ushort AxisCount, //Number of Axis ushort[] AxisArray, //Array of Axis ID byte ErrorStopMode //Mode of multi-axes Motion Stop when Error occurred in one(or more) of multi-axes. ); //0:Remainder axes do not Stop (Continue their Motion), 1:Remainder axes also Stop with E-Stop Parameters. //5.1.1.68 MC_SetHomeFlag [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_SetHomeFlag( ushort BoardID, //BoardID ushort AxisID, //Axis number ushort EcatAddr //Ethercat Address ); //5.1.1.69 MC_GetHomeFlag [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetHomeFlag( ushort BoardID, //BoardID ushort AxisID, //Axis number ref uint pHomeFlag //Home Flag ); //5.1.1.70 MC_ModeChange [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ModeChange( ushort BoardID, //BoardID ushort AxisID, //Axis number byte Mode, //Mode(6:hm,8:csp) byte ReservedZero //MC_BUFFER_MODE BufferMode (Reserved) ); //5.1.1.71 MC_SlaveHomeSet [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_SlaveHomeSet( ushort BoardID, //BoardID ushort EcatAddr, //Ethercat Address int Offset, //Home Offset byte Method, //Method uint SpeedSwitch, //Speed during search for switch uint SpeedZero, //Speed during search for zero uint Acceleration, //Acceleration byte ReservedZero //MC_BUFFER_MODE BufferMode (Reserved) ); //5.1.1.72 MC_SlaveHome [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_SlaveHome( ushort BoardID, //BoardID ushort AxisID, //Axis number byte Start, //0:Stop,1:Start byte ReservedZero //MC_BUFFER_MODE BufferMode (Reserved) ); //5.1.1.73 MC_SlaveHomeHalt [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_SlaveHomeHalt( ushort BoardID, //BoardID ushort AxisID, //Axis number byte ReservedZero //MC_BUFFER_MODE BufferMode (Reserved) ); //5.1.1.74 MC_ReadSlaveHomeStatus [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadSlaveHomeStatus( ushort BoardID, //BoardID ushort AxisID, //Axis number ref uint HomeStatus //Response Data(Bit0:Homing Complete, Bit1:Homing Error) ); //5.1.1.75 MC_ReadSlaveModeStatus [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadSlaveModeStatus( ushort BoardID, //BoardID ushort AxisID, //Axis number ref byte ModeStatus //Response Data(6:hm,8:csp) ); //5.1.1.76 MC_ReadMultiAxisStatus [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadMultiAxisStatus( ushort BoardID, //Board ID ushort AxisCount, //Number of Axis ushort[] AxisArray, //Array of Axis ID ref uint Status //Axis Status ); //5.1.1.77 MC_ReadCommandedPosition [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadCommandedPosition( ushort BoardID, //BoardID ushort AxisID, //Axis number ref double pPosition //Commmanded Position Value ); //5.1.1.78 MC_ReadCommandedVelocity [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadCommandedVelocity( ushort BoardID, //BoardID ushort AxisID, //Axis number ref double pVelocity //Commmanded Velocity Value ); //5.1.1.79 MC_GroupWriteParameter [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupWriteParameter( ushort BoardID, //_in BoardID ushort GroupNum, //_in GroupNum uint ParameterNum, //_in ParameterNum double Value //_in Value ); //5.1.1.80 MC_GroupReadParameter [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GroupReadParameter( ushort BoardID, //_in BoardID ushort GroupNum, //_in GroupNum uint ParameterNum, //_in ParameterNum ref double pValue //_out Value ); //5.1.1.81 MC_WriteIntervalTrigParameterFM [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteIntervalTrigParameterFM( ushort BoardID, //_in BoardID ushort EcatAddr, //_in Ethercat Address ushort AxisID, //_in AxisID double StartPosition, //_in Start Position double EndPosition, //_in End Position ushort IntervalPeriod, //_in Interval Period ushort PulseWidth //_in Pulse Width ); //5.1.1.82 MC_WriteIntervalTrigEnableFM [] : [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteIntervalTrigEnableFM( ushort BoardID, //_in BoardID ushort EcatAddr, //_in Ethercat Address ushort AxisID, //_in AxisID bool Enable //_in Configuration Enable True/False ); //=========================================================================== //--------------------------------------------------------------------------- // Device IO APIs //--------------------------------------------------------------------------- //MC_GetIOState [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetIOState( ushort BoardID, uint type, ref uint State ); // MC_IO_WRITE [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_RAW_WRITE( ushort BoardID, uint Offset, uint Size, byte[] DataArray ); // MC_IO_WRITE [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_WRITE( ushort BoardID, ushort EcatAddr, uint Offset, uint Size, byte[] DataArray ); // MC_IO_WRITE_BIT [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_WRITE_BIT( ushort BoardID, ushort EcatAddr, uint Offset, byte bitOffset, bool data ); // MC_IO_WRITE_BIT [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_RAW_WRITE_BIT( ushort BoardID, uint Offset, byte bitOffset, bool data ); // MC_IO_WRITE_BYTE [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_WRITE_BYTE( ushort BoardID, ushort EcatAddr, uint Offset, byte data ); // MC_IO_WRITE_WORD [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_WRITE_WORD( ushort BoardID, ushort EcatAddr, uint Offset, ushort data ); // MC_IO_WRITE_DWORD [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_WRITE_DWORD( ushort BoardID, ushort EcatAddr, uint Offset, ushort data ); // MC_IO_READ [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_READ( ushort BoardID, ushort EcatAddr, ushort BufferInOut, uint Offset, uint Size, byte[] DataArray ); // MC_IO_READ [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_RAW_READ( ushort BoardID, ushort BufferInOut, uint Offset, uint Size, byte[] DataArray ); // MC_IO_READ_BIT [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_READ_BIT( ushort BoardID, ushort EcatAddr, ushort BufferInOut, uint Offset, byte BitOffset, ref bool data ); // MC_IO_READ_BIT [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_RAW_READ_BIT( ushort BoardID, ushort BufferInOut, uint Offset, byte BitOffset, ref bool data ); // MC_IO_READ_BYTE [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_READ_BYTE( ushort BoardID, ushort EcatAddr, ushort BufferInOut, uint Offset, ref byte data ); // MC_IO_READ_WORD [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_READ_WORD( ushort BoardID, ushort EcatAddr, ushort BufferInOut, uint Offset, ref ushort data ); // MC_IO_READ_DWORD [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_IO_READ_DWORD( ushort BoardID, ushort EcatAddr, ushort BufferInOut, uint Offset, ref uint data ); //=========================================================================== //--------------------------------------------------------------------------- // System Performance APIs //--------------------------------------------------------------------------- [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_SetSystemPerformance(ushort Level); //Master Get Analog Output Info. [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_AO_DeviceCount( ushort BoardID, //_in BoardID ref ushort DeviceCount //_out AO DeviceCount ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_AO_DeviceTotalChSize( ushort BoardID, //_in BoardID ushort DeviceID, //_in AO DeviceID (EcatAddr) ref ushort DeviceTotalChSize //_out AO Device Total Channel Size ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_IO_DevicePdoCount( ushort BoardID, //_in BoardID ushort DeviceID, //_in I/O DeviceID (EcatAddr) ref ushort InPdoCount, //_out Input Pdo Count ref ushort OutPdoCount //_out Output Pdo Count ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_IO_DeviceInPdoData( ushort BoardID, //_in BoardID ushort DeviceID, //_in I/O DeviceID (EcatAddr) ushort[] InPdoSizeArray, //_out Input Pdo Size Array ushort[] InPdoIOOffsetArray, //_out Input Pdo IOOffset Array ushort[] InPdoRawIOOffsetArray //_out Input Pdo Raw IOOffset Array ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_IO_DeviceOutPdoData( ushort BoardID, //_in BoardID ushort DeviceID, //_in I/O DeviceID (EcatAddr) ushort[] OutPdoSizeArray, //_out Output Pdo Size Array ushort[] OutPdoIOOffsetArray, //_out Output Pdo IOOffset Array ushort[] OutPdoRawIOOffsetArray //_out Output Pdo Raw IOOffset Array ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_DI_DeviceCount( ushort BoardID, //_in BoardID ref ushort DeviceCount //_out DI Device Count ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_DI_DeviceID( ushort BoardID, //_in BoardID ushort[] DeviceIDArray //_out DI DeviceID Array (EcatAddr) ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_DI_DeviceTotalChSize( ushort BoardID, //_in BoardID ushort DeviceID, //_in DI DeviceID (EcatAddr) ref ushort DeviceTotalChSize //_out DI Device Total Channel Size ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_DO_DeviceCount( ushort BoardID, //_in BoardID ref ushort DeviceCount //_out DO Device Count ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_DO_DeviceID( ushort BoardID, //_in BoardID ushort[] DeviceIDArray //_out DO DeviceID Array (EcatAddr) ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MasterGet_DO_DeviceTotalChSize( ushort BoardID, //_in BoardID ushort DeviceID, //_in DO DeviceID (EcatAddr) ref ushort DeviceTotalChSize //_out DO Device Total Channel Size ); //----------------------------------------------------------------------------- // // // Error Compensation // // //----------------------------------------------------------------------------- //v12.1.0.69 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ChangeErrorCompensationMode( ushort BoardID, //_in BoardID ushort AxisID, //_in AxisID (AxisID 1~65535 / Gantry:0~3 / Group:0~15) byte Type, //_in Type (Axis:0, Gantry:1, Group:2) ushort Mode, //_in Mode (EC Data Mode Enable:1, EC Data Mode Disable:0) byte ECMapID //_in ECMapID (Range:0~3) (Table1 ~ Table4) ); //v12.1.0.69 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_ReadErrorCompensationStatus( ushort BoardID, //_in BoardID byte ECMapID, //_in ECMapID (Range:0~3) (Table1 ~ Table4) ref ushort AxisID, //_out AxisID (AxisID 1~65535 / Gantry:0~3 / Group:0~15) ref byte Type, //_out Type (Axis:0, Gantry:1, Group-2D:2, Group-3D:3) ref byte Status //_out Mode Status (Disabled:0, Enabled:1, Disabling:2, Enabling:3) ); //v12.1.0.69 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_WriteErrorCompensationDataFile( ushort BoardID, //_in BoardID ushort ECType, //_in ECType (0:1D Axis or Gantry, 1:2D Group, 2:3D Group) byte ECMapID, //_in ECMapID (Range:0~3) (Table1 ~ Table4) StringBuilder sFullPathFileName //_in WriteFile FullPathFileName ); //v12.1.0.68 [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_EniFileDownload( ushort BoardID, //_in BoardID StringBuilder sNvsFileName, //_in eMMC.nvs Full Path File Name ex) c:\\test\\eMMC.nvs StringBuilder sEniFileName //_in ENI.xml Full Path File Name ex) c:\\test\\ENI.xml ); [DllImport(NMC_DLL_NAME, CallingConvention = CallingConvention.Cdecl)] public static extern MC_STATUS MC_GetMismatchErrorInfo(ushort BoardID, ref ushort MismatchSlaveCount, ushort[] MismatchSlaveID); #endregion } }