Welcome to the Industrial Automation website!

NameDescriptionContent
XING-Automation
E-mail  
Password  
  
Forgot password?
  Register
当前位置:

QUBE Servo 2 Teaching Experiment Platform

F: | Au:FAN | DA:2026-04-28 | 451 Br: | 🔊 点击朗读正文 ❚❚ | Share:

QUBE Servo 2 Teaching Experiment Platform

Introduction: Positioning and Selection Challenges of Teaching Servo Experiment Platform

In undergraduate courses of mechatronics and control engineering, hands-on experiments are a key component in helping students understand abstract control theory. The ideal teaching experimental equipment should have the following characteristics: safety and reliability, measurable and controllable parameters, modular design, seamless integration with mainstream development environments, and controllable costs.

Quanser QUBE Servo 2 is a self-contained, low-cost servo motor experimental platform designed specifically for this requirement. It integrates a DC motor, photoelectric encoder, built-in current sensor, power amplifier, and data acquisition interface, and is equipped with two additional modules: inertia disk and swing rod. Unlike traditional large rotary servo test benches, QUBE Servo 2 is compact in size (about the size of a fist), yet retains complete closed-loop control teaching functions.

For laboratory managers or course leaders, the following practical issues may arise when deploying the equipment:

Confusion in Interface Selection: Differences and Applicable Scenarios between USB Version and Embedded Version.

Software configuration failure: Common errors during MATLAB/Simulink or LabVIEW driver installation and real-time control environment setup.

Hardware expansion requirements: How to independently design 3D printing modules and integrate them with the system.

Alignment of teaching resources: How to match experimental content with classic textbook chapters such as Nise's "Control Systems Engineering".

This article will provide a complete technical reference for university teachers and laboratory technicians from six dimensions: technical architecture, detailed explanation of dual interface mode, software configuration process, common troubleshooting, modular experimental design, and integration of course resources.


System architecture and working principle

2.1 Core Components

QUBE Servo 2 is a highly integrated experimental system that mainly includes the following hardware:

DC motor: Brushed DC motor, used as the actuator.

Optoelectronic encoder: installed on the motor shaft, outputs orthogonal encoded signals, and can simultaneously measure the position (angle) and speed of the rotor (by differentiating the positions).

Built in current sensor: Real time monitoring of armature current, providing feedback for torque control and current loop experiments.

Integrated power amplifier: converts control signals (PWM or analog voltage) into the power required to drive the motor.

QFLEX 2 computing interface: The second-generation interface technology developed by Quanser, responsible for data acquisition, signal conditioning, and communication with the upper computer.

Additional modules: Inertial disk (increasing rotational inertia) and pendulum rod (forming a first-order inverted pendulum system), hot swappable through quick connection interface.

2.2 Brief description of working principle

The upper computer (PC or microcontroller) sends control voltage commands (usually ± 5V or PWM duty cycle) through the QFLEX 2 interface. The built-in amplifier converts instructions into motor drive voltage. The encoder provides real-time feedback on the rotor position, while the current sensor provides feedback on the armature current. These feedback signals are collected by QFLEX 2 and sent back to the controller, forming a closed loop.

The uniqueness of this system lies in the fact that the control algorithm can run on multiple platforms:

Run MATLAB/Simulink Real Time or LabVIEW on a PC (via USB connection).

Embedded microcontrollers (such as NI myRIO, Arduino, Raspberry Pi) are directly controlled through SPI interfaces.

2.3 Engineering value of three color LED indicator lights

There is a user controllable three color LED light strip on the front of the device. In practical teaching, it can be programmed to be used as:

System status indication: Green indicates normal position tracking, red indicates over limit or alarm.

Visualization of control performance: Brightness or color changes with error (for example, the larger the error, the redder it becomes), helping students intuitively feel the control effect.

Power or enable indication: To avoid students misjudging the system as "crashing" when the motor is not enabled.

Although this detail may be small, it is very practical in teaching demonstrations and can reduce students' reliance on the command line or oscilloscope.


Dual interface mode detailed explanation: USB version vs. embedded version

QUBE Servo 2 offers two interchangeable panels: USB interface panel and embedded interface panel. Users can choose one panel at the time of purchase or purchase another panel separately as a backup. This design allows the same hardware to serve both PC based graphical courses and low-level embedded programming teaching.

