0% found this document useful (0 votes)
6 views

CeSDK Manual API Reference

The COMIZOA Compact EIP Series Software Development Kit (cEIP SDK) API Reference Manual provides comprehensive information on the software development environment, features, and functions of the cEIP system. It includes guidelines for various programming environments, such as Visual C++ and Delphi, as well as detailed descriptions of motion control, input/output management, and utility functions. The document also contains legal disclaimers regarding product use, warranty, and intellectual property rights.

Uploaded by

hermex2009
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

CeSDK Manual API Reference

The COMIZOA Compact EIP Series Software Development Kit (cEIP SDK) API Reference Manual provides comprehensive information on the software development environment, features, and functions of the cEIP system. It includes guidelines for various programming environments, such as Visual C++ and Delphi, as well as detailed descriptions of motion control, input/output management, and utility functions. The document also contains legal disclaimers regarding product use, warranty, and intellectual property rights.

Uploaded by

hermex2009
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 643

COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

COMIZOA Compact EIP Series


cEIP Software Development Kit

CESDK API REFERENCE MANUAL

MARCH 2009
P/N 0403-2009-01
 2009 COMIZOA Inc. All rights reserved

API Reference Manual 1


ceSDK Manual

©
COMIZOA owns all right, title and interest in the property and products described herein, unless otherwise indicated. No part of this document may
be translated to another language or produced or transmitted in any form or by any information storage and retrieval system without written
permission from COMIZOA.
COMIZOA reserves the right to change products and specifications without written notice. Customers are advised to obtain the latest versions of
any product specifications.

COMIZOA MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR


PURPOSE, OTHER THAN COMPLIANCE WITH THE APPLICABLE COMIZOA SPECIFICATION SHEET FOR THE PRODUCT AT THE
TIME OF DELIVERY. IN NO EVENT SHALL COMIZOA BE LIABLE FOR ANY INDIRECT, INCIDENTAL OR CONSEQUENTIAL
DAMAGES AS A RESULT OF THE PRODUCT’S PERFORMANCE OR FAILURE TO MEET ANY ASPECT OF SUCH SPECIFICATION.
COMIZOA PRODUCTS ARE NOT DESIGNED OR INTENDED FOR USE IN LIFE SUPPORT APPLIANCES, DEVICES OR SYSTEMS
WHERE A MALFUNCTION OF A COMIZOA DEVICE COULD RESULT IN A PERSONAL INJURY OR LOSS OF LIFE. CUSTOMERS
USING OR SELLING COMIZOA DEVICES FOR USE IN SUCH APPLICATIONS DO SO AT THEIR OWN RISK AND AGREE TO FULLY
INDEMNIFY COMIZOA FOR ANY DAMAGES RESULTING FROM SUCH IMPROPER USE OR SALE.

Information contained herein is presented only as a guide for the applications of our products. COMIZOA does not warrant this product to be free of
claims of patent infringement by any third party and disclaims any warranty or indemnification against patent infringement. No responsibility is
assumed by COMIZOA for any patent infringement resulting from use of its products by themselves or in combination with any other products. No
license is hereby granted by implication or otherwise under any patent or patent rights of COMIZOA or others.
COMIZOA software and its documentation are available only under the terms of a Master Software Use and Support Agreement.

Trademarks
The COMIZOA logo is a registered trademark. All other brand names, product names, trademarks, and registered trademarks are the property of
their respective owners.

Visit our web page at http://www.comizoa.com


For support requests, contact us at [email protected]
For documentation suggestions, corrections, or requests, contact [email protected]

COMIZOA cEIP System Integrated Control Library Reference


© 2009 COMIZOA
All Rights Reserved. No Part of this publication may be reproduced, stored in retrieval system or transmitted, in any form, or by any means, electronic,
mechanical, photocopying, recording or otherwise, without the priorpermission, in writing, from the publisher.

2
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Table of Contents
Trademarks ______________________________________________________________________ 2
Table of Contents ____________________________________________________________________ 3
Chapter::1 Introduction _____________________________________________________________ 9
1 cEIP ___________________________________________________________ 10
1.1 Overview ________________________________________________________________________ 10
1.1.1 ________________________________________________________________________ 10
1.1.2 ________________________________________________________________________ 10
1.1.3 _______________________________________________________________________________ 10
1.1.4 _____________________________________________________________________________ 10
1.1.5 _____________________________________________________________________________ 10
1.1.6 ______________________________________________________________________ 11
1.1.7 __________________________________________________________________ 12
1.2 Features _________________________________________________________________________ 13
1.2.1 _______________________________________________________________________________ 13
1.2.2 _______________________________________________________________________________ 13
1.2.3 _______________________________________________________________________________ 13
1.2.4 _______________________________________________________________________________ 13
1.2.5 _______________________________________________________________________________ 13
1.2.6 _________________________________________________________ 13

Chapter::2 Development Environment for ceSDK _______________________________________ 14


2 ceSDK __________________________________________________ 15
2.1 ______________________________________________________________ 15
2.2 ceSDK ______________________________________________________________________ 16
2.2.1 HARDWARE Layer ____________________________________________________________________ 16
2.2.2 HAL(Hardware Abstract Layer) ___________________________________________________________ 17
2.2.3 ceSDK Layer (API Layer) ________________________________________________________________ 17
2.2.4 ceSDK ____________________________________________________________ 17

2.3 ______________________________________________________________ 18
2.3.1 Visual C++ 6.x _______________________________________________________ 19
2.3.2 Visual C++ 7.x _______________________________________________________ 25
2.3.3 Visual C++ 8.x _______________________________________________________ 31
2.3.4 Borland C++ Builder ___________________________________________________ 37
2.3.5 Borland Delphi _______________________________________________________ 42
2.3.6 Visual Basic _________________________________________________________ 46

Chapter::3 ceSDK Introduction ______________________________________________________ 50


3 ceSDK Introduction ____________________________________________________________ 51
3.1 ______________________________________________________________ 51
3.2 ________________________________________________________________ 51
3.3 __________________________________________________________________ 52

3
TABLE OF CONTENTS

3.4 ____________________________________________________________________ 53
3.5 ______________________________________________________ 54
Chapter::4 General Functions _______________________________________________________ 55
4 General Functions _____________________________________________________________ 56
4.1 _______________________________________________________________________ 56
4.2 _______________________________________________________________________ 60
Chapter::5 General Motion Functions _______________________________________________ 154
5 General Motion Functions _____________________________________________________ 155
5.1 ______________________________________________________________________ 155
5.2 ______________________________________________________________________ 156
Chapter::6 Environment Configuration Functions _____________________________________ 163
6 __________________________________________________________ 164
6.1 ______________________________________________________________________ 164
6.2 ______________________________________________________________________ 166
Chapter::7 Basic Motion Control ____________________________________________________ 219
7 ____________________________________________________________ 220
7.1 (Single-Axis) ______________________________________________________ 220
7.1.1 ___________________________________________________________________________ 220
7.1.2 ___________________________________________________________________________ 222

7.2 (Interpolation Motion) ______________________________________________ 254


7.2.1 ___________________________________________________________________________ 254
7.2.2 ___________________________________________________________________________ 254
7.2.3 ___________________________________________________________________________ 255
7.2.4 ___________________________________________________________________________ 257

7.3 (Home Return) _________________________________________________________ 324


7.3.1 ___________________________________________________________________ 324
7.3.2 __________________________________________________________ 329
7.3.3 ___________________________________________________________________________ 331
7.3.4 ___________________________________________________________________________ 332

Chapter::8 Advanced Motion Control ________________________________________________ 356


8 ____________________________________________________________ 357
8.1 (Overriding) ______________________________________________ 357
8.1.1 ___________________________________________________________________________ 357
8.1.2 ___________________________________________________________________________ 358

8.2 Master/Slave ____________________________________________________________ 368


8.2.1 ___________________________________________________________________________ 368
8.2.2 ___________________________________________________________________________ 369

Chapter::9 Input signals related to motion control by external signal _______________________ 376

4
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

9 ________________________________________________________ 377
9.1 Manual Pulsar (PA/PB) ______________________________________________ 377
9.1.1 ___________________________________________________________________________ 379
9.1.2 ___________________________________________________________________________ 380

Chapter::10 Monitoring Motion Status _______________________________________________ 397


10 ________________________________________________________________ 398
10.1 (Status) ________________________________________________ 398
10.1.1 ___________________________________________________________________________ 398
10.1.2 ___________________________________________________________________________ 399

10.2 (Position Latch) ______________________________________________________ 415


10.2.1 ___________________________________________________________________________ 415

Chapter::11 Motion Digital I/O Control ______________________________________________ 434


11 · ________________________________________________________ 435
11.1 ______________________________________________________________________ 435
11.2 ______________________________________________________________________ 436
Chapter::12 Universal Digital I/O Control ____________________________________________ 445
12 · ________________________________________________________ 446
12.1 ______________________________________________________________________ 447
12.2 ______________________________________________________________________ 448
Chapter::13 Counter Control _______________________________________________________ 475
13 (Counter) __________________________________________________________ 476
13.1 ______________________________________________________________________ 476
13.2 ______________________________________________________________________ 478
Chapter::14 Analog Input/Output Control ____________________________________________ 502
14 · __________________________________________________________ 503
14.1 (Analog Input ) ____________________________________________________ 503
14.1.1 ___________________________________________________________________________ 503
14.1.2 ___________________________________________________________________________ 504

14.2 (Analog Output ) ___________________________________________________ 517


14.2.1 ___________________________________________________________________________ 517
14.2.2 ___________________________________________________________________________ 518

Chapter::15 SERIAL Functions ____________________________________________________ 524


15 (Serial) ________________________________________________________ 525
15.1 ______________________________________________________________________ 525
15.2 ______________________________________________________________________ 527
Chapter::16 INTERLOCK Functions ________________________________________________ 557

5
TABLE OF CONTENTS

16 (Interlock) __________________________________________________________ 558


16.1 ______________________________________________________________________ 558
16.2 ______________________________________________________________________ 559
Chapter::17 Utility Functions _______________________________________________________ 569
17 _____________________________________________________________ 570
17.1 ______________________________________________________________________ 570
17.2 ______________________________________________________________________ 572
Chapter::18 Advanced and Extended Interface ________________________________________ 581
18 / ______________________________________________________ 582
18.1 ______________________________________________________________________ 582
Appendix::A cEIP Runtime Environment _____________________________________________ 583
I cEIP _____________________________________________________ 584
I.I cEIPSDK ___________________________________________________________________ 584
I.II IP Address _____________________________________________________ 586
I.III cEIP IP Address __________________________________________ 587
I.IV cEIP ID ____________________________________________________ 587
I.V cEIP ____________________________________________________ 588
Appendix::B cEIP Utility __________________________________________________________ 590
I cePowerFlasher ______________________________________________________________ 591
I.I cePowerFlasher ______________________________________________________________ 591
I.II ______________________________________________ 592
I.III __________________________________________________ 593
I.IV ( ) ______________________________________________________ 594
II ceNetConfig _________________________________________________________________ 597
II.I ____________________________________________________________ 597
II.II ARP Table _____________________________________________________ 598
III ceNodeViewer _______________________________________________________________ 602
IV ceErrorLookup ______________________________________________________________ 603
IV.I ceErrorLookup _____________________________________________ 603
V ceMADIC ___________________________________________________________________ 604
V.I MADIC ____________________________________________________ 604
V.I.i User Interface _________________________________________________________________________ 604
V.I.ii Main Menu ___________________________________________________________________________ 605
V.I.iii Tool Bar _____________________________________________________________________________ 606
V.I.iv Node Tree ___________________________________________________________________________ 607

6
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.I.v Disconnected Nodes____________________________________________________________________ 607


V.I.vi Status & Monitoring ___________________________________________________________________ 608
V.II MADIC (Motion) ______________________________________________ 609
V.II.i Motion : Jog Panel _____________________________________________________________________ 609
V.II.ii Motion : Home Return Panel _____________________________________________________________ 611
V.II.iii Motion : Override Panel_________________________________________________________________ 612
V.II.iv Motion : IxLine Panel __________________________________________________________________ 613
V.II.v Motion : IxArc Panel ___________________________________________________________________ 614
V.II.vi Motion : IxArc3P Panel _________________________________________________________________ 615
V.II.vii Motion : PA / PB Panel _________________________________________________________________ 616
V.II.viii Motion : Settings Panel _______________________________________________________________ 617
V.II.ix Motion Digital I/O _____________________________________________________________________ 619
V.III MADIC DIO ______________________________________________________ 620
V.III.i Digital I/O : Control Panel _______________________________________________________________ 620
V.III.ii Digital I/O : DIO Mode Panel ____________________________________________________________ 621
V.III.iii Digital I/O : DIO Logic Setting Panel ____________________________________________________ 622
V.IV MADIC AI (Analog Input) __________________________________________ 623
V.IV.i Analog Input : AI Monitor Start __________________________________________________________ 623
V.IV.ii Analog Input : AI Monitoring ____________________________________________________________ 624
V.V MADIC AO (Analog Output) ________________________________________ 625
V.V.i Analog Output : AO Control _____________________________________________________________ 625
V.VI MADIC (Counter) ___________________________________________ 626
V.VI.i Counter : Counter Start _________________________________________________________________ 626
V.VI.ii Counter : Counter Monitoring ____________________________________________________________ 627
Appendix::C Motion Default Parameter ______________________________________________ 628
VI (Default) _________________________________________ 629
VI.I Command & Feedback __________________________________________________________ 629
VI.II INP, ALM , EL _________________________________________________________________ 629
VI.III LTC, CMP, CLR, ERC _________________________________________________________ 629
VI.IV DR, SD, STA, STP _____________________________________________________________ 630
VI.V Software Limit _________________________________________________________________ 630
VI.VI Servo ON Input Logic __________________________________________________________ 630
VI.VII _______________________________________________________________ 630
VI.VIII __________________________________________________________ 631
Appendix::D List of Error Codes ____________________________________________________ 632
I ___________________________________________________________________ 633
I.I _________________________________________________________________ 633
Appendix::E Index of ceSDK Functions ______________________________________________ 636
I Index of ceSDK Functions _____________________________________________________ 637
I.I Quick Reference to ceSDK Functions ________________________________________________ 637
General Functions ___________________________________________________________________________ 637

7
TABLE OF CONTENTS

8
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

1
Chapter

Introduction
Chapter::1

, , , .
,
.

9
CHAPTER 1:: INTRODUCTION

1 cEIP

1.1 Overview
1.1.1

1.1.2

1.1.3

1.1.4

1.1.5

10
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

1.1.6

11
CHAPTER 1:: INTRODUCTION

1.1.7

12
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

1.2 Features

1.2.1

1.2.2

1.2.3

1.2.4

1.2.5

‘ ’

1.2.6

13
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

2
Chapter

Development Environment for


Chapter::2

ceSDK
ceSDK .
, ceSDK
.

14
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

2 ceSDK
2.1

Visual C++ 6.0 Enterprise


Microsoft Edition
Visual Basic
VS2003,
Visual Studio
C# (Sharp) VS2005
Builder 5 ,
Builder 6
C++ Builder
Borland
International 2006
Architect,
Delphi 5 , Delphi Professional,
Borland 6, Delphi 7
Delphi Enterprise
Development
Studio 2006

C# (Sharp) BDS 2006

C++ Builder Turbo C++


Borland
International Turbo Delphi /
Delphi Turbo Delphi
Borland Turbo for .NET
Series
C# (Sharp) Turbo C#
PowerBuilder 8,
Sybase PowerBuilder 9,
PowerBuilder
PowerBuilder PowerBuilder
10.5

15
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

2.2 ceSDK

“ ”

2.2.1 HARDWARE Layer

16
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

2.2.2 HAL(Hardware Abstract Layer)

2.2.3 ceSDK Layer (API Layer)

2.2.4 ceSDK
Borland C++
MS VC++ Borland Delphi MS Visual Basic MS C Sharp(C #)
Builder

ceSDK.h ceSDK.h
ceSDK
ceSDK.cpp ceSDK.cpp ceSDK.PAS ceSDK.BAS ceSDK.CS
ceSDK
ceSDKDef.h ceSDKDef.h

“ ”
“ ”

“ ”


17
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

2.3

‘ ’

Visual C++
C:\Program Files\COMIZOA\cEIPSDK\LIB\VC++
ceSDK.cpp, ceSDK.h, ceSDKDef.h

Borland C++ Builder


C:\Program Files\COMIZOA\cEIPSDK\LIB\C++ Builder
ceSDK.cpp, ceSDK.h, ceSDKDef.h

Delphi
C:\Program Files\COMIZOA\cEIPSDK\LIB\Delphi
ceSDK.PAS

Visual Basic
C:\Program Files\COMIZOA\cEIPSDK\LIB\Visual Basic
ceSDK.BAS

C# (CSharp)
C:\Program Files\COMIZOA\cEIPSDK\LIB\C Sharp
ceSDK.cs ceSDKDef.CS

ceSDK DLL
.
.

, .
DLL
. , ,
.

ceSDK (Interface)
. (VC++, Delphi )
, ceSDK .

18
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

2.3.1 Visual C++ 6.x

Project Start

ceSDK
Library

ceSDKDLL.DLL
1. DLL EXE
YES 2. , DLL
.

ceSDKDLL.dll

DestoryWindow()
ceSDKDLL.dll
ceUnloadDll()

DLL

19
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

20
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’

21
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’ ‘ ’

“ ”

22
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’ ‘’

23
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

24
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

2.3.2 Visual C++ 7.x

Project Start

ceSDK
Library

ceSDKDLL.DLL
1. DLL EXE
YES 2. , DLL
.

ceSDKDLL.dll

DestoryWindow()
ceSDKDLL.dll
ceUnloadDll()

DLL

25
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’ ‘ ’ ‘’

26
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’

‘ ’

27
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

28
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

“ ”

‘ ’

29
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’

‘ ’
‘ ’

30
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

2.3.3 Visual C++ 8.x

Project Start

ceSDK
Library

ceSDKDLL.DLL
1. DLL EXE
YES 2. , DLL
.

ceSDKDLL.dll

DestoryWindow()
ceSDKDLL.dll
ceUnloadDll()

DLL

31
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’ ‘ ’ ‘ ’

32
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘’

‘ ’

33
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’ ‘ ’

34
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

“”

‘ ’

35
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘’

36
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

2.3.4 Borland C++ Builder

Project Start

ceSDK
Library

ceSDKDLL.DLL
1. DLL EXE
YES 2. , DLL
.

ceSDKDLL.dll

OnDestory()
ceSDKDLL.dll
ceUnloadDll()

DLL

37
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

38
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

39
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

40
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

41
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

2.3.5 Borland Delphi

Project Start

ceSDK
Library

ceSDKDLL.DLL
NO 1. DLL EXE
2. , DLL
.

ceSDK.pas

ceSDK.pas Project Manager

ceSDK Unit Uses ceSDK;

42
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

43
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’

44
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

45
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

2.3.6 Visual Basic

Project Start

ceSDK
Library

ceSDKDLL.DLL
NO 1. DLL EXE
2. , DLL
.

ceSDK.Bas

Visual Basic Project


[Project] [Add File]
ceSDK.BAS

46
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

47
CHAPTER 2 :: DEVELOPMENT ENVIRONMENT FOR CESDK

‘ ’

‘ …’

48
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

49
CHAPTER 3:: CESDK INTRODUCTION

3
Chapter

ceSDK Introduction
Chapter::3

ceSDK
. ceSDK .
..

50
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

3 ceSDK Introduction
3.1

3.2

‘ ’

‘ ’

General Functions (Gn): ceGnLoad(), ceGnDebugMode(), ...


Motion Cofiguration Functions (Cfg): cemCfgMioProperty_Set(), cemCfgSpeedPattern_Get(), ...
Return to Home Functions (Home): cemHomeMove(), cemHomeSpeedPattern_Set(), ...
Single Axis Move Functions (Sx): cemSxMoveTo(), cemSxStopEmg(), ...
Interpolation Functions (Ix): cemIxLine(), cemIxSpeedPattern_Set(), ...
Overriding Functions (Override): cemOverrideSpeedSet(), cemOverrideMove(), ...
Master/Slave Functions (Ms): cemMsRegisterSlave(), cemMsCheckSlaveState(), ...
Manual Pulsar Functions (Plsr): cemPlsrInMode_Set(), cemPlsrMove(), ...
Motion States Functions (St): cemStSpeed_Get(), cemStPosition_Get(), ...
Latch Functions (Ltc): cemLtcIsLatched(), cemLtcReadLatch(), ...
Universal Digital I/O Functions (dio): cedioOne_Get(), cedioOne_Put(), ...
Analog Input Functions (ai): ceaiVolt_Get(), ceaiCurrent_Get(), ...
Analog Output Functions (ao): ceaoVolt_Out(), ceaoCurrent_Out(), ...
Counter Functions (c): cec_Get(), cec_EnableOne_Set(), ...
Serial Functions (s): ces_OpenPort(), ces_ReadByte(), ...
Interlock Functions (s): ceil_Set(), ceil_ActionModeOne_Set(), ...
Advanced Functions (Adv): cemAdvGetNodeInformation(), cemAdvManualPacket(), ...
Utility Functions (utl): ceutlSyncWait(), ceutlPumpMultiMessage(), ...

51
CHAPTER 3:: CESDK INTRODUCTION

3.3

“ ” “ ”
“ ” “ ”

Data type Description C/C++ VB 6.0 Delphi C#

VT_EMPTY void - - void

Long
VT_HANDLE , void * THandle IntPtr
(ByRef)

Long
VT_I4 4 long LongInt Int
(ByVal)

4 Long
VT_PI4 long * PLongInt Int[]
() (ByRef)

Double
VT_R4 4 float Double Float
(ByVal)

4 Double
VT_PR4 float * PDouble float[]
( ) (ByRef)

Double
VT_R8 8 double Double double
(ByVal)

8 Double
VT_PR8 double * PDouble double[]
( ) (ByRef)

String
VT_STR char * PChar String
4 (ByVal)

52
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

3.4


If ( ceGnLoad () )
{
return error;


If ( ceGnLoad () != ceERR_NONE )
{
return error;
}

“ ”

53
CHAPTER 3:: CESDK INTRODUCTION

3.5

Project Start

ceSDK
Library
ceSDKDLL.DLL
NO
1. DLL EXE
2. , DLL
.
YES

ceSDK.cpp
ceSDK.h
ceSDKDef.h
3 Project

ceSDK.cpp
ceSDK.h [Project] [Add to Project]
ceSDKDef.h
User Project

ceSDK.h
#include ceSDK.h
ceSDKDef.h
#include ceSDKDef.h

StartProgram()
ceSDK Library Load
ceLoadDll()
Device Load
ceGnLoad()
Device Search
ceGnSearchDevice()

DestoryWindow()
Device Unload
ceGnUnload()
ceSDK Library Unload
ceUnloadDll()

Project End

3-1 ceSDK Library

54
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

4
Chapter

General Functions
Chapter::4

ceSDK .
ceSDK ..

55
CHAPTER 4:: GENERAL FUNCTIONS

4 General Functions
4.1

“ ”

Summary of Functions
r BOOL ceLoadDll ( [none] VT_EMPTY )
(Load) .
r VT_EMPTY ceUnloadDll ( [none] VT_EMPTY )
(Unload) .
r VT_I4 ceGnLoad ( [none] VT_EMPTY )
.
r VT_I4 ceGnUnload ( [none] VT_EMPTY )
.

r VT_I4 ceGnSearchDevice ( [in] VT_I4 RealNode, [in] DWORD nTimeout, [in] VT_I4 IsBlocking,
[out] VT_PI4 pResultNode )
(Search).

r VT_I4 ceGnUnSearchDevice ( [none] VT_EMPTY )


, ceGnSearchDevice
.

r VT_I4 ceGnReSearchDevice ( [in] VT_I4 RealNode, [in] DWORD nTimeout, [in] VT_I4 IsBlocking,
[out] VT_PI4 pResultNode )
, (Research) .

r VT_I4 ceGnIsSearchedDevice ( [out] VT_PI4 IsSearchedDevice )


(Search) .
r VT_I4 ceGnResetNode ( [in] VT_I4 NodeID, [in] VT_I4 ResetMode )
(Reset) .
r VT_I4 ceGnCtrlBoost_Set ( [in] VT_I4 BoostLevel, [in] VT_I4 BoostMode )
ceSDK .
r VT_I4 ceGnCtrlBoost_Get ( [out] VT_PI4 BoostLevel, [out] VT_PI4 BoostMode )
ceSDK .
r VT_I4 ceGnNodeIsActive ( [in] VT_I4 NodeID, [out] VT_PI4 IsActive )
.

r VT_I4 ceGnDebugMode ( [in] VT_I4 DebugMode, [in] VT_PSTR szDebugFileName )


.
.

r VT_I4 ceGnTotalNode ( [out] VT_PI4 Node )


.
r VT_I4 ceGnTotalMotionChannel ( [out] VT_PI4 Channel )
(Axis) .

56
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

r VT_I4 ceGnTotalDIOChannel ( [out] VT_PI4 Channel )


I/O(Digital Input/Output) .
r VT_I4 ceGnTotalAIChannel ( [out] VT_PI4 Channel )
(Analog Input) .
r VT_I4 ceGnTotalAOChannel ( [out] VT_PI4 Channel )
( Analog Ooutput) .
r VT_I4 ceGnTotalMDIOChannel ( [out] VT_PI4 Channel )
I/O(Motion Digital I/O) .
r VT_I4 ceGnTotalCNTChannel ( [out] VT_PI4 Channel )
(Counter) .
r VT_I4 ceGnTotalSERChannel ( [out] VT_PI4 Channel )
(Serial) .
r VT_I4 ceGnModuleCount_Motion ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )
(Motion Module) .
r VT_I4 ceGnModuleCount_Dio ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )
I/O (Digital Input/Output Module) .
r VT_I4 ceGnModuleCount_Ai ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )
(Analog Input Module) .
r VT_I4 ceGnModuleCount_Ao ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )
(Analog Output Module) .

r VT_I4 ceGnModuleCount_Mdio ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )


I/O (Motion Digital Input/Output Channel)
.

r VT_I4 ceGnModuleCount_Cnt ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )


(Counter Module) .
r VT_I4 ceGnModuleCount_Ser ( [in] VT_I4 NodeID, [out] VT_PI4 ModuleCount )
( Serial Communication Module) .

r VT_I4 ceGnChannelCount_Motion ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
(Axis) .

r VT_I4 ceGnChannelCount_Dio ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
I/O DIO (DIO Channel) .

r VT_I4 ceGnChannelCount_Ai ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
AI (AI Channel) .

r VT_I4 ceGnChannelCount_Ao ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
AO (AO Channel) .

r VT_I4 ceGnChannelCount_Mdio ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
I/O (MDIO Channel) .

57
CHAPTER 4:: GENERAL FUNCTIONS

r VT_I4 ceGnChannelCount_Cnt ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
(Counter Channel) .

r VT_I4 ceGnChannelCount_Ser ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx,


[out] VT_PI4 ChannelCount )
.

r VT_I4 ceGnLocalAxis_Get ( [in] VT_I4 Axis, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
(Axis) .

r VT_I4 ceGnLocalDIO_Get ( [in] VT_I4 Channel, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
I/O(DIO) DIO .

r VT_I4 ceGnLocalAI_Get ( [in] VT_I4 Channel, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
(AI) AI .

r VT_I4 ceGnLocalAO_Get ( [in] VT_I4 Channel, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
(AO) AO .

r VT_I4 ceGnLocaMlDIO_Get ( [in] VT_I4 Channel, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
I/O(MDIO) .

r VT_I4 ceGnLocalCNT_Get ( [in] VT_I4 Channel, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
(Counter) .

r VT_I4 ceGnLocalSER_Get ( [in] VT_I4 Channel, [out] VT_PI4 NodeIP, [out] VT_PI4 NodeID,
[out] VT_PI4 NodeInGlobal, [out] VT_PI4 ModuleIdx, [out] PI4 ModuleInCh )
.

r VT_I4 ceGnGlobalAxis_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalAxis )
, (Global
Axis Number) .

r VT_I4 ceGnGlobalDIO_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalDIO )
I/O , DIO DIO
(Global DIO Channel Number) .

r VT_I4 ceGnGlobalAI_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalAI )
, AI AI
(Global AI Channel Number) .

r VT_I4 ceGnGlobalAO_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalAO )
, AO AO
(Global AO Channel Number) .

58
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

r VT_I4 ceGnGlobalMDIO_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalMDIO )
, MDIO MDIO
(Global MDIO C hannel Number) .

r VT_I4 ceGnGlobalCNT_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalCNT )
,
(Global Counter Channel Number) .

r VT_I4 ceGnGlobalSER_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleIdx, [in] VT_I4 ModuleInCh,
[out] VT_PI4 GlobalSER )
,
(Global Serial Communication Channel Number) .
r VT_I4 ceGnEmergency_Set ( [in] VT_I4 NodeID, [in] VT_I4 State )
Emergency .
r VT_I4 ceGnEmergency_Get ( [in] VT_I4 NodeID, [out] VT_PI4 State )
Emergency .

59
CHAPTER 4:: GENERAL FUNCTIONS

4.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

RETURN VALUE

0 (CE_FALSE)
1 (CE_TRUE)

SEE ALSO

