libximc 3.0.4__tar.gz → 3.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libximc-3.0.4 → libximc-3.1.2}/PKG-INFO +1 -1
- {libximc-3.0.4 → libximc-3.1.2}/pyproject.toml +1 -1
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/_flag_enumerations.py +9 -8
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/_highlevel.py +8 -4
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/_structure_types.py +29 -2
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libbindy.so +0 -0
- libximc-3.1.2/src/libximc/library-files/debian-amd64/libjximc.so +0 -0
- libximc-3.1.2/src/libximc/library-files/debian-amd64/libjximc.so.7 +0 -0
- libximc-3.1.2/src/libximc/library-files/debian-amd64/libjximc.so.7.0.0 +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libximc.so +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libximc.so.7 +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libximc.so.7.0.0 +0 -0
- {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/7 → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework}/Headers/ximc.h +14 -11
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/7/Frameworks/libbindy.dylib +0 -0
- {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/Current → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/7}/Headers/ximc.h +14 -11
- {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/7}/libximc +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/Current/Frameworks/libbindy.dylib +0 -0
- {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/Current}/Headers/ximc.h +14 -11
- {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/7 → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework/Versions/Current}/libximc +0 -0
- {libximc-3.0.4/src/libximc/library-files/macosx/libximc.framework/Versions/Current → libximc-3.1.2/src/libximc/library-files/macosx/libximc.framework}/libximc +0 -0
- libximc-3.1.2/src/libximc/library-files/win32/bindy.dll +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/win32/bindy.lib +0 -0
- libximc-3.1.2/src/libximc/library-files/win32/libjximc.dll +0 -0
- libximc-3.1.2/src/libximc/library-files/win32/libximc.dll +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/win32/libximc.lib +0 -0
- libximc-3.1.2/src/libximc/library-files/win32/xiwrapper.dll +0 -0
- libximc-3.1.2/src/libximc/library-files/win64/bindy.dll +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/win64/bindy.lib +0 -0
- libximc-3.1.2/src/libximc/library-files/win64/libjximc.dll +0 -0
- libximc-3.1.2/src/libximc/library-files/win64/libximc.dll +0 -0
- libximc-3.1.2/src/libximc/library-files/win64/libximc.lib +0 -0
- libximc-3.1.2/src/libximc/library-files/win64/xiwrapper.dll +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/lowlevel/_lowlevel.py +31 -8
- libximc-3.0.4/src/libximc/library-files/debian-amd64/libjximc.so +0 -0
- libximc-3.0.4/src/libximc/library-files/debian-amd64/libjximc.so.7 +0 -0
- libximc-3.0.4/src/libximc/library-files/debian-amd64/libjximc.so.7.0.0 +0 -0
- libximc-3.0.4/src/libximc/library-files/win32/bindy.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win32/libjximc.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win32/libximc.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win32/xiwrapper.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win64/bindy.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win64/libjximc.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win64/libximc.dll +0 -0
- libximc-3.0.4/src/libximc/library-files/win64/libximc.lib +0 -0
- libximc-3.0.4/src/libximc/library-files/win64/xiwrapper.dll +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/.flake8 +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/LICENSE +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/README.md +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/__init__.py +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/highlevel/__init__.py +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/debian-amd64/libxiwrapper.so +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Resources/Info.plist +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/7/Frameworks/libxiwrapper.dylib +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/7/Resources/Info.plist +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/Current/Frameworks/libxiwrapper.dylib +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/library-files/macosx/libximc.framework/Versions/Current/Resources/Info.plist +0 -0
- {libximc-3.0.4 → libximc-3.1.2}/src/libximc/lowlevel/__init__.py +0 -0
|
@@ -155,14 +155,15 @@ class MoveFlags(StrictIntFlag):
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
class EngineFlags(StrictIntFlag):
|
|
158
|
-
ENGINE_REVERSE =
|
|
159
|
-
ENGINE_CURRENT_AS_RMS =
|
|
160
|
-
ENGINE_MAX_SPEED =
|
|
161
|
-
ENGINE_ANTIPLAY =
|
|
162
|
-
ENGINE_ACCEL_ON =
|
|
163
|
-
ENGINE_LIMIT_VOLT =
|
|
164
|
-
ENGINE_LIMIT_CURR =
|
|
165
|
-
ENGINE_LIMIT_RPM =
|
|
158
|
+
ENGINE_REVERSE = 0x001
|
|
159
|
+
ENGINE_CURRENT_AS_RMS = 0x002
|
|
160
|
+
ENGINE_MAX_SPEED = 0x004
|
|
161
|
+
ENGINE_ANTIPLAY = 0x008
|
|
162
|
+
ENGINE_ACCEL_ON = 0x010
|
|
163
|
+
ENGINE_LIMIT_VOLT = 0x020
|
|
164
|
+
ENGINE_LIMIT_CURR = 0x040
|
|
165
|
+
ENGINE_LIMIT_RPM = 0x080
|
|
166
|
+
ENGINE_USE_PEAK_CURRENT = 0x100
|
|
166
167
|
|
|
167
168
|
|
|
168
169
|
class MicrostepMode(IntEnum):
|
|
@@ -376,7 +376,8 @@ class Axis:
|
|
|
376
376
|
int(settings.EngineFlags),
|
|
377
377
|
settings.Antiplay,
|
|
378
378
|
int(settings.MicrostepMode),
|
|
379
|
-
settings.StepsPerRev
|
|
379
|
+
settings.StepsPerRev,
|
|
380
|
+
settings.PeakCurrent)
|
|
380
381
|
_check_result(lib.set_engine_settings(self._device_id, byref(engine_settings)))
|
|
381
382
|
|
|
382
383
|
def set_engine_settings_calb(self, settings: engine_settings_calb_t) -> None:
|
|
@@ -400,7 +401,8 @@ class Axis:
|
|
|
400
401
|
int(settings.EngineFlags),
|
|
401
402
|
settings.Antiplay,
|
|
402
403
|
int(settings.MicrostepMode),
|
|
403
|
-
settings.StepsPerRev
|
|
404
|
+
settings.StepsPerRev,
|
|
405
|
+
settings.PeakCurrent)
|
|
404
406
|
_check_result(lib.set_engine_settings_calb(self._device_id, byref(engine_settings), byref(self._calib)))
|
|
405
407
|
|
|
406
408
|
def get_engine_settings(self) -> engine_settings_t:
|
|
@@ -422,7 +424,8 @@ class Axis:
|
|
|
422
424
|
engine_settings.EngineFlags,
|
|
423
425
|
engine_settings.Antiplay,
|
|
424
426
|
engine_settings.MicrostepMode,
|
|
425
|
-
engine_settings.StepsPerRev
|
|
427
|
+
engine_settings.StepsPerRev,
|
|
428
|
+
engine_settings.PeakCurrent)
|
|
426
429
|
|
|
427
430
|
def get_engine_settings_calb(self) -> engine_settings_calb_t:
|
|
428
431
|
"""Read user unit engine settings.
|
|
@@ -442,7 +445,8 @@ class Axis:
|
|
|
442
445
|
engine_settings.EngineFlags,
|
|
443
446
|
engine_settings.Antiplay,
|
|
444
447
|
engine_settings.MicrostepMode,
|
|
445
|
-
engine_settings.StepsPerRev
|
|
448
|
+
engine_settings.StepsPerRev,
|
|
449
|
+
engine_settings.PeakCurrent)
|
|
446
450
|
|
|
447
451
|
def set_entype_settings(self, settings: entype_settings_t) -> None:
|
|
448
452
|
"""Set engine type and driver type.
|
|
@@ -700,7 +700,8 @@ class engine_settings_t:
|
|
|
700
700
|
EngineFlags: flag_enumerations.EngineFlags = NOT_INITIALIZED,
|
|
701
701
|
Antiplay: int = NOT_INITIALIZED,
|
|
702
702
|
MicrostepMode: flag_enumerations.MicrostepMode = NOT_INITIALIZED,
|
|
703
|
-
StepsPerRev: int = NOT_INITIALIZED
|
|
703
|
+
StepsPerRev: int = NOT_INITIALIZED,
|
|
704
|
+
PeakCurrent: int = NOT_INITIALIZED):
|
|
704
705
|
"""Movement limitations and settings related to the motor.
|
|
705
706
|
|
|
706
707
|
This structure contains useful motor settings. These settings specify the motor shaft movement algorithm, list
|
|
@@ -734,6 +735,8 @@ class engine_settings_t:
|
|
|
734
735
|
:type MicrostepMode: libximc.highlevel.MicrostepMode
|
|
735
736
|
:param StepsPerRev: Number of full steps per revolution (Used with stepper motor only). Range: 1..65535.
|
|
736
737
|
:type StepsPerRev: int
|
|
738
|
+
:param PeakCurrent: Peak current value, mA. Current can be increased up to this value for short periods of time if ENGINE_USE_PEAK_CURRENT is set
|
|
739
|
+
:type PeakCurrent: int
|
|
737
740
|
"""
|
|
738
741
|
self.NomVoltage = NomVoltage
|
|
739
742
|
self.NomCurrent = NomCurrent
|
|
@@ -743,6 +746,7 @@ class engine_settings_t:
|
|
|
743
746
|
self.Antiplay = Antiplay
|
|
744
747
|
self.MicrostepMode = MicrostepMode
|
|
745
748
|
self.StepsPerRev = StepsPerRev
|
|
749
|
+
self.PeakCurrent = PeakCurrent
|
|
746
750
|
|
|
747
751
|
# getters
|
|
748
752
|
@property
|
|
@@ -776,6 +780,10 @@ class engine_settings_t:
|
|
|
776
780
|
@property
|
|
777
781
|
def StepsPerRev(self) -> int:
|
|
778
782
|
return self._StepsPerRev
|
|
783
|
+
|
|
784
|
+
@property
|
|
785
|
+
def PeakCurrent(self) -> int:
|
|
786
|
+
return self._PeakCurrent
|
|
779
787
|
|
|
780
788
|
# setters
|
|
781
789
|
@NomVoltage.setter
|
|
@@ -830,6 +838,11 @@ class engine_settings_t:
|
|
|
830
838
|
_check_noncontainer_castability(val, c_uint16, varname="StepsPerRev")
|
|
831
839
|
self._StepsPerRev = val
|
|
832
840
|
|
|
841
|
+
@PeakCurrent.setter
|
|
842
|
+
def PeakCurrent(self, val):
|
|
843
|
+
_check_noncontainer_castability(val, c_uint16, varname="PeakCurrent")
|
|
844
|
+
self._PeakCurrent = val
|
|
845
|
+
|
|
833
846
|
def __repr__(self) -> str:
|
|
834
847
|
result = ""
|
|
835
848
|
for key_value_pair in self.__dict__.items():
|
|
@@ -846,7 +859,8 @@ class engine_settings_calb_t:
|
|
|
846
859
|
EngineFlags: flag_enumerations.EngineFlags = NOT_INITIALIZED,
|
|
847
860
|
Antiplay: float = NOT_INITIALIZED,
|
|
848
861
|
MicrostepMode: flag_enumerations.MicrostepMode = NOT_INITIALIZED,
|
|
849
|
-
StepsPerRev: int = NOT_INITIALIZED
|
|
862
|
+
StepsPerRev: int = NOT_INITIALIZED,
|
|
863
|
+
PeakCurrent: int = NOT_INITIALIZED):
|
|
850
864
|
"""Movement limitations and settings, related to the motor. In user units.
|
|
851
865
|
|
|
852
866
|
This structure contains useful motor settings. These settings specify the motor shaft movement algorithm, list
|
|
@@ -876,6 +890,8 @@ class engine_settings_calb_t:
|
|
|
876
890
|
:type MicrostepMode: libximc.highlevel.MicrostepMode
|
|
877
891
|
:param StepsPerRev: Number of full steps per revolution (Used with stepper motor only). Range: 1..65535.
|
|
878
892
|
:type StepsPerRev: int
|
|
893
|
+
:param PeakCurrent: Peak current value, mA. Current can be increased up to this value for short periods of time if ENGINE_USE_PEAK_CURRENT is set
|
|
894
|
+
:type PeakCurrent: int
|
|
879
895
|
"""
|
|
880
896
|
self.NomVoltage = NomVoltage
|
|
881
897
|
self.NomCurrent = NomCurrent
|
|
@@ -884,6 +900,7 @@ class engine_settings_calb_t:
|
|
|
884
900
|
self.Antiplay = Antiplay
|
|
885
901
|
self.MicrostepMode = MicrostepMode
|
|
886
902
|
self.StepsPerRev = StepsPerRev
|
|
903
|
+
self.PeakCurrent = PeakCurrent
|
|
887
904
|
|
|
888
905
|
# getters
|
|
889
906
|
@property
|
|
@@ -914,6 +931,10 @@ class engine_settings_calb_t:
|
|
|
914
931
|
def StepsPerRev(self) -> int:
|
|
915
932
|
return self._StepsPerRev
|
|
916
933
|
|
|
934
|
+
@property
|
|
935
|
+
def PeakCurrent(self) -> int:
|
|
936
|
+
return self._PeakCurrent
|
|
937
|
+
|
|
917
938
|
# setters
|
|
918
939
|
@NomVoltage.setter
|
|
919
940
|
def NomVoltage(self, val):
|
|
@@ -962,6 +983,12 @@ class engine_settings_calb_t:
|
|
|
962
983
|
_check_noncontainer_castability(val, c_uint16, varname="StepsPerRev")
|
|
963
984
|
self._StepsPerRev = val
|
|
964
985
|
|
|
986
|
+
@PeakCurrent.setter
|
|
987
|
+
def PeakCurrent(self, val):
|
|
988
|
+
_check_noncontainer_castability(val, c_uint16, varname="PeakCurrent")
|
|
989
|
+
self._PeakCurrent = val
|
|
990
|
+
|
|
991
|
+
|
|
965
992
|
def __repr__(self) -> str:
|
|
966
993
|
result = ""
|
|
967
994
|
for key_value_pair in self.__dict__.items():
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -347,12 +347,12 @@ extern "C"
|
|
|
347
347
|
|
|
348
348
|
|
|
349
349
|
/** @cond DO_NOT_WANT */
|
|
350
|
-
#define LIBXIMC_VERSION 3.
|
|
350
|
+
#define LIBXIMC_VERSION 3.1.2
|
|
351
351
|
/** @endcond */
|
|
352
352
|
|
|
353
353
|
|
|
354
354
|
/** @cond DO_NOT_WANT */
|
|
355
|
-
#define LIBXIMC_PROTOCOL_VERSION 20.
|
|
355
|
+
#define LIBXIMC_PROTOCOL_VERSION 20.15
|
|
356
356
|
/** @endcond */
|
|
357
357
|
|
|
358
358
|
|
|
@@ -660,14 +660,15 @@ extern "C"
|
|
|
660
660
|
* @see engine_settings_t::EngineFlags, get_engine_settings, set_engine_settings
|
|
661
661
|
*/
|
|
662
662
|
//@{
|
|
663
|
-
#define ENGINE_REVERSE
|
|
664
|
-
#define ENGINE_CURRENT_AS_RMS
|
|
665
|
-
#define ENGINE_MAX_SPEED
|
|
666
|
-
#define ENGINE_ANTIPLAY
|
|
667
|
-
#define ENGINE_ACCEL_ON
|
|
668
|
-
#define ENGINE_LIMIT_VOLT
|
|
669
|
-
#define ENGINE_LIMIT_CURR
|
|
670
|
-
#define ENGINE_LIMIT_RPM
|
|
663
|
+
#define ENGINE_REVERSE 0x001 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
|
|
664
|
+
#define ENGINE_CURRENT_AS_RMS 0x002 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
|
|
665
|
+
#define ENGINE_MAX_SPEED 0x004 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
|
|
666
|
+
#define ENGINE_ANTIPLAY 0x008 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
|
|
667
|
+
#define ENGINE_ACCEL_ON 0x010 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
|
|
668
|
+
#define ENGINE_LIMIT_VOLT 0x020 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
|
|
669
|
+
#define ENGINE_LIMIT_CURR 0x040 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
|
|
670
|
+
#define ENGINE_LIMIT_RPM 0x080 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
|
|
671
|
+
#define ENGINE_USE_PEAK_CURRENT 0x100 /**< \english Enable peak current usage. \endenglish \russian Разрешить использование пикового тока. \endrussian */
|
|
671
672
|
//@}
|
|
672
673
|
|
|
673
674
|
|
|
@@ -1488,6 +1489,7 @@ extern "C"
|
|
|
1488
1489
|
int Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
|
|
1489
1490
|
unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
|
|
1490
1491
|
unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
|
|
1492
|
+
unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
|
|
1491
1493
|
} engine_settings_t;
|
|
1492
1494
|
|
|
1493
1495
|
/**
|
|
@@ -1516,6 +1518,7 @@ extern "C"
|
|
|
1516
1518
|
float Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
|
|
1517
1519
|
unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
|
|
1518
1520
|
unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
|
|
1521
|
+
unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
|
|
1519
1522
|
} engine_settings_calb_t;
|
|
1520
1523
|
|
|
1521
1524
|
/**
|
|
@@ -3712,7 +3715,7 @@ extern "C"
|
|
|
3712
3715
|
* \endenglish
|
|
3713
3716
|
* \russian
|
|
3714
3717
|
* Команда чтения пароля к веб-странице. Используется только производителем.
|
|
3715
|
-
* Эта функция
|
|
3718
|
+
* Эта функция позволяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
|
|
3716
3719
|
* @param UserPassword[20] Строчка-пароль для доступа к веб-странице
|
|
3717
3720
|
* \endrussian
|
|
3718
3721
|
*/
|
|
Binary file
|
|
@@ -347,12 +347,12 @@ extern "C"
|
|
|
347
347
|
|
|
348
348
|
|
|
349
349
|
/** @cond DO_NOT_WANT */
|
|
350
|
-
#define LIBXIMC_VERSION 3.
|
|
350
|
+
#define LIBXIMC_VERSION 3.1.2
|
|
351
351
|
/** @endcond */
|
|
352
352
|
|
|
353
353
|
|
|
354
354
|
/** @cond DO_NOT_WANT */
|
|
355
|
-
#define LIBXIMC_PROTOCOL_VERSION 20.
|
|
355
|
+
#define LIBXIMC_PROTOCOL_VERSION 20.15
|
|
356
356
|
/** @endcond */
|
|
357
357
|
|
|
358
358
|
|
|
@@ -660,14 +660,15 @@ extern "C"
|
|
|
660
660
|
* @see engine_settings_t::EngineFlags, get_engine_settings, set_engine_settings
|
|
661
661
|
*/
|
|
662
662
|
//@{
|
|
663
|
-
#define ENGINE_REVERSE
|
|
664
|
-
#define ENGINE_CURRENT_AS_RMS
|
|
665
|
-
#define ENGINE_MAX_SPEED
|
|
666
|
-
#define ENGINE_ANTIPLAY
|
|
667
|
-
#define ENGINE_ACCEL_ON
|
|
668
|
-
#define ENGINE_LIMIT_VOLT
|
|
669
|
-
#define ENGINE_LIMIT_CURR
|
|
670
|
-
#define ENGINE_LIMIT_RPM
|
|
663
|
+
#define ENGINE_REVERSE 0x001 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
|
|
664
|
+
#define ENGINE_CURRENT_AS_RMS 0x002 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
|
|
665
|
+
#define ENGINE_MAX_SPEED 0x004 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
|
|
666
|
+
#define ENGINE_ANTIPLAY 0x008 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
|
|
667
|
+
#define ENGINE_ACCEL_ON 0x010 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
|
|
668
|
+
#define ENGINE_LIMIT_VOLT 0x020 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
|
|
669
|
+
#define ENGINE_LIMIT_CURR 0x040 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
|
|
670
|
+
#define ENGINE_LIMIT_RPM 0x080 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
|
|
671
|
+
#define ENGINE_USE_PEAK_CURRENT 0x100 /**< \english Enable peak current usage. \endenglish \russian Разрешить использование пикового тока. \endrussian */
|
|
671
672
|
//@}
|
|
672
673
|
|
|
673
674
|
|
|
@@ -1488,6 +1489,7 @@ extern "C"
|
|
|
1488
1489
|
int Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
|
|
1489
1490
|
unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
|
|
1490
1491
|
unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
|
|
1492
|
+
unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
|
|
1491
1493
|
} engine_settings_t;
|
|
1492
1494
|
|
|
1493
1495
|
/**
|
|
@@ -1516,6 +1518,7 @@ extern "C"
|
|
|
1516
1518
|
float Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
|
|
1517
1519
|
unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
|
|
1518
1520
|
unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
|
|
1521
|
+
unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
|
|
1519
1522
|
} engine_settings_calb_t;
|
|
1520
1523
|
|
|
1521
1524
|
/**
|
|
@@ -3712,7 +3715,7 @@ extern "C"
|
|
|
3712
3715
|
* \endenglish
|
|
3713
3716
|
* \russian
|
|
3714
3717
|
* Команда чтения пароля к веб-странице. Используется только производителем.
|
|
3715
|
-
* Эта функция
|
|
3718
|
+
* Эта функция позволяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
|
|
3716
3719
|
* @param UserPassword[20] Строчка-пароль для доступа к веб-странице
|
|
3717
3720
|
* \endrussian
|
|
3718
3721
|
*/
|
|
Binary file
|
|
Binary file
|
|
@@ -347,12 +347,12 @@ extern "C"
|
|
|
347
347
|
|
|
348
348
|
|
|
349
349
|
/** @cond DO_NOT_WANT */
|
|
350
|
-
#define LIBXIMC_VERSION 3.
|
|
350
|
+
#define LIBXIMC_VERSION 3.1.2
|
|
351
351
|
/** @endcond */
|
|
352
352
|
|
|
353
353
|
|
|
354
354
|
/** @cond DO_NOT_WANT */
|
|
355
|
-
#define LIBXIMC_PROTOCOL_VERSION 20.
|
|
355
|
+
#define LIBXIMC_PROTOCOL_VERSION 20.15
|
|
356
356
|
/** @endcond */
|
|
357
357
|
|
|
358
358
|
|
|
@@ -660,14 +660,15 @@ extern "C"
|
|
|
660
660
|
* @see engine_settings_t::EngineFlags, get_engine_settings, set_engine_settings
|
|
661
661
|
*/
|
|
662
662
|
//@{
|
|
663
|
-
#define ENGINE_REVERSE
|
|
664
|
-
#define ENGINE_CURRENT_AS_RMS
|
|
665
|
-
#define ENGINE_MAX_SPEED
|
|
666
|
-
#define ENGINE_ANTIPLAY
|
|
667
|
-
#define ENGINE_ACCEL_ON
|
|
668
|
-
#define ENGINE_LIMIT_VOLT
|
|
669
|
-
#define ENGINE_LIMIT_CURR
|
|
670
|
-
#define ENGINE_LIMIT_RPM
|
|
663
|
+
#define ENGINE_REVERSE 0x001 /**< \english Reverse flag. It determines motor shaft rotation direction that corresponds to feedback counts increasing. If not set (default), motor shaft rotation direction under positive voltage corresponds to feedback counts increasing and vice versa. Change it if you see that positive directions on motor and feedback are opposite. \endenglish \russian Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции. \endrussian */
|
|
664
|
+
#define ENGINE_CURRENT_AS_RMS 0x002 /**< \english Engine current meaning flag. If the flag is unset, then the engine's current value is interpreted as the maximum amplitude value. If the flag is set, then the engine current value is interpreted as the root-mean-square current value (for stepper) or as the current value calculated from the maximum heat dissipation (BLDC). \endenglish \russian Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (BLDC). \endrussian */
|
|
665
|
+
#define ENGINE_MAX_SPEED 0x004 /**< \english Max speed flag. If it is set, the engine uses the maximum speed achievable with the present engine settings as its nominal speed. \endenglish \russian Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости. \endrussian */
|
|
666
|
+
#define ENGINE_ANTIPLAY 0x008 /**< \english Play compensation flag. If it is set, the engine makes backlash (play) compensation and reaches the predetermined position accurately at low speed. \endenglish \russian Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа. \endrussian */
|
|
667
|
+
#define ENGINE_ACCEL_ON 0x010 /**< \english Acceleration enable flag. If it set, motion begins with acceleration and ends with deceleration. \endenglish \russian Ускорение. Если флаг установлен, движение происходит с ускорением. \endrussian */
|
|
668
|
+
#define ENGINE_LIMIT_VOLT 0x020 /**< \english Maximum motor voltage limit enable flag (is only used with DC motor). \endenglish \russian Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
|
|
669
|
+
#define ENGINE_LIMIT_CURR 0x040 /**< \english Maximum motor current limit enable flag (is only used with DC motor). \endenglish \russian Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением (используется только с DC-двигателем). \endrussian */
|
|
670
|
+
#define ENGINE_LIMIT_RPM 0x080 /**< \english Maximum motor speed limit enable flag. \endenglish \russian Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением. \endrussian */
|
|
671
|
+
#define ENGINE_USE_PEAK_CURRENT 0x100 /**< \english Enable peak current usage. \endenglish \russian Разрешить использование пикового тока. \endrussian */
|
|
671
672
|
//@}
|
|
672
673
|
|
|
673
674
|
|
|
@@ -1488,6 +1489,7 @@ extern "C"
|
|
|
1488
1489
|
int Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
|
|
1489
1490
|
unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
|
|
1490
1491
|
unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
|
|
1492
|
+
unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
|
|
1491
1493
|
} engine_settings_t;
|
|
1492
1494
|
|
|
1493
1495
|
/**
|
|
@@ -1516,6 +1518,7 @@ extern "C"
|
|
|
1516
1518
|
float Antiplay; /**< \english Number of pulses or steps for backlash (play) compensation procedure. Used if ENGINE_ANTIPLAY flag is set. \endenglish \russian Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY. \endrussian */
|
|
1517
1519
|
unsigned int MicrostepMode; /**< \english \ref flagset_microstepmode "Flags of microstep mode". \endenglish \russian \ref flagset_microstepmode "Флаги параметров микрошагового режима". \endrussian */
|
|
1518
1520
|
unsigned int StepsPerRev; /**< \english Number of full steps per revolution (Used with stepper motor only). Range: 1..65535. \endenglish \russian Количество полных шагов на оборот (используется только с шаговым двигателем). Диапазон: 1..65535. \endrussian */
|
|
1521
|
+
unsigned int PeakCurrent; /**< \english Rated peak current (in mA). Controller is allowed to apply peak current while maintaining 10-second average current below nominal if USE_PEAK_CURRENT flag is set. \endenglish \russian Номинальный пиковый ток (в мА). Контроллеру разрешается подавать пиковый ток, поддерживая при этом средний ток за 10 секунд ниже номинального, если установлен флаг USE_PEAK_CURRENT. \endrussian */
|
|
1519
1522
|
} engine_settings_calb_t;
|
|
1520
1523
|
|
|
1521
1524
|
/**
|
|
@@ -3712,7 +3715,7 @@ extern "C"
|
|
|
3712
3715
|
* \endenglish
|
|
3713
3716
|
* \russian
|
|
3714
3717
|
* Команда чтения пароля к веб-странице. Используется только производителем.
|
|
3715
|
-
* Эта функция
|
|
3718
|
+
* Эта функция позволяет прочитать пользовательский пароль к веб-странице из памяти контроллера.
|
|
3716
3719
|
* @param UserPassword[20] Строчка-пароль для доступа к веб-странице
|
|
3717
3720
|
* \endrussian
|
|
3718
3721
|
*/
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import struct
|
|
3
3
|
import sys
|
|
4
|
+
import winreg
|
|
4
5
|
from ctypes import *
|
|
5
6
|
|
|
6
7
|
|
|
@@ -28,6 +29,24 @@ def _check_if_vc2013_is_installed():
|
|
|
28
29
|
raise RuntimeError(error_msg)
|
|
29
30
|
|
|
30
31
|
|
|
32
|
+
def _check_if_vc2015_2022_is_installed():
|
|
33
|
+
registry_path = (r"SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" if _get_os_bit() == 64 else
|
|
34
|
+
r"SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86")
|
|
35
|
+
try:
|
|
36
|
+
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, registry_path) as key:
|
|
37
|
+
installed, _ = winreg.QueryValueEx(key, "Installed")
|
|
38
|
+
if installed == 1:
|
|
39
|
+
return True
|
|
40
|
+
except OSError:
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
link = ("https://aka.ms/vs/17/release/vc_redist.x64.exe" if _get_os_bit() == 64 else
|
|
44
|
+
"https://aka.ms/vs/17/release/vc_redist.x86.exe")
|
|
45
|
+
error_msg = ("Microsoft Visual C++ Redistributable 2015-2022 is not installed in the OS. "
|
|
46
|
+
"This may lead to the DLL load failure. Download it from {}").format(link)
|
|
47
|
+
raise RuntimeError(error_msg)
|
|
48
|
+
|
|
49
|
+
|
|
31
50
|
def _get_os_bit() -> int:
|
|
32
51
|
return 8 * struct.calcsize("P")
|
|
33
52
|
|
|
@@ -39,6 +58,7 @@ def _load_lib():
|
|
|
39
58
|
os_kind = system().lower()
|
|
40
59
|
if os_kind == "windows":
|
|
41
60
|
_check_if_vc2013_is_installed()
|
|
61
|
+
_check_if_vc2015_2022_is_installed()
|
|
42
62
|
|
|
43
63
|
ximc_root_path = r"..\..\..\..\.."
|
|
44
64
|
if sys.version_info[0] == 3 and sys.version_info[1] >= 8:
|
|
@@ -245,14 +265,15 @@ class MoveFlags:
|
|
|
245
265
|
RPM_DIV_1000 = 0x01
|
|
246
266
|
|
|
247
267
|
class EngineFlags:
|
|
248
|
-
ENGINE_REVERSE =
|
|
249
|
-
ENGINE_CURRENT_AS_RMS =
|
|
250
|
-
ENGINE_MAX_SPEED =
|
|
251
|
-
ENGINE_ANTIPLAY =
|
|
252
|
-
ENGINE_ACCEL_ON =
|
|
253
|
-
ENGINE_LIMIT_VOLT =
|
|
254
|
-
ENGINE_LIMIT_CURR =
|
|
255
|
-
ENGINE_LIMIT_RPM =
|
|
268
|
+
ENGINE_REVERSE = 0x001
|
|
269
|
+
ENGINE_CURRENT_AS_RMS = 0x002
|
|
270
|
+
ENGINE_MAX_SPEED = 0x004
|
|
271
|
+
ENGINE_ANTIPLAY = 0x008
|
|
272
|
+
ENGINE_ACCEL_ON = 0x010
|
|
273
|
+
ENGINE_LIMIT_VOLT = 0x020
|
|
274
|
+
ENGINE_LIMIT_CURR = 0x040
|
|
275
|
+
ENGINE_LIMIT_RPM = 0x080
|
|
276
|
+
ENGINE_USE_PEAK_CURRENT = 0x100
|
|
256
277
|
|
|
257
278
|
class MicrostepMode:
|
|
258
279
|
MICROSTEP_MODE_FULL = 0x01
|
|
@@ -499,6 +520,7 @@ class engine_settings_t(Structure):
|
|
|
499
520
|
("Antiplay", c_int),
|
|
500
521
|
("MicrostepMode", c_uint),
|
|
501
522
|
("StepsPerRev", c_uint),
|
|
523
|
+
("PeakCurrent", c_uint),
|
|
502
524
|
]
|
|
503
525
|
|
|
504
526
|
class engine_settings_calb_t(Structure):
|
|
@@ -510,6 +532,7 @@ class engine_settings_calb_t(Structure):
|
|
|
510
532
|
("Antiplay", c_float),
|
|
511
533
|
("MicrostepMode", c_uint),
|
|
512
534
|
("StepsPerRev", c_uint),
|
|
535
|
+
("PeakCurrent", c_uint),
|
|
513
536
|
]
|
|
514
537
|
|
|
515
538
|
class entype_settings_t(Structure):
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|