3.1 QUBE Servo 2 USB Experimental Edition

Interface: Standard USB 2.0 connection (Type-B).

Supporting software:

For MATLAB/Simulink users: Quanser QUARC real-time control software package needs to be installed, which provides Simulink module library and can directly compile models into real-time executable programs.

For LabVIEW users: Quanser RCP (Rapid Control prototyping) toolkit is required.

Advantage:

The rich toolboxes of Simulink or LabVIEW can be directly used for controller design, such as PID, pole placement LQR、 Adaptive control).

Provide complete ABET certification aligned course materials (in digital media format), including complete dynamic models, pre built controllers, and experimental manuals.

Real time data recording and drawing functions are powerful, suitable for classroom presentations.

Limitations:

Real time running of Simulink models on a PC is required, which has certain performance requirements (but modern mainstream PCs can meet them).

Not suitable for teaching objectives that require students to directly write bare metal C code or register level operations.

Typical application scenarios: Control engineering courses for second and third year undergraduate students, with a focus on controller design and system identification rather than underlying programming.

3.2 QUBE Servo 2 Embedded Experimental Edition

Interface: SPI (Serial Peripheral Interface), connected to external microcontrollers (such as Arduino Uno/Nano, Raspberry Pi, NI myRIO) through a 4-wire cable. The microcontroller needs to be provided by the user.

Software: No need to purchase additional specialized software. Quanser provides Arduino sample code and interface datasheet, which provides detailed explanations of SPI communication protocol, register mapping, command format, etc.

Advantage:

Enable students to experience real embedded system development, including SPI driver writing, interrupt handling, timer configuration, etc.

Very suitable for capstone projects or advanced mechatronics courses, students can complete the complete software and hardware design from sensor reading, control algorithm implementation to motor drive.

The hardware cost is relatively low (no MATLAB/Simulink license required, open source toolchain can be used).

Limitations:

Students need to have a certain foundation in microcontroller programming (C/C++).

The feedback data refresh rate is affected by SPI speed and microcontroller performance, and may be slightly lower than the USB version.

The teaching resources provided are relatively limited compared to the USB version (although there are USB version course materials as references).

Typical application scenarios: Advanced embedded system courses, robotics technology innovation competitions, graduation projects.

3.3 Interface panel interchange operation

Two types of panels are connected to the host through the QFLEX 2 module, and no special tools are required to replace the panels. Simply unscrew the bottom plate screws to complete the replacement. Engineering tip: Before replacing the panel, be sure to disconnect the power supply and release the load on the motor shaft (especially when the swing rod is installed) to avoid personal injury caused by accidental rotation of the motor during operation.

The laboratory can be equipped with a small number of spare panels, and one set of hardware can serve multiple courses simultaneously.

Software configuration and common troubleshooting

This section focuses on configuration issues and solutions for USB versions in MATLAB/Simulink environments (as this is the most common deployment scenario).

4.1 Software installation process

Install MATLAB (recommended R2019b and above) and Simulink.

Install QUARC software (requires a valid license, usually provided with a trial or academic version with the device).

Connect the USB cable of QUBE Server 2 to the PC, and the system will automatically install the driver program.

Enter quartc in the MATLAB command line to open the QUARC main interface, and run quartc_diagnostic for connection testing.

If communication is normal, you can find the "Quanser QUBE" module library in the Simulink library browser, which includes modules such as motor models, sensor reading, LED control, etc.

4.2 Common faults and solutions

Fault 1: USB device not recognized ("Unknown Device")

Possible reasons:

Poor quality or length of USB cables exceeding 2 meters can cause signal attenuation.

The power supply to the USB port of the PC is insufficient (especially when using laptop battery power).

QFLEX 2 panel firmware exception.

Exclusion steps:

Replace with original USB cable or high-quality shielded cable, with a length not exceeding 1.5 meters.

Insert the USB into the rear port of the PC (directly connect to the motherboard) to avoid using an external USB hub.

Connect a power adapter to the PC to ensure stable USB power supply.

Try another PC to troubleshoot the device hardware. If still unable to recognize, contact the supplier for firmware reset.

Fault 2: QUARC real-time model compilation failed

Possible reasons:

The MATLAB path does not include the Quanser module library.

The compiler is not configured correctly (Microsoft Windows SDK or MinGW needs to be installed in a Windows environment).