60
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* . */
void StartProgram ( void )
{
// DLL .
BOOL nIsLoaded = ceLoadDll ();

if ( nIsLoaded == CE_FALSE )
{
OutputDebugString ( "Dll Load Fail" );
/*OutputDebugString API GUI .
Borland C++ Builder Debug Window Event Log ,
MS VC++ (6, 7, 8) Debug Window .*/
}
else
{
//Dll Load Success
}

/* . */
void EndProgram ( void )
{
// . .
ceUnloadDll ();
}

61
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

SEE ALSO

EXAMPLE

//* ceLoadDll .

62
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

63
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void ProgramInitial ( void )


{
if ( ceLoadDll () != CE_TRUE )
{
OutputDebugString ( “Can’t load ceSDK Library(DLL)” );
}
else
{
// ceSDK .
if ( ceGnLoad () != ceERR_NONE )
{
OutputDebugString ( “ceGnLoad has been failed” );
}
}
}

void ProgramEnd ( void )


{
// .
ceGnUnload ();

// .
ceUnloadDll ();
}

Visual Basic

‘ Visual Basic DLL .

Private Sub Form_Load ()

Dim nRetVal As Long

‘ ceSDK .
nRetVal = ceGnLoad ()
If nRetVal <> ceERR_NONE Then
MsgBox ( “ceGnLoad has been failed” )
End If

End Sub

Private Sub Form_Unload ( Cancel As Integer )

‘ .
Call ceGnUnload ()

End Sub

64
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Delphi

//* Delphi DLL .


//* , .
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// COMZIOA SDK Library .
uses ceSDK;
/////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.OnCreate ( Sender: TObject );


begin

// ceSDK .
if ( ceGnLoad () <> ceERR_NONE ) then
begin
ShowMessage ( ‘ceGnLoad has been failed’ );
end;
end;

procedure TForm1.OnDestroy ( Sender: TObject );


begin

// .
ceGnUnload ();

end;

65
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnLoad .

66
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

.
,
.

PARAMETER

1
2
3

0 (CE_FALSE)

1 (CE_TRUE)

67
CHAPTER 4:: GENERAL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

‘ ’

SEE ALSO

68
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define REALNODE 10
#define TIMEOUT 1000

void ProgramInitial ( void )


{
if ( ceLoadDll () != CE_TRUE )
{
OutputDebugString ( “Can’t load ceSDK Library(DLL)” );
return;
}

// ceSDK .
if ( ceGnLoad () != ceERR_NONE )
{
OutputDebugString ( " ceGnLoad has been failed" );
return;
}

long nIsSearchedDevice; //
long nNodeCount; //
long nRetVal;

// .
ceGnIsSearchedDevice ( &nIsSearchedDevice );

// .
if ( nIsSearchedDevice == CE_FALSE ) // .
{
nRetVal = ceGnSearchDevice ( REALNODE, //
TIMEOUT, // (ms)
CE_FALSE, //
&nNodeCount //
);

if ( nRetVal != ceERR_NONE )
{
// .
}
}
else // .
{
if (ceGnReSearchDevice ( REALNODE, TIMEOUT, CE_FALE, &nNodeCount ) != ceERR_NONE )
{
// .
}
}
}
Visual Basic

69
CHAPTER 4:: GENERAL FUNCTIONS

‘ Visual Basic DLL .

Private Sub Form_Load ()

Dim nNodeCount As Long ‘


Dim nIsSearchedDevice As Long ‘
Dim nRetVal As Long

‘ ceSDK .
nRetVal = ceGnLoad ()

If nRetVal <> ceERR_NONE Then


MsgBox ( “ceGnLoad has been failed” )
End If

‘ .
Call ceGnIsSearchedDevice ( nIsSearchedDevice )

‘ .
If nIsSearchedDevice = CE_FALSE Then ‘ .
nRetVal = ceGnSearchDevice ( 10, 1000, CE_FALSE, nNodeCount )

If nRetVal <> ceERR_NONE Then


‘ .
End If

Else ‘ .
nRetVal = ceGnReSearchDevice ( 10, 1000, CE_FALSE, nNodeCount )

If nRetVal <> ceERR_NONE Then


‘ .
End If
End If

End Sub

Delphi

//* Delphi DLL .


//* , .
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// COMZIOA SDK Library .
uses ceSDK;
/////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.OnCreate ( Sender: TObject );


var
nNodeCount : LongInt; //
nIsSearchedDevice : LongInt; //

begin

70
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

// ceSDK .
if ( ceGnLoad () <> ceERR_NONE ) then
begin
ShowMessage ( ‘ceGnLoad has been failed’ );
end;

// .
ceGnIsSearchedDevice ( @nIsSearchedDevice );

// .
if nIsSearchedDevice = CE_FALSE then
begin
ceGnSearchDevice ( 10, 1000, CE_FALSE, @nNodeCount );
else
ceGnReSearchDevice ( 10, 1000, CE_FALSE, @nNodeCount );
end;

end;

71
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

REFERENCE

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

72
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define REALNODE 10
#define TIMEOUT 1000

long nIsSearchedDevice; //
long nNodeCount; //
long nRetVal;

// .
ceGnIsSearchedDevice ( &nIsSearchedDevice );

// .
if ( nIsSearchedDevice == CE_TRUE ) // .
{
ceGnUnSearchDevice (); // .
/* . cEIP
,
, ceGnReSearchDevice . */

if (ceGnSearchDevice ( REALNODE, TIMEOUT, CE_FALE, &nNodeCount ) != ceERR_NONE )


{
// .
}
}

Visual Basic

‘ Visual Basic DLL .

Dim nNodeCount As Long ‘


Dim nIsSearchedDevice As Long ‘
Dim nRetVal As Long

‘ .
Call ceGnIsSearchedDevice ( nIsSearchedDevice )

‘ .
If nIsSearchedDevice = CE_TRUE Then ‘ .
Call ceGnUnSearchDevice () ‘ .

nRetVal = ceGnSearchDevice ( 10, 1000, CE_FALSE, nNodeCount )

If nRetVal <> ceERR_NONE Then

73
CHAPTER 4:: GENERAL FUNCTIONS

‘ .
End If

End If

Delphi

//* Delphi DLL .


//* , .
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// COMZIOA SDK Library .
uses ceSDK;
/////////////////////////////////////////////////////////////////////////////////////////////////////////

var
nNodeCount : LongInt; //
nIsSearchedDevice : LongInt; //

begin

// .
ceGnIsSearchedDevice ( @nIsSearchedDevice );

// .
if nIsSearchedDevice = CE_TRUE then // .
begin
ceGnUnSearchDevice (); // .
ceGnSearchDevice ( 10, 1000, CE_FALSE, @nNodeCount );
end;

end;

74
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

1
2
3

0 (CE_FALSE)

1 (CE_TRUE)

75
CHAPTER 4:: GENERAL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

“ ”

SEE ALSO

EXAMPLE

//* ceGnSearchDevice .

76
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnSearchDevice .

77
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

REFERENCE


PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

78
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnResetNode ()
{
long nNodeID = 1; // ID .

/* Reset Mode */
// CE_RESET_DIO : Digital Input / Output Modue Reset
// CE_RESET_MOTION : Motion Module Reset
// CE_RESET_AIO : Analog Input / Analog Output Module Reset
// CE_RESET_ALL : DIO, Motion, AI, AO Module Reset

// Motion, DIO, AI, AO .


ceGnResetNode( nNodeID, CE_RESET_ALL );
}

Visual Basic

Private Sub OnResetNode ()

Dim nNodeID As Long ‘ ID .

nNodeID = 1

‘ Motion, DIO, AI, AO .


Call ceGnResetNode ( nNodeID, CE_RESET_ALL )

End Sub

Delphi

//* Delphi DLL .


//* , .
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// COMZIOA SDK Library .
uses ceSDK;
/////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure OnResetNode ();


var
nNodeID : LongInt; //

begin
nNodeID := 1;

// Motion, DIO, AI, AO .

79
CHAPTER 4:: GENERAL FUNCTIONS

ceGnResetNode ( nNodeID, CE_RESET_ALL );

end;

80
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
L

DESCRIPTION

PARAMETER

81
CHAPTER 4:: GENERAL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

82
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

83
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnNodeIsActive ()
{
long nNodeID = 1; // ID
long nIsActive; //

// .
ceGnNodeIsActive ( nNodeID, &nIsActive );

if ( nIsActive == CE_FALSE )
{
//
}
}

Visual Basic

Private Sub OnNodeIsActive ()

Dim nNodeID As Long ‘ ID


Dim nIsActive As Long ‘

‘ .
ceGnNodeIsActive ( nNodeID, nIsActive )

If nIsActive = CE_FALSE Then



End If

End Sub

Delphi

procedure OnNodeIsActive ();


var
nNodeID : LongInt; // ID
nIsActive : LongInt; //

begin
nNodeID := 1;

// .
ceGnNodeIsActive ( nNodeID, @nIsActive );

84
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

if nIsActive = CE_FALSE then


begin
//
end;
end;

85
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

86
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnDebegModeSet ()
{
// .
ceGnDebugMode ( DEBUG_OUT_WINDOW, //
NULL // 0 NULL .
);
}

87
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

88
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetTotalNode ()
{
long nTotalNode; //

/* .*/
if ( ceGnTotalNode( &nTotalNode ) != ceERR_NONE )
{
OutputDebugString ( " ceGnTotalNode has been failed" );
}
}

Visual Basic

Private Sub OnGetTotalNode ()

Dim nTotalNode As Long ‘

‘ .
If ceGnTotalNode ( nTotalNode ) <> ceERR_NONE Then
MsgBox ( “ceGnTotalNode has been failed” )
End If

End Sub

Delphi

procedure OnGetTotalNode ();


var
nTotalNode : LongInt; //

begin

// .
if ceGnTotalNode ( @nTotalNode ) <> ceERR_NONE then
begin
ShowMessage ( ‘ceGnTotalNode has been failed’ );
end;
end;

89
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

90
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetTotalChannel ()
{
long nTotalAxes, nTotalDioCh, nTotalAiCh, nTotalAoCh, nTotalMdioCh, nTotalCntCh, nTotalSerCh;

// .
ceGnTotalMotionChannel ( &nTotalAxes );

// DIO .
ceGnTotalDIOChannel ( &nTotalDioCh );

// AI .
ceGnTotalAIChannel ( &nTotalAiCh );

// AO .
ceGnTotalAOChannel ( &nTotalAoCh );

// MDIO .
ceGnTotalMDIOChannel ( &nTotalMdioCh );

// .
ceGnTotalCNTChannel ( &nTotalCntCh );

// .
ceGnTotalSERChannel ( &nTotalSerCh );
}

Visual Basic

Private Sub OnGetTotalChannel ()

Dim nTotalAxes As Long, nTotalDioCh As Long, nTotalAiCh As Long, nTotalAoCh As Long


Dim nTotalMdioCh As Long, nTotalCntCh As Long, nTotalSerCh As Long

‘ .
Call ceGnTotalMotionChannel ( nTotalAxes )

‘ DIO .
Call ceGnTotalDIOChannel ( nTotalDioCh )

‘ AI .
Call ceGnTotalAIChannel ( nTotalAiCh )

‘ AO .
Call ceGnTotalAOChannel ( nTotalAoCh )

‘ MDIO .

91
CHAPTER 4:: GENERAL FUNCTIONS

Call ceGnTotalMDIOChannel ( nTotalMdioCh )

‘ .
Call ceGnTotalCNTChannel ( nTotalCntCh )

‘ .
Call ceGnTotalSERChannel ( nTotalSerCh )

End Sub

Delphi

procedure OnGetTotalChannel ();


var
nTotalAxes, nTotalDioCh, nTotalAiCh, nTotalAoCh, nTotalMdioCh, nTotalCntCh, nTotalSerCh : LongInt;

begin
‘ .
ceGnTotalMotionChannel ( @nTotalAxes );

‘ DIO .
ceGnTotalDIOChannel ( @nTotalDioCh );

‘ AI .
ceGnTotalAIChannel ( @nTotalAiCh );

‘ AO .
ceGnTotalAOChannel ( @nTotalAoCh );

‘ MDIO .
ceGnTotalMDIOChannel ( @nTotalMdioCh );

‘ .
ceGnTotalCNTChannel ( @nTotalCntCh );

‘ .
ceGnTotalSERChannel ( @nTotalSerCh );

end;

92
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnTotalMotionChannel .

93
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnTotalMotionChannel .

94
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnTotalMotionChannel .

95
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnTotalMotionChannel .

96
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnTotalMotionChannel .

97
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnTotalMotionChannel .

98
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

99
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetModuleCount ()
{
long nNodeID = 1; // ID
long nMotModuleCnt, nDioModuleCnt, nAiModuleCnt, nAoModuleCnt, nCountModuleCnt, nSerModuleCnt;

// .
ceGnModuleCount_Motion ( nNodeID, &nMotModuleCnt );

// DIO .
ceGnModuleCount_Dio ( nNodeID, &nDioModuleCnt );

// AI .
ceGnModuleCount_Ai ( nNodeID, &nAiModuleCnt );

// AO .
ceGnModuleCount_Ao ( nNodeID, &nAoModuleCnt );

// MDIO .
ceGnModuleCount_Mdio ( nNodeID, &nMotModuleCnt );

// .
ceGnModuleCount_Cnt ( nNodeID, &nCountModuleCnt );

// .
ceGnModuleCount_Ser ( nNodeID, &nSerModuleCnt );
}

Visual Basic

Private Sub OnGetModuleCount ()

Dim nNodeID As Long ‘ ID


Dim nMotModuleCnt As Long, nDioModuleCnt As Long, nAiModuleCnt As Long
Dim nAoModuleCnt As Long, nCountModuleCnt As Long, nSerModuleCnt As Long

‘ .
Call ceGnModuleCount_Motion ( nNodeID, nMotModuleCnt )

‘ DIO .
Call ceGnModuleCount_Dio ( nNodeID, nDioModuleCnt )

‘ AI .
Call ceGnModuleCount_Ai ( nNodeID, nAiModuleCnt )

100
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ AO .
Call ceGnModuleCount_Ao ( nNodeID, nAoModuleCnt )

‘ MDIO .
Call ceGnModuleCount_Mdio ( nNodeID, nMotModuleCnt )

‘ .
Call ceGnModuleCount_Cnt ( nNodeID, nCountModuleCnt )

‘ .
Call ceGnModuleCount_Ser ( nNodeID, nSerModuleCnt )

End Sub

Delphi

procedure OnGetModuleCount ();


var
nNodeID : LongInt; // ID
nMotModuleCnt, nDioModuleCnt, nAiModuleCnt, nAoModuleCnt, nCountModuleCnt,
nSerModuleCnt : LongInt;

begin
nNodeID := 1;

// .
ceGnModuleCount_Motion ( nNodeID, @nMotModuleCnt );

// DIO .
ceGnModuleCount_Dio ( nNodeID, @nDioModuleCnt );

// AI .
ceGnModuleCount_Ai ( nNodeID, @nAiModuleCnt );

// AO .
ceGnModuleCount_Ao ( nNodeID, @nAoModuleCnt );

// MDIO .
ceGnModuleCount_Mdio ( nNodeID, @nMotModuleCnt );

// .
ceGnModuleCount_Cnt ( nNodeID, @nCountModuleCnt );

// .
ceGnModuleCount_Ser ( nNodeID, @nSerModuleCnt );

end;

101
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnModuleCount_Motion .

102
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnModuleCount_Motion .

103
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnModuleCount_Motion .

104
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnModuleCount_Motion .

105
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnModuleCount_Motion .

106
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnModuleCount_Motion .

107
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

108
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetChannelCount ()
{
long nNodeID = 1 // ID

long nMotModuleIdx = 1; // ID
long nDioModuleIdx = 2; // DIO ID
long nAiModuleIdx = 3; // AI ID
long nAoModuleIdx = 4; // AO ID
long nCountModuleIdx = 5; // ID
long nSerModuleIdx = 6; // ID

long nAxesCnt, nDioChCnt, nAiChCnt, nAoChCnt, nMdioChCnt, nCountChCnt, nSerChCnt;

// .
ceGnChannelCount_Motion ( nNodeID, nMotModuleIdx, &nAxesCnt );

// DIO DIO .
ceGnChannelCount_Dio ( nNodeID, nDioModuleIdx, &nDioChCnt );

// AI AI .
ceGnChannelCount_Ai ( nNodeID, nAiModuleIdx, &nAiChCnt );

// AO AO .
ceGnChannelCount_Ao ( nNodeID, nAoModuleIdx, &nAoChCnt );

// MDIO .
ceGnChannelCount_Mdio ( nNodeID, nMotModuleIdx, &nMdioChCnt );

// .
ceGnChannelCount_Cnt ( nNodeID, nCountModuleIdx, &nCountChCnt );

// .
ceGnChannelCount_Cnt ( nNodeID, nSerModuleIdx, &nSerChCnt );
}

Visual Basic

Private Sub OnGetChannelCount ()

Dim nNodeID As Long

Dim nMotModuleIdx As Long, nDioModuleIdx As Long, nAiModuleIdx As Long


Dim nAoModuleIdx As Long, nCountModuleIdx As Long, nSerModuleIdx As Long

109
CHAPTER 4:: GENERAL FUNCTIONS

Dim nAxesCnt As Long, nDioChCnt As Long, nAiChCnt As Long, nAoChCnt As Long


Dim nMdioChCnt As Long, nCountChCnt As Long, nSerChCnt As Long

nNodeID = 1 ‘ ID

nMotModuleIdx = 1 ‘ ID
nDioModuleIdx = 2 ‘ DIO ID
nAiModuleIdx = 3 ‘ AI ID
nAoModuleIdx = 4 ‘ AO ID
nCountModuleIdx = 5 ‘ ID
nSerModuleIdx = 6 ‘ ID

‘ .
Call ceGnChannelCount_Motion ( nNodeID, nMotModuleIdx, nAxesCnt )

‘ DIO DIO .
Call ceGnChannelCount_Dio ( nNodeID, nDioModuleIdx, nDioChCnt )

‘ AI AI .
Call ceGnChannelCount_Ai ( nNodeID, nAiModuleIdx, nAiChCnt )

‘ AO AO .
Call ceGnChannelCount_Ao ( nNodeID, nAoModuleIdx, nAoChCnt )

‘ MDIO .
Call ceGnChannelCount_Mdio ( nNodeID, nMotModuleIdx, nMdioChCnt )

‘ .
Call ceGnChannelCount_Cnt ( nNodeID, nCountModuleIdx, nCountChCnt )

‘ .
Call ceGnChannelSer_Cnt ( nNodeID, nSerModuleIdx, nSerChCnt )

End Sub

Delphi

procedure OnGetChannelCount ()
var
nNodeID : LongInt;

nMotModuleIdx, nDioModuleIdx, nAiModuleIdx, nAoModuleIdx, nCountModuleIdx, nSerModuleIdx : LongInt;

nAxesCnt, nDioChCnt, nAiChCnt, nAoChCnt, nMdioChCnt, nCountChCnt, nSerChCnt : LongInt;

begin
nNodeID := 1; // ID

nMotModuleIdx := 1; // ID
nDioModuleIdx := 2; // DIO ID

110
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

nAiModuleIdx := 3; // AI ID
nAoModuleIdx := 4; // AO ID
nCountModuleIdx := 5; // ID
nCountModuleIdx := 6; // ID

// .
ceGnChannelCount_Motion ( nNodeID, nMotModuleIdx, @nAxesCnt );

// DIO DIO .
ceGnChannelCount_Dio ( nNodeID, nDioModuleIdx, @nDioChCnt );

// AI AI .
ceGnChannelCount_Ai ( nNodeID, nAiModuleIdx, @nAiChCnt );

// AO AO .
ceGnChannelCount_Ao ( nNodeID, nAoModuleIdx, @nAoChCnt );

// MDIO .
ceGnChannelCount_Mdio ( nNodeID, nMotModuleIdx, @nMdioChCnt );

// .
ceGnChannelCount_Cnt ( nNodeID, nCountModuleIdx, @nCountChCnt );

// .
ceGnChannelCount_Ser ( nNodeID, nSerModuleIdx, @nSerChCnt );

end;

111
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnChannelCount_Motion .

112
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnChannelCount_Motion .

113
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnChannelCount_Motion .

114
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnChannelCount_Motion .

115
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnChannelCount_Motion .

116
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* ceGnChannelCount_Motion .

117
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

‘ ’

118
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetLocalChInfo ()
{
long nNodeIP; // IP .
long nNodeID; // ID .
long nNodeInGlobal; // .
long nModuleIdx; // ID .
long nModuleInCh; // .

long nGlobalAxisNo = 1; // 1 . .
long nGlobalDiChNo = 2; // DI 2 . .
Long nGloablAiChNo = 1; // AI 1 . .
Long nGlobalAoChNo = 2; // AO 2 . .
Long nGlobalMdoChNo = 1; // MDO 1 . .
Long nGlobalCountChNo = 2; // 2 . .
Long nGlobalSerChNo = 1; // 1 . .

// 1 .
ceGnLocalAxis_Get ( nGlobalAxisNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

// DI 2 DIO .
ceGnLocalDIO_Get ( nGlobalDiChNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

// AI 1 AI .
ceGnLocalAI_Get ( nGlobalAiChNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

// AO 2 AO .
ceGnLocalAO_Get ( nGlobalAoChNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

119
CHAPTER 4:: GENERAL FUNCTIONS

// MDO 1 .
ceGnLocalMDIO_Get ( nGlobalMdoChNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

// 2 .
ceGnLocalCNT_Get ( nGlobalCountChNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

// 1 .
ceGnLocalSER_Get ( nGlobalCountChNo, &nNodeIP, &nNodeID, &nNodeInGlobal, &nModuleIdx,
&nModuleInCh );

Visual Basic

Private Sub OnGetLocalChInfo ()

Dim nNodeIP As Long, nNodeID As Long, nNodeInGlobal As Long


Dim nModuleIdx As Long, nModuleInCh As Long

Dim nGlobalAxisNo As Long, nGlobalDiChNo As Long, nGloablAiChNo As Long, nGlobalAoChNo As Long


Dim nGlobalMdoChNo As Long, nGlobalCountChNo As Long, nGlobalSerChNo As Long

nGlobalAxisNo = 1 ‘ 1 . .
nGlobalDiChNo = 2 ‘ DI 2 . .
nGloablAiChNo = 1 ‘ AI 1 . .
nGlobalAoChNo = 2 ‘ AO 2 . .
nGlobalMdoChNo = 1 ‘ MDO 1 . .
nGlobalCountChNo = 2 ‘ 2 . .
nGlobalSerialChNo = 1 ‘ 1 . .

‘ 1 .
Call ceGnLocalAxis_Get ( nGlobalAxisNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, nModuleInCh )

‘ DI 2 DIO .
Call ceGnLocalDIO_Get ( nGlobalDiChNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, nModuleInCh )

‘ AI 1 AI .
Call ceGnLocalAI_Get ( nGlobalAiChNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, nModuleInCh )

‘ AO 2 AO .
Call ceGnLocalAO_Get ( nGlobalAoChNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, nModuleInCh )

‘ MDO 1 .
Call ceGnLocalMDIO_Get ( nGlobalMdoChNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, _
nModuleInCh )

‘ 2 .
Call ceGnLocalCNT_Get ( nGlobalCountChNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, _
nModuleInCh )

120
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ 1 .
Call ceGnLocalSER_Get ( nGlobalSerChNo, nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, _
nModuleInCh )

End Sub

Delphi

procedure OnGetLocalChInfo ();


var
nNodeIP, nNodeID, nNodeInGlobal, nModuleIdx, nModuleInCh : LongInt;
nGlobalAxisNo, nGlobalDiChNo, nGloablAiChNo, nGlobalAoChNo : LongInt;
nGlobalMdoChNo, nGlobalCountChNo, nGlobalSerChNo : LongInt;

begin
nGlobalAxisNo := 1; ‘ 1 . .
nGlobalDiChNo := 2; ‘ DI 2 . .
nGloablAiChNo := 1; ‘ AI 1 . .
nGlobalAoChNo := 2; ‘ AO 2 . .
nGlobalMdoChNo := 1; ‘ MDO 1 . .
nGlobalCountChNo := 2; ‘ 2 . .
nGlobalSerChNo := 2; ‘ 2 . .

// 1 .
ceGnLocalAxis_Get ( nGlobalAxisNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

// DI 2 DIO .
ceGnLocalDIO_Get ( nGlobalDiChNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

// AI 1 AI .
ceGnLocalAI_Get ( nGlobalAiChNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

// AO 2 AO .
ceGnLocalAO_Get ( nGlobalAoChNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

// MDO 1 .
ceGnLocalMDIO_Get ( nGlobalMdoChNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

// 2 .
ceGnLocalCNT_Get ( nGlobalCountChNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

// 1 .
ceGnLocalSER_Get ( nGlobalSerChNo, @nNodeIP, @nNodeID, @nNodeInGlobal, @nModuleIdx,
@nModuleInCh );

End;

121
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

122
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

EXAMPLE

//* ceGnLocalAxis_Get .

123
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

124
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

EXAMPLE

//* ceGnLocalAxis_Get .

125
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

126
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

EXAMPLE

//* ceGnLocalAxis_Get .

127
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

128
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

EXAMPLE

//* ceGnLocalAxis_Get .

129
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

130
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

EXAMPLE

//* ceGnLocalAxis_Get .

131
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

132
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

EXAMPLE

//* ceGnLocalAxis_Get .

133
CHAPTER 4:: GENERAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

134
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetLocalChInfo ()
{
long nNodeID = 1; // ID.

long nMotModuleIdx = 1; // ID
long nDioModuleIdx = 2; // DIO ID
long nAiModuleIdx = 3; // AI ID
long nAoModuleIdx = 4; // AO ID
long nCountModuleIdx = 5; // ID
long nSerModuleIdx = 6; // ID

long nMotModuleInCh = 1; // .
long nDiModuleInCh = 1; // DIO DI .
long nAiModuleInCh = 1; // AI AI .
long nAoModuleInCh = 1; // AO AO .
long nMdoModuleInCh = 1; // Mdo .
long nCountModuleInCh = 1; // .
long nSerModuleInCh = 1; // .

//
long nGlobalAxisNo, nGlobalDiChNo, nGloablAiChNo, nGlobalAoChNo, nGlobalMdoChNo,
nGlobalCountChNo, nGlobalSerChNo;

// , .
ceGnGlobalAxis_Get ( nNodeID, nMotModuleIdx, nMotModuleInCh, &nGlobalAxisNo );

// DIO , .
ceGnGlobalDIO_Get (nNodeID, nDiModuleIdx, nDiModuleInCh, &nGlobalDiChNo );

// AI , .
ceGnGlobalAI_Get ( nNodeID, nAiModuleIdx, nAiModuleInCh, &nGlobalAiChNo );

// AO , .
ceGnGlobalAO_Get ( nNodeID, nAoModuleIdx, nAoModuleInCh, &nGlobalAoChNo );

// , MDO .
ceGnGlobalMDIO_Get ( nNodeID, nMotModuleIdx, nMdoModuleInCh, &nGlobalMdoChNo );

// , .
ceGnGlobalCNT_Get ( nNodeID, nCountModuleIdx, nCountModuleInCh, &nGlobalCountChNo );

// , .
ceGnGlobalSER_Get ( nNodeID, nSerModuleIdx, nSerModuleInCh, &nGlobalSerChNo );
}

135
CHAPTER 4:: GENERAL FUNCTIONS

Visual Basic

Private Sub OnGetLocalChInfo ()

Dim nNodeID As Long ‘ ID

‘ ID
Dim nMotModuleIdx As Long, nDioModuleIdx As Long, nAiModuleIdx As Long
Dim nAoModuleIdx As Long, nCountModuleIdx As Long, nSerModuleIdx As Long


Dim nMotModuleInCh As Long, nDiModuleInCh As Long, nAiModuleInCh As Long, nAoModuleInCh As Long
Dim nMdoModuleInCh As Long, nCountModuleInCh As Long, nSerModuleInCh As Long


Dim nGlobalAxisNo As Long, nGlobalDiChNo As Long, nGloablAiChNo As Long, nGlobalAoChNo As Long
Dim nGlobalMdoChNo As Long, nGlobalCountChNo As Long, nGlobalSerChNo As Long

nNodeID = 1 ‘ ID.

nMotModuleIdx = 1 ‘ ID
nDioModuleIdx = 2 ‘ DIO ID
nAiModuleIdx = 3 ‘ AI ID
nAoModuleIdx = 4 ‘ AO ID
nCountModuleIdx = 5 ‘ ID
nSerModuleIdx = 6 ‘ ID

nMotModuleInCh = 1 ‘ .
nDiModuleInCh = 1 ‘ DIO DI .
nAiModuleInCh = 1 ‘ AI AI .
nAoModuleInCh = 1 ‘ AO AO .
nMdoModuleInCh = 1 ’ Mdo .
nCountModuleInCh = 1 ‘ .
nSerModuleInCh = 1 ‘ .

‘ , .
Call ceGnGlobalAxis_Get ( nNodeID, nMotModuleIdx, nMotModuleInCh, nGlobalAxisNo )

‘ DIO , .
Call ceGnGlobalDIO_Get (nNodeID, nDiModuleIdx, nDiModuleInCh, nGlobalDiChNo )

‘ AI , .
Call ceGnGlobalAI_Get ( nNodeID, nAiModuleIdx, nAiModuleInCh, nGlobalAiChNo )

‘ AO , .
Call ceGnGlobalAO_Get ( nNodeID, nAoModuleIdx, nAoModuleInCh, nGlobalAoChNo )

136
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ , MDO .
Call ceGnGlobalMDIO_Get ( nNodeID, nMotModuleIdx, nMdoModuleInCh, nGlobalMdoChNo )

‘ , .
Call ceGnGlobalCNT_Get ( nNodeID, nCountModuleIdx, nCountModuleInCh, nGlobalCountChNo )

‘ , .
Call ceGnGlobalSER_Get ( nNodeID, nSerModuleIdx, nSerModuleInCh, nGlobalSerChNo )

End Sub

Delphi

procedure OnGetLocalChInfo ();


var
nNodeID : LongInt // ID

// ID
nMotModuleIdx, nDioModuleIdx, nAiModuleIdx, nAoModuleIdx, nCountModuleIdx, nSerModuleIdx : LongInt;

//
nMotModuleInCh, nDiModuleInCh, nAiModuleInCh, nAoModuleInCh : LongInt;
nMdoModuleInCh, nCountModuleInCh, nSerModuleInCh : LongInt;

//
nGlobalAxisNo, nGlobalDiChNo, nGloablAiChNo, nGlobalAoChNo : LongInt;
nGlobalMdoChNo, nGlobalCountChNo, nGlobalSerChNo : LongInt;

begin
nNodeID := 1; // ID.

nMotModuleIdx := 1; // ID
nDioModuleIdx := 2; // DIO ID
nAiModuleIdx := 3; // AI ID
nAoModuleIdx := 4; // AO ID
nCountModuleIdx := 5; // ID
nSerModuleIdx := 6; // ID

nMotModuleInCh := 1; // .
nDiModuleInCh := 1; // DIO DI .
nAiModuleInCh := 1; // AI AI .
nAoModuleInCh := 1; // AO AO .
nMdoModuleInCh := 1; // Mdo .
nCountModuleInCh := 1; // .
nSerModuleInCh := 1; // .

// , .
ceGnGlobalAxis_Get ( nNodeID, nMotModuleIdx, nMotModuleInCh, @nGlobalAxisNo );

137
CHAPTER 4:: GENERAL FUNCTIONS

// DIO , .
ceGnGlobalDIO_Get (nNodeID, nDiModuleIdx, nDiModuleInCh, @nGlobalDiChNo );

// AI , .
ceGnGlobalAI_Get ( nNodeID, nAiModuleIdx, nAiModuleInCh, @nGlobalAiChNo );

// AO , .
ceGnGlobalAO_Get ( nNodeID, nAoModuleIdx, nAoModuleInCh, @nGlobalAoChNo );

// , MDO .
ceGnGlobalMDIO_Get ( nNodeID, nMotModuleIdx, nMdoModuleInCh, @nGlobalMdoChNo );

// , .
ceGnGlobalCNT_Get ( nNodeID, nCountModuleIdx, nCountModuleInCh, @nGlobalCountChNo );

// , .
ceGnGlobalSER_Get ( nNodeID, nSerModuleIdx, nSerModuleInCh, @nGlobalSerChNo );

end

138
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

139
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

//* ceGnGlobalAxis_Get .

140
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

141
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

//* ceGnGlobalAxis_Get .

142
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

143
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

//* ceGnGlobalAxis_Get .

144
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

145
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

//* ceGnGlobalAxis_Get .

146
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

147
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

//* ceGnGlobalAxis_Get .

148
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

149
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

//* ceGnGlobalAxis_Get .

150
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

151
CHAPTER 4:: GENERAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetSwEmergency ()
{
long nNodeID = 1; // ID.
long nSwEmgStatus; // Emergency .

/* Emergency ,
Emergency . */

if ( ceGnEmergency_Get ( nNodeID, &nSwEmgStatus ) == ceERR_NONE )


{
switch ( nSwEmgStatus )
{
case CE_FALSE : // Emergency
ceGnEmergency_Set ( nNodeID, CE_TRUE );
break;

case CE_TRUE : // Emergency


ceGnEmergency_Set ( nNodeID, CE_FALSE );
break;
}
}
}

Visual Basic

Private Sub OnSetSwEmergency ()

Dim nNodeID As Long ‘ ID.


Dim nSwEmgStatus As Long ‘ Emergency .

nNodeID = 1

‘ Emergency ,
‘ Emergency .

If ceGnEmergency_Get ( nNodeID, nSwEmgStatus ) = ceERR_NONE Then

Select Case nSwEmgStatus


Case CE_FALSE ‘ Emergency
ceGnEmergency_Set ( nNodeID, CE_TRUE )
Case CE_TRUE ‘ Emergency
ceGnEmergency_Set ( nNodeID, CE_FALSE )
End Select
End If
End Sub

152
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Delphi

procedure OnSetSwEmergency ();


var
nNodeID : LongInt; // ID.
nSwEmgStatus : LongInt; // Emergency .

begin
nNodeID := 1;

{ Emergency ,
Emergency .}

if ceGnEmergency_Get ( nNodeID, nSwEmgStatus ) = ceERR_NONE then


begin
case nSwEmgStatus of
CE_FALSE : // Emergency
ceGnEmergency_Set ( nNodeID, CE_TRUE );
CE_TRUE : ‘ Emergency
ceGnEmergency_Set ( nNodeID, CE_FALSE );
end;
end;

end;

153
CHAPTER 5:: GENERAL MOTION FUNCTIONS

5
Chapter

General Motion Functions


Chapter:5

ceSDK .

154
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

5 General Motion Functions


5.1

“ ”

Summary of Functions
r VT_I4 cemGnServoOn_Set ( [in] VT_I4 Channel, [in] VT_I4 Enable )
SERVO-ON .
r VT_I4 cemGnServoOn_Get ([in] VT_I4 Channel, [out] VT_PI4 Enable )
SERVO-ON .
r VT_I4 cemGnAlarmReset ( [in] VT_I4 Axis, [in] VT_I4 IsReset )
(Alarm Reset) .

155
CHAPTER 5:: GENERAL MOTION FUNCTIONS

5.2

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

156
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetServoOn ()
{
long nAxisNo = 1; // Servo-On .
long nMioStates; //

/* Servo-On , ON/OFF */

if ( cemStReadMioStatuses ( nAxisNo, &nMioStates ) == ceERR_NONE )


{
if ( (nMioStates >> cemIOST_SVON) & 0x1 == CE_FALSE )
{
// Servo OFF Servo ON .
cemGnServoOn_Set ( nAxisNo, CE_TRUE );
}
else
{
// Servo ON Servo OFF .
cemGnServoOn_Set ( nAxisNo, CE_FALSE );
}
}
}

Visual Basic

Private Sub OnSetServoOn ()

Dim nAxisNo As Long ‘ Servo-On .


Dim nMioStates As Long ‘
Dim nResult As Long

nAxisNo = 1

‘ Servo-On , ON/OFF

If cemStReadMioStatuses ( nAxisNo, nMioStates ) = ceERR_NONE Then

157
CHAPTER 5:: GENERAL MOTION FUNCTIONS

Call ceGnBitShift ( nMioStates, cemIOST_SVON, nResult )

If nResult == CE_FALSE Then


‘ Servo OFF Servo ON .
Call cemGnServoOn_Set ( nAxisNo, CE_TRUE )

Else
‘ Servo ON Servo OFF .
cemGnServoOn_Set ( nAxisNo, CE_FALSE )
End If
End If

End Sub

Delphi

procedure OnSetServoOn ();


var
nAxisNo : LongInt; // Servo-On .
nMioStates : LongInt; //

begin
nAxisNo := 1;

// Servo-On , ON/OFF

if cemStReadMioStatuses ( nAxisNo, @nMioStates ) = ceERR_NONE then


begin
if ( ( nMioStates shr cemIOST_SVON ) and $1 ) = CE_FALSE then
begin
// Servo OFF Servo ON .
cemGnServoOn_Set ( nAxisNo, CE_TRUE );
end
else
// Servo ON Servo OFF .
cemGnServoOn_Set ( nAxisNo, CE_FALSE );
end;
end;

end;

158
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

159
CHAPTER 5:: GENERAL MOTION FUNCTIONS

160
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnAlarmReset ()
{
long nAxisNo = 1; // ARST .

/* ARST , . */

cemGnAlarmReset ( nAxisNo, CE_TRUE ); // ARST ON

// .
Sleep(50);

cemGnAlarmReset ( nAxisNo, CE_FALSE ); // ARST OFF


}

Visual Basic

Private Sub OnAlarmReset ()

Dim nAxisNo As Long ‘ ARST .


nAxisNo = 1

‘ ARST , .

Call cemGnAlarmReset ( nAxisNo, CE_TRUE ) ‘ ARST ON

‘ .
Sleep(50);

Call cemGnAlarmReset ( nAxisNo, CE_FALSE ) ‘ ARST OFF

End Sub

Delphi

procedure OnAlarmReset ();


var
nAxisNo : LongInt; // ARST .

begin
nAxisNo := 1;

// ARST , .
cemGnAlarmReset ( nAxisNo, CE_TRUE ); // ARST ON

161
CHAPTER 5:: GENERAL MOTION FUNCTIONS

// .
Sleep(50);

cemGnAlarmReset ( nAxisNo, CE_FALSE ); // ARST OFF

end;

162
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

6
Chapter

Environment Configuration
Chapter:6

Functions

. ,
.

163
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

6
6.1

“ ”

Summary of Functions
r VT_I4 cemCfgMioProperty_Set ( [in] VT_I4 Axis, [in] VT_I4 PropId, [in] VT_I4 PropVal )
(MIO) .
r VT_I4 cemCfgMioProperty_Get ( [in] VT_I4 Axis, [in] VT_I4 PropId, [out] VT_PI4 PropVal )
.
r VT_I4 cemCfgFilter_Set ( [in] VT_I4 Axis, [in] VT_I4 IsEnable )
(Input/Output) (Filter) .
r VT_I4 cemCfgFilter_Get ( [in] VT_I4 Axis, [out] VT_PI4 IsEnabled )
.
r VT_I4 cemCfgFilterAB_Set ( [in] VT_I4 Channel, [in] VT_I4 Target, [in] VT_I4 IsEnable )
EA/EB PA/PB .
r VT_I4 cemCfgFilterAB_Get ( [in] VT_I4 Channel, [in] VT_I4 Target, [out] VT_PI4 IsEnabled )
EA/EB PA/PB .
r VT_I4 cemCfgInMode_Set ( [in] VT_I4 Axis, [in] VT_I4 InputMode, [in] VT_I4 IsReverse )
(Feedback Pulse) .
r VT_I4 cemCfgInMode_Get ( [in] VT_I4 Axis, [out] VT_PI4 InputMode, [out] VT_PI4 IsReverse )
.
r VT_I4 cemCfgOutMode_Set ( [in] VT_I4 Axis, [in] VT_I4 OutputMode )
(Command Pulse) .
r VT_I4 cemCfgOutMode_Get ( [in] VT_I4 Axis, [out] VT_PI4 OutputMode )
.
r VT_I4 cemCfgCtrlMode_Set ( [in] VT_I4 Axis, [in] VT_I4 CtrlMode )
.
r VT_I4 cemCfgCtrlMode_Get ( [in] VT_I4 Axis, [out] VT_PI4 CtrlMode )
.
r VT_I4 cemCfgInOutRatio_Set ( [in] VT_I4 Axis, [in] VT_R8 Ratio )
(Resolution Ratio) .
r VT_I4 cemCfgInOutRatio_Get ( [in] VT_I4 Axis, [out] VT_PR8 Ratio )
.
r VT_I4 cemCfgUnitDist_Set ( [in] VT_I4 Axis, [in] VT_R8 UnitDist )
.
r VT_I4 cemCfgUnitDist_Get ( [in] VT_I4 Axis, [out] VT_PR8 UnitDist )
.
r VT_I4 cemCfgUnitSpeed_Set ( [in] VT_I4 Axis, [in] VT_R8 UnitSpeed )
.

164
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

r VT_I4 cemCfgUnitSpeed_Get ( [in] VT_I4 Axis, [out] VT_PR8 UnitSpeed )


.
r VT_I4 cemCfgSpeedRange_Set ( [in] VT_I4 Axis, [in] VT_R8 MaxPPS )
, .
r VT_I4 cemCfgSpeedRange_Get ( [in] VT_I4 Axis, [out] VT_PR8 MinPPS,
[out] VT_PR8 MaxPPS )
.

r VT_I4 cemCfgSpeedPattern_Set ( [in] VT_I4 Axis, [in] VT_I4 SpeedMode, [in] VT_R8 WorkSpeed,
[in] VT_R8 Accel, [in] VT_R8 Decel )
.
.

r VT_I4 cemCfgSpeedPattern_Get ( [in] VT_I4 Axis, [out] VT_PI4 SpeedMode,


[out] VT_PR8 WorkSpeed, [out] VT_PR8 Accel, [out] VT_PR8 Decel )
.
.

r VT_I4 cemCfgSoftLimit_Set ( [in] VT_I4 Axis, [in] VT_I4 IsEnable, [in] VT_R8 LimitN,
[in] VT_R8 LimitP )
.

r VT_I4 cemCfgSoftLimit_Get ( [in] VT_I4 Axis, [out] VT_PI4 IsEnable, [out] VT_PR8 LimitN,
[out] VT_PR8 LimitP )
.

r VT_I4 cemCfgRingCntr_Set ( [in] VT_I4 Channel, [in] VT_I4 TargCntr, [in] VT_I4 IsEnable,
[in] VT_R8 CntMax )
(Rign -Counter) .

r VT_I4 cemCfgRingCntr_Get ( [in] VT_I4 Channel, [in] VT_I4 TargCntr, [out] VT_PI4 IsEnable,
[out] VT_PR8 CntMax )
.

r VT_I4 cemCfgSeqMode_Set ( [in] VT_I4 SeqMode )


.

r VT_I4 cemCfgSeqMode_Get ( [out] VT_PI4 SeqMode )

165
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

6.2

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER


0 (cemMPID_ALM_LOGIC)

166
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

1 (cemMPID_ALM_MODE)


2 (cemMPID_CMP_LOGIC)

3 (cemMPID_DR_LOGIC) ▪

4 (cemMPID_EL_LOGIC) ▪

5 (cemMPID_EL_MODE) ▪

6 (cemMPID_ERC_LOGIC) ▪

7 (cemMPID_ERC_OUT) ▪

8 (cemMPID_EZ_LOGIC) ▪


9 (cemMPID_INP_EN) ▪

10 (cemMPID_INP_LOGIC) ▪

11 (cemMPID_LTC_LOGIC) ▪

12 (cemMPID_LTC_LTC2SRC) ▪

13 (cemMPID_ORG_LOGIC) ▪

167
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS


14 (cemMPID_SD_EN) ▪

15 (cemMPID_SD_LOGIC) ▪


16 (cemMPID_SD_LATCH)


17 (cemMPID_SD_MODE)


18 (cemMPID_STA_MODE)


19 (cemMPID_STA_TRG)


20 (cemMPID_STP_MODE)

21 (cemMPID_CLR_CNTR) •



22 (cemMPID_CLR_SIGTYPE)

168
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT


23 (cemMPID_CMP_PWIDTH)

24 (cemMPID_ERC_ONTIME)

25 (cemMPID_SVON_LOGIC) ▪

26 (cemMPID_ERC_OUT_EL)

27 (cemMPID_CNT_D_SRC)


28 (cemMPID_CNT_G_SRC) ▪



29 (cemMPID_LTC_TRGMODE)

30 (cemMPID_SLIM_EN) ▪



31 (cemMPID_OUT_MODE) ▪


169
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS



32 (cemMPID_IN_MODE)


33 (cemMPID_IN_INV)

34 (cemMPID_CEMG_EN) ▪

RETURN VALUE

‘ ’
0 (ceERR_NONE)

170
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetMioProperty_Set ()
{
long nAxisNo = 1; // MIO .
long nAlmLogic, nAlmMode; // ALM .

/* ALM ,
‘ALM Logic : B , ALM Mode : ’ . */

// ALM
if ( cemCfgMioProperty_Get ( nAxisNo, cemMPID_ALM_LOGIC, &nAlmLogic ) == ceERR_NONE )
{
if ( nAlmLogic != cemLOGIC_B )
{
// ALM ‘B ’
cemCfgMioProperty_Set ( nAxisNo, cemMPID_ALM_LOGIC, cemLOGIC_B );
}
}

// ALM ON
if ( cemCfgMioProperty_Get ( nAxisNo, cemMPID_ALM_MODE, &nAlmMode ) == ceERR_NONE )
{
if ( nAlmMode != CE_FALSE )
{
// ALM ON ‘ ’
cemCfgMioProperty_Set ( nAxisNo, cemMPID_ALM_MODE, CE_FALSE );
}
}
}

Visual Basic

Private Sub OnSetMioProperty_Set ()

Dim nAxisNo As Long ‘ MIO .


Dim nAlmLogic As Long, nAlmMode As Long ‘ ALM .

long nAxisNo = 1;

‘ ALM ,
‘ ALM Logic : B , ALM Mode : ’ .

‘ ALM
If cemCfgMioProperty_Get ( nAxisNo, cemMPID_ALM_LOGIC, nAlmLogic ) = ceERR_NONE Then
If nAlmLogic <> cemLOGIC_B Then

171
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

‘ ALM ‘B ’
Call cemCfgMioProperty_Set ( nAxisNo, cemMPID_ALM_LOGIC, cemLOGIC_B )
End If
End If

‘ ALM ON
If cemCfgMioProperty_Get ( nAxisNo, cemMPID_ALM_MODE, nAlmMode ) = ceERR_NONE Then
If nAlmMode <> CE_FALSE Then
‘ ALM ON ‘ ’
Call cemCfgMioProperty_Set ( nAxisNo, cemMPID_ALM_MODE, CE_FALSE )
End If
End If

End Sub

Delphi

procedure OnSetMioProperty_Set ();


var
nAxisNo : LongInt; // MIO .
nAlmLogic, nAlmMode : LongInt; // ALM .

begin
nAxisNo := 1;

{ ALM ,
ALM Logic : B , ALM Mode : .}

// ALM
if cemCfgMioProperty_Get ( nAxisNo, cemMPID_ALM_LOGIC, @nAlmLogic ) = ceERR_NONE then
begin
if nAlmLogic <> cemLOGIC_B then
begin
// ALM ‘B ’
cemCfgMioProperty_Set ( nAxisNo, cemMPID_ALM_LOGIC, cemLOGIC_B );
end;
end;

// ALM ON
if cemCfgMioProperty_Get ( nAxisNo, cemMPID_ALM_MODE, @nAlmMode ) = ceERR_NONE then
begin
if nAlmMode <> CE_FALSE then
begin
// ALM ON ‘ ’
cemCfgMioProperty_Set ( nAxisNo, cemMPID_ALM_MODE, CE_FALSE );
end;
end;

end;

172
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

173
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

REFERENCE

+EL, -EL, SD, ORG, ALM, INP


+DR, -DR

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetNoiseFilter ()
{
long nAxisNo = 1; // Noise Filter .
long nFilterEnable; // Noise Filter .

/* . */
if ( cemCfgFilter_Get ( nAxisNo, &nFilterEnable ) == ceERR_NONE )
{
if ( nFilterEnable != CE_TRUE )
{
// Noise Filter Enable
cemCfgFilter_Set ( nAxisNo, CE_TRUE );
}
}
}

Visual Basic

Private Sub OnSetNoiseFilter ()

Dim nAxisNo As Long ‘ Noise Filter .


Dim nFilterEnable As Long ‘ Noise Filter .

nAxisNo = 1

‘ .
If cemCfgFilter_Get ( nAxisNo, nFilterEnable ) = ceERR_NONE Then

If nFilterEnable <> CE_TRUE Then


‘ Noise Filter Enable
Call cemCfgFilter_Set ( nAxisNo, CE_TRUE )
End If
End If

End Sub

174
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Delphi

procedure OnSetNoiseFilter ();


var
nAxisNo : LongInt; // Noise Filter .
nFilterEnable : LongInt; // Noise Filter .

begin
nAxisNo := 1;

// .
if cemCfgFilter_Get ( nAxisNo, @nFilterEnable ) = ceERR_NONE then
begin
if nFilterEnable <> CE_TRUE then
begin
// Noise Filter Enable
cemCfgFilter_Set ( nAxisNo, CE_TRUE );
end;
end;

end;

175
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemAB_ENC)
1 (cemAB_PULSAR)

0 (CE_FALSE) [Default]
1 (CE_TRUE)

176
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

177
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetNoiseFilterAB ()
{
long nAxisNo = 1; // Noise Filter .
long nFilterEnable; // Noise Filter .

/* EA/EB, PA/PB ,
. */

// EA/EB
if ( cemCfgFilterAB_Get ( nAxisNo, cemAB_ENC, &nFilterEnable ) == ceERR_NONE )
{
if ( nFilterEnable != CE_TRUE )
{
// EA/EB Noise Filter Enable
cemCfgFilterAB_Set ( nAxisNo, cemAB_ ENC, CE_TRUE );
}
}

// PA/PB
if ( cemCfgFilterAB_Get ( nAxisNo, cemAB_ PULSAR, &nFilterEnable ) == ceERR_NONE )
{
if ( nFilterEnable != CE_TRUE )
{
// PA/PB Noise Filter Enable
cemCfgFilterAB_Set ( nAxisNo, cemAB_PULSAR, CE_TRUE );
}
}
}

Visual Basic

Private Sub OnSetNoiseFilterAB ()

Dim nAxisNo As Long ‘ Noise Filter .


Dim nFilterEnable As Long ‘ Noise Filter .

long nAxisNo = 1

‘ EA/EB, PA/PB ,
‘ .

‘ EA/EB
If cemCfgFilterAB_Get ( nAxisNo, cemAB_ENC, nFilterEnable ) = ceERR_NONE Then

If nFilterEnable <> CE_TRUE Then

178
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ EA/EB Noise Filter Enable


Call cemCfgFilterAB_Set ( nAxisNo, cemAB_ ENC, CE_TRUE )
End If
End If

‘ PA/PB
If cemCfgFilterAB_Get ( nAxisNo, cemAB_ PULSAR, nFilterEnable ) = ceERR_NONE Then

If nFilterEnable <> CE_TRUE Then


‘ PA/PB Noise Filter Enable
Call cemCfgFilterAB_Set ( nAxisNo, cemAB_PULSAR, CE_TRUE )
End If
End If

End Sub

Delphi

procedure OnSetNoiseFilterAB ();


var
nAxisNo : LongInt // Noise Filter .
nFilterEnable : LongInt // Noise Filter .

begin
nAxisNo := 1;

{ EA/EB, PA/PB ,
.}

// EA/EB
if cemCfgFilterAB_Get ( nAxisNo, cemAB_ENC, @nFilterEnable ) = ceERR_NONE then
begin
if nFilterEnable <> CE_TRUE then
begin
// EA/EB Noise Filter Enable
cemCfgFilterAB_Set ( nAxisNo, cemAB_ ENC, CE_TRUE );
end;
end;

// PA/PB
if cemCfgFilterAB_Get ( nAxisNo, cemAB_ PULSAR, @nFilterEnable ) = ceERR_NONE then
begin
if nFilterEnable <> CE_TRUE then
begin
// PA/PB Noise Filter Enable
cemCfgFilterAB_Set ( nAxisNo, cemAB_PULSAR, CE_TRUE );
end;
end;

end;

179
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemIMODE_AB1X)
1 (cemIMODE_AB2X)
2 (cemIMODE_AB4X)
3 (cemIMODE_CWCCW)

4 (cemIMODE_STEP)

0 (CE_FALSE)
1 (CE_TRUE)

180
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetInMode ()
{
long nAxisNo = 1; // Feedback Pulse .
long nInputMode, nIsReverse; // .

/* Feedback Pulse ,
‘4 ’ . */

//
if ( cemCfgInMode_Get ( nAxisNo, &nInputMode, &nIsReverse ) == ceERR_NONE )
{
if ( nInputMode != cemIMODE_AB4X )
{
cemCfgInMode_Set ( nAxisNo, cemIMODE_AB4X, CE_FALSE );
}
}
}

Visual Basic

Private Sub OnSetInMode ()

Dim nAxisNo As Long ‘ Feedback Pulse .


Dim nInputMode As Long, nIsReverse As Long ‘ .

long nAxisNo = 1

‘ Feedback Pulse ,
‘ ‘4 ’ .


If cemCfgInMode_Get ( nAxisNo, nInputMode, nIsReverse ) = ceERR_NONE Then

If nInputMode <> cemIMODE_AB4X Then


Call cemCfgInMode_Set ( nAxisNo, cemIMODE_AB4X, CE_FALSE )
End If
End If

End Sub

181
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

Delphi

procedure OnSetInMode ()
var
nAxisNo : LongInt; // Feedback Pulse .
nInputMode, nIsReverse : LongInt // .

begin
nAxisNo := 1;

{ Feedback Pulse ,
‘4 ’ .}

//
if cemCfgInMode_Get ( nAxisNo, @nInputMode, @nIsReverse ) = ceERR_NONE then
begin
if nInputMode <> cemIMODE_AB4X then
begin
cemCfgInMode_Set ( nAxisNo, cemIMODE_AB4X, CE_FALSE );
end;
end;

end;

182
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

“ ”

PARAMETER

Value (+) (-)


CW pin CCW pin CW pin
0
(cemOMODE_PDIR0)
1
(cemOMODE_PDIR1)
2
(cemOMODE_PDIR2)
3
(cemOMODE_PDIR3)

183
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

Value (+) (-)


CW pin CCW pin CW pin
4
(cemOMODE_CWCCW0)
5
(cemOMODE_CWCCW1)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

184
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetOutMode ()
{
long nAxisNo = 1; // Command Pulse .
long nOutputMode; // Comand Pulse .

/* Command Pulse , CWCCW0 (4 ) . */

if ( cemCfgOutMode_Get ( nAxisNo, &nOutputMode ) == ceERR_NONE )


{
if ( nOutputMode != cemOMODE_CWCCW0 )
{
cemCfgOutMode_Set ( nAxisNo, cemOMODE_CWCCW0 );
}
}
}

Visual Basic

Private Sub OnSetOutMode ()

Dim nAxisNo As Long ‘ Command Pulse .


Dim nOutputMode As Long ‘ Comand Pulse .

nAxisNo = 1

‘ Command Pulse , CWCCW0 (4 ) .

If cemCfgOutMode_Get ( nAxisNo, nOutputMode ) = ceERR_NONE Then

If nOutputMode <> cemOMODE_CWCCW0 Then


Call cemCfgOutMode_Set ( nAxisNo, cemOMODE_CWCCW0 )
End If
End If

End Sub

Delphi

procedure OnSetOutMode ();


var
nAxisNo : LongInt; // Command Pulse .
nOutputMode : LongInt; // Comand Pulse .

begin
nAxisNo := 1;

185
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

// Command Pulse , CWCCW0 (4 ) .

if cemCfgOutMode_Get ( nAxisNo, @nOutputMode ) = ceERR_NONE then


begin
if nOutputMode <> cemOMODE_CWCCW0 then
begin
cemCfgOutMode_Set ( nAxisNo, cemOMODE_CWCCW0 );
end;
end;

end;

186
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (cemCTRL_OPEN)
[Default]

1 (cemCTRL_SEMI_C)

2 (cemCTRL_FULL_C)

187
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

0 (cemCTRL_OPEN)
[Default]

1 (cemCTRL_SEMI_C)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE


188
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetCtrlMode ()
{
long nAxisNo = 1; // .
long nCtrlMode; // .

/* Semi-Closed .
. ,
, Open Loop . */

// , Semi-Closed Loop .
if ( cemCfgCtrlMode_Get ( nAxisNo, nCtrlMode ) == ceERR_NONE )
{
if ( nCtrlMode != cemCTRL_SEMI_C )
{
// Semi-Closed Loop
cemCfgCtrlMode_Set ( nAxisNo, cemCTRL_OPEN );
}
}
}

Visual Basic

Private Sub OnSetCtrlMode ()

Dim nAxisNo As Long ‘ .


Dim nCtrlMode As Long ‘ .

nAxisNo = 1

‘ Semi-Closed .
‘ . ,
‘ , Open Loop .

‘ , Semi -Closed Loop .


If cemCfgCtrlMode_Get ( nAxisNo, nCtrlMode ) = ceERR_NONE Then

If nCtrlMode <> cemCTRL_SEMI_C Then


‘ Semi-Closed Loop
Call cemCfgCtrlMode_Set ( nAxisNo, cemCTRL_OPEN )
End If
End If

End Sub

189
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

Delphi

procedure OnSetCtrlMode ();


var
nAxisNo : LongInt; // .
nCtrlMode : LongInt; // .

begin
nAxisNo := 1;

{ Semi-Closed .
‘ . ,
, Open Loop .}

// , Semi -Closed Loop .


if cemCfgCtrlMode_Get ( nAxisNo, @nCtrlMode ) = ceERR_NONE then
begin
if nCtrlMode <> cemCTRL_SEMI_C then
begin
// Semi-Closed Loop
cemCfgCtrlMode_Set ( nAxisNo, cemCTRL_OPEN );
end;
end;

end;

190
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

191
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetInOutRatio ()
{
long nAxisNo = 0; // .
double fInOutRatio; // .

/* (In/Out Ratio) . In/Out Ratio


cemStPosition_Get, cemStSpeed_Get . */

// ‘1’ .
if ( cemCfgInOutRatio_Get ( nAxisNo, &fInOutRatio ) != ceERR_NONE )
{
if ( fInOutRatio != 1.0f )
{
cemCfgInOutRatio_Set ( nAxisNo, 1.0f );
}
}
}

Visual Basic

Private Sub OnSetInOutRatio ()

Dim nAxisNo As Long ‘ .


Dim fInOutRatio As Double ‘ .

nAxisNo = 0

‘ (In/Out Ratio) . In/Out Ratio


‘ cemStPosition_Get, cemStSpeed_Get .

‘ ‘1’ .
If cemCfgInOutRatio_Get ( nAxisNo, fInOutRatio ) <> ceERR_NONE Then

192
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

If fInOutRatio <> 1 Then


Call cemCfgInOutRatio_Set ( nAxisNo, 1 )
End If
End If

End Sub

Visual Basic

private OnSetInOutRatio ();


var
nAxisNo : LongInt // .
fInOutRatio : Double // .

begin
nAxisNo : 0;

{ (In/Out Ratio) . In/Out Ratio


cemStPosition_Get, cemStSpeed_Get .}

// ‘1’ .
if cemCfgInOutRatio_Get ( nAxisNo, fInOutRatio ) <> ceERR_NONE then
begin
if fInOutRatio <> 1 then
begin
cemCfgInOutRatio_Set ( nAxisNo, 1 );
end;
end;

end;

193
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

‘ ’

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

194
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

‘ ’

195
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 1; // Unit Distance .

void OnSetUnitDist ()
{
/*
1 (Lr) = 5mm, Command (Pr) = 10000 pulse/rev

Unit distance(Du) = Pr/Lr = 10000/5 = 2000


Unit speed(Vu) = 2000

, ‘Unit Distance’ ‘Unit Speed’ 2000 mm


.
*/

cemCfgUnitDist_Set ( nAxisNo, 2000 ); // Unit Distance 2000


cemCfgUnitSpeed_Set ( nAxisNo, 2000 ); // Unit Speed 2000
}

void OnMove ()
{
// = 100(mm/s), / = 1000(mm/s^2) .
cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 100, 1000, 1000 );

// (+) 20mm . ( 20 * 2000 = 40000 .)


cemSxMoveStart ( nAxis, 20 );
}

Visual Basic

Dim nAxisNo As Long ‘ Unit Distance .


nAxisNo = 1

Private Sub OnSetUnitDist ()

‘ 1 (Lr) = 5mm, Command (Pr) = 10000 pulse/rev


‘ Unit distance(Du) = Pr/Lr = 10000/5 = 2000
‘ Unit speed(Vu) = 2000

‘, ‘Unit Distance’ ‘Unit Speed’ 2000 mm


‘ .

Call cemCfgUnitDist_Set ( nAxisNo, 2000 ) ‘ Unit Distance 2000


Call cemCfgUnitSpeed_Set ( nAxisNo, 2000 ) ‘ Unit Speed 2000

End Sub

196
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Private Sub OnMove ()

‘ = 100(mm/s), / = 1000(mm/s^2) .
Call cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 100, 1000, 1000 )

‘ (+) 20mm . ( 20 * 2000 = 40000 .)


Call cemSxMoveStart ( nAxis, 20 )

End Sub

Delphi

procedure OnSetUnitDist ();


begin
{ 1 (Lr) = 5mm, Command (Pr) = 10000 pulse/rev
Unit distance(Du) = Pr/Lr = 10000/5 = 2000
Unit speed(Vu) = 2000

, ‘Unit Distance’ ‘Unit Speed’ 2000 mm


.}

cemCfgUnitDist_Set ( cemX1, 2000 ); // Unit Distance 2000


cemCfgUnitSpeed_Set ( cemX1, 2000 ); // Unit Speed 2000

end;

procedure OnMove ();


begin
// = 100(mm/s), / = 1000(mm/s^2) .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 100, 1000, 1000 );

// (+) 20mm . ( 20 * 2000 = 40000 .)


cemSxMoveStart ( cemX1, 20 );

end;

197
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

‘ ’

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

198
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 0; // .

void OnSetUnitSpeed ()
{
/* 1 3600
( ), RPM . */

// 1 3600 1 10 .
cemCfgUnitDist_Set ( nAxisNo, 10 );

// 1rpm . 36 00(pulse) / 60(sec) = 60(pps)


cemCfgUnitSpeed_Set ( nAxisNo, 60 );
}

void OnMove ()
{
/* 200rpm/s . 100rpm
0.5sec .*/
cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 100, 200, 200 );

// 720 . 720 * 10 pulse .


cemSxMoveStart ( nAxisNo, 720 );
}

Visual Basic

199
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

Private Sub OnSetUnitSpeed ()

‘1 3600
‘ (1 ) , RPM .

‘1 3600 1 10 .
Call cemCfgUnitDist_Set ( cemX1, 10 )

‘ 1rpm . 3600(pulse) / 60(sec) = 60(pps)


Call cemCfgUnitSpeed_Set ( cemX1, 60 )

End Sub

Private Sub OnMove ()

‘ 200rpm/s . 100rpm
‘ 0.5sec .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 100, 200, 200 )

‘ 720 . 720 * 10 pulse .


Call cemSxMoveStart ( cemX1, 720 )

End Sub

Delphi

procedure OnSetUnitSpeed ()
begin
{1 3600
(1 ), RPM .}

// 1 3600 1 10 .
cemCfgUnitDist_Set ( cemX1, 10 );

// 1rpm . 3600(pulse) / 60(sec) = 60(pps)


cemCfgUnitSpeed_Set (cemX1, 60 );

end;

procedure OnMove ();


begin
{ 200rpm/s . 100rpm
0.5sec .}
cemCfgSpeedPattern_Set (cemX1, cemSMODE_T, 100, 200, 200 );

// 720 . 720 * 10 pulse .


cemSxMoveStart (cemX1, 720 );

end;

200
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

201
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetSpeedRange ()
{
long nAxisNo = 1; // .
double fMaxPPS, fMinPPS; // /

/* , 6.5MPPS .
6.5MPPS 100 ~ 6553500 PPS . */

if( cemCfgSpeedRange_Get ( nAxisNo, &fMinPPS, &fMaxPPS ) == ceERR_NONE )


{
if ( fMaxPPS < 6553500 )
{
// 6553500 .
cemCfgSpeedRange_Set ( nAxisNo, 6553500 );
}
}
}

Visual Basic

Private Sub OnSetSpeedRange ()

Dim nAxisNo As Long ‘ .


Dim fMaxPPS As Double, fMinPPS As Double ‘/

nAxisNo = 1

‘ , 6.5MPPS .
‘ 6.5MPPS 100 ~ 6553500 PPS .
If cemCfgSpeedRange_Get ( nAxisNo, fMinPPS, fMaxPPS ) = ceERR_NONE Then

If fMaxPPS < 6553500 Then


‘ 6553500 .
Call cemCfgSpeedRange_Set ( nAxisNo, 6553500 )
End If
End If

End Sub

Delphi

202
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

procedure OnSetSpeedRange ();


var
nAxisNo : LongInt; // .
fMaxPPS, fMinPPS : Double; // /

begin
nAxisNo := 1;

{ , 6.5MPPS .
6.5MPPS 100 ~ 6553500 PPS .}
if cemCfgSpeedRange_Get ( nAxisNo, @fMinPPS, @fMaxPPS ) = ceERR_NONE then
begin
if fMaxPPS < 6553500 then
begin
// 6553500 .
cemCfgSpeedRange_Set ( nAxisNo, 6553500 );
end;
end;

end;

203
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)
-1 (cemSMODE_KEEP)

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)

204
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

205
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

206
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SVacc SVdec

Linear acceleration Linear deceleration

SVacc SVdec

Time
Accel. Decel.

‘ ’

207
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetSpeedPattern ()
{
long nAxisNo = 0; // .
long nSpeedMode; // .
double fVel, fAcc, fDec;

/* 0 S-Curve ,
2000, 10000, 10000 .*/

cemCfgSpeedPattern_Set ( nAxisNo, // .
cemSMODE_S, // .
2000, //
10000, //
10000 //
);

// , , .
cemCfgSpeedPattern_Get ( nAxisNo, &nSpeedMode, &fVel, &fAcc, &fDec );
}

Visual Basic

Private Sub OnSetSpeedPattern ()

Dim nAxisNo As Long ‘ .


Dim nSpeedMode As Long ‘ .
Dim fVel As Double, fAcc As Double, fDec As Double

nAxisNo = 0

‘0 S-Curve ,
‘ 2000, 10000, 10000 .
Call cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_S, 2000, 10000, 10000 )

‘ , , .
Call cemCfgSpeedPattern_Get ( nAxisNo, nSpeedMode, fVel, fAcc, fDec )

End Sub

Delphi

208
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

procedure OnSetSpeedPattern ();


var
nSpeedMode : LongInt; // .
fVe, fAcc, fDec : Double;

begin
{0 S-Curve ,
2000, 10000, 10000 .}
cemCfgSpeedPattern_Set ( ceX1, cemSMODE_S, 2000, 10000, 10000 );

‘ , , .
cemCfgSpeedPattern_Get ( ceX1, @nSpeedMode, @fVel, @fAcc, @fDec );

end;

209
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

210
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 1; // Software Limit .

void OnSetSoftLimit ()
{
long nIsEnable; // Software Limit .
double fElNeg, fElPos;

/* Software Limit , Software Limit . */


if ( cemCfgSoftLimit_Get( nAxisNo, &nIsEnable, &fElNeg, &fElPos ) == ceERR_NONE )
{
if ( nIsEnable != CE_TRUE )
{
// Software Limit , -EL -100000, +EL 100000 .
cemCfgSoftLimit_Set ( nAxisNo, CE_TRUE, -100000, 100000 );
}
}
}

void OnMove ()
{
/* : 50000 , : 100000 SW Limit
150000 Command pulse 100000 . */
cemSxMoveStart ( nAxisNo, 100000 );
}

211
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

Visual Basic

Private Sub OnSetSoftLimit ()

Dim nIsEnable As Long ‘ Software Limit .


Dim fElNeg As Double, fElPos As Double

‘ Software Limit , Software Limit .

If cemCfgSoftLimit_Get ( cemX1, nIsEnable, fElNeg, fElPos ) = ceERR_NONE Then

If nIsEnable <> CE_TRUE Then


‘ Software Limit , -EL -100000, +EL 100000 .
Call cemCfgSoftLimit_Set ( cemX1, CE_TRUE, -100000, 100000 )
End If
End If
End Sub

Private Sub OnMove ()

‘ : 50000 , : 100000 SW Limit


‘ 150000 Command pulse 100000 .
Call cemSxMoveStart ( cemX1, 100000 )

End Sub

Delphi

procedure OnSetSoftLimit ();


var
nIsEnable : LongInt; // Software Limit .
fElNeg, fElPos : Double;

begin
// Software Limit , Software Limit .

if cemCfgSoftLimit_Get ( cemX1, @nIsEnable, @fElNeg, @fElPos ) = ceERR_NONE then


begin
if nIsEnable <> CE_TRUE then
// Software Limit , -EL -100000, +EL 100000 .
cemCfgSoftLimit_Set ( cemX1, CE_TRUE, -100000, 100000 );
end;
end;

end;

procedure OnMove ();


begin
{ : 50000 , : 100000 SW Limit
150000 Command pulse 100000 . }
cemSxMoveStart ( cemX1, 100000 );

end;

212
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemCNT_COMM)
1 (cemCNT_FEED)

0 (CE_FALSE)
1 (CE_TRUE)

213
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 1; // .

void OnSetRingCounter ()
{
long nIsEnable; // .
double fCntMax;

/* .
40000 ‘0’ .*/
cemCfgRingCntr_Set ( nAxisNo, //
cemCNT_COMM, //
CE_TRUE, // /
40000 //
);

// .
cemCfgRingCntr_Get ( nAxis, cemCNT_COMM, &nIsEnable, &fCntMax );
}

void OnMove ()
{
/* ‘0 ~ 40000’ Command Count 40000
0 Command Count . */

cemSxVMoveStart ( nAxisNo );
}

Visual Basic

Dim nAxisNo As Long ‘ .


nAxisNo = 1

Private Sub OnSetRingCounter ()

Dim nIsEnable As Long ‘ .


Dim fCntMax As Double

214
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ .
‘ 40000 ‘0’ .
Call cemCfgRingCntr_Set ( nAxisNo, cemCNT_COMM, CE_TRUE, 40000 )

‘ .
Call cemCfgRingCntr_Get ( nAxis, cemCNT_COMM, nIsEnable, fCntMax )

End Sub

Private Sub OnMove ()

‘ ‘0 ~ 40000’ Command Count 40000


‘ 0 Command Count .

Call cemSxVMoveStart ( nAxisNo )

End Sub

Delphi

procedure OnSetRingCounter ();


var
nIsEnable : LongInt; // .
fCntMax : Double;

begin
{ .
40000 ‘0’ .}
cemCfgRingCntr_Set ( cemX1, cemCNT_COMM, CE_TRUE, 40000 );

// .
cemCfgRingCntr_Get ( cemX1, cemCNT_COMM, @nIsEnable, @fCntMax );

end;

procedure OnMove ();


begin
{ ‘0 ~ 40000’ Command Count 40000
0 Command Count .}

cemSxVMoveStart ( cemX1 );

end;

215
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemSEQM_SKIP_RUN)
[Default]

1 (cemSEQM_WAIT_RUN)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

216
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetSeqMode ()
{
long nSeqMode; // .

// , cemSEQM_ SKIP_RUN .
if ( cemCfgSeqMode_Get ( &nSeqMode ) == ceERR_NONE )
{
if ( nSeqMode != cemSEQM_SKIP_RUN )
{
cemCfgSeqMode_Set ( cemSEQM_SKIP_RUN )
}
}
}

void OnMove ()
{
SxVMoveStart ( cemX1 ); //

if ( SxMoveStart ( cemX1, 100000 ) != ceERR_NONE )


{
// -5170
// cemSEQM_SKIP_RUN
// .
}
}

Visual Basic

Private Sub OnSetSeqMode ()

Dim nSeqMode As Long ‘ .

‘ , cemSEQM_ SKIP_RUN .
If cemCfgSeqMode_Get ( nSeqMode ) = ceERR_NONE Then

If nSeqMode <> cemSEQM_SKIP_RUN Then


Call cemCfgSeqMode_Set ( cemSEQM_SKIP_RUN )
End If

217
CHAPTER 6:: MOTION ENVIRONMENT CONFIGURATION FUNCTIONS

End If

End Sub

Private Sub OnMove ()

Call SxVMoveStart ( cemX1 ) ‘

If SxMoveStart ( cemX1, 100000 ) <> ceERR_NONE Then


‘ -5170
‘ cemSEQM_SKIP_RUN
‘ .
End If

End Sub

Delphi

procedure OnSetSeqMode ();


var
nSeqMode : LongInt; // .

begin
// , cemSEQM_ SKIP_RUN .
if cemCfgSeqMode_Get ( @nSeqMode ) = ceERR_NONE then
begin
if nSeqMode <> cemSEQM_SKIP_RUN then
begin
cemCfgSeqMode_Set ( cemSEQM_SKIP_RUN );
end;
end;

end;

procedure OnMove ();


begin
SxVMoveStart ( cemX1 ); ‘

if SxMoveStart ( cemX1, 100000 ) <> ceERR_NONE then


begin
{ -5170
cemSEQM_SKIP_RUN
.}
end;

end;

218
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

7
Chapter

Basic Motion Control


Chapter:7

P2P (Point to Point) , .


, , .
.

219
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

7
7.1 (Single-Axis)

7.1.1

“ ”

Summary of Functions
r VT_I4 cemSxSpeedRatio_Set ( [in] VT_I4 Axis, [in] VT_I4 SpeedMode, [in] VT_R8 VelRatio,
[in] VT_R8 AccRatio, [in] VT_R8 DecRatio )
.

r VT_I4 cemSxSpeedRatio_Get ( [in] VT_I4 Axis, [out] VT_PI4 SpeedMode, [out] VT_PR8 VelRatio,
[out] VT_PR8 AccRatio, [out] VT_PR8 DecRatio )
.

r VT_I4 cemSxMoveStart ( [in] VT_I4 Axis, [in] VT_R8 Distance )


. .
r VT_I4 cemSxMove ( [in] VT_I4 Axis, [in] VT_R8 Distance, [in] VT_I4 IsBlocking )
. .
r VT_I4 cemSxMoveToStart ( [in] VT_I4 Axis, [in] VT_R8 Position )
. .
r VT_I4 cemSxMoveTo ( [in] VT_I4 Axis, [in] VT_R8 Position, [in] VT_I4 IsBlocking )
. .
r VT_I4 cemSxVMoveStart ( [in] VT_I4 Axis, [in] VT_I4 Direction )
. .
r VT_I4 cemSxStop ( [in] VT_I4 Axis, [in] VT_I4 IsWaitComplete, [in] VT_I4 IsBlocking )
. .
r VT_I4 cemSxStopEmg ( [in] VT_I4 Axis )
. .
r VT_I4 cemSxIsDone ( [in] VT_I4 Axis, [out] VT_PI4 IsDone )
.
r VT_I4 cemSxWaitDone ( [in] VT_I4 Axis, [in] VT_I4 IsBlocking )
.
r VT_I4 cemSxTargetPos_Get ( [in] VT_I4 Channel, [out] VT_PR8 Position )
( or ) .
r VT_I4 cemSxOptIniSpeed_Set ( [in] VT_I4 Axis, [in] VT_R8 IniSpeed )
.

220
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

r VT_I4 cemSxOptIniSpeed_Get ( [in] VT_I4 Axis, [out] VT_PR8 IniSpeed )


.
r VT_I4 cemSxMoveStart2V ( [in] VT_I4 Axis, [in] VT_R8 Distance, [in] VT_R8 Vel2 )
2 . .
r VT_I4 cemSxMoveToStart2V ( [in] VT_I4 Axis, [in] VT_R8 Position, [in] VT_R8 Vel2 )
2 . .

r VT_I4 cemSxCorrection_Set ( [in] VT_I4 Axis, [in] VT_I4 CorrMode, [in] VT_R8 CorrAmount,
[in] VT_R8 CorrVel, [in] VT_I4 CntrMask )
.

r VT_I4 cemSxCorrection_Get ( [in] VT_I4 Axis, [out] VT_PI4 CorrMode, [out] VT_PR8 CorrAmount,
[out] VT_PR8 CorrVel, [out] VT_PI4 CntrMask )
.

221
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

7.1.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)

-1 (cemSMODE_KEEP)

222
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

223
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetSpeed ()
{
long nAxisNo = 1; // .

/* . cemCfgSpeedPattern_Set()
. */

cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 1000, 10000, 10000 );

cemSxSpeedRatio_Set ( nAxisNo, //
cemSMODE_T, //
50, // . 1000 * 0.5 = 500 pps
80, // . 10000 * 0.8 = 8000 pps
80 // . 10000 * 0.8 = 8000 pps
);
}

224
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

“ ” ‘ ’ ‘ ’

0 (CE_FALSE)

1 (CE_TRUE)

225
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

RETURN VALUE

‘ ’

SEE ALSO

REFERENCE

226
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 1; // .

void OnSetSpeed ()
{
// .
cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 10000, 50000, 50000 );
}

