4.3.4.2 Pre-Configuration IPG Interface G |
The output Alarm signal (J3 pin 26) to the SP-ICE-3 Card will be activated whenever any of a pre-configured set of patterns of active alarm inputs is recognised.
On the SP-ICE-3 Card the Alarm signal will cause the currently running job to be aborted.
Do not enable VIO_out 5V output on J1 pin 17 by by writing a 1 to PortD.4.
Pin 17 is marked as reserved in the laser manual.
Note that the laser requires a signal on J1 pin 13 (Reserved Output_2) to reset an alarm state.
Pin 13 can be controlled by writing to PortD.19.
On connector J1 pin 10 is permanently connected to GND.
The laser manual states that no connection is allowed.
The laser's PPI (parallel peripheral interface) can be enabled by enabling the Reserved_Output_1 J1 Pin 24.
Reserved_Output_1 can be controlled by writing to PortD.21.
The laser's SPI (serial peripheral interface) can not be used because J1 pin 25 is required but not connected to the SP-ICE-3 Card.
The Alarm1..Alarm4 input signals from the laser are used to evaluate the state of the laser, as shown in the YLP Type G Alarm Table, below:
Column(s) | Description |
---|---|
Alarm1..Alarm4 | The states of the alarm input signals from the laser. |
Priority and Name | As shown in the IPG YLP Type G manual. |
SP-ICE-3 Job | Whether the job running on the SP-ICE-3 card will be aborted in that alarm state. In other words, whether the output Alarm signal will be activated. |
LED columns | The state of the Yellow Alarm (D10) and Red System Alarm (D11) LEDs on the bracket, and the Green LED D1 on the adapter's PCB. Note that the Yellow Alarm LED (D10) will be overridden to blink whenever the shutter J2 on the IPG-comp interface is open. |
Alarm4 |
Alarm3 |
Alarm2 |
Alarm1 | Priority | Name | SP-ICE-3 Job |
Yellow Alarm |
Red System Alarm |
Green |
---|---|---|---|---|---|---|---|---|---|
LOW | LOW | LOW | LOW | 4 | Temperature alarm | Abort | ON | ON | OFF |
LOW | LOW | LOW | HIGH | 3 | Back reflection alarm | Abort | ON | ON | OFF |
LOW | LOW | HIGH | LOW | 12 | Laser is waiting for emission | Run | OFF | OFF | ON |
LOW | LOW | HIGH | HIGH | 2 | System alarm | Abort | ON | ON | OFF |
LOW | HIGH | LOW | LOW | 5 | Fiber alarm | Abort | ON | ON | OFF |
LOW | HIGH | LOW | HIGH | 9 | Safety alarm | Abort | ON | OFF | OFF |
LOW | HIGH | HIGH | LOW | 11 | Laser is not ready for emission | Run | OFF | OFF | OFF |
LOW | HIGH | HIGH | HIGH | 0 | reserved | Abort | ON | ON | OFF |
HIGH | LOW | LOW | LOW | 1 | Critical alarm | Abort | ON | ON | OFF |
HIGH | LOW | LOW | HIGH | 7 | Hot stop alarm | Abort | ON | ON | OFF |
HIGH | LOW | HIGH | LOW | 10 | Main power supply is OFF | Run | OFF | OFF | OFF |
HIGH | LOW | HIGH | HIGH | 13 | Emission ON | Run | OFF | OFF | ON |
HIGH | HIGH | LOW | LOW | 8 | reserved | Abort | ON | OFF | OFF |
HIGH | HIGH | LOW | HIGH | 6 | HK alarm | Abort | ON | ON | OFF |
HIGH | HIGH | HIGH | LOW | n.a. | unused | Abort | ON | OFF | OFF |
HIGH | HIGH | HIGH | HIGH | n.a. | unused | Abort | ON | OFF | OFF |
class IpgTypeGLaser { private ushort _ippToggle = 0x0000; private void AppendValue(CommandList list, byte payload) { // Arrange payload ushort value = payload; // Move the 8 bit payload to the upper bits because in the 16 bit mode IPG Type G only uses the eight // most significant bits. value <<= 8; value |= _ippToggle; // Append payload and sleep list.AppendPower(value); list.AppendSleep(10.0d); // toggle the LSB // The toggling is necessary because the SP-ICE-3 will ignore consecutive writes if the data does not change. // Therefore the latch signal would not be generated. // To circumvent that, we toggle the LSB of the 16 bit data which is not used by the IPG Type G laser. // So the data changes every time. _ippToggle ^= 0x0001; } public void ipgTypegIppSendCommandByte(ClientAPI client, byte cmdc, byte para) { // Save the original laser configuration so it can restored after sending the ipp command is done LaserConfig originalLaserConfig = client.Laser.GetConfig(); // Save the original command list CommandList originalList = client.List.Get(0); try { // Make a copy of the original laser configuration and modify it to our needs LaserConfig ippLaserConfig = client.Laser.GetConfig(); // Disable the Power Calibration so the numbers we send to the laser are not modified by that ippLaserConfig.EnablePowerCalibration = false; // Disable the Field Position Power Correction so the numbers we send to the laser are not modified by that ippLaserConfig.EnablePowerCorrection = false; // Disable the Velocity Power Correction so the numbers we send to the laser are not modified by that ippLaserConfig.EnableVelocityCorrection = false; // Select the 16 bit mode although we only send 8 bits. We need to toggle the LSB // to force the latch signal to be sent even if we send the same data twice ippLaserConfig.HotPowerTarget = PowerTarget.Digital16Bit; // Set the Power Scale to 1.0 to avoid modification of the values we want to send ippLaserConfig.PowerScale = 1.0; // Set the timing of the latch signal ippLaserConfig.PowerWriteDelay = 4.0; ippLaserConfig.PowerWriteWidth = 5.0; // Write the laser configuration to the SP-ICE-3 client.Laser.SetConfig(ippLaserConfig); // Assemble a list which sends the command and parameter via the IPP to the IPG Type G laser CommandList list = new CommandList(); // Enable IPP by setting IPP Enable to 1 (Pin24 - Reserved_Output_1 - PortD.21) list.AppendGpioValue(IOPort.PortD, PinAction.Set, 1 << 21); // Wait for 10us (IPG Type G specifications tells to wait at least 1us) list.AppendSleep(10.0d); // Send the Command Bytes AppendValue(list, 0xA5); // Message prefix AppendValue(list, cmdc); // Command code AppendValue(list, para); // Parameter AppendValue(list, 0x00); // Fill rest of DWORD with zeros AppendValue(list, 0x00); // Fill rest of DWORD with zeros AppendValue(list, 0x00); // Fill rest of DWORD with zeros // Wait for 10us (IPG Type G specifications tells to wait at least 1us) list.AppendSleep(10.0d); // Disable IPP by setting IPP Enable to 0 (Pin24 - Reserved_Output_1 - PortD.21) list.AppendGpioValue(IOPort.PortD, PinAction.Clear, 1 << 21); // Wait for 20ms (IPG Type G specifications tells the Set APD mode Index can take up to 10ms) list.AppendSleep(20000.0d); // Set the laser power to zero list.AppendPower(0); // Send the list with the IPP command sequence to the SP-ICE-3 client.List.Set(0, list); // Execute the list int listIDin = 0; client.List.Execute(listIDin); // Wait for the list execution to complete int? listID; client.List.WaitForListDone(out listID, 1000); } catch (Exception ex) { throw (ex); } finally { // Restore the original command list client.List.Set(0, originalList); // Restore the original laser configuration client.Laser.SetConfig(originalLaserConfig); } } }