An outdated module was used in the model.

Exclusion steps:

Run quarc_setup on the MATLAB command line to automatically configure the path and compiler.

Run mex setup to confirm that the C compiler is configured.

Open the example model that comes with QUARC (such as q_qube_position_comtrol. slx) and try compiling and running it. If the example is normal, it indicates that there is a problem with the user model; If the example also fails, reinstall QUARC.

Fault 3: Abnormal shaking or overcurrent during motor operation

Possible reasons:

Unstable control parameters (such as oscillation caused by excessive PID gain).

The encoder signal is affected by interference or mechanical coupling is loose.

The motor shaft is stuck (additional module not installed correctly).

Exclusion steps:

Immediately stop running and retest with a small proportional gain (e.g. Kp=0.1) to observe if the position response is stable.

Use QUARC's "Monitor&Tune" tool to view the encoder count values in real-time and confirm that the values continuously change without any jumps when manually rotating the motor shaft.

Check if the inertia disk or swing rod is locked. The quick connect interface should make a "click" sound.

If all of the above are normal but still shaking, please use a current sensor to read the actual current and determine whether it is caused by wear of the internal commutator of the motor or short circuit of the brush.

Fault 4: Embedded version SPI communication is unresponsive

Possible reasons:

SPI pin connection error (incorrect MOSI/MISO/SCK/CS correspondence).

The clock polarity and phase settings do not meet the requirements of QFLEX 2.

The SPI rate of the microcontroller is too high (QFLEX 2 supports up to 2 MHz).

Exclusion steps:

Strictly refer to the interface data manual provided by Quanser and check the wiring: usually CS → D10 (Arduino), SCK → D13, MOSI → D11, MISO → D12, power supply and GND are correctly connected.

Set SPI mode to mode 0 (CPOL=0, CPHA=0), with MSB transmitting first and clock speed set between 500 kHz and 1 MHz.

Use a logic analyzer or oscilloscope to monitor the SPI bus and confirm that QUBE has response data after each command byte.

It is recommended to run the Arduino sample code provided by Quanser first, confirm that the hardware is working properly, and then develop a custom program.


Modular Expansion and 3D Printing Interaction

A prominent feature of QUBE Servo 2 is its support for users to design and 3D print additional modules on their own. The original factory provides inertia discs and swing rods, but teachers can encourage students to design other loads, such as:

Eccentric mass block: Simulate unbalanced loads and test anti-interference ability.

Spring damping load: Printing specific shapes using flexible materials to generate nonlinear friction or elastic torque.

Fan blades: used for air resistance experiments to study the damping effect of velocity squared.

Technical interface specifications (based on implicit information in the original text):

The quick connect interface adopts a magnetic or snap on structure, with an outer diameter of about 15 mm and a D-shaped shaft hole in the center to match the motor shaft.

The maximum allowable mass of the module is approximately 50 g (exceeding it may affect the lifespan of the motor).

The recommended range of rotational inertia for the module is approximately 1 × 10 ⁻⁵ kg · m ² for the inertia disk and 2 × 10 ⁻⁵ kg · m ² for the swing rod.

Engineering suggestion: When designing new modules, CAD software should be used to ensure dynamic balance; Recommended printing materials are PLA or ABS, and it is not recommended to use metal (heavy). In student projects, they can be required to:

Design a novel load.

Measure its rotational inertia and friction model through system identification experiments.

Redesign the controller for this load and compare the performance differences.


Align teaching course resources with ABET

For USB version users, Quanser provides a complete set of digital media course resources, whose core value lies in:

Modular content: Teachers can choose experiments as needed instead of writing experiment guides from scratch. The content covers: system modeling (first-order, second-order), time-domain response, PID control, frequency response, state space control, digital control, etc.

Textbook Alignment Tool: Provides a mapping table that corresponds each course section to a chapter in mainstream textbooks such as Nise's "Control Systems Engineering" and Ogata's "Modern Control Engineering". This greatly reduces teachers' preparation time.

ABET certification support: Course resources clearly indicate the student learning outcomes covered by each experiment (such as "being able to design controllers that meet steady-state error and overshoot requirements"), which helps in writing certification reports.