void OnMove ()
{
/* cemCfgSpeedPattern_Set()
. */
cemSxSpeedRatio_Set ( nAxisNo, cemSMODE_KEEP, 50, 100, 100 );

// ‘10000’ .
if ( cemSxMoveStart( nAxisNo, 10000 ) == ceERR_NONE )
{
// CE_FALSE UI .
cemSxWaitDone ( nAxisNo, CE_FALSE );
}

// cemSxMoveStart(), cemSxWaitDone() .
// cemSxMove ( nAxisNo, 10000, CE_FALSE );

// ‘0’ .
if ( cemSxMoveToStart ( nAxisNo, 0 ) == ceERR_NONE )
{
long nIsDone; // .
While ( 1 )
{

227
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

// .
cemSxIsDone ( nAxisNo, &nIsDone );
if ( nIsDone == CE_TRUE ) break;
}
}
}

Visual Basic

Dim nAxisNo As Long ‘ .

nAxisNo = 1

Private Sub OnSetSpeed ()


// .
Call cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 10000, 50000, 50000 )
End Sub

Private Sub OnMove ()


Dim nIsDone As Long ‘

‘ cemCfgSpeedPattern_Set()
‘ .
Call cemSxSpeedRatio_Set ( nAxisNo, cemSMODE_KEEP, 50, 100, 100 )

‘ ‘10000’ .
If cemSxMoveStart ( nAxisNo, 10000 ) = ceERR_NONE Then
‘ CE_FALSE UI .
Call cemSxWaitDone ( nAxisNo, CE_FALSE )
End If

‘ cemSxMoveStart(), cemSxWaitDone() .
‘ cemSxMove ( nAxisNo, 10000, CE_FALSE )

‘ ‘0’ .
nIsDone = CE_FALSE
If cemSxMoveToStart ( nAxisNo, 0 ) = ceERR_NONE Then

‘ .
While ( nIsDone = CE_FALSE )
Call cemSxIsDone ( nAxisNo, nIsDone )
Wend
End If

End Sub

Delphi

Procedure OnSetSpeed ();

228
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

begin
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 10000, 50000, 50000 );

end;

procedure OnMove ();


var
nIsDone : LongInt; //

begin
{ cemCfgSpeedPattern_Set()
. }
cemSxSpeedRatio_Set ( cemX1, cemSMODE_KEEP, 50, 100, 100 );

// ‘10000’ .
if cemSxMoveStart ( nAxisNo, 10000 ) = ceERR_NONE then
begin
‘ CE_FALSE UI .
cemSxWaitDone ( cemX1, CE_FALSE );
end

// cemSxMoveStart(), cemSxWaitDone() .
// cemSxMove ( cemX1, 10000, CE_FALSE );

// ‘0’ .
nIsDone := CE_FALSE;
if cemSxMoveToStart ( cemX1, 0 ) = ceERR_NONE then
begin
// .
while nIsDone = CE_FALSE do
begin
cemSxIsDone ( cemX1, @nIsDone );
end;
end;

end;

229
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

“ ” ‘ ’ ‘ ’

0 (CE_FALSE)

1 (CE_TRUE)

230
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’

SEE ALSO

REFERENCE

231
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

//* cemSxMove / cemSxMoveStart .

232
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemDIR_N)
1 (cemDIR_P)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

233
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* .
, . */

/********************************************************************************************
* (+) Move MouseDown (+) .
********************************************************************************************/
void OnJogBtnDownPos ()
{
cemSxVMoveStart ( cemX1, cemDIR_P );
}

/********************************************************************************************
* (-) Move MouseDown (-) .
********************************************************************************************/
void OnJogBtnDownNeg ()
{
cemSxVMoveStart ( cemX1, cemDIR_N );
}

/********************************************************************************************
* (+)/(-) Move MouseUp .
********************************************************************************************/
void OnJogBtnUp ()
{
// .
cemSxStop ( cemX1, // .
CE_FALSE, // .
CE_FALSE //
);
// cemSxStopEmg () .
}

Visual Basic

‘ .
‘ , .

‘ =============================================================
‘ (+) Move MouseDown (+) .
‘ =============================================================
Private Sub OnJogBtnPos_MouseDown ()
Call cemSxVMoveStart ( cemX1, cemDIR_P )
End Sub

‘ =============================================================

234
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ (-) Move MouseDown (-) .


‘ =============================================================
Private Sub OnJogBtnNeg_MouseDown ()
Call cemSxVMoveStart ( cemX1, cemDIR_N )
End Sub

‘ =============================================================
‘ (+) Move MouseUp .
‘ =============================================================
Private Sub OnJogBtnPos_MouseUp ()

‘ .
Call cemSxStop ( cemX1, CE_FALSE, CE_FALSE )
‘ cemSxStopEmg () .
End Sub

‘ =============================================================
‘ (-) Move MouseUp .
‘ =============================================================
Private Sub OnJogBtnNeg_MouseUp ()
Call cemSxStop ( cemX1, CE_FALSE, CE_FALSE )
End Sub

Delphi

{ .
, .}

// *******************************************************************************************
// (+) Move MouseDown (+) .
// ********************************************************************************************
procedure OnJogBtnPos_MouseDown ();
begin
cemSxVMoveStart ( cemX1, cemDIR_P );
end;

// *******************************************************************************************
// (-) Move MouseDown (-) .
// *******************************************************************************************
procedure OnJogBtnNeg_MouseDown ();
begin
cemSxVMoveStart ( cemX1, cemDIR_N );
end;

// *******************************************************************************************
// (+)/(-) Move MouseUp .
// *******************************************************************************************
procedure OnJogBtn_MouseUp ();
begin
// .
cemSxStop ( cemX1, CE_FALSE, CE_FALSE );
// cemSxStopEmg() .
end;

235
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

“ ” ‘ ’ ‘ ’

RETURN VALUE

‘ ’
0 (ceERR_NONE)

236
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 1; // .

void OnSetSpeed ()
{
// .
cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 1000, 5000, 5000 );
}

