1'''
2Motion - Motion_3axis_linear_interpolation.py with synchronous mode.
3
4-------------------------------------------------------------------------------------
5Please change correct serial number or IP and port number BEFORE you run example code.
6
7For other examples please check:
8 https://github.com/WPC-Systems-Ltd/WPC_Python_driver_release/tree/main/examples
9See README.md file to get detailed usage of this example.
10
11Copyright (c) 2022-2025 WPC Systems Ltd. All rights reserved.
12'''
13
14## WPC
15from wpcsys import pywpc
16
17
18def main():
19 ## Get Python driver version
20 print(f'{pywpc.PKG_FULL_NAME} - Version {pywpc.__version__}')
21
22 ## Create device handle
23 dev = pywpc.EMotion()
24
25 ## Connect to device
26 try:
27 dev.connect("192.168.1.110") ## Depend on your device
28 except Exception as err:
29 pywpc.printGenericError(err)
30 ## Release device handle
31 dev.close()
32 return
33
34 try:
35 ## Parameters setting
36 port = 0 ## Depend on your device
37 stop_decel = 0
38 timeout = 3 ## [sec]
39
40 ## Linear interpolation parameters
41 axis1 = 0
42 dest_posi1 = 2000
43 axis2 = 1
44 dest_posi2 = 2000
45 axis3 = 2
46 dest_posi3 = 2000
47
48 ## Get firmware model & version
49 driver_info = dev.Sys_getDriverInfo(timeout)
50 print(f"Model name: {driver_info[0]}, Firmware version: {driver_info[-1]} ")
51
52 ## Motion open
53 err = dev.Motion_open(port, timeout)
54 print(f"Motion_open in port {port}, status: {err}")
55
56 ## Motion open configuration file
57 err = dev.Motion_openCfgFile('C:/Users/user/Desktop/3AxisStage_2P.ini')
58 print(f"Motion_openCfgFile, status: {err}")
59
60 ## Motion load configuration file
61 err = dev.Motion_loadCfgFile(timeout)
62 print(f"Motion_loadCfgFile, status: {err}")
63
64 ## Motion configure
65 err = dev.Motion_cfg3AxisLinearInterpo(port, axis1, dest_posi1, axis2, dest_posi2, axis3, dest_posi3, speed=2000, accel=100000, decel=100000, timeout=timeout)
66 print(f"Motion_cfg3AxisLinearInterpo in port {port}, status: {err}")
67
68 ## Motion start
69 err = dev.Motion_startLinearInterpo(port, timeout)
70 print(f"Motion_startLinearInterpo in port {port}, status: {err}")
71
72 move_status = 0
73 while move_status == 0:
74 axis1_move_status = dev.Motion_getMoveStatus(port, axis1, timeout)
75 axis2_move_status = dev.Motion_getMoveStatus(port, axis2, timeout)
76 axis3_move_status = dev.Motion_getMoveStatus(port, axis3, timeout)
77 move_status = axis1_move_status & axis2_move_status & axis3_move_status
78 if move_status == 0:
79 print("Moving......")
80 else:
81 print("Move completed")
82
83 ## Motion stop
84 for i in [axis1, axis2, axis3]:
85 err = dev.Motion_stop(port, i, stop_decel, timeout)
86 print(f"Motion_stop axis{i}, status: {err}")
87
88 ## Motion close
89 err = dev.Motion_close(port, timeout)
90 print(f"Motion_close in port {port}, status: {err}")
91 except Exception as err:
92 pywpc.printGenericError(err)
93
94 finally:
95 ## Disconnect device
96 dev.disconnect()
97
98 ## Release device handle
99 dev.close()
100
101
102if __name__ == '__main__':
103 main()