Embedded version resources: Provide Arduino examples and interface data manuals. Although there is no complete ABET alignment course package, teachers can draw on the content framework of the USB version and let students write their own controller C code to achieve the same function, which is very valuable for cultivating embedded engineers.


Maintenance and calibration recommendations

Although QUBE Servo 2 is designed to be maintenance free, the following issues may still occur after long-term use:

7.1 Encoder zero drift or reading jump

Phenomenon: When the motor is stationary, the position reading drifts slowly or there is a ± 1 count jump.

Solution: The encoder itself is incremental, and zero drift is usually caused by electromagnetic interference or power ripple. You can try:

Use shielded USB cables and ensure good grounding.

Add software filtering (such as moving average or first-order low-pass filtering) to the control program.

Re calibrate the zero position: Place the motor at the mechanical limit or a known angle, and press the "Reset Encoder" button in the software.

7.2 Power amplifier overheating protection

Phenomenon: After a long period of high load operation (such as frequent forward and reverse swing of the pole), the motor suddenly stops and recovers after cooling.

Solution: The built-in amplifier has overheat protection. It is recommended to let the equipment idle for 2 minutes every 15 minutes during the laboratory operation cycle. Teaching experiments usually have a low load and are unlikely to trigger protection.

7.3 Mechanical wear of swing rod module

Phenomenon: Friction or jamming occurs when the pendulum rotates around the axis, which affects the control effect of the inverted pendulum.

Solution: Remove the swing rod module and drip a very small amount of plastic grease (such as silicone grease) onto the shaft. Avoid using oily lubricants (which may corrode plastics). If the wear is severe, you can contact Quanser to purchase replacement swing rod components (or 3D print them yourself).

7.4 Regular calibration checklist (recommended once per semester)

Project methodology

Zero voltage output calibration disconnects the motor enable, and the encoder reading stabilizes at zero; Send a 0V command, the motor should not rotate.

Verify the direction of the encoder by manually rotating the motor shaft in the forward direction, and observe that the position reading should increase.

Current sensor calibration uses external precision resistance to measure the actual current, compare the feedback value, and adjust the gain in the software if necessary.

The LED color verification program displays red, green, and blue in sequence to ensure that all three channels are functioning properly.


Advanced Applications and Graduation Design Cases

Here are some graduation project topics based on QUBE-Servo 2 (already implemented by foreign universities):

Wireless control based on Raspberry Pi: Using an embedded panel, run Python+GPIO driver on Raspberry Pi, achieve remote control through WiFi, and establish a web interface to display real-time curves.

Model Predictive Control (MPC) Implementation: Design a predictive controller using MATLAB's MPC Toolbox on the USB version and compare PID performance.

Fault detection and fault-tolerant control: Artificially simulate encoder pulse loss or current sensor offset, design an observer to estimate the state and maintain stable operation.

Virtual reality interaction: Build 3D models using Unity or Unreal engines, map the actual angles of QUBE to the virtual environment, and achieve gamified control experiments.

These projects can fully exercise the engineering practice ability of undergraduate students, and the equipment cost is low (about several thousand yuan per set, far lower than industrial grade servo platforms), suitable for batch configuration in innovation laboratories.


Procurement and laboratory deployment recommendations

Quantity planning: For a class of 20 people, it is recommended to equip 10 sets of equipment (two people per group). If funds are limited, 5 sets can also be configured and used in rotation.

Interface selection strategy: Most course content (system modeling, PID, frequency domain) is suitable for USB version. If an embedded system course is offered, an additional embedded panel can be purchased (without the need to purchase a complete machine) to achieve dual-use.

Software License: The educational license for MATLAB/Simulink already includes most of the toolboxes. QUARC requires a separate license, but the academic price is relatively reasonable. LabVIEW users need to confirm whether they have purchased the RCP module.

Spare parts list: It is recommended to purchase an additional 2 sets of inertia discs and swing rods (which are prone to loss or damage), as well as 5 USB cables and SPI cables.