void OnMove ()
{
long nRetVal;

/* 2
‘10000’ . */
nRetVal = cemSxMoveStart2V ( nAxisNo, // .
10000, // .
20000 // 2

237
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

if ( nRetVal == ceERR_NONE )
{
// CE_FALSE UI .
cemSxWaitDone ( nAxisNo, CE_FALSE );
}

/* 2
‘0’ . */

if ( cemSxMoveToStart2V ( nAxisNo, 0, 20000 ) == ceERR_NONE )


{
long nIsDone; // .
While ( 1 )
{
// .
cemSxIsDone ( nAxisNo, &nIsDone );
if ( nIsDone == CE_TRUE ) break;
}
}
}

Visual Basic

Dim nAxisNo As Long ‘ .


nAxisNo = 1

Private Sub OnSetSpeed ()


‘ .
cemCfgSpeedPattern_Set ( nAxisNo, cemSMODE_T, 1000, 5000, 5000 )
End Sub

Private Sub OnMove ()

Dim nIsDone As Long ‘ .

‘ 2
‘ ‘10000’ .

If cemSxMoveStart2V ( nAxisNo, 10000, 20000 ) = ceERR_NONE Then


‘ CE_FALSE UI .
Call cemSxWaitDone ( nAxisNo, CE_FALSE )
End If

‘ 2
‘ ‘0’ .

If cemSxMoveToStart2V ( nAxisNo, 0, 20000 ) = ceERR_NONE Then

nIsDone = CE_FALSE

‘ 2 .

238
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

While ( nIsDone = CE_FALSE )


Call cemSxIsDone ( nAxisNo, nIsDone )
Wend
End If

End Sub

Delphi

procedure OnSetSpeed ();


begin
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
end;

procedure OnMove ();


var
nIsDone : LongInt; // .

begin
{ 2
‘10000’ .}

if cemSxMoveStart2V ( cemX1, 10000, 20000 ) = ceERR_NONE then


begin
// CE_FALSE UI .
cemSxWaitDone ( cemX1, CE_FALSE );
end;

{ 2
‘0’ .}

if cemSxMoveToStart2V ( cemX1, 0, 20000 ) = ceERR_NONE then


being
nIsDone := CE_FALSE;

// 2 .
while nIsDone = CE_FALSE do
begin
cemSxIsDone (cemX1, @nIsDone );
end;
end;

end;

239
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

“ ” ‘ ’ ‘ ’

RETURN VALUE

‘ ’
0 (ceERR_NONE)

240
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

//* cemSxMoveStart2V .

241
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

0 (CE_FALSE)

1 (CE_TRUE)

242
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

//* cemSxVMoveStart .

243
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* cemSxMove / cemSxMoveStart .

244
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* cemSxMove / cemSxMoveStart .

245
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetSxTargetPos ()
{
double fTargetPos; // .
double fGetPos; // .

246
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

if ( cemSxTargetPos_Get ( cemX1, &fTargetPos ) == ceERR_NONE )


{
cemStPosition_Get ( cemX1, cemCNT_COMM, &fGetPos );
if ( fTargetPos == fGetPos )
{
// .
}
}
}

Visual Basic

Private Sub OnGetSxTargetPos ()

Dim fTargetPos As Double ‘ .


Dim fGetPos As Double ‘ .

If cemSxTargetPos_Get ( cemX1, fTargetPos ) = ceERR_NONE Then

Call cemStPosition_Get ( cemX1, cemCNT_COMM, fGetPos )

If fTargetPos = fGetPos Then


‘ .
End If
End If

End Sub

Delphi

procedure OnGetSxTargetPos ();


var
fTargetPos : Double; ‘ .
fGetPos : Double; ‘ .

begin
if cemSxTargetPos_Get ( cemX1, @fTargetPos ) = ceERR_NONE then
begin
cemStPosition_Get ( cemX1, cemCNT_COMM, @fGetPos );

if fTargetPos = fGetPos then


begin
// .
end;
end;

end;

247
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetInitSpeed ()
{
long nAxisNo = 1; // .
double fIniSpeed; // .

/* , ‘100’ .
if ( cemSxOptIniSpeed_Get ( nAxisNo, &fIniSpeed ) == ceERR_NONE )

248
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

{
if ( fIniSpeed != 100 )
{
// ‘100’ .
cemSxOptIniSpeed_Set ( nAxisNo, 100 );
}
}
}

Visual Basic

Private Sub OnSetInitSpeed ()

Dim nAxisNo As Long ‘ .


Dim fIniSpeed As Long ‘ .

nAxisNo = 1

‘ , ‘100’ .
If cemSxOptIniSpeed_Get ( nAxisNo, fIniSpeed ) = ceERR_NONE Then

If fIniSpeed <> 100 Then


‘ ‘100’ .
Call cemSxOptIniSpeed_Set ( nAxisNo, 100 )
End If
End If

End Sub

Delphi

procedure OnSetInitSpeed ();


var
fIniSpeed : Double // .

begin
// , ‘100’ .
if cemSxOptIniSpeed_Get ( cemX1, @fIniSpeed ) = ceERR_NONE then
begin
if fIniSpeed <> 100 then
begin
// ‘100’ .
cemSxOptIniSpeed_Set ( nAxisNo, 100 );
end;
end;

end;

249
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemCORR_DIS)
1 (cemCORR_BACK)
2 (cemCORR_SLIP)

250
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

“ ” ‘ ’

“ ” ‘ ’

BIT0
BIT1
BIT2
BIT3

RETURN VALUE

‘ ’
0 (ceERR_NONE)

251
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAxisNo = 1; // .

void OnSetSxCorrection ()
{
// .
// ( : 1000, : 1000 PPS )
cemSxCorrection_Set( nAxisNo, // .
cemCORR_BACK, // .
1000, // .
1000, //
0x1 // .
);
}

void OnMove ()
{
// (-) (+) ( ) .
// 1000 PPS (+)1000 SxMove() .
cemSxMove ( nAxisNo, 10000, CE_FALSE );

// .
cemSxMove ( nAxisNo, 10000, CE_FALSE );

// .
// 1000PPS (-)1000 SxMove() .
cemSxMove ( nAxisNo, -10000, CE_FALSE );
}

Visual Basic

Dim nAxisNo As Long ‘ .


nAxisNo = 1

Private Sub OnSetSxCorrection ()

‘ .
‘( : 1000, : 1000 PPS )
Call cemSxCorrection_Set( nAxisNo, cemCORR_BACK, 1000, 1000, &H1 )

End Sub

Private Sub OnMove ()

252
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ (-) (+) ( ) .
‘ 1000 PPS (+)1000 SxMove() .
Call cemSxMove ( nAxisNo, 10000, CE_FALSE )

‘ .
Call cemSxMove ( nAxisNo, 10000, CE_FALSE )

‘ .
‘ 1000PPS (-)1000 SxMove() .
Call cemSxMove ( nAxisNo, -10000, CE_FALSE )

End Sub

Delphi

procedure OnSetSxCorrection ();


begin

{ .
( : 1000, : 1000 PPS ) }
cemSxCorrection_Set( cemX1, cemCORR_BACK, 1000, 1000, $1 );

end;

procedure OnMove ();


begin

{ (-) (+) ( ) .
1000 PPS (+)1000 SxMove() .}
cemSxMove ( cemX1, 10000, CE_FALSE );

// .
cemSxMove ( cemX1, 10000, CE_FALSE );

{ .
1000PPS (-)1000 SxMove() .}
cemSxMove ( cemX1, -10000, CE_FALSE )

end;

253
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

7.2 (Interpolation Motion)

“ ”

7.2.1

“ ”

“ ”

7.2.2

“ ”
“ ”

254
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

7.2.3

“ ”

Summary of Functions
r VT_I4 cemIxMapAxes ( [in] VT_I4 MapIndex, [in] VT_I4 NodeID, [in] VT_I4 MapMask1,
[in] VT_I4 MapMask2 )
(Group) .

r VT_I4 cemIxUnMap ( [in] VT_I4 MapIndex )


(Group) .
r VT_I4 cemIxSpeedPattern_Set ( [in] VT_I4 MapIndex, [in] VT_I4 IsVectorSpeed,
[in] VT_I4 SpeedMode, [in] VT_R8 Vel, [in] VT_R8 Acc, [in] VT_R8 Dec )
.
.

r VT_I4 cemIxSpeedPattern_Get ( [in] VT_I4 MapIndex, [out] VT_PI4 IsVectorSpeed,


[out] VT_PI4 SpeedMode, [out] VT_PR8 Vel, [out] VT_PR8 Acc, [out] VT_PR8 Dec )
.

r VT_I4 cemIxVelCorrMode_Set ( [in] VT_I4 MapIndex, [in] VT_I4 VelCorrOpt1,


[in] VT_I4 VelCorrOpt2 )
.

r VT_I4 cemIxVelCorrMode_Get ( [in] VT_I4 MapIndex, [out] VT_PI4 VelCorrOpt1,


[out] VT_PI4 VelCorrOpt2 )
.

r VT_I4 cemIxLine ( [in] VT_I4 MapIndex, [in] VT_PR8 DistList, [in] VT_I4 IsBlocking )
.
.
r VT_I4 cemIxLineStart ( [in] VT_I4 MapIndex, [in] VT_PR8 DistList )
. .
r VT_I4 cemIxLineTo ( [in] VT_I4 MapIndex, [in] VT_PR8 PosList, [in] VT_I4 IsBlocking )
.
.
r VT_I4 cemIxLineToStart ( [in] VT_I4 MapIndex, [in] VT_PR8 PosList )
. .
r VT_I4 cemIxArcA ( [in] VT_I4 MapIndex, [in] VT_R8 XCentOffset, [in] VT_R8 YCentOffset,
[in] VT_R8 EndAngle, [in] VT_I4 IsBlocking )
, .
.

r VT_I4 cemIxArcAStart ( [in] VT_I4 MapIndex, [in] VT_R8 XCentOffset, [in] VT_R8 YCentOffset,
[in] VT_R8 EndAngle )
, .
.

r VT_I4 cemIxArcATo ( [in] VT_I4 MapIndex, [in] VT_R8 XCent, [in] VT_R8 YCent,
[in] VT_R8 EndAngle, [in] VT_I4 IsBlocking )
, .
.

255
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

r VT_I4 cemIxArcAToStart ( [in] VT_I4 MapIndex, [in] VT_R8 XCent, [in] VT_R8 YCent,
[in] VT_R8 EndAngle )
, .
.

r VT_I4 cemIxArcP ( [in] VT_I4 MapIndex, [in] VT_R8 XCentOffset, [in] VT_R8 YCentOffset,
[in] VT_R8 XEndPointDist, [in] VT_R8 YEndPointDist, [in] VT_I4 Direction, [in] VT_I4 IsBlocking )
, .
.

r VT_I4 cemIxArcPStart ( [in] VT_I4 MapIndex, [in] VT_R8 XCentOffset, [in] VT_R8 YCentOffset,
[in] VT_R8 XEndPointDist, [in] VT_R8 YEndPointDist, [in] VT_I4 Direction )
, .
.

r VT_I4 cemIxArcPTo ( [in] VT_I4 MapIndex, [in] VT_R8 XCent, [in] VT_R8 YCent,
[in] VT_R8 XEndPos, [in] VT_R8 YEndPos, [in] VT_I4 Direction, [in] VT_I4 IsBlocking )
, .
.

r VT_I4 cemIxArcPToStart ( [in] VT_I4 MapIndex, [in] VT_R8 XCent, [in] VT_R8 YCent,
[in] VT_R8 XEndPos, [in] VT_R8 YEndPos, [in] VT_I4 Direction )
, .
.

r VT_I4 cemIxArc3P ( [in] VT_I4 MapIndex, [in] VT_R8 P2X, [in] VT_R8 P2Y, [in] VT_R8 P3X,
[in] VT_R8 P3Y, [in] VT_R8 EndAngle, [in] VT_I4 IsBlocking )
, .
.

r VT_I4 cemIxArc3PStart ( [in] VT_I4 MapIndex, [in] VT_R8 P2X, [in] VT_R8 P2Y, [in] VT_R8 P3X,
[in] VT_R8 P3Y, [in] VT_R8 EndAngle )
, .
.

r VT_I4 cemIxArc3PTo ( [in] VT_I4 MapIndex, [in] VT_R8 P2X, [in] VT_R8 P2Y, [in] VT_R8 P3X,
[in] VT_R8 P3Y, [in] VT_R8 EndAngle, [in] VT_I4 IsBlocking )
, .
.

r VT_I4 cemIxArc3PToStart ( [in] VT_I4 MapIndex, [in] VT_R8 P2X, [in] VT_R8 P2Y, [in] VT_R8 P3X,
[in] VT_R8 P3Y, [in] VT_R8 EndAngle )
, .
.
r VT_I4 cemIxStop ( [in] VT_I4 MapIndex )
.
r VT_I4 cemIxStopEmg ( [in] VT_I4 MapIndex )
.
r VT_I4 cemIxIsDone ( [in] VT_I4 MapIndex, [out] VT_PI4 IsDone )
.
r VT_I4 cemIxWaitDone ( [in] VT_I4 MapIndex, [in] VT_I4 IsBlocking )
.

256
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

7.2.4

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

“”
“ ”
“”

PARAMETER

257
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

BIT0 (cemX1_MASK)
BIT1 (cemY1_MASK)
BIT2 (cemZ1_MASK)
BIT3 (cemU1_MASK)
BIT4 (cemX2_MASK)
BIT5 (cemY2_MASK)
BIT6 (cemZ2_MASK)
BIT7 (cemU2_MASK)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define MAP0 0 //

/* 2 .
Node Master 1 : NodeID = 1, 16 Axes
Node Master 2 : NodeID = 2, 8 Axes

16 , 17 .
,2
0, 1 MapMask . */

// 2 0 1 .
cemIxMapAxes ( MAP0, 2, cemX1_MASK | cemY1_MASK, 0 );
// cemIxMapAxes ( MAP0, 2, 0x3, 0x0 );

// MAP0 .
// cemIxUnMap ( MAP0 );

258
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Visual Basic

‘ MAP0
‘ .

‘2 0 1 .
Call cemIxMapAxes ( MAP0, 2, cemX1_MASK Or cemY1_MASK, 0 )
‘ Call cemIxMapAxes ( MAP0, 2, &H3, &H0 )

‘ MAP0 .
‘ cemIxUnMap( MAP0 )

Delphi

// MAP0
// .

begin
// 2 0 1 .
cemIxMapAxes ( MAP0, 2, cemX1_MASK or cemY1_MASK, 0 );
// cemIxMapAxes ( MAP0, 2, $3, $0 );

// MAP0 .
// cemIxUnMap( MAP0 );

end;

259
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

//* cemIxMapAxes .

260
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

“”
“ ” ‘ ’
‘ ’ “
” “ ”

“”

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)

261
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

“ ” “

262
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

1000 2000 5000 2000 4000 10000


1
5000 1000 2000 10000 2000 4000
2
2000 20000 10000 1000 10000 5000
3
10000 0 0 10000 0 0
4

[ 7-2] X, Y

Dx Dy

∆P = D X + DY
2 2

263
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

Vx
Vy
DX × V DY × V
VX = VY =
D X + DY D X + DY
2 2 2 2

Di × V
Vi =
D X + DY + DZ
2 2 2

Di × V
Vi =
DX + DY + DZ + DU
2 2 2 2

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define MAP0 0 //
#define NODE_ID 1 // ID

cemIxMapAxes ( MAP0, NODE_ID, cemX1_MASK | cemY1_MASK, 0 );

/* MAP0
1000, 10000, 10000 .*/
cemIxSpeedPattern_Set ( MAP0, //
CE_TRUE, // CE_FALSE : , CE_TRUE :
cemSMODE_T, //
1000, // : , : (PPS)
10000, // : , : (PPS)
10000 // : , : (PPS)
);

/* (0, 0) , (3000, 4000) . ‘1000’


Vx = 600, Vy = 800 . */
Double fDistList[2] = {3000, 4000};
cemIxLineStart ( MAP0, fDistList );

264
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Visual Basic

Dim nMapIdx As Long ‘


Dim nNodeID As Long ‘ ID
Dim fDistList(2) As Double ‘

nMapIdx = 0
nNodeID = 1

Call cemIxMapAxes ( nMapIdx, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ MAP0
‘ 1000, 10000, 10000 .
Call cemIxSpeedPattern_Set ( nMapIdx, CE_TRUE, cemSMODE_T, 1000, 10000, 10000 )

‘ (0, 0) , (3000, 4000) .


‘ ‘1000’ Vx = 600, Vy = 800 .
fDistList(0) = 3000
fDistList(1) = 4000
cemIxLineStart ( nMapIdx, fDistList(0) )

Delphi

var
nMapIdx : LongInt; //
nNodeID : LongInt; // ID
fDistList : Array[0..1] of Double; //

begin
nMapIdx := 0;
nNodeID := 1;

cemIxMapAxes ( nMapIdx, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

{ MAP0
1000, 10000, 10000 . }
cemIxSpeedPattern_Set ( nMapIdx, CE_TRUE, cemSMODE_T, 1000, 10000, 10000 );

{ (0, 0) , (3000, 4000) .


‘1000’ Vx = 600, Vy = 800 . }
fDistList[0] := 3000;
fDistList[1] := 4000;
cemIxLineStart ( nMapIdx, @fDistList );

end;

265
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

266
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

0
1

2 [Default]

1 [Default]

RETURN VALUE

‘ ’
0 (ceERR_NONE)

267
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define MAP0 0
#define NODE_ID 1

cemIxMapAxes ( MAP0, NODE_ID, cemX1_MASK | cemY1_MASK, 0 );

/*MAP0 ,
(%) . */

Long nVelCorrOpt1 = 2, nVelCorrOpt2 = 2;


cemIxVelCorrMode_Set ( MAP0, nVelCorrOpt1, nVelCorrOpt2 );

// .
cemIxSpeedPattern_Get ( MAP0, &nVelCorrOpt1, &nVelCorrOpt2 );

Visual Basic

Dim nMapIdx As Long


Dim nNodeID As Long ID
Dim nVelCorrOpt1 As Long, nVelCorrOpt2 As Long ‘

nVelCorrOpt1 = 2 ‘ ,
nVelCorrOpt2 = 2 ‘ (%)

Call cemIxMapAxes ( nMapIdx, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ nMapIdx ,
‘ (%) . */

Call cemIxVelCorrMode_Set ( nMapIdx, nVelCorrOpt1, VelCorrOpt2 )

‘ .
Call cemIxSpeedPattern_Get ( MAP0, nVelCorrOpt1, VelCorrOpt2 )

Delphi

var
nMapIdx : LongInt; //
nNodeID : LongInt; // ID
nVelCorrOpt1, nVelCorrOpt2 : LongInt; //

begin

268
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

nVelCorrOpt1 := 2; // ,
nVelCorrOpt2 := 2; // (%)

cemIxMapAxes ( nMapIdx, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

{ nMapIdx ,
(%) .}

cemIxVelCorrMode_Set ( nMapIdx, nVelCorrOpt1, VelCorrOpt2 );

// .
cemIxSpeedPattern_Get ( MAP0, @nVelCorrOpt1, @VelCorrOpt2 );

269
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER


0 (CE_FALSE)

1 (CE_TRUE)

270
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

271
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* (Node ID : 1) 0, 1
. */

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

/*
. */
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 4000, 20000, 20000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 5000, 20000, 20000 );

/* ( )
. */
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 80, 80 );
}

void OnIxLine_Move ()
{
// .
double fDistList[2] = { 13000, 9000 };

// .
cemIxLine( nIxMap, fDistList, CE_FALSE );

//cemIxLineStart() .
//cemIxLineStart( MAP0, fDistList );
//cemIxWaitDone( MAP0, CE_FALSE );
}

Visual Basic

‘ (Node ID : 1) 0, 1
‘.

‘ MAP0

Private Sub OnSetIxConfig ()


Call cemIxMapAxes( MAP0, 1, cemX1_MASK Or cemY1_MASK, 0 )

272
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 4000, 20000, 20000 )
Call cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 5000, 20000, 20000 )

‘ .
Call cemIxSpeedPattern_Set ( MAP0, CE_FALSE, cemSMODE_T, 100, 80, 80 )

End Sub

Private Sub OnIxLine_Move ()

Dim fDistList(2) As Double


fDistList(0) = 13000
fDistList(1) = 9000

‘ .
Call cemIxLine ( MAP0, fDistList(0), CE_FALSE )

End Sub

Delphi

{ (Node ID : 1) 0, 1
.}

// MAP0

procedure OnSetIxConfig ();


begin
cemIxMapAxes( MAP0, 1, cemX1_MASK or cemY1_MASK, 0 )

{
. }
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 4000, 20000, 20000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 5000, 20000, 20000 );

// .
cemIxSpeedPattern_Set ( MAP0, CE_FALSE, cemSMODE_T, 100, 80, 80 );

end;

procedure OnIxLine_Move ();


var
fDistList : Array[0..1] of Double;

begin
fDistList[0] := 13000;
fDistList[1] := 9000;

// .
cemIxLine ( MAP0, @fDistList, CE_FALSE );

end;

273
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER


0 (CE_FALSE)

1 (CE_TRUE)

274
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

EXAMPLE

//* cemIxLine / cemIxLineStart .

275
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

276
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

277
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

REFERENCE

278
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}

void OnIxArcA_Move()
{
/* .
100%, 80%, 80% . */
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 80, 80 );

double fDistList[2];

//P1 P2 .
fDistList[0] = 1000; fDistList[1] = 0;
cemIxLine( nIxMap, fDistList, CE_FALSE );

279
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

// P2 P3 .
cemIxArcA( nIxMap, 0, 500, 90, CE_FALSE );

// P3 P4 .
fDistList[0] = 0; fDistList[1] = 1000;
cemIxLine( nIxMap, fDistList, CE_FALSE );

// P4 P5 .
cemIxArcA( nIxMap, -500, 0, 90, CE_FALSE );

// P5 P6 .
fDistList[0] = 1000; fDistList[1] = 0;
cemIxLine( nIxMap, fDistList, CE_FALSE );

// P6 P7 .
cemIxArcA( nIxMap, 0, -500, 90, CE_FALSE );

// P7 P8 .
fDistList[0] = 0; fDistList[1] = -1000;
cemIxLine( nIxMap, fDistList, CE_FALSE );

// P8 P1 .
cemIxArcA( nIxMap, 500, 0, 90, CE_FALSE );
}

Visual Basic

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID

nIxMap = 0
nNodeID = 1

Private Sub OnSetIxConfig ()

‘0 1 MAP0 .
Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 )
Call cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 )

End Sub

Private Sub OnIxArcA_Move()

Dim fDistList(2) As Double

‘ .
‘ 100%, 80%, 80% .
Call cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 80, 80 )

280
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ P1 P2 .
fDistList(0) = 1000
fDistList(1) = 0
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P2 P3 .
Call cemIxArcA ( nIxMap, 0, 500, 90, CE_FALSE )

‘ P3 P4 .
fDistList(0) = 0
fDistList(1) = 1000
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P4 P5 .
Call cemIxArcA ( nIxMap, -500, 0, 90, CE_FALSE )

‘ P5 P6 .
fDistList(0) = 1000
fDistList(1) = 0
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P6 P7 .
Call cemIxArcA ( nIxMap, 0, -500, 90, CE_FALSE )

‘ P7 P8 .
fDistList(0) = 0
fDistList(1) = -1000
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P8 P1 .
Call cemIxArcA ( nIxMap, 500, 0, 90, CE_FALSE )

End Sub

Delphi

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
begin
nIxMap := 0;
nNodeID := 1;
end;

procedure OnSetIxConfig ();


begin
// 0 1 MAP0 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );

end;

281
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

procedure OnIxArcA_Move();
var
fDistList : Array[0..1] of Double;

begin
{ .
100%, 80%, 80% .}
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 80, 80 );

// P1 P2 .
fDistList[0] := 1000;
fDistList[1] := 0;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P2 P3 .
cemIxArcA ( nIxMap, 0, 500, 90, CE_FALSE );

// P3 P4 .
fDistList[0] := 0;
fDistList[1] := 1000;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P4 P5 .
cemIxArcA ( nIxMap, -500, 0, 90, CE_FALSE );

// P5 P6 .
fDistList[0] := 1000;
fDistList[1] := 0;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P6 P7 .
cemIxArcA ( nIxMap, 0, -500, 90, CE_FALSE );

// P7 P8 .
fDistList[0] := 0;
fDistList[1] := -1000;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P8 P1 .
cemIxArcA ( nIxMap, 500, 0, 90, CE_FALSE );

end;

282
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

283
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

284
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

285
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}

void OnIxArcATo_Move ()
{
// .

286
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

double fPosList[2] = {0.0f, 0.0f};

// P1 P2 .
fPosList[0] = 500; fPosList[1] = -1000;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P2 P3 .
cemIxArcATo ( nIxMap, 500, -500, 90, CE_FALSE );

// P3 P4 .
fPosList[0] = 1000; fPosList[1] = 500;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P4 P5 .
cemIxArcATo ( nIxMap, 500, 500, 90, CE_FALSE );

// P5 P6 .
fPosList[0] = -500; fPosList[1] = 1000;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P6 P7 .
cemIxArcATo ( nIxMap, -500, 500, 90, CE_FALSE );

// P7 P8 .
fPosList[0] = -1000; fPosList[1] = -500;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

//P8 P1 .
cemIxArcATo ( nIxMap, -500, -500, 90, CE_FALSE );
}

Visual Basic

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID

nIxMap = 0
nNodeId = 1

Private Sub OnSetIxConfig ()

‘0 1 .
Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 )
Call cemCfgSpeedPattern_Set ( nAxis1, cemSMODE_T, 1000, 5000, 5000 )

End Sub

Private Sub OnIxArcATo_Move ()

287
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

Dim fPosList(2) As Double

‘ .
Call cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 )

‘ P1 P2 .
fPosList(0) = 500
fPosList(1) = -1000
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P2 P3 .
Call cemIxArcATo ( nIxMap, 500, -500, 90, CE_FALSE )

‘ P3 P4 .
fPosList(0) = 1000
fPosList(1) = 500
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P4 P5 .
Call cemIxArcATo ( nIxMap, 500, 500, 90, CE_FALSE )

‘ P5 P6 .
fPosList(0) = -500
fPosList(1) = 1000
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P6 P7 .
Call cemIxArcATo ( nIxMap, -500, 500, 90, CE_FALSE )

‘ P7 P8 .
fPosList(0) = -1000
fPosList(1) = -500
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P8 P1 .
Call cemIxArcATo ( nIxMap, -500, -500, 90, CE_FALSE )

End Sub

Delphi

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
begin
nIxMap := 0;
nNodeId := 1;
end;

procedure OnSetIxConfig ();


begin
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .

288
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );


cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );

end;

procedure OnIxArcATo_Move ()
ver
fPosList : Array[0..1] of Double;

begin
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

// P1 P2 .
fPosList[0] := 500;
fPosList[1] := -1000;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P2 P3 .
cemIxArcATo ( nIxMap, 500, -500, 90, CE_FALSE );

// P3 P4 .
fPosList[0] := 1000;
fPosList[1] := 500;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P4 P5 .
cemIxArcATo ( nIxMap, 500, 500, 90, CE_FALSE );

// P5 P6 .
fPosList[0] := -500;
fPosList[1] := 1000;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P6 P7 .
cemIxArcATo ( nIxMap, -500, 500, 90, CE_FALSE );

// P7 P8 .
fPosList[0] := -1000;
fPosList[1] := -500;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P8 P1 .
cemIxArcATo ( nIxMap, -500, -500, 90, CE_FALSE );

end;

289
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

290
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

PARAMETER

0 (cemARC_CW)
1 (cemARC_CCW)

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

291
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

REFERENCE

292
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}

void OnIxArcP_Move ()
{
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

double fDistList[2] = {0.0f, 0.0f};

293
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

// P1 P2 .
fDistList[0] = 1000; fDistList[1] = 0;
cemIxLine ( nIxMap, fDistList, CE_FALSE );

// P2 P3 .
cemIxArcP ( nIxMap, 0, 500, 500, 500, cemARC_CCW, CE_FALSE );

// P3 P4 .
fDistList[0] = 0; fDistList[1] = 1000;
cemIxLine ( nIxMap, fDistList, CE_FALSE );

// P4 P5 .
cemIxArcP ( nIxMap, -500, 0, -500, 500, cemARC_CCW, CE_FALSE );

// P5 P6 .
fDistList[0] = -1000; fDistList[1] = 0;
cemIxLine ( nIxMap, fDistList, CE_FALSE );

// P6 P7 .
cemIxArcP ( nIxMap, 0, -500, -500, -500, cemARC_CCW, CE_FALSE );

// P7 P8 .
fDistList[0] = 0; fDistList[1] = -1000;
cemIxLine ( nIxMap, fDistList, CE_FALSE );

// P8 P1 .
cemIxArcP ( nIxMap, 500, 0, 500, -500, cemARC_CCW, CE_FALSE );
}

Visual Basic

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID

nIxMap = 0
nNodeID = 1

Private Sub OnSetIxConfig ()

‘0 1 .
Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 )
Call cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 )

End Sub

Private Sub OnIxArcP_Move ()

Dim fDistList(2) As Double

‘ .
Call cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 )

294
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ P1 P2 .
fDistList(0) = 1000
fDistList(1) = 0
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P2 P3 .
Call cemIxArcP ( nIxMap, 0, 500, 500, 500, cemARC_CCW, CE_FALSE )

‘ P3 P4 .
fDistList(0) = 0
fDistList(1) = 1000
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P4 P5 .
Call cemIxArcP ( nIxMap, -500, 0, -500, 500, cemARC_CCW, CE_FALSE )

‘ P5 P6 .
fDistList(0) = -1000
fDistList(1) = 0
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P6 P7 .
Call cemIxArcP ( nIxMap, 0, -500, -500, -500, cemARC_CCW, CE_FALSE )

‘ P7 P8 .
fDistList(0) = 0
fDistList(1) = -1000
Call cemIxLine ( nIxMap, fDistList(0), CE_FALSE )

‘ P8 P1 .
Call cemIxArcP ( nIxMap, 500, 0, 500, -500, cemARC_CCW, CE_FALSE )

End Sub

Delphi

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
begin
nIxMap := 0;
nNodeId := 1;
end;

procedure OnSetIxConfig ();


begin
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );

295
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

end;

procedure OnIxArcP_Move ();


var
fDistList : Array[0..1] of Double;

begin
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

// P1 P2 .
fDistList[0] := 1000;
fDistList[1] := 0;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P2 P3 .
cemIxArcP ( nIxMap, 0, 500, 500, 500, cemARC_CCW, CE_FALSE );

// P3 P4 .
fDistList[0] := 0;
fDistList[1] := 1000;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P4 P5 .
cemIxArcP ( nIxMap, -500, 0, -500, 500, cemARC_CCW, CE_FALSE );

// P5 P6 .
fDistList[0] := -1000;
fDistList[1] := 0;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P6 P7 .
cemIxArcP ( nIxMap, 0, -500, -500, -500, cemARC_CCW, CE_FALSE );

// P7 P8 .
fDistList[0] := 0;
fDistList[1] := -1000;
cemIxLine ( nIxMap, @fDistList, CE_FALSE );

// P8 P1 .
cemIxArcP ( nIxMap, 500, 0, 500, -500, cemARC_CCW, CE_FALSE );

end;

296
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

297
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

PARAMETER

0 (cemARC_CW)
1 (cemARC_CCW)

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

298
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

299
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}

void OnIxArcPTo_Move ()
{
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

300
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

double fPosList[2] = {0.0f, 0.0f};

// P1 P2 .
fPosList[0] = 500; fPosList[1] = -1000;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P2 P3 .
cemIxArcPTo ( nIxMap, 500, -500, 1000, -500, cemARC_CCW, CE_FALSE );

// P3 P4 .
fPosList[0] = 1000; fPosList[1] = 500;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P4 P5 .
cemIxArcPTo( nIxMap, 500, 500, 500, 1000, cemARC_CCW, CE_FALSE );

// P5 P6 .
fPosList[0] = -500; fPosList[1] = 1000;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P6 P7 .
cemIxArcPTo ( nIxMap, -500, 500, -1000, 500, cemARC_CCW, CE_FALSE );

// P7 P8 .
fPosList[0] = -1000; fPosList[1] = -500;
cemIxLineTo ( nIxMap, fPosList, CE_FALSE );

// P8 P1 .
cemIxArcPTo ( nIxMap, -500, -500, -500, -1000, cemARC_CCW, CE_FALSE );
}

Visual Basic

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID

nIxMap = 0
nNodeID = 1

Private Sub OnSetIxConfig ()

‘0 1 .
Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 )
Call cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 )

End Sub

Private Sub OnIxArcPTo_Move ()

Dim fPosList(2) As Double


‘ .

301
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

Call cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 )

‘ P1 P2 .
fPosList(0) = 500
fPosList(1) = -1000
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P2 P3 .
Call cemIxArcPTo ( nIxMap, 500, -500, 1000, -500, cemARC_CCW, CE_FALSE )

‘ P3 P4 .
fPosList(0) = 1000
fPosList(1) = 500
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P4 P5 .
Call cemIxArcPTo ( nIxMap, 500, 500, 500, 1000, cemARC_CCW, CE_FALSE )

‘ P5 P6 .
fPosList(0) = -500
fPosList(1) = 1000
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P6 P7 .
Call cemIxArcPTo ( nIxMap, -500, 500, -1000, 500, cemARC_CCW, CE_FALSE )

‘ P7 P8 .
fPosList(0) = -1000
fPosList(1) = -500
Call cemIxLineTo ( nIxMap, fPosList(0), CE_FALSE )

‘ P8 P1 .
Call cemIxArcPTo ( nIxMap, -500, -500, -500, -1000, cemARC_CCW, CE_FALSE )

End Sub

Delphi

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
begin
nIxMap := 0;
nNodeId := 1;
end;

procedure OnSetIxConfig ();


begin

// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );;

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );

302
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );

end;

procedure OnIxArcPTo_Move ();


var
fPosList : Array[0..1] of Double;

begin
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

// P1 P2 .
fPosList[0] := 500;
fPosList[1] := -1000;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P2 P3 .
cemIxArcPTo ( nIxMap, 500, -500, 1000, -500, cemARC_CCW, CE_FALSE );

// P3 P4 .
fPosList[0] := 1000;
fPosList[1] := 500;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P4 P5 .
cemIxArcPTo ( nIxMap, 500, 500, 500, 1000, cemARC_CCW, CE_FALSE );

// P5 P6 .
fPosList[0] := -500;
fPosList[1] := 1000;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P6 P7 .
cemIxArcPTo ( nIxMap, -500, 500, -1000, 500, cemARC_CCW, CE_FALSE );

// P7 P8 .
fPosList[0] := -1000;
fPosList[1] := -500;
cemIxLineTo ( nIxMap, @fPosList, CE_FALSE );

// P8 P1 .
cemIxArcPTo ( nIxMap, -500, -500, -500, -1000, cemARC_CCW, CE_FALSE );

end;

303
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

304
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

305
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}

void OnIxArc3P_Move ()
{
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

double fX2 = 1000.0f, fY2 = 3000.0f;


double fX3 = 3000.0f, fY3 = 2000.0f;

/* ,( + fX2, + fY2 ), ( + fX3, + fY3 )


.*/

cemIxArc3P ( nIxMap, fX2, fY2, fX3, fY3, 360, CE_FALSE );

// cemIxArc3PStart() .
// cemIxArc3PStart ( nIxMap, fX2, fY2, fX3, fY3, 360 );
// cemIxWaitDone ( nIxMap, CE_FALSE );
}

Visual Basic

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID

306
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

nIxMap = 0
nNodeID = 1

Private Sub OnSetIxConfig ()

‘0 1 .
Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 )
Call cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 )

End Sub

Private Sub OnIxArc3P_Move ()

Dim fX2 As Double, fY2 As Double, fX3 As Double, fY3 As Double

fX2 = 1000
fY2 = 3000
fX3 = 3000
fY3 = 2000

‘ .
Call cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 )

‘ ,( + fX2, + fY2 ), ( + fX3, + fY3 )


‘ .

Call cemIxArc3P ( nIxMap, fX2, fY2, fX3, fY3, 360, CE_FALSE )

‘ cemIxArc3PStart() .
‘ cemIxArc3PStart ( nIxMap, fX2, fY2, fX3, fY3, 360 )
‘ cemIxWaitDone ( nIxMap, CE_FALSE )

End Sub

Delphi

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
begin
nIxMap := 0;
nNodeId := 1;
end;

procedure OnSetIxConfig ();

// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

307
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );

end;

procedure OnIxArc3P_Move ();


var
fX2, fY2, fX3, fY3 : Double;

begin
fX2 := 1000;
fY2 := 3000;
fX3 := 3000;
fY3 := 2000;

// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

{ ,( + fX2, + fY2 ), ( + fX3, + fY3 )


.}

cemIxArc3P ( nIxMap, fX2, fY2, fX3, fY3, 360, CE_FALSE );

{ cemIxArc3PStart() .
cemIxArc3PStart ( nIxMap, fX2, fY2, fX3, fY3, 360 )
cemIxWaitDone ( nIxMap, CE_FALSE )
}

end;

308
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

309
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

‘ ’

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

310
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nIxMap = 0; //
long nNodeID = 1; // ID

void OnSetIxConfig ()
{
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );
}

void OnIxArc3PTo_Move ()
{
// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

double fX2 = 0.0f, fY2 = 3000.0f;


double fX3 = 3000.0f, fY3 = 0.0f;

// , (fX2, fY2), (fX3, fY3) .


cemIxArc3PTo ( MAP0, fX2, fY2, fX3, fY3, 360, CE_FALSE );

// cemIxArc3PToStart() .
// cemIxArc3PToStart( MAP0, fX2, fY2, fX3, fY3, 360 );
// cemIxWaitDone( MAP0, CE_FALSE );
}

Visual Basic

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID

nIxMap = 0
nNodeID = 1

311
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

Private Sub OnSetIxConfig ()

‘0 1 .
Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 )
Call cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 )

End Sub

Private Sub OnIxArc3PTo_Move ()

Dim fX2 As Double, fY2 As Double, fX3 As Double, fY3 As Double

fX2 = 0
fY2 = 3000
fX3 = 3000
fY3 = 0

‘ .
Call cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 )

‘ , (fX2, fY2), (fX3, fY3) .


Call cemIxArc3PTo ( MAP0, fX2, fY2, fX3, fY3, 360, CE_FALSE )

‘ cemIxArc3PToStart() .
‘ cemIxArc3PToStart( MAP0, fX2, fY2, fX3, fY3, 360 )
‘ cemIxWaitDone( MAP0, CE_FALSE )

End Sub

Delphi

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
begin
nIxMap := 0;
nNodeId := 1;
end;

procedure OnSetIxConfig ();


begin
// 0 1 .
cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_T, 1000, 5000, 5000 );
cemCfgSpeedPattern_Set ( cemY1, cemSMODE_T, 1000, 5000, 5000 );

end;

312
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

procedure OnIxArc3PTo_Move ();


var
fX2, fY2, fX3, fY3 : Double;

fX2 := 0;
fY2 := 3000;
fX3 := 3000;
fY3 := 0;

// .
cemIxSpeedPattern_Set ( nIxMap, CE_FALSE, cemSMODE_T, 100, 70, 70 );

// , (fX2, fY2) , (fX3, fY3) .


cemIxArc3PTo ( MAP0, fX2, fY2, fX3, fY3, 360, CE_FALSE );

{ cemIxArc3PToStart() .
cemIxArc3PToStart( MAP0, fX2, fY2, fX3, fY3, 360 )
cemIxWaitDone( MAP0, CE_FALSE )
}

end;

313
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

314
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnIxMove ()
{
long nIxMap = 0; //
long nNodeID = 1; // ID

cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

double fDistList[2] = { 10000.0f, 20000.0f };

// .
cemIxLineStart ( nIxMap , fDistList );
Sleep (1000);

// .
cemIxStop ( nIxMap );

// cemIxStopEmg() .
// cemIxStopEmg ( nIxMap );
}

Visual Basic

Private Sub OnIxMove ()

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID
Dim fDistList(2) As Double

nIxMap = 0
nNodeID = 1

fDistList(0) = 10000
fDistList(1) = 20000

Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemIxLineStart ( nIxMap , fDistList(0) )

Sleep ( 1000 )

‘ .
Call cemIxStop ( nIxMap )

‘ cemIxStopEmg() .
‘ cemIxStopEmg ( nIxMap )

315
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

End Sub

Delphi

procedure OnIxMove ();


var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
fDistList : Array[0..1] of Double;

begin
nIxMap := 0;
nNodeID := 1;

fDistList[0] := 10000;
fDistList[1] := 20000;

cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .
cemIxLineStart ( nIxMap , @fDistList );

Sleep ( 1000 );

// .
cemIxStop ( nIxMap );

{ cemIxStopEmg() .
cemIxStopEmg ( nIxMap );
}

end;

316
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

317
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnIxMove ()
{
long nIxMap = 0; //
long nNodeID = 1; // ID

cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

double fDistList[2] = { 10000.0f, 20000.0f };

// .
cemIxLineStart ( nIxMap , fDistList );

long nIsDone = CE_FALSE;

while( !nIsDone )
{
// .
cemIxIsDone( MAP0, &nIsDone );
}

Visual Basic

Private Sub OnIxMove ()

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID
Dim nIsDone As Long ‘ .
Dim fDistList(2) As Double

nIxMap = 0
nNodeID = 1

fDistList(0) = 10000
fDistList(1) = 20000

Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
Call cemIxLineStart ( nIxMap , fDistList(0) )

nIsDone = CE_FALSE
While ( nIsDone = CE_FALSE )
cemIxIsDone ( nIxMap, nIsDone ) ‘ .
Wend

End Sub

318
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Delphi

procedure OnIxMove ();


var
nIxMap : LongInt; //
nNodeID : LongInt // ID
nIsDone : LongInt // .
fDistList : Array[0..1] of Double;

begin
nIxMap := 0;
nNodeID := 1;

fDistList[0] := 10000;
fDistList[1] := 20000;

cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .
cemIxLineStart ( nIxMap , @fDistList );

nIsDone := CE_FALSE;

while nIsDone = CE_FALSE do


begin
cemIxIsDone ( nIxMap, @nIsDone ); // .
end;

end;

319
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

320
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

321
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnIxMove ()
{
long nIxMap = 0; //
long nNodeID = 1; // ID

cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK | cemY1_MASK, 0 );

double fDistList[2] = { 10000.0f, 20000.0f };

// .
if ( cemIxLineStart ( MAP0 , fDistList ) == ceERR_NONE )
{
// .
cemIxWaitDone ( nIxMap, CE_FALSE );
}
}

Visual Basic

Private Sub OnIxMove ()

Dim nIxMap As Long ‘


Dim nNodeID As Long ‘ ID
Dim nIsDone As Long ‘ .
Dim fDistList(2) As Double

nIxMap = 0
nNodeID = 1

fDistList(0) = 10000
fDistList(1) = 20000

Call cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK Or cemY1_MASK, 0 )

‘ .
If cemIxLineStart ( MAP0 , fDistList(0) ) = ceERR_NONE Then
Call cemIxWaitDone ( nIxMap, CE_FALSE ) ‘ .
End If

End Sub

Delphi

procedure OnIxMove ();

322
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

var
nIxMap : LongInt; //
nNodeID : LongInt; // ID
nIsDone : LongInt; // .
fDistList : Arrary[0..1] of Double;

begin
nIxMap := 0;
nNodeID := 1;

fDistList[0] := 10000;
fDistList[1] := 20000;

cemIxMapAxes ( nIxMap, nNodeID, cemX1_MASK or cemY1_MASK, 0 );