Cost benefit analysis: Compared to purchasing a large rotary servo test bench (such as a brand with a cost exceeding $5000), the price of QUBE Servo 2 is significantly lower (referred to as "low cost" in the original text), and it integrates amplifiers, encoders, and data acquisition without the need to purchase additional accessories. By providing free course materials, teachers can save hundreds of hours of preparation time.

  • OMRON CJ1W-MD261 Mixed I/O Module
  • Omron NJ301-1100 PLC CPU eCat EIP Specs
  • Omron F500-C15-ETN Vision System PLC Module
  • Modicon M241-24IO TM/T2UK PLC with Ethernet
  • SIXNET YS-800-001 RTU PLC Module
  • BEMAC UST-202-D Interface Board 1307D V08B2
  • Yaskawa JANCD-MMOIC-02 Drive Circuit Board
  • ABB 3BSE005028R1 SDCS-COM-1 Comm Board
  • Omron 3G3MX2-A4110 A4150 Inverter Drives Specs
  • KEYENCE CA-E100 PLC Module
  • GE IC693ALG223-GB Analog Input Module Specs
  • ABB BAILEY IMMFP01 Multi Function Processor System
  • SIEMENS 6FC5372 0AA00 0AA1 NCU 7202 Controller
  • Modicon TM241CE4 40I O Transistor Programmable Controller
  • SIEMENS 6ES7 315 2EH13 0AB0 CPU 3152 PN DP
  • NORIS A1 91 PCB Card Rack Module System
  • SIEMENS 6ES7 313 5BE01 0AB0 Compact CPU
  • SCHNEIDER ELECTRIC S144B MICROLOGIC 60A Trip Unit
  • CNI PLC269 v3 Control Module Board Rev H
  • ABB BAILEY IIMCP02 Processor Module
  • OMRON NT20S ST121 EV3 Operator Interface Terminal
  • OMRON NS-CA001 Video Input Unit
  • GE Fanuc IC695CHS012 RX3i Backplane
  • Allen Bradley 2711E-K14C6 PanelView 1400e Terminal
  • Siemens Sinamics CCB 10000432.71 Power Cell
  • Siemens 6SL3210-1SE21-8UA0 Power Module PM340
  • Yaskawa CIMR-F7A20P4 AC Drive
  • Beckhoff EP1918-0002 EtherCAT Box I/O Module
  • OMRON CQM1-TC001 Temperature Control Module
  • GE Fanuc SGHA36AT0400 Industrial Contactor
  • OMRON NJ501-1500 PLC Machine Automation Controller
  • Mitsubishi MAZAK QX084 Power Supply MELDAS 500 CNC
  • B&R 0AC808.9 PLC Automation Module
  • OMRON CP1H-XA40DT1-D PLC Module
  • G&W Electric PLC15 5111 011 15kV Capnut Assembly
  • GE DS200SLCCG3AGH PCB Circuit Board
  • Siemens SINUMERIK 6FC3981-4FD PLC Extension
  • OMRON F300-DC I/O Image Processing Unit
  • FANUC A06B-0314-B002 AC Servo Motor
  • GC-S84 Programmable Controller Logic Module
  • PASABAN MONTELEC MTC3001-DC Drive Control PLC
  • Allen Bradley 100E460EJ11 Auxiliary Contactor
  • Bosch Rexroth 1070075337-101 Card Parameters
  • HMS Anybus AB7646-F Gateway Specifications
  • Bosch 062633-303401 CNC Servo PLC Card
  • TI 500-5023 Series PLC Power Supply
  • Siemens C98043-A7002-L1-12 Circuit Board
  • Omron E5CC-RX3A5M-000 Controller
  • CN-8032-L Profinet Network Adapter Module
  • Siemens 3TK2804-0BB4 Safety Relay Details
  • Toledo TTLM-2-1M I/O Load Module
  • NORIS A1-91 PLC Rack Board Specifications
  • Mitsubishi A3ACPUR21 MELSEC PLC CPU Module
  • Beckhoff EP7041‑3002 EtherCAT Box Digital Input Module
  • REER EOS2E 1053 EOS2R 1053 Safety Light Curtain
  • Mitsubishi Q80BD-J71BR11 MELSECNET/H Interface Board
  • Omron 3G3IV-B4220-EV2 VFD 400V 22kW
  • Allen-Bradley 96844671 1785-LT3 PLC-5/12 Processor Module
  • Pasaban MTC3001-DC Drive Control PLC Module
  • Omron CJ1M-CPU11 V4.0 PLC CPU Module
  • ABB CM579-PNIO B3 Communication Module
  • B&R X20 AI 4221 Analog Module
  • Siemens 6SY7000-0AC80 PLC Module
  • GE 531X300CCHAFM5 Control Card
  • AB 810-A15C Inverse Time Relay
  • WITTENSTEIN LP120X-MF2-20 Planetary Gear
  • Mitsubishi Kakoki E-01B-4130 PLC I/O Modules
  • ABB DSQC643 Safety Control Board
  • Siemens G26004-A2105-P100-2 PCB
  • OMRON F350-C10E Image Processing Unit
  • FUJI UG430H-TS1 HMI Touch Panel
  • Westronics CB100188-01 Rev F Board
  • Siemens 7MH4900-3AA01 Weighing Module
  • Gilbert & Nash Tracker 2000 Control Cabinet
  • OMRON CJ1M-CPU22 CPU Unit
  • OMRON F3SJ-E0625P25 Light Curtain
  • Siemens 3VA2340-5HL32-0AA0 Breaker
  • Mitsubishi Melsec A61P A2NCPU PLC System
  • Aeco 158-02 DSP-02 PCB Card
  • FUJI NP1PS-32R CPU Module
  • Siemens 6SL3040-1MA01-0AA0 Control Unit CU320-2 PN
  • Fuji RYE.75D PLC Driver AC Drive
  • Electro Cam PS-6144-24-P16M09-L-MB Programmable Limit Switch
  • Siemens C98043-A7001-L2-4 CUD1 Control Board
  • Pilz 312070 PSSu H PLC1 FS SN SD Safety Module
  • Siemens Plc42q4200atsn Circuit Breaker Fuse Box
  • GE Fanuc IC695ALG708-AB Analog Output Module Rx3i
  • Siemens 6SE7036-5GK84-1JC2 IGD8 Gate Driver Board
  • Charmilles 813078 852029 PLC PCB Robocut 2 CNC EDM
  • Siemens 6SL3130-1TE24-0AA0 Smart Line Module
  • Pasaban MTC3001-DC Drive Control PLC Module
  • Modicon AS-P890-000 Remote I/O Processor Power Supply
  • Siemens PXC100-PE96.A PXC Modular Controller
  • TOYO KEIKI P:CARD5 AVH-R YH-212 Industrial Control Card
  • Omron NS5-SQ00B-V2 HMI Touch Screen 5.7 Inch
  • Sciemetric SigPOD 1202-0H00 Data Acquisition Module
  • GE Fanuc IC693CPU331W CPU Module Series 90-30
  • Square D 8903SVO11V02 Lighting Contactor 200A
  • Beckhoff C9900-P224 Power Supply Unit 24V 10A
  • HSD PE323 PLC I/O Module
  • Pillar AB6406-11A Power Control Board
  • GE Fanuc IC693CPU331W CPU Module
  • FANUC A61L-0001-0072 LCD Monitor
  • AB 20D-D-011-A-0-EYNANANE Drive
  • AB 1785-L20B PLC-5/20 Processor
  • Siemens SIREC P/PA Recorder 7ND3021
  • Siemens D2E160-AH01-17 Fan Blower
  • Eaton 101073735-001 LEG Module
  • AB 1404-M605B-ENT Powermonitor 3000
  • OMRON CJ1W-MAD42 Analog I/O
  • Omron CJ1M-CPU13 V3.0 PLC CPU Module
  • Pe323 HSD PLC Module Industrial Controller
  • Pasaban MTC3001-DC Drive Control PLC Module
  • Mitsubishi R02CPU PLC Module MELSEC iQ-R
  • B&R X20DC2395 Digital Output Module 32 Ch
  • Hoffman A30N24ALP Enclosure with PLC Addons
  • Rieter PLC with RMC 24/5V 10 RMC188-1 RMC RIO-1
  • Allen-Bradley 1790D-TN4V0 CompactBlock LDX Base Block 4 AI
  • National Instruments NI 9242 Analog Input Module 4-Channel
  • ABB AO820 3BSE008546R1 Analog Output Module
  • Moeller XVC-101-C192K-K82 PLC
  • AB 440F-C4000P MatGuard Controller
  • AB 1692-ZRCLSS Protection Module
  • Schneider S48896 PLC Module
  • FANUC A02B-0303-C205 I/O Module
  • AB 1785-LT4 PLC-5/10 Processor
  • AB 1746-NO8V SLC 500 Analog Output
  • OMRON CQM1-TC001 Temperature Unit