// .
if cemIxLineStart ( MAP0 , @fDistList ) = ceERR_NONE then
begin
cemIxWaitDone ( nIxMap, CE_FALSE ); // .
end;

end;

323
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

7.3 (Home Return)

‘ ’

‘ ’
‘ ’

‘ ’
‘ ’

7.3.1

MODE 0 : ORG ON => Stop

324
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

ORG

(Vr)
Action

(Vr)
Vr : Reverse Speed .

ORG

EZ

EzCount = 0
Case1

Vini EzCount = 1
Case2

Vini
EzCount = 2
Case3

Vini : , cnmSxOptIniSpeed _Set

325
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

ORG

EZ

Case1

Case2

Case3

ORG

EZ

Case1

(Vr)
Case2

(Vr)

326
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

“ ” “ ”

327
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

“ ” “ ”

“ ” “ ”

EL
EZC=0 EZC=1 EZC=2

EZ

ELM=1
Case1

(Vwork)
Case2
ELM=1

(Vwork)

328
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’

‘ ’

‘ ’

‘ ’

7.3.2

“ ”

329
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

330
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

7.3.3

“ ”

Summary of Functions
r VT_I4 cemHomeConfig_Set ( [in] VT_I4 Axis, [in] VT_I4 HomeMode, [in] VT_I4 Dir,
[in] VT_I4 EzCount, [in] VT_R8 EscDist, [in] VT_R8 Offset )
. Z , ,
.

r VT_I4 cemHomeConfig_Get ( [in] VT_I4 Axis, [out] VT_PI4 HomeMode, [out] VT_PI4 Dir,
[out] VT_PI4 EzCount, [out] VT_PR8 EscDist, [out] VT_PR8 Offset )
. Z , ,
.

r VT_I4 cemHomePosClrMode_Set ( [in] VT_I4 Axis, [in] VT_I4 PosClrMode )

(Feedback Pulse) .

r VT_I4 cemHomePosClrMode_Get ( [in] VT_I4 Axis, [out] VT_PI4 PosClrMode )

r VT_I4 cemHomeSpeedPattern_Set ( [in] VT_I4 Axis, [in] VT_I4 SpeedMode, [in] VT_R8 Vel, [in]
VT_R8 Accel, [in] VT_R8 Decel, [in] VT_R8 RevVel )
. ,
.

r VT_I4 cemHomeSpeedPattern_Get ( [in] VT_I4 Axis, [out] VT_PI4 SpeedMode, [out] VT_PR8 Vel,
[out] VT_PR8 Accel, [out] VT_PR8 Decel, [out] VT_PR8 RevVel )
. ,
.

r VT_I4 cemHomeMove ( [in] VT_I4 Axis, [in] VT_I4 IsBlocking )


.
.

r VT_I4 cemHomeMoveStart ( [in] VT_I4 Axis )


.
.

VT_I4 cemHomeSuccess_Get ( [in] VT_I4 Axis, [out] VT_PI4 IsSuccess )


.
, .

VT_I4 cemHomeSuccess_Set ( [in] VT_I4 Axis, [in] VT_I4 IsSuccess )


.
.

r VT_I4 cemHomeIsBusy ( [in] VT_I4 Axis, [out] VT_PI4 IsBusy )


. .
r VT_I4 cemHomeWaitDone ( [in] VT_I4 Axis, [in] VT_I4 IsBlocking )
.

331
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

7.3.4

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (cemDIR_N)
1 (cemDIR_P)

332
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’
‘ ’ ‘ ’

RETURN VALUE

‘ ’
0 (ceERR_NONE)

333
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetHomeConfig ()
{

long nHomeMode = 0; // . 0 ~ 12 .
long nHomeDir = cemDIR_N; // . cemDIR_N: ( -) , cemDIR_P: (+)
long nEzCount = 0; // Encoder Z . ‘0’ EZ 1 .
double fEscDist = 10.0f; // . ,
// ‘1’ .
double fOffset = 0.0f; // Offset ( )

if ( cemHomeConfig_Set ( cemX1, nHomeMode, nHomeDir, nEzCount, fEscDist, fOffset ) != ceERR_NONE )


{
OutputDebugString ( “cemHomeConfig_Get has been failed” );
}

// cemHomeConf_Get() .
// cemHomeConfig_Get ( cemX1, &nHomeMode, &nHomeDir, &nEzCount, &fEscDist, &fOffset );
}

Visual Basic

Private Sub OnSetHomeConfig ()

Dim nHMode As Long ‘ .


Dim nHomeDir As Long ‘ .
Dim nEzCount As Long ‘ Encoder Z .
Dim fEscDist As Double ‘ .
Dim fOffset As Double ‘ Offset ( )

nHomeMode = 0 ‘ 0
nHmDir = cemDIR_N ‘ (-).
nEzCount = 0 ‘ Encoder Z 1 .
fEscDist = 10 ‘ ‘1’ .
fOffset = 0 ‘ Offset .

If cemHomeConfig_Set ( cemX1, nHomeMode, nHmDir, nEzCount, fEscDist, fOffset ) <> ceERR_NONE Then
MsgBox ( “cemHomeConfig_Get has been failed” )
End If

End Sub

334
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Delphi

procedure OnSetHomeConfig ();


var
nHomeMode, nHomeDir, nEzCount : LongInt;
fEscDist, fOffset : Double;

begin
nHomeMode := 0; // . 0 ~ 12 .
nHmDir := cemDIR_N; // . cemDIR_N: ( -) , cemDIR_P: (+)
nEzCount := 0; // Encoder Z . 0 EZ 1 .
fEscDist := 10; // . ,
// 1 .
fOffset := 0; // Offset ( ).

if cemHomeConfig_Set ( cemX1, nHomeMode, nHmDir, nEzCount, fEscDist, fOffset ) <> ceERR_NONE then
begin
ShowMessage ( ‘cemHomeConfig_Get has been failed’ );
end;

end;

335
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

-1 (cemHPCM_DISABLE)

0 (cemHPCM_M0) ‘ ’

1 (cemHPCM_M1)
‘ ’

2 (cemHPCM_M2)

336
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

P C = PF = 0 Clear

ON

OFF
ORG

Action

[ 0]

ON ON

OFF
ORG

(Vr)
Action

(Vr)

P C = PF = 0 Clear

[ 1 ]

337
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS



• ‘ ’
‘ ’

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetHomePosClrMode ()
{
long nPosClrMode = 0; // .

/* */
// -1 (cemHPCM_DISABLE) : .
// 0 (cemHPCM_M0) : HW ON .
// 1 (cemHPCM_M1) : HW .
// 2 (cemHPCM_M2) : 0 Command Feedback .

// , 2 .
if (cemHomePosClrMode_Get ( cemX1, &nPosClrMode ) == ceERR_NONE )
{
if ( nPosClrMode != cemHPCM_M2 )
{
cemHomePosClrMode_Set ( cemX1, cemHPCM_M2 );
}
}
}

Visual Basic

Private Sub OnSetHomePosClrMode ()

Dim nPosClrMode As Long ‘

‘ , 2 .
If cemHomePosClrMode_Get ( cemX1, nPosClrMode ) = ceERR_NONE Then

If nPosClrMode <> cemHPCM_M2 Then


Call cemHomePosClrMode_Set ( cemX1, cemHPCM_M2 )
End If
End If

End Sub

Delphi

338
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

procedure OnSetHomePosClrMode ();


var
nPosClrMode : LongInt; //

begin
// , 2 .
if cemHomePosClrMode_Get ( cemX1, @nPosClrMode ) = ceERR_NONE then
begin
if nPosClrMode <> cemHPCM_M2 then
begin
cemHomePosClrMode_Set ( cemX1, cemHPCM_M2 );
end;
end;

end;

339
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)
-1 (cemSMODE_KEEP)

0 (cemSMODE_C)
1 (cemSMODE_T)
2 (cemSMODE_S)

340
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

341
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetHomeSpeedPattern ()
{
long nHSpdMode; // .
double fHVel, fHAcc, fHDec, fHRevVal;

/* S-Curve ,
1000, 10000, 10000, Vr 10 .*/
cemHomeSpeedPattern_Set ( cemX1, // .
cemSMODE_S, // .
1000, //
10000, //
10000, //
10 // Reverse Speed
);

// , , .
cemHomeSpeedPattern_Get ( cemX1, &nHSpdMode, &fHVel, &fHAcc, &fHDec, &fHRevVal );
}

Visual Basic

Private Sub OnSetHomeSpeedPattern ()

Dim nHSpdMode As Long ‘ .


Dim fHVel As Double, fHAcc As Double, fHec As Double, fRevVal As Double

‘0 S-Curve ,
‘ 2000, 10000, 10000, Vr 10 .
Call cemHomeSpeedPattern_Set ( cemX1, cemSMODE_S, 2000, 10000, 10000 )

‘ , , .
Call cemHomeSpeedPattern_Get ( cemX1, nHSpdMode, fHVel, fHAcc, fHDec, fHRevVal );

End Sub

Delphi

procedure OnSetHomeSpeedPattern ();


var
nHSpdMode : LongInt; // .
fHVel, fHAcc, fDec : Double;

342
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

begin
{0 S-Curve ,
2000, 10000, 10000, Vr 10 .}
cemHomeSpeedPattern_Set ( cemX1, cemSMODE_S, 2000, 10000, 10000, 10 );

// , , .
cemHomeSpeedPattern_Get ( cemX1, @nHSpdMode, @fHVel, @fHAcc, @fHDec, @fRevVal );

end;

343
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

344
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

345
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/*********************************************************************
* .
*********************************************************************/
void OnSetHomeConfig ()
{
/* = 0, = (-), Ez Count = 0,
= 10, Offset = 0 . */
cemHomeConfig_Set ( cemX1, 0, cemDIR_N, 0, 10, 0 );
cemHomeConfig_Set ( cemY1, 0, cemDIR_N, 0, 10, 0 );

/* . */
cemHomeSpeedPattern_Set ( cemX1, cemSMODE_S, 1000, 10000, 10000, 10 );
cemHomeSpeedPattern_Set ( cemY1, cemSMODE_S, 1000, 10000, 10000, 10 );
}

/*********************************************************************
* .
*********************************************************************/
void OnHomeReturn ()
{
long nIsHomming = CE_TRUE; //

/* cemHomeIsBusy() */
if ( cemHomeMoveStart ( cemX1 ) == ceERR_NONE )
{
While ( nIsHomming )
{
cemHomeIsBusy ( cemX1, &nIsHomming );
// 0 (CE_FALSE) : .
// 1 (CE_TRUE) : .
}
}

// cemHomeWaitDone() .
if ( cemHomeMoveStart ( cemY1 ) == ceERR_NONE )
{
cemHomeWaitDone ( cemY1, CE_FALSE ); // .
}

// cemHomeMoveStart(), cemHomeWaitDone() .
// cemHomeMove ( cemY1, CE_FALSE );
}

/*********************************************************************
* .
*********************************************************************/
void OnGetHomeSuccess ()

346
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

{
long nIsSuccess;

// .
cemHomeSuccess_Get ( cemX1, &nIsSuccess );

if ( nIsSuccess == CE_TRUE )
{
// .
}
}

Visual Basic

‘ ==============================================
‘ .
‘==============================================
Private Sub OnSetHomeConfig ()

‘ = 0, = (-), Ez Count = 0,
‘ = 10, Offset = 0 .
Call cemHomeConfig_Set ( cemX1, 0, cemDIR_N, 0, 10, 0 )
Call cemHomeConfig_Set ( cemY1, 0, cemDIR_N, 0, 10, 0 )

‘ .
Call cemHomeSpeedPattern_Set ( cemX1, cemSMODE_S, 1000, 10000, 10000, 10 )
Call cemHomeSpeedPattern_Set ( cemY1, cemSMODE_S, 1000, 10000, 10000, 10 )

End Sub

‘ ==============================================
‘ .
‘ ==============================================
Private OnHomeReturn ()

Dim nIsHomming As Long ‘


nIsHomming = CE_TRUE

‘ cemHomeIsBusy()
If cemHomeMoveStart ( cemX1 ) = ceERR_NONE Then

While ( nIsHomming = CE_TRUE )


‘ 0 (CE_FALSE) : .
‘ 1 (CE_TRUE) : .
Call cemHomeIsBusy ( cemX1, nIsHomming )
Wend
End If

‘ cemHomeWaitDone() .
If cemHomeMoveStart ( cemY1 ) = ceERR_NONE Then
Call cemHomeWaitDone ( cemY1, CE_FALSE ) ‘ .
End If

347
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

‘ cemHomeMoveStart(), cemHomeWaitDone() .
‘ cemHomeMove( cemY1, CE_FALSE )

End Sub

‘ ==============================================
‘ .
‘ ==============================================
Private Sub OnGetHomeSuccess ()

Dim nIsSuccess As Long ‘ .

‘ .
Call cemHomeSuccess_Get ( cemX1, nIsSuccess )

‘ .
If nIsSuccess = CE_TRUE Then
MsgBox ( "Home return success" )
End If

End Sub

Delphi

// ********************************************************************
// .
// ********************************************************************
procedure OnSetHomeConfig ();
begin
{ = 0, = (-), Ez Count = 0,
= 10, Offset = 0 .}
cemHomeConfig_Set ( cemX1, 0, cemDIR_N, 0, 10, 0 );
cemHomeConfig_Set ( cemY1, 0, cemDIR_N, 0, 10, 0 );

// .
cemHomeSpeedPattern_Set ( cemX1, cemSMODE_S, 1000, 10000, 10000, 10 );
cemHomeSpeedPattern_Set ( cemY1, cemSMODE_S, 1000, 10000, 10000, 10 );

end;

// ********************************************************************
// .
// ********************************************************************
procedure OnHomeReturn ();
var
nIsHomming : LongInt //

begin
// cemHomeIsBusy()
if cemHomeMoveStart ( cemX1 ) = ceERR_NONE then
begin
nIsHomming := CE_TRUE;
while nIsHomming = CE_TRUE do

348
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

begin
{ 0 (CE_FALSE) : .
1 (CE_TRUE) : .}
cemHomeIsBusy ( cemX1, @nIsHomming );
end;
end;

// cemHomeWaitDone() .
if cemHomeMoveStart ( cemY1 ) = ceERR_NONE then
begin
cemHomeWaitDone ( cemY1, CE_FALSE ); // .
end

// cemHomeMoveStart(), cemHomeWaitDone() .
// cemHomeMove( cemY1, CE_FALSE );

end;

// ********************************************************************
// .
// ********************************************************************
procedure OnGetHomeSuccess ();
var
nIsSuccess : LongInt // .

begin
// .
cemHomeSuccess_Get ( cemX1, @nIsSuccess );

// .
if nIsSuccess = CE_TRUE then
begin
ShowMessage ( ‘Home return success’ );
end;

end;

349
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

Value Meaning

0 (CE_FALSE)

1 (CE_TRUE)

Value Meaning

0 (CE_FALSE)

1 (CE_TRUE)

350
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

EXAMPLE

//* cemHomeMove / cemHomeMoveStart .

351
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

Value Meaning
0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

352
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

//* cemHomeMove / cemHomeMoveStart .

353
CHAPTER 7:: BASIC MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

354
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

//* cemHomeMove / cemHomeMoveStart .

355
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

Chapter

8
Chapter:8Advanced Motion Control
.
. ,
.

356
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

8.1 (Overriding)

8.1.1

Summary of Functions
r VT_I4 cemOverrideSpeedSet ( [in] VT_I4 Axis )
.

r VT_I4 cemOverrideMove ( [in] VT_I4 Axis, [in] VT_R8 NewDistance, [in] VT_I4 IsHardApply,
[out] VT_PI4 AppliedState )
, .

r VT_I4 cemOverrideMoveTo ( [in] VT_I4 Axis, [in] VT_R8 NewPosition, [in] VT_I4 IsHardApply, [out]
VT_PI4 AppliedState)
, .

357
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

8.1.2

I N F O R M A T I O N

1
!
!
:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

358
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/*
. */

void OnMove ()
{
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 1000, 10000, 10000 );

// .
cemSxMoveStart ( cemX1, cemDIR_P );
}

void OnOverrideSpeedHigh ()
{
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 2000, 10000, 10000 );
// cemSxSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 200, 100, 100 );

// .
cemOverrideSpeedSet ( cemX1 );
}

void OnOverrideSpeedLow ()
{
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 500, 10000, 10000 );
// cemSxSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 50, 100, 100 );

// .
cemOverrideSpeedSet ( cemX1 );
}

Visual Basic


‘ .

Private Sub OnMove ()

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 1000, 10000, 10000 )

‘ .
Call cemSxMoveStart ( cemX1, cemDIR_P )

359
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

End Sub

Private Sub OnOverrideSpeedHigh ()

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 2000, 10000, 10000 )
‘ cemSxSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 200, 100, 100 )

‘ .
Call cemOverrideSpeedSet ( cemX1 )

End Sub

Private Sub OnOverrideSpeedLow ()

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 500, 10000, 10000 )
‘ cemSxSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 50, 100, 100 )

‘ .
Call cemOverrideSpeedSet ( cemX1 )

End Sub

Delphi

{
.}

procedure OnMove ();


begin
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 1000, 10000, 10000 );

// .
cemSxMoveStart ( cemX1, cemDIR_P );
end;

procedure OnOverrideSpeedHigh ()
begin
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 2000, 10000, 10000 );
// cemSxSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 200, 100, 100 );

// .
cemOverrideSpeedSet ( cemX1 );

end;

procedure OnOverrideSpeedLow ();


begin

360
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 500, 10000, 10000 );
// cemSxSpeedPattern_Set ( cemX1, cemSMODE_KEEP, 50, 100, 100 );

// .
cemOverrideSpeedSet ( cemX1 );

end;

361
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

362
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

REFERENCE

‘ ’
‘ ’

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* ,
. */

/* ‘nIsAbsMode’ / .
0 (CE_FALSE) : / 1 (CE_TRUE) : */

void OnOverrideMove ()
{
long nAppliedState; //
long nIsStopped; //

cemSxIsDone ( cemX1, &nIsStopped );


// 0 (CE_FALSE ) :
// 1 (CE_TRUE ) :

if ( nIsStopped == CE_TRUE ) // .
{
if ( nIsAbsMode == CE_TRUE )
{
cemSxMoveToStart ( cemX1, 10000 );
}
else
{
cemSxMoveStart ( cemX1, 10000 );
}
}
else // .
{
/* IsHardApply CE_TRUE . */
if ( nIsAbsMode == CE_TRUE )
{
cemOverrideMoveTo ( cemX1, 20000, CE_TRUE, &nAppliedState );

363
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

}
else
{
cemOverrideMove ( cemX1, 20000, CE_TRUE, &nAppliedState );
}
}
}

Visual Basic

‘ ,
‘ .

‘ ‘nIsAbsMode’ / .
‘ 0 (CE_FALSE) : / 1 (CE_TRUE) :

Private Sub OnOverrideMove ()

Dim nAppliedState As Long ‘


Dim nIsStopped As Long ‘

Call cemSxIsDone ( cemX1, nIsStopped )


‘ 0 (CE_FALSE ) :
‘ 1 (CE_TRUE ) :

If nIsStopped = CE_TRUE Then ‘ .


If nIsAbsMode = CE_TRUE Then
Call cemSxMoveToStart ( cemX1, 10000 )
Else
Call cemSxMoveStart ( cemX1, 10000 )
End If

Else ‘ .

‘ IsHardApply CE_TRUE .
If nIsAbsMode = CE_TRUE Then
Call cemOverrideMoveTo ( cemX1, 20000, CE_TRUE, nAppliedState )
Else
Call cemOverrideMove ( cemX1, 20000, CE_TRUE, nAppliedState )
End If
End If

End Sub

Delphi

{ ,
.}

{ ‘nIsAbsMode’ / .

364
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

0 (CE_FALSE) : / 1 (CE_TRUE) : }

procedure OnOverrideMove ();


var
nAppliedState : LongInt; //
nIsStopped : LongInt; //

cemSxIsDone ( cemX1, @nIsStopped );


// 0 (CE_FALSE ) :
// 1 (CE_TRUE ) :

if nIsStopped = CE_TRUE then // .


begin
if nIsAbsMode = CE_TRUE then
begin
cemSxMoveToStart ( cemX1, 10000 );
end;

else
begin
cemSxMoveStart ( cemX1, 10000 );
end;
end;

else // .
begin
// IsHardApply CE_TRUE .
if nIsAbsMode = CE_TRUE then
begin
cemOverrideMoveTo ( cemX1, 20000, CE_TRUE, @nAppliedState );
end;

else
begin
cemOverrideMove ( cemX1, 20000, CE_TRUE, @nAppliedState );
end;
end;

end;

365
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (CE_FALSE)

1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

366
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

SEE ALSO

REFERENCE

‘ ’
‘ ’

EXAMPLE

//* cemOverrideMoveTo .

367
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

8.2 Master/Slave

8.2.1

Summary of Functions
r VT_I4 cemMsRegisterSlave ( [in] VT_I4 Axis, [in] VT_R8 MaxSpeed, [in] VT_I4 IsInverse )
, Master/Slave Slave .
Master , Slave Master .

r VT_I4 cemMsUnregisterSlave ( [in] VT_I4 Axis )


, Master/Slave Slave .
r VT_I4 cemMsCheckSlaveState ( [in] VT_I4 SlaveAxis, [out] VT_PI4 SlaveState )
, Master/Slave Slave
.

r VT_I4 cemMsMasterAxis_Get ( [in] VT_I4 SlaveAxis, [out] VT_PI4 MasterAxis )


, Master/Slave Master , Slave Master
.

368
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

8.2.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

“ ”

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

369
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

REFERENCE

“ ”
“ ”

“ ”

370
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/*****************************************************************************
* Master/Slave .
*****************************************************************************/
void OnSetMsRegisterSalve ()
{
long nRetVal;

// 1 . 0(cemX1) .
nRetVal = cemMsRegisterSlave ( cemY1, //
655350, //
// .
CE_FALSE //
);
if ( nRetVal == ceERR_NONE )
{
// .
long nSlaveState;
cemMsCheckSlaveState ( cemY1, &nSlaveState );

if ( nSlaveState != CE_TRUE )
{
OutputDebugString ( “Slave axis registered failed” );
}

// .
long nMasterAxis;
cemMsMasterAxis_Get ( cemY1, &nMasterAxis );

if ( nMasterAxis != cemX1 )
{
OutputDebugString ( “Slave axis registered failed” );
}
}
}

/*****************************************************************************
* .
* .
*****************************************************************************/
void OnMove ()
{
// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 5000, 30000, 30000 );

// .
cemSxMove ( cemX1, 15000, CE_FALSE );
}

Visual Basic

371
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

‘ ===================================================
‘ Master/Slave .
‘ ===================================================
Private Sub OnSetMsRegisterSalve ()

Dim nSlaveState As Long ‘ .


Dim nMasterAxis As Long ‘ .

‘1 . 0(cemX1) .
If cemMsRegisterSlave ( cemY1, 655350, CE_FALSE ) = ceERR_NONE Then

‘ .
Call cemMsCheckSlaveState ( cemY1, nSlaveState )

If nSlaveState <> CE_TRUE Then


MsgBox ( “Slave axis registered failed” )
End If

‘ .
Call cemMsMasterAxis_Get ( cemY1, nMasterAxis )

If nMasterAxis <> cemX1 Then


MsgBox ( “Slave axis registered failed” )
End If
End If

End Sub

‘ ===================================================
‘ .
‘ .
‘ ===================================================
Private Sub OnMove ()

‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 5000, 30000, 30000 )

‘ .
Call cemSxMove ( cemX1, 15000, CE_FALSE )

End Sub

Delphi

// ****************************************************************************
// Master/Slave .
// ****************************************************************************
procedure OnSetMsRegisterSalve ();
var
nSlaveState : LongInt; // .
nMasterAxis : LongInt; // .

372
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

begin

// 1 . 0(cemX1) .
if cemMsRegisterSlave ( cemY1, 655350, CE_FALSE ) = ceERR_NONE then
begin
// .
cemMsCheckSlaveState ( cemY1, @nSlaveState );

if nSlaveState <> CE_TRUE then


begin
ShowMessage ( ‘Slave axis registered failed’ );
end;

// .
cemMsMasterAxis_Get ( cemY1, @nMasterAxis );

if nMasterAxis <> cemX1 then


begin
ShowMessage ( ‘Slave axis registered failed’ );
end;
end;

end;

// ****************************************************************************
// .
// .
// ****************************************************************************
procedure OnMove ();
begin

// .
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 5000, 30000, 30000 );

// .
cemSxMove ( cemX1, 15000, CE_FALSE );

end;

373
CHAPTER 8:: ADVANCED MOTION CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

-1

0
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

//* cemMsCheckSlaveState .

374
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

EXAMPLE

//* cemMsCheckSlaveState .

375
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

Chapter

9
Input signals related to motion
Chapter::9

control by external signal


. MPG
, . ,
.

376
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

9
9.1 Manual Pulsar (PA/PB)


f max = V work × f u

377
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS


378
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

9.1.1

Summary of Functions
r VT_I4 cemPlsrInMode_Set ( [in] VT_I4 Channel, [in] VT_I4 InputMode, [in] VT_I4 IsInverse )
, Manual Pulsar .
r VT_I4 cemPlsrInMode_Get ( [in] VT_I4 Channel, [out] VT_PI4 InputMode, [out] VT_PI4 IsInverse )
, Manual Pulsar .
r VT_I4 cemPlsrGain_Set ( [in] VT_I4 Channel, [in] VT_I4 GainFactor, [in] VT_I4 DivFactor )
, Manual Pulsar PA/PB (Command Pulse)
.

r VT_I4 cemPlsrGain_Get ( [in] VT_I4 Channel, [out] VT_PI4 GainFactor, [out] VT_PI4 DivFactor )
, Manual Pulsar PA/PB
.

r VT_I4 cemPlsrHomeMoveStart ( [in] VT_I4 Channel, [in] VT_I4 HomeType )


, Manual Pulsar .
.

r VT_I4 cemPlsrMove ( [in] VT_I4 Channel, [in] VT_R8 Distance, [in] VT_I4 IsBlocking )
, Manual Pulsar
. .

r VT_I4 cemPlsrMoveStart ( [in] VT_I4 Channel, [in] VT_R8 Distance )


, Manual Pulsar
. .

r VT_I4 cemPlsrMoveTo ( [in] VT_I4 Channel, [in] VT_R8 Position, [in] VT_I4 IsBlocking )
, Manual Pulsar
. .

r VT_I4 cemPlsrMoveToStart ( [in] VT_I4 Channel, [in] VT_R8 Position )


, Manual Pulsar
. .

r VT_I4 cemPlsrVMoveStart ( [in] VT_I4 Channel )


, Manual Pulsar .
.

379
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

9.1.2

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0 (cemIMODE_AB1X)
1 (cemIMODE_AB2X)
2 (cemIMODE_AB4X)
3 (cemIMODE_CWCCW) – –

380
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

PA

PB

OUTPUT
+/- PA PB .

PA

PB

OUTPUT
+/- PA PB .

381
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

PA

PB

OUTPUT
+/- PA PB .

PA

PB

OUTPUT
(+) (-)

382
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetPlsrInMode ()
{
long nInputMode, nIsInverse; // Pulsar .

// Manual Pulsar , ‘CW/CCW’ .


if ( cemPlsrInMode_Get ( cemX1, &nInputMode, &nIsInverse ) == ceERR_NONE )
{
if ( nInputMode != cemIMODE_CWCCW )
{
cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE );
}
}
}

Visual Basic

Private Sub OnSetPlsrInMode ()

Dim nInputMode As Long, nIsInverse As Long ‘ Pulsar .

‘ Manual Pulsar , ‘CW/CCW’ .


If cemPlsrInMode_Get ( cemX1, nInputMode, nIsInverse ) = ceERR_NONE Then
If nInputMode <> cemIMODE_CWCCW Then
Call cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE )
End If
End If

End Sub

Delphi

procedure OnSetPlsrInMode ();


var
nInputMode, nIsInverse : LongInt // Pulsar .

begin
// Manual Pulsar , ‘CW/CCW’ .
if cemPlsrInMode_Get ( cemX1, @nInputMode, @nIsInverse ) = ceERR_NONE then
begin
if nInputMode <> cemIMODE_CWCCW then
begin
cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE );
end;
end;
end;

383
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

Pulsar Input circuit OUT1 (CW) OUT2 (CW) OUT3 (CW)


PA 1x A/B, Multiplication Division circut
2x A/B, circuit (n/2048) Motor
OUT1 (CCW) OUT2 (CCW) OUT3 (CCW)
PB 4x A/B, (1 ~ 32x)
CW/CCW

PIM circuit PMG circuit PDIV circuit

384
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

Pulsar Input Mode GainFactor DivFactor In: Out


AB1X or CWCCW 1 2048 1:1
AB1X or CWCCW 10 2048 1 : 10
AB1X or CWCCW 32 2048 1 : 32
AB1X or CWCCW 1 1024 2:1
AB1X or CWCCW 1 512 4:1
AB1X or CWCCW 1 256 8:1
AB2X 1 2048 1:2
AB2X 10 2048 1 : 20
AB2X 32 2048 1 : 64
AB4X 1 2048 1:4
AB4X 10 2048 1 : 40
AB4X 32 2048 1 : 128

385
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetPlsrGain ()
{
/* GainFactor DivFactor . */

/* 2 .
Pulsar : CW/CCW, GainFactor : 2, DivFactor : 2048
= * GainFactor * ( DivFactor / 2048 ) = 1 * 2 * 20048/2048 = 2
: =1:2 . */

if ( cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE ) == ceERR_NONE )


{
cemPlsrGain_Set ( cemX1, //
2, // GainFactor: PMG
2048 // DivFactor: PDIV
);
}

/* 0.25 .
Pulsar : AB1X, GainFactor : 1, DivFactor : 1024
= * GainFactor * ( DivFactor / 2048 ) = 1 * 1 * 1024/2048 = 0.5
: =2:1 . */

if ( cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE ) == ceERR_NONE )


{
cemPlsrGain_Set ( cemX1, 1, 1024 );
}

Visual Basic

Private Sub OnSetPlsrGain ()

‘ GainFactor DivFactor .

‘ 4 .
‘ Pulsar : AB2X, GainFactor : 2, DivFactor : 2048
‘ = * GainFactor * ( DivFactor / 2048 ) = 2 * 2 * 2048/2048 = 4
‘ : =1:4 .

If cemPlsrInMode_Set ( cemX1, cemIMODE_AB2X, CE_FALSE ) = ceERR_NONE Then


Call cemPlsrGain_Set ( cemX1, 2, 2048 )
End If

386
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ 0.25 .
‘ Pulsar : AB2X, GainFactor : 1, DivFactor : 256
‘ = * GainFactor * ( DivFactor / 2048 ) = 2 * 1 * 256/2048 = 0.25
‘ : =4:1 .

If cemPlsrInMode_Set ( cemX1, cemIMODE_AB2X, CE_FALSE ) = ceERR_NONE Then


Call cemPlsrGain_Set ( cemX1, 1, 256 )
End If

End Sub

Delphi

procedure OnSetPlsrGain ();


begin
// GainFactor DivFactor .

{ 1 .
Pulsar : AB1X, GainFactor : 1, DivFactor : 2048
= * GainFactor * ( DivFactor / 2048 ) = 1 * 1 * 2048/2048 = 1
: =1:1
.}

if cemPlsrInMode_Set ( cemX1, cemIMODE_AB1X, CE_FALSE ) = ceERR_NONE then


begin
cemPlsrGain_Set ( cemX1, 1, 2048 );
end

{ 10 .
Pulsar : AB2X, GainFactor : 5, DivFactor : 2048
= * GainFactor * ( DivFactor / 2048 ) = 2 * 5 * 2048/2048 = 10
: = 1 : 10
.}

if cemPlsrInMode_Set ( cemX1, cemIMODE_AB2X, CE_FALSE ) = ceERR_NONE then


begin
cemPlsrGain_Set ( cemX1, 5, 2048 );
end;

end;

387
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

0
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

388
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

//* cemPlsrMove / cemPlsrMoveStart .

389
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

“ ”

0 (CE_FALSE)

1 (CE_TRUE)

390
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

391
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetPlsrConfig ()
{
// Manual Pulsar 1:2 .
cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE );
cemPlsrGain_Set ( cemX1, 2, 2048 );

/* PA/PB .
3.25MHz . */
cemCfgFilterAB_Set ( cemX1, cemAB_PULSAR, CE_TRUE );
}

void OnPulsarMove ()
{
/* . ,
. */
cemCfgSpeedPattern_Set ( cemX1, // .
cemSMODE_S, // Pulsar .
655350, // ,
// .
10000, // Pulsar .
10000 // Pulsar .
);

/* Manual Pulsar
Manual Pulsar . Pulsar
cemStReadMotionState 8 ( cemMST_WAIT_PLSR ) . */

// . .
cemPlsrMove ( cemX1, 10000, CE_FALSE );

// cemPlsrMoveStart() .
}

Visual Basic

Private Sub OnSetPlsrConfig ()

‘ Manual Pulsar 1:2 .


Call cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE )
Call cemPlsrGain_Set ( cemX1, 2, 2048 )

392
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ PA/PB .
Call cemCfgFilterAB_Set ( cemX1, cemAB_PULSAR, CE_TRUE )

End Sub

Private Sub OnPulsarMove ()

‘ . ,
‘ .
Call cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 655350, 10000, 10000 )

‘ Manual Pulsar
‘ Manual Pulsar . Pulsar
‘ cemStReadMotionState 8 ( cemMST_WAIT_PLSR ) .

‘ . .
Call cemPlsrMove ( cemX1, 10000, CE_FALSE )

‘ cemPlsrMoveStart() .

End Sub

Delphi

procedure OnSetPlsrConfig ();


begin
// Manual Pulsar 1:2 .
cemPlsrInMode_Set ( cemX1, cemIMODE_CWCCW, CE_FALSE );
cemPlsrGain_Set ( cemX1, 2, 2048 );

// PA/PB .
cemCfgFilterAB_Set ( cemX1, cemAB_PULSAR, CE_TRUE );

end;

procedure OnPulsarMove ();


begin
{ . ,
.}
cemCfgSpeedPattern_Set ( cemX1, cemSMODE_S, 655350, 10000, 10000 );

{ Manual Pulsar
Manual Pulsar . Pulsar
cemStReadMotionState 8 ( cemMST_WAIT_PLSR ) .}

// . .
cemPlsrMove ( cemX1, 10000, CE_FALSE );
// cemPlsrMoveStart() .

end;

393
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

“ ”

0 (CE_FALSE)

1 (CE_TRUE)

394
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

EXAMPLE

//* cemPlsrMove / cemPlsrMoveStart .

395
CHAPTER 9:: INPUT SIGNALS RELATED TO MOTION CONTROL BY EXTERNAL SIGNAL FUNCTIONS

I N F O R M A T I O N

1
!

:
K

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’

EXAMPLE

//* cemPlsrMove / cemPlsrMoveStart .

396
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Chapter

10
Monitoring Motion Status
Chapter:10

. ceSDK
.
.

397
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

10
10.1 (Status)

10.1.1

Summary of Functions
r VT_I4 cemStCount_Set ( [in] VT_I4 Axis, [in] VT_I4 Target, [in] VT_I4 Count )
(Counter) . ,
(PPS) .

r VT_I4 cemStCount_Get ( [in] VT_I4 Axis, [in] VT_I4 Source, [out] VT_PI4 Count )
. ,
.

r VT_I4 cemStPosition_Set ( [in] VT_I4 Axis, [in] VT_I4 Target, [in] VT_R8 Position )
. ,
(Unit Distance) .

r VT_I4 cemStPosition_Get ( [in] VT_I4 Axis, [in] VT_I4 Source, [out] VT_PR8 Position )
. ,
.

r VT_I4 cemStSpeed_Get ( [in] VT_I4 Axis, [in] VT_I4 Source, [out] VT_PR8 Speed )
Command Feedback ,
.

r VT_I4 cemStReadMotionState ( [in] VT_I4 Axis, [out] VT_PI4 MotStates )


, .
r VT_I4 cemStReadMioStatuses ( [in] VT_I4 Axis, [out] VT_PI4 MioStates )
, I/O (Machine I/O) .

r VT_I4 cemStGetMstString ( [in] VT_I4 MstCode, [out] VT_PSTR Buffer, [in] VT_I4 BufferLen )
, .
, .

r VT_I4 cemStReadIOMessageCount ( [out] PDWORD IOMessageCount )


I/O . I/O Digital I/O MIO
.

398
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

10.1.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemCNT_COMM)
1 (cemCNT_FEED)
2 (cemCNT_DEV)

3 (cemCNT_GEN)

399
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetCount ()
{
long nCommCount; // Command Count
long nFeedCount; // Feedback Count

/* Command, Feedback , ‘0’ . */

if ( cemStCount_Get ( cemX1, cemCNT_COMM, &nCommCount ) == ceERR_NONE )


{
if ( nCommCount != 0 )
{
// Command 0 .
cemStCount_Set ( cemX1, cemCNT_COMM, 0 );
}
}

if ( cemStCount_Get ( cemX1, cemCNT_FEED, &nFeedCount ) == ceERR_NONE )


{
if ( nFeedCount != 0 )
{
// Feedback 0 .
cemStCount_Set ( cemX1, cemCNT_FEED, 0 );
}
}
}

Visual Basic

Private Sub OnSetCount ()

Dim nCommCount As Long ‘ Command Count


Dim nFeedCount As Long ‘ Feedback Count

‘ Command, Feedback , ‘0’ .

If cemStCount_Get ( cemX1, cemCNT_COMM, nCommCount ) = ceERR_NONE Then

400
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

If nCommCount <> 0 Then


‘ Command 0 .
Call cemStCount_Set ( cemX1, cemCNT_COMM, 0 )
End If
End If

If cemStCount_Get ( cemX1, cemCNT_FEED, nFeedCount ) = ceERR_NONE Then

If nFeedCount <> 0 Then


‘ Feedback 0 .
Call cemStCount_Set ( cemX1, cemCNT_FEED, 0 )
End If
End If

End Sub

Delphi

procedure OnSetCount ();


var
nCommCount : LongInt; // Command Count
nFeedCount : LongInt; // Feedback Count

begin
// Command, Feedback , ‘0’ .

if cemStCount_Get ( cemX1, cemCNT_COMM, @nCommCount ) = ceERR_NONE then


begin
if nCommCount <> 0 then
begin
// Command 0 .
cemStCount_Set ( cemX1, cemCNT_COMM, 0 );
end;
end;

if cemStCount_Get ( cemX1, cemCNT_FEED, @nFeedCount ) = ceERR_NONE then


begin
if nFeedCount <> 0 then
begin
// Feedback 0 .
cemStCount_Set ( cemX1, cemCNT_FEED, 0 );
end;
end;

end;

401
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

“ ”

“ ”

PARAMETER

0 (cemCNT_COMM)
1 (cemCNT_FEED)
2 (cemCNT_DEV)

3 (cemCNT_GEN)

402
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

REFERENCE

EXAMPLE

//* cemStCount_Set / cemStCount_Get .

403
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemCNT_COMM)
1 (cemCNT_FEED)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

404
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemMST_STOP)
1 (cemMST_WAIT_DR)
2 (cemMST_WAIT_STA)
3 (cemMST_WAIT_INSYNC)
4 (cemMST_WAIT_OTHER)
5 (cemMST_WAIT_ERC)

6 (cemMST_WAIT_DIR)

7 (cemMST_RESERVED1)
8 (cemMST_WAIT_PLSR)
9 (cemMST_IN_RVSSPD)
10 (cemMST_IN_INISPD)
11 (cemMST_IN_ACC)
12 (cemMST_IN_WORKSPD)
13 (cemMST_IN_DEC)
14 (cemMST_WAIT_INP)
15 (cemMST_SPARE0)
16 (cemMST_HOMMING)

405
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetMotionStste ()
{
char szMstList[18][20] = {
"Stop",
"Wait DR",
"Wait STA",
"Wait INSYNC",
"Wait Other Axis",
"Wait ERC",
"Wait DIR",
"Reserved1",
"Wait PA/PB",
"On Reverse Speed",
"On Initial Speed",
"On Acceleration",
"On Work Speed",
"On Deceleration",
"Wait INP",
"Reserved",
“In Homming”,
“”
};

long nMotState; // .

// .
cemStReadMotionState ( cemX1, &nMST );

if ( nMotState < 0 ) // .
{
OutputDebugString ( "ReadMotionState Error!" );
}

CString sMsg = "Current Motion State : " + szMstList[nMotState];

//DisplayStatus() .
DisplayStatus( sMsg );
}

406
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Visual Basic

‘ Label Component .

Private Sub OnGetMotionStste ()

Dim nMotState As Long ‘ .

If cemStReadMotionState ( cemX1, &nMotState ) = ceERR_NONE Then

Select Case nMotState

Case cemMST_STOP : lblState.Caption = "Stop"


Case cemMST_WAIT_DR : lblState.Caption = "Wait DR"
Case cemMST_WAIT_STA : lblState.Caption = "Wait STA"
Case cemMST_WAIT_INSYNC : lblState.Caption = "Wait INSYNC"
Case cemMST_WAIT_OTHER : lblState.Caption = "Wait Other Axis"
Case cemMST_WAIT_ERC : lblState.Caption = "Wait ERC"
Case cemMST_WAIT_DIR : lblState.Caption = "Wait DIR"
‘cemMST_RESERVED1 .
‘Case cemMST_RESERVED1 : lblState.Caption = "Reserved1"
Case cemMST_WAIT_PLSR : lblState.Caption = “Wait PA/PB"
Case cemMST_IN_RVSSPD : lblState.Caption = "On Reverse Speed"
Case cemMST_IN_INISPD : lblState.Caption = "On Initial Speed"
Case cemMST_IN_ACC : lblState.Caption = "On Acceleration"
Case cemMST_IN_WORKSPD : lblState.Caption = "On Work Speed"
Case cemMST_IN_DEC : lblState.Caption = "On Deceleration"
Case cemMST_WAIT_INP : lblState.Caption = "Wait INP"
‘cemMST_SPARE0 .
‘ Case cemMST_SPARE0 : lblState.Caption = "Reserved2"
Case cemMST_HOMMING : lblState.Caption = “In Homming”

Emd Select
End If

End Sub

Delphi

function GetMitonStateString( i : Integer ) : String;


begin
Case i of

cemMST_STOP : Result := 'Stop';


cemMST_WAIT_DR : Result := 'Waiting for DR input signal';
cemMST_WAIT_STA : Result := 'Waiting for STA input signal';
cemMST_WAIT_INSYNC : Result := 'Waiting for internal sync, signal';
cemMST_WAIT_OTHER : Result := 'Waiting other axis';
cemMST_WAIT_ERC : Result := 'Waiting for ERC output finished';
cemMST_WAIT_DIR : Result := 'Waiting for DIR change';
// cemMST_RESERVED1 . .
//cemMST_RESERVED1 : Result := 'RESERVED1';
cemMST_WAIT_PLSR : Result := 'Waiting for PA/PB input signal';
cemMST_IN_RVSSPD : Result := 'In home special speed (reverse speed)';
cemMST_IN_INISPD : Result := 'In start velocity motion';
cemMST_IN_ACC : Result := 'In Acceleration';

407
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

cemMST_IN_WORKSPD : Result := 'In Working Velocity';


cemMST_IN_DEC : Result := 'In Deceleration';
cemMST_WAIT_INP : Result := 'Waiting for INP input signal';
// cemMST_SPARE0 . .
//cemMST_SPARE0 : Result := 'RESERVED2';
end;
end;

procedure OnEvent ();


var
stateus : LongInt;
i : Integer;

begin

// , .
if cemStReadMotionState(cmX1, @stateus <> cmERR_NONE then
begin
ShowMessage ( 'cemStReadMotionState has been failed' );
exit;
end;

if stateus < 0 then


begin
ShowMessage ( ' .' );
// OnEvent procedure .
exit;
end;
end;

408
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemIOST_RDY)
1 (cemIOST_ALM)
2 (cemIOST_ELN)
3 (cemIOST_ELP)
4 (cemIOST_ORG)
5 (cemIOST_DIR)
6 (cemIOST_EZ)
7 (cemIOST_LTC)
8 (cemIOST_SD)
9 (cemIOST_INP)
10 (cemIOST_DRN)
11 (cemIOST_DRP)
12 (cemIOST_STA)
13 (cemIOST_STP)
14 (cemIOST_ALMR)
15 (cemIOST_EMG)
16 (cemIOST_SVON)
17 (cemIOST_HOMS)
18 (cemIOST_PLSA)
19 ~31

409
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetMioStates ()
{
long nMioStates; // MIO .

// MIO State Bit 32Bit .


if ( cemStReadMioStatuses ( cemX1, &nMioStates ) == ceERR_NONE )
{
// nMioState , .
bool RDY_State = ( nMioStates >> cemIOST_RDY ) & 0x01;
bool ALM_State = ( nMioStates >> cemIOST_ALM ) & 0x01;
bool ELN_State = ( nMioStates >> cemIOST_ELN ) & 0x01;


}
}

Visual Basic

Private Sub OnGetMioStates ()

Dim nMioStates ‘ MIO


Dim nRdyState As Long, nAlmState As Long, nElnState As Long
Dim bRdyState As Boolean, bAlmState As Boolean, bElnState As Boolean

‘ MIO State Bit 32Bit .


If cemStReadMioStatuses ( cemX1, nMioStates ) = ceERR_NONE Then

‘ nMioState , .
‘ ceSDK VB .
Call cemGnBitShift ( nMioStates, cemIOST_RDY, nRdyState )
Call cemGnBitShift ( nMioStates, cemIOST_ALM, nAlmState )
Call cemGnBitShift ( nMioStates, cemIOST_ELN, nElnState )

410
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

bRdyState = nRdyState And &H1


bAlmState = nAlmState And &H1
bElnState = nElnState And &H1


End If

End Sub

Delphi

var
dwMioState : LongInt;
RDY_State : Boolean;
ALM_State : Boolean;
ELN_State : Boolean;

begin
cemStReadMioStatuses ( cmX1,@dwMioState );

// dwMioState (Shift Operation) , .


RDY_State := Boolean ( ( dwMioState shr cemIOST_RDY ) and $1);
ALM_State := Boolean ( ( dwMioState shr cemIOST_ALM ) and $1);
ELN_State := Boolean ( ( dwMioState shr cemIOST_ELN ) and $1);

end;

411
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

412
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnGetMstString ()
{
char szBuffer[32] = {0, };

// Motion State Buffer .


if ( cemStGetMstString ( cemX1, szBuffer, 32 ) == ceERR_NONE )
{
//DisplayMstString() .
DisplayMstString( szBuffer );
}
}

413
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

DWORD dwIOMsgCount = 0;

// I/O .
cemStReadIOMessageCount( &dwIOMsgCount );

414
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

10.2 (Position Latch)

10.2.1

Summary of Functions
r VT_I4 cemLtcIsLatched ( [in] VT_I4 Axis, [out] VT_PI4 IsLatched )
(Latch Counter) , .
r VT_I4 cemLtcReadLatch ( [in] VT_I4 Axis, [in] VT_I4 Counter, [out] VT_PR8 LatchedPos )
(Counter) .
r VT_I4 cemLtcQue_Alloc ( [in] VT_I4 Axis, [in] VT_I4 QueSize, [in] VT_I4 SrcCntr )
Queue .
r VT_I4 cemLtcQue_Free ( [in] VT_I4 Axis )
Queue .
r VT_I4 cemLtcQue_GetSize ( [in] VT_I4 Axis, [out] VT_PI4 QueSize )
Queue .
r VT_I4 cemLtcQue_Reset ( [in] VT_I4 Axis )
Queue Push Pop Count .
r VT_I4 cemLtcQue_Check ( [in] VT_I4 Axis, [out] VT_PI4 NonReadCount )
Queue .
r VT_I4 cemLtcQue_Pop ( [in] VT_I4 Axis, [out] VT_PR8 fLtcVal )
Queue . Queue
Pop 1 .
r VT_I4 cemLtcQue_GetAt ( [in] VT_I4 Axis, [in] VT_I4 Idx, [out] VT_PR8 fLtcVal )
Queue .

415
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

416
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
long nIsLatched = CE_FALSE;
cemLtcIsLatched( cemX1, &nIsLatched );

417
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (cemCNT_COMM)
1 (cemCNT_FEED)
2 (cemCNT_DEV)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

418
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 Feedback position counter .


long nLtcCounter = cemCNT_FEED;
double fLatchedPos = 0.0f;
cemLtcReadLatche( cemX1, nLtcCounter, &nLatchedPos );

419
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

‘ ’

PARAMETER

0 (cemCNT_COMM)
1 (cemCNT_FEED)
2 (cemCNT_DEV)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

420
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 512 .
long nQueSize = 512;
if(cemLtcQue_Alloc ( cemX1, nQueSize, cemCNT_FEED ) != ceErr_None)
{
OutputDebugString ( “cemLtcQue_Alloc function failed” );
}

421
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

422
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
if(cemLtcQue_Free ( cemX1 ) != ceErr_None)
{
OutputDebugString ( “cemLtcQue_Free function failed” );
}

423
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

424
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
long nQueSize;
if(cemLtcQue_GetSize ( cemX1, &nQueSize ) != ceErr_None)
{
OutputDebugString ( “cemLtcQue_GetSize function failed” );
}

425
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

‘ ’

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

426
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
if(cemLtcQue_Reset ( cemX1 ) != ceErr_None)
{
OutputDebugString ( “cemLtcQue_Reset function failed” );
}

427
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

428
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
long nNonReadCount;
if(cemLtcQue_Check ( cemX1, &nNonReadCount) != ceErr_None)
{
OutputDebugString ( “cemLtcQue_Check function failed” );
}

429
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

430
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
double fLtcVal;
if(cemLtcQue_Pop ( cemX1, &fLtcVal) != ceErr_None)
{
OutputDebugString ( “cemLtcQue_Pop function failed” );
}

431
CHAPTER 10 :: MONITORING MOTION STATUS FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

432
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

// 0 .
double fLtcVal;
long idx = 7;
if(cemLtcQue_GetAt ( cemX1, idx, &fLtcVal) != ceErr_None) // 7 .
{
OutputDebugString ( “cemLtcQue_GetAt function failed” );
}

433
CHAPTER 11 :: MOTION DIGITAL I/O CONTROL FUNCTIONS

Chapter

11
Motion Digital I/O Control
Chapter:11

ceSDK
. S/W ,
.

434
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

11

11.1

“ ”

Summary of Functions
r VT_I4 cemDiOne_Get ( [in] VT_I4 Channel, [out] VT_PI4 State )
.
r VT_I4 cemDiMulti_Get ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels, [out] VT_PI4 InputState )
.
r VT_I4 cemDoOne_Put ( [in] VT_I4 Channel, [in] VT_I4 OutState )
.
r VT_I4 cemDoOne_Get ( [in] VT_I4 Channel, [out] VT_PI4 OutState )
.
r VT_I4 cemDoMulti_Put ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels, [in] VT_I4 OutStates )
.
r VT_I4 cemDoMulti_Get ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels, [out] VT_PI4 OutStates )
.

435
CHAPTER 11 :: MOTION DIGITAL I/O CONTROL FUNCTIONS

11.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

436
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* MDO 1 , MDO 1 MDI 1 . */

long nMdiChNo = 1; // MDI


long nMdoChNo = 1; // MDO
long nMdiState, nMdoState; // MDIO

// MDO 1 ON .
if ( cemDoOne_Put ( nMdoChNo, CE_TRUE ) == ceERR_NONE )
{
cemDoOne_Get ( nMdoChNo, &nMdoState );
if ( nMdoState != CE_TRUE )
{
OutputDebugString ( “cemDoOne_Put has been failed” )
}
}

// MDI 1 .
if ( cemDiOne_Get ( nMdiChNo, &nMdiState ) == ceERR_NONE )
{
if ( nMdiState != nMdoState )
{
OutputDebugString ( "cemDiOne_Get has been failed" );
}
}

Visual Basic

‘ MDO 1 , MDO 1 MDI 1 .

Dim nMdiChNo As Long ‘ MDI


Dim nMdoChNo As Long ‘ MDO
Dim nMdiState As Long, nMdoState As Long ‘ MDIO

nMdiChNo = 1
nMdoChNo = 1

‘ MDO 1 ON .
If cemDoOne_Put ( nMdoChNo, CE_TRUE ) = ceERR_NONE Then

Call cemDoOne_Get ( nMdoChNo, nMdoState )


If nMdoState <> CE_TRUE Then
MsgBox ( “cemDoOne_Put has been failed” )
End If
End If

‘ MDI 1 .

437
CHAPTER 11 :: MOTION DIGITAL I/O CONTROL FUNCTIONS

If cemDiOne_Get ( nMdiChNo, nMdiState ) = ceERR_NONE Then

If nMdiState <> nMdoState Then


MsgBox ( "cemDiOne_Get has been failed" )
End If
End If

Delphi

// MDO 1 , MDO 1 MDI 1 .

var
nMdiChNo : LongInt; // MDI
nMdoChNo : LongInt; // MDO
nMdiState, nMdoState : LongInt; // MDIO

begin
nMdiChNo := 1;
nMdoChNo := 1;

// MDO 1 ON .
if cemDoOne_Put ( nMdoChNo, CE_TRUE ) = ceERR_NONE then
begin
cemDoOne_Get ( nMdoChNo, @nMdoState );

if nMdoState <> CE_TRUE then


begin
ShowMessage ( ‘cemDoOne_Put has been failed’ );
end;
end;

// MDI 1 .
if cemDiOne_Get ( nMdiChNo, @nMdiState ) = ceERR_NONE then
begin
if nMdiState <> nMdoState then
ShowMessage ( ‘cemDiOne_Get has been failed’ );
end;
end;

438
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

439
CHAPTER 11 :: MOTION DIGITAL I/O CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* MDO 0~3 ,
MDO 0~3 MDI 0~3 . */

long nMdiIniChNo = 0; // MDI


long nMdiChNum = 4; // MDI
long nMdoIniChNo = 0; // MDO
long nMdoChNum = 4; // MDO
long dwMdiStates, dwMdoStates; // MDIO

// MDO 0~3 0, 1, 3 ch : ON, 2 ch : OFF .


if ( cemDoMulti_Put ( nMdoIniChNo, nMdoChNum, 0xB ) == ceERR_NONE )
{
cemDoMulti_Get ( nMdoIniChNo, nMdoChNum, &nMdoStates );
if ( nMdoStates != 0xB )
{
OutputDebugString ( “cemDoMulti_Put has been failed” )
}
}

// MDI 0~3 .
if ( cemDiMulti_Get ( nMdiIniChNo, nMdiChNum, &nMdiStates ) == ceERR_NONE )
{
if ( nMdiStates != nMdoStates )
{
OutputDebugString ( "cemDiMulti_Get has been failed" );
}
}

Visual Basic

‘ MDO 0~3 ,
‘ MDO 0~3 MDI 0~3 .

Dim nMdiIniChNo As Long ‘ MDI


Dim nMdiChNum As Long ‘ MDI
Dim nMdoIniChNo As Long ‘ MDO
Dim nMdoChNum As Long ‘ MDO
Dim dwMdiStates As Long, dwMdoStates As Long ‘ MDIO

nMdiIniChNo = 0
nMdiChNum = 4
nMdoIniChNo = 0
nMdoChNum = 4

440
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘MDO 0~3 0, 1, 3 ch : ON, 2 ch : OFF .


If cemDoMulti_Put ( nMdoIniChNo, nMdoChNum, &HB ) = ceERR_NONE Then

Call cemDoMulti_Get ( nMdoIniChNo, nMdoChNum, nMdoStates )


If nMdoStates <> &HB Then
MsgBox ( “cemDoMulti_Put has been failed” )
End If
End If

‘ MDI 0~3 .
If cemDiMulti_Get ( nMdiIniChNo, nMdiChNum, nMdiStates ) = ceERR_NONE Then

If nMdiStates <> nMdoStates Then


MsgBox ( "cemDiMulti_Get has been failed" )
End If
End If

Delphi

// MDO 0~3 ,
// MDO 0~3 MDI 0~3 .

var
nMdiIniChNo, nMdiChNum, nMdoIniChNo, nMdoChNum : LongInt; // MDIO
dwMdiStates, dwMdoStates : LongInt // MDIO

begin
nMdiIniChNo := 0; // MDI
nMdiChNum := 4; // MDI
nMdoIniChNo := 0; // MDO
nMdoChNum := 4; // MDO

// MDO 0~3 0, 1, 3 ch : ON, 2 ch : OFF .


if cemDoMulti_Put ( nMdoIniChNo, nMdoChNum, $B ) = ceERR_NONE then
begin
cemDoMulti_Get ( nMdoIniChNo, nMdoChNum, @nMdoStates );

If nMdoStates <> $B then


ShowMessage ( ‘cemDoMulti_Put has been failed’ );
end;
end;

// MDI 0~3 .
if cemDiMulti_Get ( nMdiIniChNo, nMdiChNum, @nMdiStates ) = ceERR_NONE then
begin
if nMdiStates <> nMdoStates then
begin
ShowMessage ( ‘cemDiMulti_Get has been failed’ );
end;
end;
end;

441
CHAPTER 11 :: MOTION DIGITAL I/O CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

//* cemDiOne_Get .

442
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

443
CHAPTER 11 :: MOTION DIGITAL I/O CONTROL FUNCTIONS

EXAMPLE

//* cemDiMulti_Get .

444
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Chapter

12
Universal Digital I/O Control
Chapter:12

ceSDK . S/W
,
.

445
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

12

ceD16CM / 16 Channel Ditital Input/Output


ceDI32N 32 Channel Digital Input
ceDO32N 32 Channel Digital Output

cedioMode_Set
cedioMode_Get
ceD16CM
cedioModeMulti_Set
cedioModeMulti_Get
cedioLogicOne_Set
cedioLogicOne_Get
cedioLogicMulti_Set
cedioLogicMulti_Get
cedioOne_Get ceD16CM
ceDI32N
cedioOne_Put ceDO32N
cedioMulti_Get
cedioMulti_Put
cedioOneF_Get
cedioMultiF_Get
cedioPulseOne ceD16CM ( )
cedioPulseMulti ceDO32N

446
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

12.1

Summary of Functions
r VT_I4 cedioMode_Set ( [in] VT_I4 Channel, [in] VT_I4 InOutMode )
I/O (Mode) .
r VT_I4 cedioMode_Get ( [in] VT_I4 Channel, [out] VT_PI4 InOutMode )
I/O .
r VT_I4 cedioModeMulti_Set ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [in] VT_I4 InOutModeMask )
I/O .

r VT_I4 cedioModeMulti_Get ( [in] VT_I4 IniChan, [in] VT_I4 NumChan,


[out] VT_PI4 InOutModeMask )
I/O .

r VT_I4 cedioLogicOne_Set ( [in] VT_I4 Channel, [in] VT_I4 Logic )


I/O (Logic) .
r VT_I4 cedioLogicOne_Get ( [in] VT_I4 Channel, [out] VT_PI4 Logic )
I/O .
r VT_I4 cedioLogicMulti_Set ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [in] VT_I4 LogicMask )
I/O .
r VT_I4 cedioLogicMulti_Get ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [out] VT_PI4 LogicMask )
I/O .
r VT_I4 cedioOne_Get ( [in] VT_I4 Channel, [out] VT_PI4 State )
I/O .
r VT_I4 cedioOne_Put ( [in] VT_I4 Channel, [in] VT_I4 State )
I/O .
r VT_I4 cedioMulti_Get ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [out] VT_PI4 States )
I/O .
r VT_I4 cedioMulti_Put ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [in] VT_I4 States )
.
r VT_I4 cedioOneF_Get ( [in] VT_I4 Channel, [in] VT_I4 CutoffTime_us, [out] VT_PI4 State )
I/O .

r VT_I4 cedioMultiF_Get ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [in] VT_I4 CutoffTime_us,
[out] VT_PI4 States )
I/O .

r VT_I4 cedioPulseOne ( [in] VT_I4 Channel, [in] VT_I4 IsOnPulse, [in] VT_I4 Duration,
[in] VT_I4 IsWaitPulseEnd )
.

r VT_I4 cedioPulseMulti ( [in] VT_I4 IniChan, [in] VT_I4 NumChan, [in] VT_I4 OutStates,
[in] VT_I4 Duration, [in] VT_I4 IsWaitPulseEnd )
.

447
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

12.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

REFERENCE

448
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nDioChNo = 1; //
long nDioMode; // /

// ceD16CM / , .
if ( cedioMode_Get ( nDioChNo, &nDioMode ) == ceERR_NONE )
{
if ( nDioMode != CE_TRUE )
{
cedioMode_Set ( nDioChNo, CE_TRUE );
}
}

Visual Basic

Dim nDioChNo As Long ‘


Dim nDioMode As Long ‘/

nDioChNo = 1

‘ceD16CM / , .
If cedioMode_Get ( nDioChNo, nDioMode ) = ceERR_NONE Then

If nDioMode <> CE_TRUE Then


Call cedioMode_Set ( nDioChNo, CE_TRUE )
End If
End If

Delphi

var
nDioChNo : LongInt; //
nDioMode : LongInt; // /

begin
nDioChNo := 1;

// ceD16CM / , .
if cedioMode_Get ( nDioChNo, @nDioMode ) = ceERR_NONE then
begin
if nDioMode <> CE_TRUE then
begin
cedioMode_Set ( nDioChNo, CE_TRUE );
end;
end;
end;

449
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

450
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

REFERENCE

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nDioIniChNo = 0; //
long nDioChNum = 4; //
long nDioModeMulti; // /

/* ceD16CM 0~3 / ,
0, 1, 3 ch , 2 ch . */

if ( cedioModeMulti_Get ( nDioIniChNo, nDioChNum, &nDioModeMulti ) == ceERR_NONE )


{
if ( nDioModeMulti != 0xB )
{
cedioModeMulti_Set ( nDioIniChNo, nDioChNum, 0xB );
}
}

Visual Basic

Dim nDioIniChNo As Long ‘


Dim nDioChNum As Long ‘
Dim nDioModeMulti As Long ‘/

nDioIniChNo = 0
nDioChNum = 4

‘ ceD16CM 0~3 / ,
‘ 0, 1, 3 ch , 2 ch .

If cedioModeMulti_Get ( nDioIniChNo, nDioChNum, nDioModeMulti ) = ceERR_NONE Then

If nDioModeMulti <> &HB Then


Call cedioModeMulti_Set ( nDioIniChNo, nDioChNum, &HB )
End If
End If

Delphi

var

451
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

nDioIniChNo : LongInt; //
nDioChNum : LongInt; //
nDioModeMulti : LongInt; // /

begin
nDioIniChNo := 0;
nDioChNum := 4;

{ ceD16CM 0~3 / ,
0, 1, 3 ch , 2 ch .}

if cedioModeMulti_Get ( nDioIniChNo, nDioChNum, @nDioModeMulti ) = ceERR_NONE then


begin
if nDioModeMulti <> $B then
begin
cedioModeMulti_Set ( nDioIniChNo, nDioChNum, $B );
end;
end;

end;

452
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 ( cemLOGIC_A )
1 ( cemLOGIC_B )

RETURN VALUE

‘ ’
0 (ceERR_NONE)

453
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nDioChNo = 1; //
long nDioLogic; // /

// ceD16CM / ,B .
if ( cedioLogicOne_Get ( nDioChNo, &nDioLogic ) == ceERR_NONE )
{
if ( nDioLogic != cemLogic_B )
{
cedioLogicOne_Set ( nDioChNo, cemLogic_B );
}
}

Visual Basic

Dim nDioChNo As Long ‘


Dim nDioLogic As Long ‘/

nDioChNo = 1

‘ceD16CM / ,B .
If cedioLogicOne_Get ( nDioChNo, nDioLogic ) = ceERR_NONE Then

If nDioLogic <> cemLogic_B Then


Call cedioMode_Set ( nDioChNo, cemLogic_B )
End If
End If

Delphi

var
nDioChNo : LongInt; //
nDioLogic : LongInt; // /

begin
nDioChNo := 1;

// ceD16CM / ,B .
if cedioLogicOne_Get ( nDioChNo, @nDioLogic ) = ceERR_NONE then
begin
if nDioLogic <> cemLogic_B then
begin
cedioMode_Set ( nDioChNo, cemLogic_B );
end;
end;
end;

454
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 ( cemLOGIC_A )
1 ( cemLOGIC_B )

RETURN VALUE

‘ ’
0 (ceERR_NONE)

455
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nDioIniChNo = 0; //
long nDioChNum = 4; //
long nDioLogicMulti; // /

/* 0~3 ,
0, 1, 3 ch A , 2 ch B . */

if ( cedioLogicMulti_Get ( nDioIniChNo, nDioChNum, &nDioLogicMulti ) == ceERR_NONE )


{
if ( nDioLogicMulti != 0x2 )
{
cedioModeMulti_Set ( nDioIniChNo, nDioChNum, 0x2 );
}
}

Visual Basic

Dim nDioIniChNo As Long ‘


Dim nDioChNum As Long ‘
Dim nDioLogicMulti As Long ‘/

nDioIniChNo = 0
nDioChNum = 4

‘ 0~3 ,
‘ 0, 1, 3 ch A , 2 ch B .

If cedioModeMulti_Get ( nDioIniChNo, nDioChNum, nDioLogicMulti ) = ceERR_NONE Then

If nDioLogicMulti <> &H2 Then


Call cedioModeMulti_Set ( nDioIniChNo, nDioChNum, &H2 )
End If
End If

Delphi

var
nDioIniChNo : LongInt; //
nDioChNum : LongInt; //
nDioLogicMulti : LongInt ; // /

begin
nDioIniChNo := 0;
nDioChNum := 4;

456
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

{ 0~3 ,
0, 1, 3 ch A , 2 ch B .}

if cedioModeMulti_Get ( nDioIniChNo, nDioChNum, @nDioLogicMulti ) = ceERR_NONE then


begin
if nDioLogicMulti <> $2 then
begin
cedioModeMulti_Set ( nDioIniChNo, nDioChNum, $2 );
end;
end;
end;

457
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

458
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nDoChNo = 1; // , .
long nDoState; //

// ON , .
if ( cedioOne_Put ( nDoChNo, CE_TRUE ) == ceERR_NONE )
{
cedioOne_Get ( nDoChNo, &nDoState );

if ( nDoState != CE_TRUE )
{
OutputDebugString ( "cedioOne_Get has been failed" );
}
}

Visual Basic

Dim nDoChNo As Long ‘ , .


Dim nDoState As Long ‘

nDoChNo = 1

‘ ON , .
If cedioOne_Put ( nDoChNo, CE_TRUE ) = ceERR_NONE Then

Call cedioOne_Get ( nDoChNo, nDoState )

If nDoState <> CE_TRUE Then


MsgBox ( "cedioOne_Get has been failed" )
End If
End If

Delphi

var
nDoChNo : LongInt // , .
nDoState : LongInt //

begin
nDoChNo := 1;

// ON , .
if cedioOne_Put ( nDoChNo, CE_TRUE ) = ceERR_NONE then
begin
cedioOne_Get ( nDoChNo, @nDoState );

459
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

if nDoState <> CE_TRUE then


begin
ShowMessage ( ‘cedioOne_Get has been failed’ );
end;
end;
end;

460
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

461
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* 0 ~ 3 .
1, 3 ON, 0, 2 OFF . */

long nDoIniChNo = 0; //
long nDoChNum = 4; //
long nDoStates; //

// , .
if ( cedioMulti_Put ( nDoIniChNo, nDoChNum, 0xA ) == ceERR_NONE )
{
cedioMulti_Get ( nDoChNo, &nDoStates );

if ( nDoStates != 0xA )
{
OutputDebugString ( "cedioMulti_Put has been failed" );
}
}

Visual Basic

‘0~3 .
‘ 1, 3 ON, 0, 2 OFF .

Dim nDoIniChNo As Long ‘


Dim nDoChNum As Long ‘
Dim nDoStates As Long ‘

nDoIniChNo = 0
nDoChNum = 4

‘ , .
If cedioMulti_Put ( nDoIniChNo, nDoChNum, &HA ) = ceERR_NONE Then

Call cedioMulti_Get ( nDoIniChNo, nDoChNum, nDoStates )

If nDoStates <> &H A Then


MsgBox ( "cedioMulti_Put has been failed" )
End If
End If

Delphi

{0~3 .

462
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

1, 3 ON, 0, 2 OFF .}

var
nDoIniChNo : LongInt; //
nDoChNum : LongInt; //
nDoStates : LongInt; //

begin
nDoIniChNo := 0;
nDoChNum := 4;

// , .
if cedioMulti_Put ( nDoIniChNo, nDoChNum, $A ) = ceERR_NONE then
begin
cedioMulti_Get ( nDoIniChNo, nDoChNum, @nDoStates );

if nDoStates <> $A then


begin
ShowMessage ( ‘cedioMulti_Put has been failed’ );
end;
end;
end;

463
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

‘ ’

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

464
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* 0 ,1 .
0 Pulse ,
1 . */

long nDoChNo = 0; //
long nDiChNo = 1; //
long nDiState; //
long nRetVal;

// B
cedioLogicOne_Set ( nDoChNo, cemLOGIC_B );

// 10usec .
nRetVal = cedioPulseOne ( nDoChNo, //
CE_TRUE, // B Active High .
10, // . 10usec
CE_FALSE //
);

if ( nRetVal == ceERR_NONE )
{
// ,
// 20 usec .
cedioOneF_Get ( nDiChNo, 20, &nDiState );

/* 10usec 20usec ON . */

Visual Basic

‘0 ,1 .
‘0 Pulse ,
‘1 .

Dim nDoChNo As Long ‘


Dim nDiChNo As Long ‘
Dim nDiState As Long ‘

nDoChNo = 0
nDiChNo = 1

‘ B .

465
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

Call cedioLogicOne_Set ( nDoChNo, cemLOGIC_B )

‘ 30usec .
If cedioPulseOne ( nDoChNo, CE_TRUE, 30, CE_FALSE ) = ceERR_NONE Then

‘ ,
‘ 20 usec .
Call cedioOneF_Get ( nDiChNo, 20, nDiState )

‘ 30usec 20usec ON .

End If

Delphi

{0 ,1 .
0 Pulse ,
1 .}

var
nDoChNo : LongInt; //
nDiChNo : LongInt; //
nDiState : LongInt; //

begin
nDoChNo := 0;
nDiChNo := 1;

// B .
cedioLogicOne_Set ( nDoChNo, cemLOGIC_B );

// 30usec .
if cedioPulseOne ( nDoChNo, CE_TRUE, 30, CE_FALSE ) = ceERR_NONE then
begin
{ ,
20 usec .}
cedioOneF_Get ( nDiChNo, 20, @nDiState ) ;

// 30usec 20usec ON .
end;
end;

466
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

‘ ’

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

467
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

/* 0~3 , 4~7 .
Pulse ,
. */

long nDoIniChNo = 0; //
long nDoChNum = 4; //
long nDiIniChNo = 4; //
long nDiChNum = 4; //
long nDiStates; //
long nRetVal;

// 0 ~ 3 B .
cedioLogicMulti_Set ( nDoIniChNo, nDoChNum, 0xF );

// 0 ~ 3 10usec .
nRetVal = cedioPulseMulti ( nDoIniChNo, //
nDoChNum, //
0xF, // B Active High .
10, // . 10usec
CE_FALSE //
);

if ( nRetVal == ceERR_NONE )
{
// 4 ~ 7 ,
// 20 usec .
cedioMultiF_Get ( nDiIniChNo, nDiChNum, 20, &nDiStates );

/* 10usec 20usec ON . */

Visual Basic

‘0~3 ,4~7 .

468
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ Pulse ,
‘ .

Dim nDoIniChNo As Long ‘


Dim nDoChNum As Long ‘
Dim nDiIniChNo As Long ‘
Dim nDiChNum As Long ‘
Dim nDiStates As Long ‘

nDoIniChNo = 0
nDoChNum = 4
nDiIniChNo = 4
nDiChNum = 4

‘0~3 B
Call cedioLogicOne_Set ( nDoIniChNo, nDoChNum, &HF )

‘0~3 30usec .
If cedioPulseMulti ( nDoChNo, CE_TRUE, 30, CE_FALSE ) = ceERR_NONE Then

‘4~7 ,
‘ 20 usec .
Call cedioMultiF_Get ( nDiIniChNo, nDiChNum, 20, nDiStates )

‘ 30usec 20usec ON .

End If

Delphi

{0~3 ,4~7 .
Pulse ,
.}

var
nDoIniChNo, nDoChNum, nDiIniChNo, nDiChNum : LongInt; //
nDiStates : LongInt; //

begin
nDoIniChNo = 0 //
nDoChNum = 4 //
nDiIniChNo = 4 //
nDiChNum = 4 //

// 0 ~ 3 B
cedioLogicOne_Set ( nDoIniChNo, nDoChNum, $F );

// 0 ~ 3 30usec .
if cedioPulseMulti ( nDoChNo, CE_TRUE, 30, CE_FALSE ) = ceERR_NONE then
begin

469
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

{4~7 ,
20 usec .}
cedioMultiF_Get ( nDiIniChNo, nDiChNum, 20, @nDiStates ) ;

// 30usec 20usec ON .
end;
end;

470
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

471
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

EXAMPLE

//* cedioOneF_Get .

472
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

0 (CE_FALSE)
1 (CE_TRUE)

473
CHAPTER 12 :: UNIVERSAL DIGITAL I/O CONTROL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

//* cedioMultiF_Get .

474
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Chapter

13
Counter Control
Chapter::13

4 Over-
current shutdown .

475
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

13 (Counter)

13.1

Summary of Functions
r VT_I4 cecEdgeOne_Set ( [in] VT_I4 Channel, [out] DWORD EdgeMode )
Edge Mode .
r VT_I4 cecEdgeOne_Get ( [in] VT_I4 Channel, [out] PDWORD EdgeMode )
Edge Mode .

r VT_I4 cecEdgeMulti_Set ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels,


[in] DWORD EdgeModeMask )
Edge Mode .

r VT_I4 cecEdgeMulti_Get ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels,


[out] PDWORD EdgeModeMask )
Edge Mode .

r VT_I4 cecClearOne ( [in] VT_I4 Channel )


Clear (0 ) .
r VT_I4 cecClearMulti ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels )
Clear (0 ) .
r VT_I4 cecClearAll ( [in] VT_I4 NodeID )
Clear (0 ).
r VT_I4 cec_Get ( [in] VT_I4 Channel, [out] PDWORD Count )
.
r VT_I4 cecEnableOne_Set ([in] VT_I4 Channel, [in] DWORD Enable )
/ .
r VT_I4 cecEnableOne_Get ( [in] VT_I4 Channel, [out] PDWORD IsEnabled )
/ .

r VT_I4 cecEnableMulti_Set ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels,


[in] DWORD EnableMask)
/ .

476
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

r VT_I4 cecEnableMulti_Get ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels,


[out] PDWORD EnabledMask )
/ .

r VT_I4 cecOverflowFlagGetOne ( [in] VT_I4 Channel, [out] PDWORD OverflowStatus )


Overflow .

r VT_I4 cecOverflowFlagGetMulti ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels,


[out] PDWORD OverflowStates )
Overflow .

r VT_I4 cecOverflowFlagClearOne ( [in] VT_I4 Channel )


Overflow Flag 0 Clear .
r VT_I4 cecOverflowFlagClearMulti ( [in] VT_I4 IniChannel, [in] VT_I4 NumChannels )
Overflow Flag 0 Clear .
r VT_I4 cecOverflowFlagClearAll ( [in] VT_I4 NodeID )
Overflow Flag 0 Clear .
r VT_I4 cecFilterFreq_Set ( [in] VT_I4 Channel, [in] VT_I4 FilterFreq )
Cutoff .
r VT_I4 cecFilterFreq_Get ( [in] VT_I4 Channel, [out] VT_PI4 FilterFreq )
Cutoff .

477
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

13.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default]
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

478
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntChNo = 0; //
long nEdgeMode; // Edge Mode

/* Edge Mode , Edge Mode Rising Edge .

if ( cecEdgeOne_Get ( nCntChNo, &nEdgeMode ) == ceERR_NONE )


{
if ( nEdgeMode != CE_TRUE )
{
// Edge Mode Rising Edge .
cecEdgeOne_Set ( nCntChNo, CE_TRUE );
}
}

Visual Basic

Dim nCntChNo As Long ‘


Dim nEdgeMode As Long ‘ Edge Mode

nCntChNo = 0

‘ Edge Mode , Edge Mode Rising Edge .

If cecEdgeOne_Get ( nCntChNo, nEdgeMode ) = ceERR_NONE Then

If nEdgeMode <> CE_TRUE Then

‘ Edge Mode Rising Edge .


Call cecEdgeOne_Set ( nCntChNo, CE_TRUE )
End If

End If

Delphi

var
nCntChNo : LongInt; //
nEdgeMode : LongInt; // Edge Mode

begin
nCntChNo := 0;

// Edge Mode , Edge Mode Rising Edge .

479
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

if cecEdgeOne_Get ( nCntChNo, @nEdgeMode ) = ceERR_NONE then


begin
if nEdgeMode <> CE_TRUE then
begin
// Edge Mode Rising Edge .
cecEdgeOne_Set ( nCntChNo, CE_TRUE );
end;
end;

end;

480
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default]
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

481
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntIniChNo = 0; //
long nCntChNum = 4; //
long nEdgeModeMask; // Edge Mode

/* 0 ~ 3 Edge Mode , Edge Mode


0, 2 Rising Edge, 1, 3 Falling Edge . */

if ( cecEdgeMulti_Get ( nCntIniChNo, nCntChNum, &nEdgeModeMask ) == ceERR_NONE )


{
if ( nEdgeModeMask != 0x5 )
{
// Edge Mode .
cecEdgeOne_Set ( nCntIniChNo, nCntChNum, 0x5 );
}
}

Visual Basic

Dim nCntIniChNo As Long ‘


Dim nCntChNum As Long ‘
Dim nEdgeModeMask As Long ‘ Edge Mode

nCntIniChNo = 0
nCntChNum = 4

‘0~3 Edge Mode , Edge Mode


‘ 0, 2 Falling Edge, 1, 3 Rising Edge .

If cecEdgeMulti_Get ( nCntIniChNo, nCntChNum, nEdgeModeMask ) = ceERR_NONE Then

If nEdgeModeMask <> &HA Then

‘ Edge Mode .
Call cecEdgeOne_Set ( nCntIniChNo, nCntChNum, &HA )
End If

End If

Delphi

var
nCntIniChNo : LongInt; //

482
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

nCntChNum : LongInt; //
nEdgeModeMask : LongInt ; // Edge Mode

begin
nCntIniChNo := 0;
nCntChNum := 4;

{0~3 Edge Mode , Edge Mode


0, 2 Falling Edge, 1, 3 Rising Edge .}

if cecEdgeMulti_Get ( nCntIniChNo, nCntChNum, @nEdgeModeMask ) = ceERR_NONE then


begin
if nEdgeModeMask <> $A then
begin
// Edge Mode .
cecEdgeOne_Set ( nCntIniChNo, nCntChNum, $A );
end;
end;
end;

483
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

484
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntChNo = 1; //
long nCntIniChNo = 0; //
long nCntChNum = 4; //
long nNodeID = 1; // ID. ID

// 0 Clear .
if ( cecClearOne ( nCntChNo ) != ceERR_NONE )
{
OutputDebugString ( "cecClearOne has been failed" );
}

// 0 ~ 3 0 Clear .
if ( cecClearMulti ( nCntChNo, nCntChNum ) != ceERR_NONE )
{
OutputDebugString ( "cecClearMulti has been failed" );
}

// 0 Clear .
if ( cecClearAll ( nNodeID ) != ceERR_NONE )
{
OutputDebugString ( "cecClearAll has been failed" );
}

Visual Basic

Dim nCntChNo As Long ‘


Dim nCntIniChNo As Long ‘
Dim nCntChNum As Long ‘
Dim nNodeID As Long ‘ ID. ID

nCntChNo = 1
nCntIniChNo = 0
nCntChNum = 4
nNodeID = 1

‘ 0 Clear .
If cecClearOne ( nCntChNo ) <> ceERR_NONE Then
MsgBox ( "cecClearOne has been failed" )
End If

‘0~3 0 Clear .
If cecClearMulti ( nCntChNo, nCntChNum ) <> ceERR_NONE Then
MsgBox ( "cecClearMulti has been failed" )
End If

‘ 0 Clear .
If cecClearAll ( nNodeID ) <> ceERR_NONE Then

485
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

MsgBox ( "cecClearAll has been failed" )


End If

Delphi

var
nCntChNo : LongInt; //
nCntIniChNo : LongInt; //
nCntChNum : LongInt; //
nNodeID : LongInt; // ID. ID

begin
nCntChNo := 1;
nCntIniChNo := 0;
nCntChNum := 4;
nNodeID := 1;

// 0 Clear .
if cecClearOne ( nCntChNo ) <> ceERR_NONE then
begin
ShowMessage ( ‘cecClearOne has been failed’ );
end;

// 0 ~ 3 0 Clear .
if cecClearMulti ( nCntChNo, @nCntChNum ) <> ceERR_NONE then
begin
ShowMessage ( ‘cecClearMulti has been failed’ );
end;

// 0 Clear .
if cecClearAll ( nNodeID ) <> ceERR_NONE then
begin
ShowMessage ( ‘cecClearAll has been failed’ );
end;
end;

486
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

487
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntChNo = 1; //
long nCount; //
long nOverFlowState = CE_FALSE; // Overflow

// .
cecEnableOne_Set ( nCntChNo, CE_TRUE );

/* .
Overflow Overflow . */
while ( nOverFlowState == CE_FALSE )
{
// .
if ( cec_Get ( nCntChNo, &nCount ) == ceERR_NONE )
{
cecOverflowFlagGetOne ( nCntChNo, &nOverFlowState );
}
}

// Overflow while Overflow .


if ( cecOverflowFlagClearOne ( nCntChNo ) != ceERR_NONE )
{
OutputDebugString ( “cecOverflowFlagClearOne has been failed” );
}

Visual Basic

Dim nCntChNo As Long ‘


Dim nCount As Long ‘
Dim nOverFlowState As Long ‘ Overflow

nCntChNo = 1
nOverFlowState = CE_FALSE

‘ .
Call cecEnableOne_Set ( nCntChNo, CE_TRUE )

‘ .
‘ Overflow Overflow .
While nOverFlowState = CE_FALSE Then

‘ .
If cec_Get ( nCntChNo, nCount ) = ceERR_NONE Then
Call cecOverflowFlagGetOne ( nCntChNo, &nOverFlowState );
End If

488
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Wend

‘ Overflow while Overflow .


If cecOverflowFlagClearOne ( nCntChNo ) <> ceERR_NONE Then
MsgBox ( “cecOverflowFlagClearOne has been failed” )
End If

Delphi

var
nCntChNo : LongInt; //
nCount : LongInt; //
nOverFlowState : LongInt; // Overflow

begin
nCntChNo := 1;
nOverFlowState := CE_FALSE;

// .
cecEnableOne_Set ( nCntChNo, CE_TRUE );

// .
// Overflow Overflow .
while nOverFlowState = CE_FALSE do
begin
// .
if cec_Get ( nCntChNo, @nCount ) = ceERR_NONE then
begin
cecOverflowFlagGetOne ( nCntChNo, @nOverFlowState )
end;
end;

// Overflow while Overflow .


if cecOverflowFlagClearOne ( nCntChNo ) <> ceERR_NONE then
begin
ShowMessage ( ‘cecOverflowFlagClearOne has been failed’ );
end;

end;

489
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default]
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

490
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntChNo = 1; //
long nCntEnable; // /

// .
if ( cecEnableOne_Get ( nCntChNo, nCntEnable ) == ceERR_NONE )
{
if ( nCntEnable != CE_TRUE )
{
cecEnableOne_Set ( nCntChNo, CE_TRUE );
}
}

Visual Basic

Dim nCntChNo As Long ‘


Dim nCntEnable As Long ‘ /

nCntChNo = 1

‘ .
If cecEnableOne_Get ( nCntChNo, nCntEnable ) = ceERR_NONE Then

if nCntEnable <> CE_TRUE Then


Call cecEnableOne_Set ( nCntChNo, CE_TRUE )
End If

End If

Delphi

var
nCntChNo : LongInt; //
nCntEnable : LongInt; // /

begin
nCntChNo := 1;

// .
if cecEnableOne_Get ( nCntChNo, @nCntEnable ) = ceERR_NONE then
begin
if nCntEnable <> CE_TRUE then
begin
cecEnableOne_Set ( nCntChNo, CE_TRUE );
end;
end;

end;

491
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default]
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

492
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntIniChNo = 0; //
long nCntChNum = 4; //
long nCntEnableMask; // /

// 0 ~ 3 .
if ( cecEnableMulti_Get ( nCntIniChNo, nCntChNum, &nCntEnableMask ) == ceERR_NONE )
{
if ( nCntEnableMask != 0xF )
{
cecEnableMulti_Set ( nCntIniChNo, nCntChNum, 0xF );
}
}

Visual Basic

Dim nCntIniChNo As Long ‘


Dim nCntChNum As Long ‘
Dim nCntEnableMask As Long ‘ /

nCntIniChNo = 0
nCntChNum = 4

‘0~3 .
If cecEnableMulti_Get ( nCntIniChNo, nCntChNum, nCntEnableMask ) = ceERR_NONE Then

If nCntEnableMask <> &HF Then

Call cecEnableMulti_Set ( nCntIniChNo, nCntChNum, &HF )


End If

End If

Delphi

var
nCntIniChNo : LongInt; //
nCntChNum : LongInt; //
nCntEnableMask : LongInt; // /

begin
nCntIniChNo := 0;
nCntChNum := 4;

// 0 ~ 3 .

493
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

if cecEnableMulti_Get ( nCntIniChNo, nCntChNum, @nCntEnableMask ) = ceERR_NONE then


begin
if nCntEnableMask <> $F then
begin
cecEnableMulti_Set ( nCntIniChNo, nCntChNum, $F );
end;
end;

end;

494
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0
1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

495
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

EXAMPLE

//* cec_Get .

496
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

497
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

//* cec_Get .

498
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default] 10 MHz 500 KHz 1 usec


1 312 KHz 20 KHz 25 usec
2 39 KHz 4 KHz 125 usec
3 4.88 KHz 500 Hz 1 msec

RETURN VALUE

‘ ’
0 (ceERR_NONE)

499
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nCntChNo = 1; //
long nCutoffMode; // Cutoff

// Cutoff , Cutoff 500 KHz( 0) .

if ( cecFilterFreq_Get ( nCntChNo, &nCutoffMode ) == ceERR_NONE )


{
if ( nCutoffMode != 0 )
{
cecFilterFreq_Set ( nCntChNo, 0 )
}
}

Visual Basic

Dim nCntChNo As Long ‘


Dim nCutoffMode As Long ‘ Cutoff

nCntChNo = 1

‘ Cutoff , Cutoff 500 KHz( 0) .

If cecFilterFreq_Get ( nCntChNo, nCutoffMode ) = ceERR_NONE Then

If nCutoffMode <> 0 Then

Call cecFilterFreq_Set ( nCntChNo, 0 )


End If

End If

Delphi

var
nCntChNo : LongInt; //
nCutoffMode : LongInt; // Cutoff

begin
nCntChNo := 1;

// Cutoff , Cutoff 500 KHz( 0) .

if cecFilterFreq_Get ( nCntChNo, @nCutoffMode ) = ceERR_NONE then


begin

500
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

if nCutoffMode <> 0 then


begin
cecFilterFreq_Set ( nCntChNo, 0 );
end;
end;
end;

501
CHAPTER 13 :: COUNTER CONTROL FUNCTIONS

Chapter

14
Analog Input/Output Control
Chapter:14

.
Over-current shutdown .

502
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

14

14.1 (Analog Input )

14.1.1

Summary of Functions
r VT_I4 ceaiVoltRangeMode_Set ( [in] VT_I4 Channel, [in] VT_I4 RangeMode )
.
r VT_I4 ceaiVoltRangeMode_Get ([in] VT_I4 Channel, [out] VT_PI4 RangeMode )
.
r VT_I4 ceaiRangeDigit_Get ( [in] VT_I4 Channel, [out] VT_PI4 DigitMin, [out] VT_PI4 DigitMax )
Digit .
r VT_I4 ceaiDigit_Get ( [in] VT_I4 Channel, [out] VT_PI4 Digit )
A/D Digit .
r VT_I4 ceaiVolt_Get ( [in] VT_I4 Channel, [out] VT_PR8 fVolt )
A/D ( Volt) .
r VT_I4 ceaiCurrent_Get ( [in] VT_I4 Channel, [out] VT_PR8 fCurrent )
A/D (Current) .

503
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

14.1.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default]
1
2
3
4
5
6

504
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

RETURN VALUE

‘ ’
0 (ceERR_NONE)

505
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAiChNo = 1; //
long nRangeMode; //
long nDigitMin, nDigitMax; // Digit

// , 3 ( 0~10V, 0~20mA) .
if ( ceaiVoltRangeMode_Get ( nAiChNo, &nRangeMode ) == ceERR_NONE )
{
if ( nRangeMode != 3 )
{
ceaiVoltRangeMode_Set ( nAiChNo, 3 );
}
}

/* Digit .
0~4 nDigitMin : 0, nDigitMax : 8192
5~6 nDigitMin : -2048, nDigitMax : 8192 . */
if ( ceaiRangeDigit_Get ( nAiChNo, &nDigitMin, &nDigitMax ) == ceERR_NONE )
{
if ( nDigitMin != 0 || nDigitMax != 8192 )
{
OutputDebugString ( “ceaiRangeDigit_Get has been failed” );
}
}

Visual Basic

Dim nAiChNo As Long ‘


Dim nRangeMode As Long ‘
Dim nDigitMin As Long, nDigitMax As Long ‘ Digit

nAiChNo = 1 ‘

‘ , 3 ( 0~10V, 0~20m A) .
If ceaiVoltRangeMode_Get ( nAiChNo, nRangeMode ) = ceERR_NONE Then

If nRangeMode <> 3 Then


Call ceaiVoltRangeMode_Set ( nAiChNo, 3 )
End If

End If

‘ Digit .
‘0~4 nDigitMin : 0, nDigitMax : 8192
‘5~6 nDigitMin : -2048, nDigitMax : 8192 .
If ceaiRangeDigit_Get ( nAiChNo, nDigitMin, nDigitMax ) = ceERR_NONE Then

506
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

If ( nDigitMin <> 0 ) Or ( nDigitMax <> 8192 ) Then


MsgBox ( “ceaiRangeDigit_Get has been failed” )
End If
End If

Delphi

var
nAiChNo : LongInt; //
nRangeMode : LongInt; //
nDigitMin, nDigitMax : LongInt; // Digit

begin
nAiChNo := 1; //

// , 3 ( 0~10V, 0~20mA) .
if ceaiVoltRangeMode_Get ( nAiChNo, @nRangeMode ) = ceERR_NONE then
begin
if nRangeMode <> 3 then
begin
ceaiVoltRangeMode_Set ( nAiChNo, 3 );
end;
end;

{ Digit .
0~4 nDigitMin : 0, nDigitMax : 8192
5~6 nDigitMin : -2048, nDigitMax : 8192 . }
if ceaiRangeDigit_Get ( nAiChNo, @nDigitMin, @nDigitMax ) = ceERR_NONE then
begin
if ( nDigitMin <> 0 ) or ( nDigitMax <> 8192 ) then
begin
ShowMessage ( ‘ceaiRangeDigit_Get has been failed’ );
end;
end;
end;

507
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

//* ceaiVoltRangeMode_Set / ceaiVoltRangeMode_Get .

508
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

509
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAiChNo = 1; //
long nDigitVal; // A/D Digit

// 3 (0~10V, 0 ~ 20mA)
ceaiVoltRangeMode_Set ( nAiChNo, 3 );

// A/D Digit .
if ( ceaiDigit_Get ( nAiChNo, &nDigitVal ) != ceERR_NONE )
{
OutputDebugString ( "ceaiDigit_Get has been failed" );
}

Visual Basic

Dim nAiChNo As Long ‘


Dim nDigitVal As Long ‘ A/D Digit

nAiChNo = 1

‘ 3 (0~10V, 0 ~ 20mA)
Call ceaiVoltRangeMode_Set ( nAiChNo, 3 )

‘ A/D Digit .
If ceaiDigit_Get ( nAiChNo, nDigitVal ) <> ceERR_NONE Then

MsgBox ( "ceaiDigit_Get has been failed" )


End If

Delphi

var
nAiChNo : LongInt //
nDigitVal : LongInt // A/D Digit

begin
nAiChNo := 1;

510
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

// 3 (0~10V, 0 ~ 20mA)
ceaiVoltRangeMode_Set ( nAiChNo, 3 );

// A/D Digit .
if ceaiDigit_Get ( nAiChNo, @nDigitVal ) <> ceERR_NONE then
begin
ShowMessage ( ‘ceaiDigit_Get has been failed’ );
end;
end;

511
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

512
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAiChNo = 1; //
double fVoltVal; // A/D

// 3 (0~10V, 0 ~ 20mA)
ceaiVoltRangeMode_Set ( nAiChNo, 3 );

// A/D .
if ( ceaiVolt_Get ( nAiChNo, &fVoltVal ) != ceERR_NONE )
{
OutputDebugString ( "ceaiVolt_Get has been failed" );
}

Visual Basic

Dim nAiChNo As Long ‘


Dim nVoltVal As Double ‘ A/D

nAiChNo = 1

‘ 3 (0~10V, 0 ~ 20mA)
Call ceaiVoltRangeMode_Set ( nAiChNo, 3 )

‘ A/D .
If ceaiVolt_Get ( nAiChNo, fVoltVal ) <> ceERR_NONE Then

MsgBox ( "ceaiVolt_Get has been failed" )


End If

Delphi

var
nAiChNo : LongInt; //
nVoltVal : Double; // A/D

begin
nAiChNo := 1;

// 3 (0~10V, 0 ~ 20mA)
ceaiVoltRangeMode_Set ( nAiChNo, 3 );

// A/D .
if ceaiVolt_Get ( nAiChNo, @fVoltVal ) <> ceERR_NONE then
begin
ShowMessage ( ‘ceaiVolt_Get has been failed’ );
end;
end;

513
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

-1

RETURN VALUE

‘ ’
0 (ceERR_NONE)

514
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAiChNo = 1; //
double fCurrentVal; // A/D

// A/D .
if ( ceaiCurrent_Get ( nAiChNo, &fCurrentVal ) == ceERR_NONE )
{
if ( fnCurrentVal == -1 ) // .
{
// 3 (0~10V, 0 ~ 20mA) .
ceaiVoltRangeMode_Set ( nAiChNo, 3 );
}
}

Visual Basic

Dim nAiChNo As Long ‘


Dim fCurrentVal As Double ‘ A/D

nAiChNo = 1

‘ A/D .
If ceaiVolt_Get ( nAiChNo, fCurrentVal ) = ceERR_NONE Then

If fCurrentVal = -1 Then ‘ .

‘ 3 (0~10V, 0 ~ 20mA)
Call ceaiVoltRangeMode_Set ( nAiChNo, 3 )
End If
End If

Delphi

var
nAiChNo : LongInt; //
fCurrentVal : Double; // A/D

begin
nAiChNo := 1;

// A/D .
if ceaiVolt_Get ( nAiChNo, @fCurrentVal ) = ceERR_NONE then
begin

515
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

if fCurrentVal = -1 then // .
begin
‘ 3 (0~10V, 0 ~ 20mA)
ceaiVoltRangeMode_Set ( nAiChNo, 3 );
end;
end;

end;

516
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

14.2 (Analog Output )

14.2.1

Summary of Functions
r VT_I4 ceaoDigit_Out ( [in] VT_I4 Channel, [in] VT_I4 Digit )
Digit .
r VT_I4 ceaoVolt_Out ( [in] VT_I4 Channel, [in] VT_R8 fVolt )
(Volt) .
r VT_I4 ceaoCurrent_Out ( [in] VT_I4 Channel, [in] VT_R8 fCurrent )
(Current) .

517
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

14.2.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

518
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAoChNo = 1; //

// 10V .
if ( ceaoDigit_Out ( nAoChNo, 32767 ) != ceERR_NONE )
{
OutputDebugString ( "ceaoDigit_Out has been failed" );
}

Visual Basic

Dim nAoChNo As Long ‘


nAoChNo = 1

‘ 10V .
If ceaoDigit_Out ( nAoChNo, 32767 ) <> ceERR_NONE Then

MsgBox ( "ceaoDigit_Out has been failed" )


End If

Delphi

var
nAoChNo : LongInt; //

begin
nAoChNo := 1;

// 10V .
if ceaoDigit_Out ( nAoChNo, 32767 ) <> ceERR_NONE then
begin
ShowMessage ( ‘ceaoDigit_Out has been failed’ );
end;
end;

519
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

520
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAoChNo = 1; //

// 10V .
if ( ceaoVolt_Out ( nAoChNo, 10 ) != ceERR_NONE )
{
OutputDebugString ( "ceaoVolt_Out has been failed" );
}

Visual Basic

Dim nAoChNo As Long ‘


nAoChNo = 1

‘ 10V .
If ceaoVolt_Out ( nAoChNo, 10 ) <> ceERR_NONE Then

MsgBox ( "ceaoVolt_Out has been failed" )


End If

Delphi

var
nAoChNo : LongInt; //

begin
nAoChNo := 1;

// 10V .
if ceaoVolt_Out ( nAoChNo, 10 ) <> ceERR_NONE then
begin
ShowMessage ( ‘ceaoVolt_Out has been failed’ );
end;
end;

521
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

522
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nAoChNo = 1; //

// 20mA .
if ( ceaoCurrent_Out ( nAoChNo, 10 ) != ceERR_NONE )
{
OutputDebugString ( "ceaoCurrent_Out has been failed" );
}

Visual Basic

Dim nAoChNo As Long ‘


nAoChNo = 1

‘ 20mA .
If ceaoCurrent_Out ( nAoChNo, 20 ) <> ceERR_NONE Then

MsgBox ( "ceaoCurrent_Out has been failed" )


End If

Delphi

var
nAoChNo : LongInt; //

begin
nAoChNo := 1;

// 20mA .
if ceaoCurrent_Out ( nAoChNo, 20 ) <> ceERR_NONE then
begin
ShowMessage ( ‘ceaoCurrent_Out has been failed’ );
end;
end;

523
CHAPTER 14 :: ANALOG INPUT / OUTPUT CONTROL FUNCTIONS

Chapter

15
SERIAL Functions
Chapter::15

524
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

15 (Serial)

15.1

Summary of Functions
r VT_I4 cesOpenPort ( [in] VT_I4 Channel, [in] VT_I4 SerType, [in] VT_I4 BaudId, [in] VT_I4 DataBits,
[in] VT_I4 StopBits, [in] VT_I4 Parity )
(Port) (Open) .

r VT_I4 cesClosePort ( [in] VT_I4 Channel )


.
r VT_I4 cesIsDataReady ( [in] VT_I4 Channel, [out] VT_PI4 IsReady )
.
r VT_I4 cesSetTimeout ( [in] VT_I4 Channel, [in] VT_I4 Timeout )
(ms) .
r VT_I4 cesGetTimeout ( [in] VT_I4 Channel, [out] VT_PI4 Timeout )
.
r VT_I4 cesRxReset ( [in] VT_I4 Channel )
. 0 Clear .
r VT_I4 cesTxReset ( [in] VT_I4 Channel )
. 0 Clear .
r VT_I4 cesGetUnreadDataSize ( [in] VT_I4 Channel, [out] VT_PI4 DataSize )
.
r VT_I4 cesPeekByte ( [in] VT_I4 Channel, [out] VT_PI4 byData )
1 . .
r VT_I4 cesPeekByteEx ( [in] VT_I4 Channel, [in] VT_I4 ByteIdx, [out] VT_PI4 byData)
1 .
.
r VT_I4 cesReadByte ( [in] VT_I4 Channel, [out] VT_PI4 byData )
1 . 1 .

525
CHAPTER 15 :: SERIAL FUNCTIONS

r VT_I4 cesWriteByte ( [in] VT_I4 Channel, [in] VT_I4 byData )


1 .
r VT_I4 cesPeekString ( [in] VT_I4 nChannel, [in] VT_I4 NumBytes , [out] VT_PSTR String )
.
.
r VT_I4 cesReadString ( [in] VT_I4 Channel, [in] VT_I4 NumBytes, [out] VT_PSTR String )
.
.
r VT_I4 cesWriteString ( [in] VT_I4 Channel, [in] VT_I4 NumBytes, [in] VT_STR String )
.
.
r VT_I4 cesReadDword ( [in] VT_I4 Channel, [out] VT_PI4 dwData )
4 . 4 .
r VT_I4 cesWriteDword ( [in] VT_I4 Channel, [in] VT_I4 NumWords, [in] VT_PI4 dwData )
4 . 4
.
r VT_I4 cesCommit ( [in] VT_I4 nChannel )
.

526
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

15.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 [Default]
1
2

0 (BAUD_2400)
1 (BAUD_4800)
2 (BAUD_9600)
3 (BAUD_14400)
4 (BAUD_19200)
5 (BAUD_38400)
6 (BAUD_57600)
7 (BAUD_115200)

527
CHAPTER 15 :: SERIAL FUNCTIONS

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


long nSerType = 0; // . 0: RS232, 1: RS422, 2: RS485
long nBaudId = BAUD_9600; // Baud Rate . 0 ~ 7
long nDataBits = 8; // Data Bits . 5~8
long nStopBits = 1; // Stop Bits . 1 or 2
long nParity = 1; // Parity Bits . 0: None, 1: Odd, 2: Even

// 0 Open .
if ( cesOpenPort ( nSerialChNo, nSerType, BAUD_9600, nDataBits, nStopBits, nParity ) != ceERR_NONE )
{
OutputDebugString ( "cesOpenPort has been failed" );
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim nSerType As Long ‘ . 0: RS232, 1: RS422, 2: RS485
Dim nBaudId As Long ‘ Baud Rate . 0 ~ 7
Dim nDataBits As Long ‘ Data Bits . 5~8
Dim nStopBits As Long ‘ Stop Bits . 1 or 2
Dim nParity As Long ‘ Parity Bits . 0: None, 1: Odd, 2: Even

nSerialChNo = 0
nSerType = 0
nBaudId = BAUD_9600
nDataBits = 8
nStopBits = 1
nParity = 1

528
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘0 Open .
If cesOpenPort ( nSerialChNo, nSerType, BAUD_9600, nDataBits, nStopBits, nParity ) <> ceERR_NONE Then
MsgBox ( "cesOpenPort has been failed" )
End If

Delphi

var
nSerialChNo, nSerType, nBaudId, nDataBits, nStopBits, nParity : LongInt;

begin
nSerialChNo := 0; // (Port)
nSerType := 0; // . 0: RS232, 1: RS422, 2: RS485
nBaudId := BAUD_9600; // Baud Rate . 0 ~ 7
nDataBits := 8; // Data Bits . 5 ~ 8
nStopBits := 1; // Stop Bits . 1 or 2
nParity := 1; // Parity Bits . 0: None, 1: Odd, 2: Even

// 0 Open .
if cesOpenPort ( nSerialChNo, nSerType, BAUD_9600, nDataBits, nStopBits, nParity )
<> ceERR_NONE then
begin
ShowMessage ( ‘cesOpenPort has been failed’ );
end;
end;

529
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

530
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)

// 0 Close .
if ( cesClosePort ( nSerialChNo ) != ceERR_NONE )
{
OutputDebugString ( "cesClosePort has been failed" );
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


nSerialChNo = 0

‘0 Close .
If cesClosePort ( nSerialChNo ) <> ceERR_NONE Then

MsgBox ( "cesClosePort has been failed" )


End If

Delphi

var
nSerialChNo : LongInt; // (Port)

begin
nSerialChNo := 0;

// 0 Close .
if cesClosePort ( nSerialChNo ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesClosePort has been failed’ );
end;
end;

531
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (CE_FALSE)
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

532
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


long nIsReady; //

// 0 .
if ( cesIsDataReady ( nSerialChNo, &nIsReady ) != ceERR_NONE )
{
if ( nIsReady == CE_TRUE )
{
OutputDebugString ( " " );
}
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim nIsReady As Long ‘

nSerialChNo = 0 ‘ (Port)

‘0 .
If cesIsDataReady ( nSerialChNo, nIsReady ) <> ceERR_NONE Then

If nIsReady = CE_TRUE Then


MsgBox ( " ")
End If
End If

Delphi

var
nSerialChNo : LongInt; // (Port)
nIsReady : LongInt; //

begin
nSerialChNo := 0; // (Port)

// 0 .
if cesIsDataReady ( nSerialChNo, @nIsReady ) <> ceERR_NONE then
begin
if nIsReady = CE_TRUE then
begin
ShowMessage ( ‘ ’ );
end;
end;
end;

533
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


long nTimeout; // Timeout

// 0 Timeout , 1000 .
if ( cesGetTimeout ( nSerialChNo, &nTimeout ) == ceERR_NONE )
{
// Timeout .
if ( nTimeout != 1000 )

534
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

{
cesSetTimeout ( nSerialChNo, 1000 );
}
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim nTimeout As Long ‘ Timeout

nSerialChNo = 0

‘0 Timeout , 1000 .
If cesGetTimeout ( nSerialChNo, nTimeout ) = ceERR_NONE Then

‘ Timeout .
If nTimeout <> 1000 Then
Call cesSetTimeout ( nSerialChNo, 1000 )
End If
End If

Delphi

var
nSerialChNo : LongInt; // (Port)
nTimeout : LongInt; // Timeout

begin
nSerialChNo := 0;

// 0 Timeout , 1000 .
if cesGetTimeout ( nSerialChNo, @nTimeout ) = ceERR_NONE then
begin
// Timeout .
if nTimeout <> 1000 then
begin
cesSetTimeout ( nSerialChNo, 1000 );
end;
end;
end;

535
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)

// 0 .
if ( cesTxReset ( nSerialChNo ) != ceERR_NONE )
{
OutputDebugString ( "cesTxReset has been failed" );
}

// 0 .
if ( cesRxReset ( nSerialChNo ) != ceERR_NONE )
{
OutputDebugString ( "cesRxReset has been failed" );

536
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Visual Basic

Dim nSerialChNo As Long ‘ (Port)

nSerialChNo = 0

‘0 .
If cesTxReset ( nSerialChNo ) <> ceERR_NONE Then
MagBox ( "cesTxReset has been failed" )
End If

‘0 .
If cesRxReset ( nSerialChNo ) <> ceERR_NONE Then
MsgBox ( "cesRxReset has been failed" )
End If

Delphi

var
nSerialChNo : LongInt; // (Port)

begin

nSerialChNo := 0;

// 0 .
if cesTxReset ( nSerialChNo ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesTxReset has been failed’ );
end;

// 0 .
if cesRxReset ( nSerialChNo ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesRxReset has been failed’ );
end;
end;

537
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

538
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


long nDataSize; //

// 0 .
if ( cesGetUnreadDataSize ( nSerialChNo, &nDataSize ) != ceERR_NONE )
{
OutputDebugString ( "cesGetUnreadDataSize has been failed" );
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim nDataSize As Long ‘

nSerialChNo = 0

‘0 .
If cesGetUnreadDataSize ( nSerialChNo, nDataSize ) <> ceERR_NONE Then
MsgBox ( "cesGetUnreadDataSize has been failed" )
End If

Delphi

var
nSerialChNo : LongInt; // (Port)
nDataSize : LongInt; //

begin
nSerialChNo := 0;

// 0 .
if cesGetUnreadDataSize ( nSerialChNo, @nDataSize ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesGetUnreadDataSize has been failed’ );
end;
end;

539
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

540
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


BYTE byData; // 1

// 0
if ( cesPeekByte ( nSerialChNo, &byData) != ceERR_NONE )
{
OutputDebugString ( "cesPeekByte has been failed" );
}

// 0
if ( cesPeekByteEx ( nSerialChNo, 5, &byData) != ceERR_NONE ) // zero base 6
{
OutputDebugString ( "cesPeekByteEx has been failed" );
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim byData As Byte; ‘1

nSerialChNo = 0

‘0
If cesPeekByte ( nSerialChNo, byData) <> ceERR_NONE Then
MsgBox ( "cesPeekByte has been failed" )
End If

‘0
‘ zero base 6 .
If cesPeekByteEx ( nSerialChNo, 5, byData) <> ceERR_NONE Then
MsgBox ( "cesPeekByteEx has been failed" )
End If

Delphi

var
nSerialChNo : LongInt; // (Port)
byData : Byte; // 1

begin
nSerialChNo := 0;

541
CHAPTER 15 :: SERIAL FUNCTIONS

// 0
if cesPeekByte ( nSerialChNo, @byData) <> ceERR_NONE then
begin
ShowMessage ( ‘cesPeekByte has been failed’ );
end;

// 0
// zero base 6 .
if cesPeekByteEx ( nSerialChNo, 5, @byData) <> ceERR_NONE then
begin
ShowMessage ( ‘cesPeekByteEx has been failed’ );
end;
end;

542
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

543
CHAPTER 15 :: SERIAL FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


BYTE byData; // 1

// 0
if ( cesReadByte ( nSerialChNo, &byData ) == ceERR_NONE )
{
if ( byData != 0x2 ) // STX
{
OutputDebugString ( "cesReadByte has been failed" );
}
}

// 0 1
if ( cesWriteByte ( nSerialChNo, ‘B’ ) == ceERR_NONE )
{
cesCommit ( nSerialChNo ); //
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim byData As Byte ‘1

nSerialChNo = 0

‘0
If cesReadByte ( nSerialChNo, byData ) = ceERR_NONE Then
If byData <> &H2 Then ‘ STX
MsgBox ( "cesReadByte has been failed" )
End If
End If

‘0 1
If cesWriteByte ( nSerialChNo, ‘B’ ) = ceERR_NONE Then

Call cesCommit ( nSerialChNo ) ‘


End If

Delphi

var
nSerialChNo : LongInt; // (Port)

544
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

byData : Byte: // 1

begin
nSerialChNo := 0;

// 0
if cesReadByte ( nSerialChNo, @byData ) = ceERR_NONE then
begin
if byData <> $2 Then // STX
begin
ShowMessage ( ‘cesReadByte has been failed’ );
end;
end;
end;

// 0 1
if cesWriteByte ( nSerialChNo, ‘B’ ) = ceERR_NONE then
begin
cesCommit ( nSerialChNo ) //
end;
end;

545
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

546
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


BYTE abyData[8]; //
int nCheckSum;

// 0 8
if ( cesPeekString ( nSerialChNo, 8, &abyData) != ceERR_NONE )
{
OutputDebugString ( "cesPeekString has been failed" );
}

// 0 8
if ( cesReadString (SER_PORT0, 8, &abyData) != ceERR_NONE )
{
OutputDebugString ( "cesPeekString has been failed" );
}

/* */
abyData[0] = 0x2; // STX
abyData[1] = ‘A’;
abyData[2] = ‘B’;
abyData[3] = ‘C’;
abyData[4] = ‘D’;
abyData[5] = ‘E’;

for ( int I = 0; I <= 5; i++ )


{
nCheckSum += abyData[i];
}

abyData[6] = nCheckSum;
abyData[7] = 0x3; // ETX

if ( cesWriteString ( nSerialChNo, 8, abyData ) == ceERR_NONE )


{
cesCommit ( nSerialChNo );
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim abyData(8) As Byte ‘
Dim nCheckSum As Integer ‘ CheckSum

nSerialChNo = 0
nCheckSum = 0

‘0 8
If cesPeekString ( nSerialChNo, 8, abyData(0) ) <> ceERR_NONE Then

547
CHAPTER 15 :: SERIAL FUNCTIONS

MsgBox ( "cesPeekString has been failed" )


End If

‘0 8
If cesReadString ( nSerialChNo, 8, abyData(0) ) <> ceERR_NONE Then
MsgBox ( "cesPeekString has been failed" )
End If


abyData(0) = &H2 ‘ STX
abyData(1) = ‘A’
abyData(2) = ‘B’
abyData(3) = ‘C’
abyData(4) = ‘D’
abyData(5) = ‘E’

For i = 0 To 5
nCheckSum = nCheckSum + abyData(i)
Next i

abyData(6) = nCheckSum
abyData(7) = &H3 ‘ ETX

If cesWriteString ( nSerialChNo, 8, abyData(0) ) = ceERR_NONE Then

cesCommit ( nSerialChNo )
End If

Delphi

var
nSerialChNo : LongInt; // (Port)
abyData : Array[0..7] of Byte //
nCheckSum : Integer // CheckSum

begin
nSerialChNo := 0;
nCheckSum := 0;

// 0 8
if cesPeekString ( nSerialChNo, 8, @abyData ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesPeekString has been failed’ );
end;

// 0 8
if cesReadString ( nSerialChNo, 8, @abyData ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesPeekString has been failed’ );
end;

//
abyData[0] := $2; // STX
abyData[1] := ‘A’;
abyData[2] := ‘B’;
abyData[3] := ‘C’;
abyData[4] := ‘D’;

548
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

abyData[5] := ‘E’;

For i := 0 to 5 do
begin
nCheckSum := nCheckSum + abyData[i];
end;

abyData[6] := nCheckSum;
abyData[7] := $3; // ETX

if cesWriteString ( nSerialChNo, 8, @abyData ) = ceERR_NONE then


begin
cesCommit ( nSerialChNo );
end;
end;

549
CHAPTER 15 :: SERIAL FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

550
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


DWORD adwData[5]; // DWORD

// 0 5 DWORD
if ( cesReadDword ( nSerialChNo, 5, &adwData ) != ceERR_NONE )
{
OutputDebugString ( "cesReadDword has been failed" );
}

/* */
adwData[0] = ‘@’;
adwData[1] = ‘A’;
adwData[2] = ‘B’;
adwData[3] = ‘C’;
abwData[4] = ‘!’;

if ( cesWriteDword ( nSerialChNo, 5, adwData) == ceERR_NONE )


{
cesCommit ( nSerialChNo );
}

Visual Basic

Dim nSerialChNo As Long ‘ (Port)


Dim adwData[5] As Long ‘ DWORD

nSerialChNo = 0

‘0 5 DWORD
If cesReadDword ( nSerialChNo, 5, adwData ) <> ceERR_NONE Then
MsgBox ( "cesReadDword has been failed" )
End If


adwData(0) = ‘@’
adwData(1) = ‘A’
adwData(2) = ‘B’
adwData(3) = ‘C’
abwData(4) = ‘!’

If cesWriteDword ( nSerialChNo, 5, adwData) = ceERR_NONE Then


Call cesCommit ( nSerialChNo )
End If

Delphi

551
CHAPTER 15 :: SERIAL FUNCTIONS

var
nSerialChNo : LongInt; // (Port)
adwData : Array[0..4] of DWORD; // DWORD

begin
nSerialChNo := 0;

// 0 5 DWORD
if cesReadDword ( nSerialChNo, 5, @adwData ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesReadDword has been failed’ );
end;

//
adwData[0] = ‘@’;
adwData[1] = ‘A’;
adwData[2] = ‘B’;
adwData[3] = ‘C’;
adwData[4] = ‘!’;

if cesWriteDword ( nSerialChNo, 5, @adwData) = ceERR_NONE then


begin
cesCommit ( nSerialChNo );
end;
end;

552
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

long nSerialChNo = 0; // (Port)


BYTE byData; //
BYTE abyData[8]; //
int nCheckSum = 0;

// 0 1
if ( cesPeekByte ( nSerialChNo, &byData ) == ceERR_NONE )
{
if ( byData != 0x2 ) // STX .
{
return;
}
}

553
CHAPTER 15 :: SERIAL FUNCTIONS

// 0 8
if ( cesReadString ( nSerialChNo, 8, &abyData ) != ceERR_NONE )
{
OutputDebugString ( "cesPeekString has been ailed" );
}

//
abyData[0] = 0x2; // STX
abyData[1] = ‘A’;
abyData[2] = ‘B’;
abyData[3] = ‘C’;
abyData[4] = ‘D’;
abyData[5] = ‘E’;

for ( int I = 0; I <= 5; i++ )


{
nCheckSum += abyData[i];
}

abyData[6] = nCheckSum;
abyData[7] = 0x3; // ETX

if ( cesWriteString ( nSerialChNo, 8, abyData) == ceERR_NONE )


{
cesCommit ( nSerialChNo );
}

Visual Basic

Dim nSerialChNo As Long (Port)


Dim byData As Byte
Dim abyData(8) As Byte
Dim nCheckSum As Integer CheckSum

nSerialChNo = 0
nCheckSum = 0

‘0 1
If cesPeekByte ( nSerialChNo, byData ) = ceERR_NONE Then
If byData <> &H2 Then ‘ STX .
MsgBox ( "cesPeekByte has been failed" )
End If
End If

‘0 8
If cesReadString ( nSerialChNo, 8, abyData(0) ) <> ceERR_NONE Then
MsgBox ( "cesPeekString has been ailed" )
End If


abyData(0) = &H2 ‘ STX
abyData(1) = ‘A’
abyData(2) = ‘B’
abyData(3) = ‘C’
abyData(4) = ‘D’
abyData(5) = ‘E’

554
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

For i = 0 To 5
nCheckSum = nCheckSum + abyData(i)
Next i

abyData(6) = nCheckSum
abyData(7) = &H3 ‘ ETX

If cesWriteString ( nSerialChNo, 8, abyData(0) ) = ceERR_NONE Then


Call cesCommit ( nSerialChNo )
End If

Delphi

var
nSerialChNo : LongInt; // (Port)
byData : Byte; //
abyData : Array[0..7] of Byte; //
nCheckSum : Integer; // CheckSum

begin
nSerialChNo := 0;
nCheckSum := 0;

‘0 1
if ( cesPeekByte ( nSerialChNo, @byData ) = ceERR_NONE then
begin
if byData <> $2 then // STX .
begin
ShowMessage ( ‘cesPeekByte has been failed’ );
end;
end;

// 0 8
if cesReadString ( nSerialChNo, 8, @abyData ) <> ceERR_NONE then
begin
ShowMessage ( ‘cesPeekString has been ailed’ );
end;

//
abyData[0] = $2; // STX
abyData[1] = ‘A’;
abyData[2] = ‘B’;
abyData[3] = ‘C’;
abyData[4] = ‘D’;
abyData[5] = ‘E’;

For i := 0 to 5 do
begin
nCheckSum := nCheckSum + abyData[i];
end;

abyData[6] := nCheckSum;
abyData[7] := $3; // ETX

if cesWriteString ( nSerialChNo, 8, @abyData ) = ceERR_NONE then


begin

555
CHAPTER 15 :: SERIAL FUNCTIONS

cesCommit ( nSerialChNo );
end;
end;

556
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Chapter

16
INTERLOCK Functions
Chapter:16

cEIP ,
.

557
CHAPTER 16 :: INTERLOCK FUNCTIONS

16 (Interlock)
16.1

“ ”

Summary of Functions
r VT_I4 ceil_Set ( [in] VT_I4 NodeID, [in] VT_I4 Interlock_Type, [in] VT_I4 bEnable )
.
r VT_I4 ceil_Get ( [in] VT_I4 NodeID, [in] VT_I4 Interlock_Type, [out] VT_PI4 bIsEnabled )
.

r VT_I4 ceilDisconnectTimeout_Set ( [in] VT_I4 NodeID, [in] VT_I4 Disconnect_Type,


[in] VT_I4 dwTimeOut )
Disconnect .

r VT_I4 ceilDisconnectTimeout_Get ( [in] VT_I4 NodeID, [in] VT_I4 Disconnect_Type,


[out] VT_PI4 pdwTimeOut )
Disconnect .

r VT_I4 ceilActionModeOne_Set ( [in] VT_I4 NodeID, [in] VT_I4 ModuleType, [in] VT_I4 Channel,
[in] VT_I4 ActionMode )
.

r VT_I4 ceilActionModeOne_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleType, [in] VT_I4 Channel,
[out] VT_PI4 pdwActionMode )
.

r VT_I4 ceilActionModeMulti_Set ( [in] VT_I4 NodeID, [in] VT_I4 ModuleType, [in] VT_I4 IniChan,
[in] VT_I4 NumChan, [in] VT_I4 ActionModes )
.

r VT_I4 ceilActionModeMulti_Get ( [in] VT_I4 NodeID, [in] VT_I4 ModuleType, [in] VT_I4 IniChan,
[in] VT_I4 NumChan, [out] VT_PI4 ActionModes )

558
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

16.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 ( INTLK_DISCONN)
1 (INTLK_SENSOR)

0 (CE_FALSE) [Default]
1 (CE_TRUE)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

559
CHAPTER 16 :: INTERLOCK FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

void OnSetInterlock ()
{
long nNodeID = 1; // ID
long nIsEnabled; // /

/* Disconnect / , . */

if ( ceil_Get ( nNodeID, INTLK_DISCONN, &nIsEnabled ) = ceERR_NONE )


{
if ( nIsEnabled != CE_TRUE )
{
ceil_Set ( nNodeID, // ID
INTLK_DISCONN, // 0 (INTLK_DISCONN) :
// 1 ( INTLK_SENSOR) :
CE_TRUE // 0 (CE_FALSE) :
// 1 (CE_TRUE) :
);
}
}
}

560
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (DT_ PYSICAL)

1 (DT_ LOGICAL)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

561
CHAPTER 16 :: INTERLOCK FUNCTIONS

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define NODE_ID 1 // IP 192.168.1.1


enum {INTLK_DISCONN, INTLK_SENSOR}; // Interlock type : (0), (1)
enum {DT_PYSICAL, DT_LOGICAL}; // Disconnect type : (0), (1)

VOID CInterlockTestDlg::OnBtnSetDisconnectCheckTimeout()
{
long val;

long nResult = ceilDisconnectTimeout_Set(NODE_ID, DT_PYSICAL, 500); // 500ms Timeout


nResult = ceilDisconnectTimeout_Get(NODE_ID, DT_PYSICAL, &val);
}

562
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (MOD_CPU)
1 (MOD_AO)

2 (MOD_DO)

3 (MOD_MOT)

563
CHAPTER 16 :: INTERLOCK FUNCTIONS

0 (CPU_ACT_RESERVED)
ceNM-SE 1 (CPU_ACT_REBOOT)
2 (CPU_ACT_KEEP)
0 (AO_ACT_MIN)
ceAO02N 1 (AO_RESERVED1)
2 (AO_ACT_KEEP)
0 (DO_ACT_OFF)
ceD16CN,
1 (DO_ACT_ON)
ceDO32N
2 (DO_ACT_KEEP)
0 (MOT_ACT_DECELSTOP)
ceMC02P 1 (MOT_ACT_EMGSTOP1)
2 (MOT_ACT_KEEP)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define NODE_ID 1 // IP 192.168.1.1

// Module type: ceNM-SE(0), ceAO02N(1), ceDxxN(2), ceMC02P(3)


enum {MOD_CPU, MOD_AO, MOD_DO, MOD_MOT};

// CPU (ceNM-SE) : reserved(0), reboot(1), / (2) => reboot(1)


.
enum {CPU_ACT_RESERVED, CPU_ACT_REBOOT, CPU_ACT_KEEP};

// Analog Output Action : 0: (0V, 0 mA), 1: reserved, 2: ()


enum {AO_ACT_MIN, AO_RESERVED, AO_ACT_KEEP};

// Digital Output Action : off (0), on (1), (2)


enum {DO_ACT_OFF, DO_ACT_ON, DO_ACT_KEEP};

// Motion Action : 0: (default), 1: , 2: ()


enum {MOT_ACT_DECELSTOP, MOT_ACT_EMGSTOP, MOT_ACT_KEEP};

564
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

VOID CInterlockTestDlg::OnBtnActModeSetOne
{
long val;

// 1. CPU
// Module Type => 0: ceNM-SE(CPU )
// Channel => CPU , don't care
// Action Mode => 1 Reboot , 1:
long nResult = ceilActionModeOne_Set(NODE_ID, MOD_CPU, 0, CPU_ACT_REBOOT);

// 2. CPU
nResult = ceilActionModeOne_Get(NODE_ID, MOD_CPU, 0, &val);

// 3. AO
// Module Type => 1:
// Channel => 0
// Action Mode => AO_ACT_MIN : (0V, 0mA)
nResult = ceilActionModeOne_Set(NODE_ID, MOD_AO, 0, AO_ACT_MIN);

// 4. AO
nResult = ceilActionModeOne_Get(NODE_ID, MOD_AO, 0, &val);

// 5. DO
// Module Type => 2:
// Channel => 0
// Action Mode => DO_ACT_OFF : OFF
nResult = ceilActionModeOne_Set(NODE_ID, MOD_DO, 0, DO_ACT_OFF);

// 6. DO
nResult = ceilActionModeOne_Get(NODE_ID, MOD_DO, 0, &val);

// 7. MOTION
// Module Type => 3:
// Channel => 0
// Action Mode => MOT_ACT_EMGSTOP : (Emergency Stop)
nResult = ceilActionModeOne_Set(NODE_ID, MOD_MOT, 0, MOT_ACT_EMGSTOP);

// 8. MOTION
nResult = ceilActionModeOne_Get(NODE_ID, MOD_MOT, 0, &val);
}

565
CHAPTER 16 :: INTERLOCK FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

0 (MOD_CPU)
1 (MOD_AO)

2 (MOD_DO)

3 (MOD_MOT)

566
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

0 (CPU_ACT_RESERVED)
ceNM-SE 1 (CPU_ACT_REBOOT)
2 (CPU_ACT_KEEP)
0 (AO_ACT_MIN)
ceAO02N 1 (AO_RESERVED1)
2 (AO_ACT_KEEP)
0 (DO_ACT_OFF)
ceD16CN,
1 (DO_ACT_ON)
ceDO32N
2 (DO_ACT_KEEP)
0 (MOT_ACT_DECELSTOP)
ceMC02P 1 (MOT_ACT_EMGSTOP1)
2 (MOT_ACT_KEEP)

RETURN VALUE

‘ ’
0 (ceERR_NONE)

EXAMPLE

C/C++

#include “ceSDK.h”
#include “ceSDKDef.h”

#define NODE_ID 1 // IP 192.168.1.1

// Module type: ceNM-SE(0), ceAO02N(1), ceDxxN(2), ceMC02P(3)


enum {MOD_CPU, MOD_AO, MOD_DO, MOD_MOT};

// CPU (ceNM-SE) : reserved(0), reboot(1), / (2) => reboot(1)


.
enum {CPU_ACT_RESERVED, CPU_ACT_REBOOT, CPU_ACT_KEEP};

// Analog Output Action : 0: (0V, 0 mA), 1: reserved, 2: ()


enum {AO_ACT_MIN, AO_RESERVED, AO_ACT_KEEP};

567
CHAPTER 16 :: INTERLOCK FUNCTIONS

// Digital Output Action : off (0), on (1), (2)


enum {DO_ACT_OFF, DO_ACT_ON, DO_ACT_KEEP};

// Motion Action : 0: (default), 1: , 2: ()


enum {MOT_ACT_DECELSTOP, MOT_ACT_EMGSTOP, MOT_ACT_KEEP};

VOID CInterlockTestDlg::OnBtnActModeSetOne
{
long val;

// 1. AO
// Module Type => 1:
// IniChan => 0
// NumChan => 2 (0, 1 )
// Action Mode =>

// 0 : AO_ACT_KEEP (2), 1 :AO_ACT_OFF (0)


long nResult = ceilActionModeMulti_Set (NODE_ID, MOD_AO, 0, 2, 0x2); // 0010 .

// 2. AO
nResult = ceilActionModeMulti_Get (NODE_ID, MOD_AO, 0, 2, &val);

// 3. DO
// Module Type => 2:
// IniChan => 0
// NumChan => 16 (0 ~15 )
// Action Mode => 8 OFF (0), 8 (2)
// 00000000000000001010101010101010
nResult = ceilActionModeMulti_Set (NODE_ID, MOD_DO, 0, 16, 0x0000AAAA);

// 4. DO
nResult = ceilActionModeMulti_Get (NODE_ID, MOD_DO, 0, 16, &val);

// 5. MOTION
// Module Type => 3:
// IniChan => 0
// NumChan => 4 (0~3 )
// Action Mode => 0: (1), 1:(0), 2:(2), 3: (1)
// 01100001
nResult = ceilActionModeMulti_Set (NODE_ID, MOD_MOT, 0, 4, 0x61);

// 6. MOTION
nResult = ceilActionModeMulti_Get (NODE_ID, MOD_MOT, 0, 4, &val);
}

568
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Chapter

17
Utility Functions
Chapter::17

, .
,
. .

569
CHAPTER 17 :: UTILITY FUNCTIONS

17

17.1

Summary of Functions
r VT_I4 ceutlUserData_Set ( [in] VT_I4 NodeID, [in] VT_I4 NumByte, [in] VT_PSTR szText )
(Node) .

r VT_I4 ceutlUserData_Get ( [in] VT_I4 NodeID, [out] VT_PI4 pNumByte, [out] VT_PSTR szText )
.

r VT_I4 ceutlUserVersion_Set ( [in] VT_I4 NodeID, [in] VT_I4 Version )


.

r VT_I4 ceutlUserVersion_Get ( [in] VT_I4 NodeID, [out] VT_PI4 pVersion )


.

r VT_I4 ceutlNodeVersion_Get ( [in] VT_I4 NodeID, [out] VT_PI4 pVersion )


.

r VT_I4 ceutlLibVersion_Get ( [out] VT_PI4 pVersionMS, [out] VT_PI4 pVersionLS )


ceSDK Library . 4 2 .
4 .

r VT_I4 ceutlPumpSingleMessage ( [none] VT_EMPTY )


.

r VT_I4 ceutlPumpMultiMessage ( [in] VT_I4 nTimeout )


.

r VT_I4 ceutlSyncCount_Get ( [in] VT_I4 NodeID, [out] VT_PI4 pSyncCount )


.

570
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

r VT_I4 ceutlIOSyncCount_Get ( [in] VT_I4 NodeID, [out] VT_PI4 pSyncCount)


I/O .

r VT_I4 ceutlSyncWait ( [in] VT_I4 NodeID, [in] VT_I4 IsBlocking)


.

571
CHAPTER 17 :: UTILITY FUNCTIONS

17.2

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

572
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

573
CHAPTER 17 :: UTILITY FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

574
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

575
CHAPTER 17 :: UTILITY FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

576
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

577
CHAPTER 17 :: UTILITY FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

578
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

SEE ALSO

579
CHAPTER 17 :: UTILITY FUNCTIONS

I N F O R M A T I O N

1
!

:
J

DESCRIPTION

PARAMETER

RETURN VALUE

‘ ’
0 (ceERR_NONE)

580
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Chapter

18
Advanced and Extended
Chapter:18

Interface
ceSDK .
.
.

581
APPENDIX D :: INDEX OF CESDK FUNCTIONS

18 /

“ ”

18.1

r VT_I4 cemAdvGetNodeInformation ( [in] VT_I4 nNode, [out] PTNode pTargetNode )


Undocument Function . .

r VT_I4 cemAdvGetAllNodeInformation ( [out] PTNodeInformation pTargetNodes )


Undocument Function . .

r VT_I4 cemAdvErcOut ( [in] VT_I4 Axis )


ERC .

r VT_I4 cemAdvErcReset ( [in] VT_I4 Axis )


ERC .

r VT_I4 cemAdvManualPacket ( [in] VT_I4 NodeID, [in] VT_I4 CommandNo,


[in] VT_PR8 SendBuffer, [in] VT_I4 NumSendData, [out] VT_PR8 RecvBuffer,
[out] VT_PI4 NumRecvData, [in] VT_I4 SendFlag, [in] VT_I4 RecvFlag )
Undocument Function . .

582
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

Appendix

A
Appendx cEIP Runtime Environment
i:A

. cEIP ,
, . cEIP
.

583
APPENDIX A :: CEIP RUNTIME ENVIRONMENT

I cEIP

I.I cEIPSDK

584
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

585
APPENDIX A :: CEIP RUNTIME ENVIRONMENT

I.II IP Address

586
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I.III cEIP IP Address

I.IV cEIP ID

587
APPENDIX A :: CEIP RUNTIME ENVIRONMENT

I.V cEIP

588
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’

‘ ’

‘ ’

589
APPENDIX B :: CEIP UTILITY

Appendix

B
cEIP Utility
Appendix:B

cEIP . cEIP

590
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I cePowerFlasher

I.I cePowerFlasher

591
APPENDIX B :: CEIP UTILITY

I.II

592
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I.III

593
APPENDIX B :: CEIP UTILITY

I.IV ( )

594
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

‘ ’

“ ”

595
APPENDIX B :: CEIP UTILITY

596
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

II ceNetConfig

II.I

597
APPENDIX B :: CEIP UTILITY

II.II ARP Table

598
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

599
APPENDIX B :: CEIP UTILITY

600
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

601
APPENDIX B :: CEIP UTILITY

III ceNodeViewer

602
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

IV ceErrorLookup

IV.I ceErrorLookup

603
APPENDIX B :: CEIP UTILITY

V ceMADIC

V.I MADIC
V.I.i User Interface

l
l
l

604
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

l
l

V.I.iiMain Menu

l
l
l
l
l
l
l
l

l
l
l
l

605
APPENDIX B :: CEIP UTILITY

V.I.iii Tool Bar

l
l
l

l
l
l
l
l

606
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.I.iv Node Tree

V.I.v Disconnected Nodes

607
APPENDIX B :: CEIP UTILITY

V.I.vi Status & Monitoring

Motion IO Status Motion Command & Status

Motion Speed & Position 3D Graph

l
l
l

608
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.II MADIC (Motion)

V.II.i Motion : Jog Panel

l
l

l
l

609
APPENDIX B :: CEIP UTILITY

l
l

610
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.II.ii Motion : Home Return Panel

l
l
l
l
l
l
l
l
l
l
l
l
l
l

l
l
l

611
APPENDIX B :: CEIP UTILITY

V.II.iii Motion : Override Panel

l
l
l

l
l
l
l

612
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.II.ivMotion : IxLine Panel

l
l

613
APPENDIX B :: CEIP UTILITY

V.II.v Motion : IxArc Panel

l
l

614
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.II.vi Motion : IxArc3P Panel

l
l
l
l

615
APPENDIX B :: CEIP UTILITY

V.II.vii Motion : PA / PB Panel

l
l
l
l
l
l
l
l
l
l

616
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.II.viii Motion : Settings Panel

l
l

l
l
l

617
APPENDIX B :: CEIP UTILITY

618
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.II.ixMotion Digital I/O

l
l

619
APPENDIX B :: CEIP UTILITY

V.III MADIC DIO

V.III.i Digital I/O : Control Panel

l
l
l
l
l

620
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.III.iiDigital I/O : DIO Mode Panel

621
APPENDIX B :: CEIP UTILITY

V.III.iii Digital I/O : DIO Logic Setting Panel

622
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.IV MADIC AI (Analog Input)

V.IV.i Analog Input : AI Monitor Start

l
l

623
APPENDIX B :: CEIP UTILITY

V.IV.ii Analog Input : AI Monitoring

l
l

624
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.V MADIC AO (Analog Output)

V.V.i Analog Output : AO Control

l
l
l

625
APPENDIX B :: CEIP UTILITY

V.VI MADIC (Counter)

V.VI.i Counter : Counter Start

l
l
l
l
l
l
l

626
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

V.VI.ii Counter : Counter Monitoring

l
l
l

627
APPENDIX C :: MOTION DEFAULT PARAMETER

Appendix

C
Appendx Motion Default Parameter
i:C

. ,
.
.

628
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

VI (Default)
VI.I Command & Feedback

VI.II INP, ALM , EL

VI.III LTC, CMP, CLR, ERC

629
APPENDIX C :: MOTION DEFAULT PARAMETER

VI.IV DR, SD, STA, STP

VI.V Software Limit

VI.VI Servo ON Input Logic

VI.VII

630
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

VI.VIII

631
APPENDIX D :: LIST OF ERROR CODES

Appendix

D
List of Error Codes
Appendix:D

, . ceSDK
, , .
, ceSDK
.

632
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I
I.I

ceERR_NONE 0 No error
1 .
2 DIO .
3 AD/DA .
4 .
-1 .
-2 DIO .
-3 AD/DA .
-4 .
ceGnERR_TIMEOUT -101 communication timeout error.
ceGnERR_INVALID_PACKET -102 Packet data error.
ceGnERR_CHECKSUM -103 checksum mismatch.
ceGnERR_FLASH_ERASE_FAIL -104 fail to erase flash-memory.
ceGnERR_UNDEFINE_COMMAND -105 Undefined control command has been received.
cemERR_MEM_ALLOC_FAIL -290 Memory allocation fail.
cemERR_GLOBAL_MEM_FAIL -292 Global memory allocation fail.
cemERR_ISR_CONNEC_FAIL -310 ISR(Interrupt Service Routine) registration fail.
cemERR_DIVIDE_BY_ZERO -400 Cause divide by zero error.
cemERR_WORNG_NUM_DATA -500 Number of data is too small or too big.
cemERR_VER_MISMATCH -600 Version(of file or device) mismatch.
cmERR_FLASH_ERASE_FAIL -601 fail to erase a flash-memory sector.
cmERR_FLASH_WRITE_FAIL -602 fail to write a flash-memory sector.
cmERR_FLASH_COPYSECT_FAIL -603 fail to copy whole data from source sector to target sector.
cmERR_FLASH_CANNOTMODIFY -604 cannot modify the sector.
cmERR_INVALID_SYSCFG -605 TSysConfig dwSign SYS_CFG_SIGN .
cmERR_MAXBYTESLIMIT_SYSCFG -606 TSysConfig dwComment .
cemERR_INVALID_DEVICE_ID -1010 User set invalid device id. Refer to “DeviceId” property.
Device handle is not valid. This means that loading a device has been
cemERR_INVALID_HANDLE -1020
failed or not performed. Refer to “ceGnLoad” function.
cemERR_UNSUPORTED_FUNC -1030 User called an unsupported function for the specified product.
cemERR_INVALID_PARAMETER -1101 Some of the function parameters are invalid.
cemERR_INVALID_CHANNEL -1105 The channel setting parameter(s) is(are) invalid.
cemERR_INVALID_INPUT_RANGE -1111 Invalid range value (AI, AO).
cemERR_INVALID_FREQ_RANGE -1121 User selected invalid frequency range.
cemERR_FILE_CREATE_FAIL -1501 File creation has been failed.
cemERR_FILE_OPEN_FAIL -1511 File openning has been failed.
cemERR_FILE_READ_FAIL -1522 File reading fail.
cemERR_EVENT_CREATE_FAIL -1550 Event handle creation has been failed.
cemERR_INT_INSTANCE_FAIL -1560 Interrupt event instance creation has been failed.
cemERR_DITHREAD_CRE -1570 D/I state change monitor thread creation fail.
cemERR_BUFFER_SMALL -1580 Buffer size is too small.
The installed hardware doesn’t support a high-resolution performance
cemERR_HIGH_TIMER_UNSUPP -1590
counter(when cemUtlDelayMicroSec() had failed).
cemERR_OUT_OF_RANGE -1600 The range of some parameter is out of range that it is occurred.

633
APPENDIX D :: LIST OF ERROR CODES

cemERR_WRONG_MODE -1601 Wrong range mode.


cemERR_ON_MOTION -5001 This code is just a symbolic code. This error will never occur.
cemERR_STOP_BY_SLP -5002 Abnormally stopped by positive soft limit.
cemERR_STOP_BY_SLN -5003 Abnormally stopped by negative soft limit.
cemERR_STOP_BY_CMP3 -5004 Abnormally stopped by comparator3.
cemERR_STOP_BY_CMP4 -5005 Abnormally stopped by comparator4.
cemERR_STOP_BY_CMP5 -5006 Abnormally stopped by comparator5.
cemERR_STOP_BY_ELP -5007 Abnormally stopped by (+) external limit.
cemERR_STOP_BY_ELN -5008 Abnormally stopped by (-) external limit.
cemERR_STOP_BY_ALM -5009 Abnormally stopped by alarm input signal.
cemERR_STOP_BY_CSTP -5010 Abnormally stopped by CSTP input signal.
cemERR_STOP_BY_CEMG -5011 Abnormally stopped by CEMG input signal.
cemERR_STOP_BY_SD -5012 Abnormally stopped by SD input signal.
cemERR_STOP_BY_DERROR -5013 Abnormally stopped by operation data error.
cemERR_STOP_BY_IP -5014 Abnormally stopped by other axis error during interpolation.
cemERR_STOP_BY_PO -5015 An overflow occurred in the PA/PB input buffer.
cemERR_STOP_BY_AO -5016 Out of range position counter during interpolation.
cemERR_STOP_BY_EE -5017 An EA/EB input error occurred (does not stop).
cemERR_STOP_BY_PE -5018 An PA/PB input error occurred (does not stop).
Abnormally stopped because slave axis has been stopped (Only in
cemERR_STOP_BY_SLVERR -5019
Master/Slave mode).
cemERR_STOP_BY_SEMG -5020 Abnormally stopped by "software emergency" setting.
Master output mode is not CW/CCW mode during Master/Slave
cemERR_MOT_MAOMODE -5110
operation.
cemERR_MOT_SLAVE_SET -5120 Slave start has been failed during Master/Slave operation.
cemERR_SPEED_RANGE_OVER -5130 Speed setting value exceeds setting range.
cemERR_INVALID_SPEED_SET -5140 Speed setting value is not valid.
cmERR_ACC_LOW_LIMIT_OVER -5142 Acceleration setting value is too low.
cmERR_ACC_HIGH_LIMIT_OVER -5143 Acceleration setting value is too high.
cmERR_DEC_LOW_LIMIT_OVER -5144 Deceleration setting value is too low.
cmERR_DEC_HIGH_LIMIT_OVER -5145 Deceleration setting value is too high.
cemERR_INVALID_IXMAP -5150 Invalid Interpolation Map.
cemERR_INVALID_LMMAP -5160 Invalid List-Motion Map.
Motion command has been skipped because the axis is already
cemERR_MOT_SEQ_SKIPPED -5170
running.
cmERR_MOT_PREREG_FULL -5180 Motion command is skipped because the pre-register is full of an axis.
cmERR_LTC_QUE_SIZE_ERROR -5190 Specified latch-que size is too big.
cmERR_LTC_QUE_BUF_FREED -5191 Latch-que is not allocated.
cmERR_UNKNOWN -9999 Unknown Error.
-11000 .
.
-20000 ceSDKDaemon ,
.
SOCKET
-20001
.
.
-20002
.
, ceGnLoad
-20003
.

.
-20004
0 .

634
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

-20005 .

.
-20006
.

.
-20007 , .
, .

-20008 ID .

-20009 .

,
-50000
.
-50001 .
-50002 , .
, DIO, AD/DA
-50003
.
. 0 255
-50004
.
. -50004
-51000
.
-51001 .
-51002 .
-51003 .
-51004 .
.
-61000
SxStop SxStopEmg .
-70000 .
-81000 .
,
-81001
.
,
-81002
.
Default 0
-100000
.
-100001 0 .
-100002 .
0 ,
-100003
.
,
-100004
0 , .
-500000 .

635
APPENDIX E:: INDEX OF CESDK FUNCTIONS

Appendix

E
Appendx Index of ceSDK Functions
i:E

. ceSDK
. .

636
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

I Index of ceSDK Functions

I.I Quick Reference to ceSDK Functions

General Functions

ceLoadDll ________________________________________________________________________ 60
ceUnloadDll ______________________________________________________________________ 62
ceGnLoad ________________________________________________________________________ 63
ceGnUnload ______________________________________________________________________ 66
ceGnSearchDevice _________________________________________________________________ 67
ceGnUnSearchDevice ______________________________________________________________ 72
ceGnReSearchDevice _______________________________________________________________ 75
ceGnIsSearchedDevice _____________________________________________________________ 77
ceGnResetNode ___________________________________________________________________ 78
ceGnCtrlBoost_Set / ceGnCtrlBoost_Get _______________________________________________ 81
ceGnNodeIsActive _________________________________________________________________ 83
ceGnDebugMode __________________________________________________________________ 86
ceGnTotalNode____________________________________________________________________ 88
ceGnTotalMotionChannel ___________________________________________________________ 90
ceGnTotalDIOChannel _____________________________________________________________ 93
ceGnTotalAIChannel _______________________________________________________________ 94
ceGnTotalAOChannel ______________________________________________________________ 95
ceGnTotalMDIOChannel ___________________________________________________________ 96
ceGnTotalCNTChannel _____________________________________________________________ 97
ceGnModuleCount_Motion __________________________________________________________ 99
ceGnModuleCount_Dio ____________________________________________________________ 102
ceGnModuleCount_Ai _____________________________________________________________ 103
ceGnModuleCount_Ao ____________________________________________________________ 104
ceGnModuleCount_Mdio __________________________________________________________ 105
ceGnModuleCount_Cnt ____________________________________________________________ 106
ceGnChannelCount_Motion ________________________________________________________ 108
ceGnChannelCount_Dio ___________________________________________________________ 112

637
APPENDIX E:: INDEX OF CESDK FUNCTIONS

ceGnChannelCount_Ai ____________________________________________________________ 113


ceGnChannelCount_Ao ____________________________________________________________ 114
ceGnChannelCount_Mdio __________________________________________________________ 115
ceGnChannelCount_Cnt ___________________________________________________________ 116
ceGnLocalAxis_Get _______________________________________________________________ 118
ceGnLocalDIO_Get _______________________________________________________________ 122
ceGnLocalAI_Get_________________________________________________________________ 124
ceGnLocalAO_Get ________________________________________________________________ 126
ceGnLocalMDIO_Get _____________________________________________________________ 128
ceGnLocalCNT_Get _______________________________________________________________ 130
ceGnGlobalAxis_Get ______________________________________________________________ 134
ceGnGlobalDIO_Get ______________________________________________________________ 139
ceGnGlobalAI_Get ________________________________________________________________ 141
ceGnGlobalAO_Get _______________________________________________________________ 143
ceGnGlobalMDIO_Get ____________________________________________________________ 145
ceGnGlobalCNT_Get ______________________________________________________________ 147
ceGnEmergency_Set / ceGnEmergency_Get ___________________________________________ 151
cemGnServoOn_Set / cemGnServoOn_Get ____________________________________________ 156
cemGnAlarmReset ________________________________________________________________ 159
cemCfgMioProperty_Set / cemCfgMioProperty_Get _____________________________________ 166
cemCfgFilter_Set / cemCfgFilter_Get_________________________________________________ 173
cemCfgFilterAB_Set / cemCfgFilterAB_Get ___________________________________________ 176
cemCfgInMode_Set / cemCfgInMode_Get _____________________________________________ 180
cemCfgOutMode_Set / cemCfgOutMode_Get __________________________________________ 183
cemCfgCtrlMode_Set / cemCfgCtrlMode_Get __________________________________________ 187
cemCfgInOutRatio_Set / cemCfgInOutRatio_Get _______________________________________ 191
cemCfgUnitDist_Set / cemCfgUnitDist_Get ____________________________________________ 194
cemCfgUnitSpeed_Set / cemCfgUnitSpeed_Get _________________________________________ 198
cemCfgSpeedRange_Set / cemCfgSpeedRange_Get _____________________________________ 201
cemCfgSpeedPattern_Set / cemCfgSpeedPattern_Get ____________________________________ 204
cemCfgSoftLimit_Set / cemCfgSoftLimit_Get __________________________________________ 210
cemCfgRingCntr_Set / cemCfgRingCntr_Get __________________________________________ 213
cemCfgSeqMode_Set / cemCfgSeqMode_Get___________________________________________ 216
cemSxSpeedRatio_Set / cemSxSpeedRatio_Get _________________________________________ 222

638
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

cemSxMove / cemSxMoveStart ______________________________________________________ 225


cemSxMoveTo / cemSxMoveToStart__________________________________________________ 230
cemSxVMoveStart ________________________________________________________________ 233
cemSxMoveStart2V _______________________________________________________________ 236
cemSxMoveToStart2V _____________________________________________________________ 240
cemSxStop/cemSxStopEmg _________________________________________________________ 242
cemSxIsDone ____________________________________________________________________ 244
cemSxWaitDone __________________________________________________________________ 245
cemSxTargetPos_Get ______________________________________________________________ 246
cemSxOptIniSpeed_Set / cemSxOptIniSpeed_Get _______________________________________ 248
cemSxCorrection_Set / cemSxCorrection_Get __________________________________________ 250
cemIxMapAxes ___________________________________________________________________ 257
cemIxUnMap ____________________________________________________________________ 260
cemIxSpeedPattern_Set / cemIxSpeedPattern_Get ______________________________________ 261
cemIxVelCorrMode_Set / cemIxVelCorrMode_Get ______________________________________ 266
cemIxLine / cemIxLineStart ________________________________________________________ 270
cemIxLineTo / cemIxLineToStart ____________________________________________________ 274
cemIxArcA / cemIxArcAStart _______________________________________________________ 276
cemIxArcATo / cemIxArcAToStart ___________________________________________________ 283
cemIxArcP / cemIxArcPStart _______________________________________________________ 290
cemIxArcPTo / cemIxArcPToStart ___________________________________________________ 297
cemIxArc3P / cemIxArc3PStart _____________________________________________________ 304
cemIxArc3PTo / cemIxArc3PToStart _________________________________________________ 309
cemIxStop / cemIxStopEmg_________________________________________________________ 314
cemIxIsDone ____________________________________________________________________ 317
cemIxWaitDone __________________________________________________________________ 320
cemHomeConfig_Set / cemHomeConfig_Get___________________________________________ 332
cemHomePosClrMode_Set / cemHomePosClrMode_Get _________________________________ 336
cemHomeSpeedPattern_Set / cemHomeSpeedPattern_Get ________________________________ 340
cemHomeMove / cemHomeMoveStart ________________________________________________ 344
cemHomeSuccess_Get / cemHomeSuccess_Set _________________________________________ 350
cemHomeIsBusy__________________________________________________________________ 352
cemOverrideSpeedSet______________________________________________________________ 358
cemOverrideMove ________________________________________________________________ 362

639
APPENDIX E:: INDEX OF CESDK FUNCTIONS

cemOverrideMoveTo ______________________________________________________________ 366


cemMsRegisterSlave / cemMsUnregisterSlave __________________________________________ 369
cemMsCheckSlaveState ____________________________________________________________ 374
cemMsMasterAxis_Get ____________________________________________________________ 375
cemPlsrInMode_Set/ cemPlsrInMode_Get _____________________________________________ 380
cemPlsrGain_Set/ cemPlsrGain_Get _________________________________________________ 384
cemPlsrHomeMoveStart ___________________________________________________________ 388
cemPlsrMove/ cemPlsrMoveStart ____________________________________________________ 390
cemPlsrMoveTo/ cemPlsrMoveToStart ________________________________________________ 394
cemPlsrVMoveStart _______________________________________________________________ 396
cemStCount_Set/ cemStCount_Get ___________________________________________________ 399
cemStPosition_Set/ cemStPosition_Get _______________________________________________ 402
cemStSpeed_Get __________________________________________________________________ 404
cemStReadMotionState ____________________________________________________________ 405
cemStReadMioStatuses ____________________________________________________________ 409
cemStGetMstString _______________________________________________________________ 412
cemStReadIOMessageCount ________________________________________________________ 414
cemLtcIsLatched _________________________________________________________________ 416
cemLtcReadLatch_________________________________________________________________ 418
cemDiOne_Get ___________________________________________________________________ 436
cemDiMulti_Get __________________________________________________________________ 439
cemDoOne_Put/ cemDoOne_Get ____________________________________________________ 442
cemDoMulti_Put/ cemDoMulti_Get __________________________________________________ 443
cedioMode_Set/ cedioMode_Get _____________________________________________________ 448
cedioModeMulti_Set/ cedioModeMulti_Get ____________________________________________ 450
cedioLogicOne_Set/ cedioLogicOne_Get ______________________________________________ 453
cedioLogicMulti_Set/ cedioLogicMulti_Get ____________________________________________ 455
cedioOne_Get/ cedioOne_Put _______________________________________________________ 458
cedioMulti_Get/ cedioMulti_Put _____________________________________________________ 461
cedioOneF_Get___________________________________________________________________ 464
cedioMultiF_Get _________________________________________________________________ 467
cedioPulseOne ___________________________________________________________________ 471
cedioPulseMulti __________________________________________________________________ 473
cecEdgeOne_Set/ cecEdgeOne_Get __________________________________________________ 478

640
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

cecEdgeMulti_Set/ cecEdgeMulti_Get ________________________________________________ 481


cecClearOne/ cecClearMulti/ cecClearAll _____________________________________________ 484
cec_Get _________________________________________________________________________ 487
cecEnableOne_Set/ cecEnableOne_Get _______________________________________________ 490
cecEnableMulti_Set/ cecEnableMulti_Get _____________________________________________ 492
cecOverflowFlagGetOne/ cecOverflowFlagGetMulti ____________________________________ 495
cecOverflowFlagClearOne/ cecOverflowFlagClearMulti/ cecOverflowFlagClearAll ___________ 497
cecFilterFreq_Set/ cecFilterFreq_Get ________________________________________________ 499
ceaiVoltRangeMode_Set/ ceaiVoltRangeMode_Get _____________________________________ 504
ceaiRangeDigit_Get _______________________________________________________________ 508
ceaiDigit_Get ____________________________________________________________________ 509
ceaiVolt_Get _____________________________________________________________________ 512
ceaiCurrent_Get __________________________________________________________________ 514
ceaoDigit_Out____________________________________________________________________ 518
ceaoVolt_Out ____________________________________________________________________ 520
ceaoCurrent_Out _________________________________________________________________ 522
cesOpenPort _____________________________________________________________________ 527
cesClosePort _____________________________________________________________________ 530
cesIsDataReady __________________________________________________________________ 532
cesSetTimeout / cesGetTimeout ______________________________________________________ 534
cesRxReset / cesTxReset ___________________________________________________________ 536
cesGetUnreadDataSize_____________________________________________________________ 538
cesPeekByte / cesPeekByteEx _______________________________________________________ 540
cesReadByte / cesWriteByte / cesPeekString____________________________________________ 543
cesReadString / cesWriteString ______________________________________________________ 546
cesReadDword / cesWriteDword _____________________________________________________ 550
cesCommit ______________________________________________________________________ 553
ceil_Set / ceil_Get _________________________________________________________________ 559
ceilDisconnectTimeout_Set / ceilDisconnectTimeout_Get_________________________________ 561
ceilActionModeOne_Set / ceilActionModeOne_Get ______________________________________ 563
ceilActionModeMulti_Set / ceilActionModeMulti_Get ___________________________________ 566
ceutlUserData_Set/ ceutlUserData_Get _______________________________________________ 572
ceutlUserVersion_Get/ ceutlUserVersion_Get __________________________________________ 573
ceutlNodeVersion_Get _____________________________________________________________ 574

641
APPENDIX E:: INDEX OF CESDK FUNCTIONS

ceutlLibVersion_Get ______________________________________________________________ 575


ceutlPumpSingleMessage __________________________________________________________ 576
ceutlPumpMultiMessage ___________________________________________________________ 577
ceutlSyncCount_Get_______________________________________________________________ 578
ceutlIOSyncCount_Get ____________________________________________________________ 579
ceutlSyncWait ____________________________________________________________________ 580
cemAdvGetNodeInformation ________________________________________________________ 582
cemAdvGetAllNodeInformation _____________________________________________________ 582
cemAdvErcOut ___________________________________________________________________ 582
cemAdvErcReset__________________________________________________________________ 582
cemAdvManualPacket _____________________________________________________________ 582

642
COMIZOA COMPACT EIP SERIES SOFTWARE DEVELOPMENT KIT

TEST & MEASUREMENT & AUTOMATION / COMIZOA

ceSDK Manual

643

You might also like