XL2CL
5.80.0
11/30/2021

These changes involve removing unessesary code that no longer applies to Version 4 or 5.

They also involve changes to common code that must differ between Version 4 and Version 5.

Elimination of the DSP programming in Version 5 since it has an ARM processor that will no longer be programmed by the 386 processor.

Decrease Quantity converts Scrap material to Good Parts. It is used to recover/convert scrap parts or material into good parts. It makes no sense to do this on a Scrap Item that will always be reported as scrap if it gets run. In fact, the Decrement Qty will do exactly the opposite of what the user is trying to do. It will take a scrap part, intended to be scrap and be reported as scrap and report it as good material.

A Decrement Quantity on a Scrap item is no longer allowed.

As windows does updates it apparently begins to use more stack space in the Windows API calls. If it uses more that the Windows simulation has allowed for, it cause the simulation to crash. It seems to only happen on selected PC's. So far no windows compatibility mode has been able to fix it all the time.

The Stack space for the Peg_Task has now been doubled from 0x3000 to 0x6000.

Added code to protect from MPERIA plugins returning mor characters per display line than the XL allows for from the Version command response.

Disabled the MPERIA simulator communication so that the driver can be selected and used by laypersons in the Windows Simulator.

One customer defined 827 Product Codes, many of which are actually duplicates.

The line they did this on is a Purlin Line that has logic in the PLC to compare the recipe between two product codes to determine if they are actually different.

They were hesitant to redefine all of their product codes and recipes so we created this backdoor solution to allow them to Bypass all of the PCode comparison code in the XL.

In MODBUS version level 121 a new configuration bit was added to enable a Product Code Comparison Bypass mode. Enabling this mode disables the Product code comparisons that halt the queue or enforce setup or tool configurations. The settings controlling those feature get forced to disabled and the settings get hidden from the user.

This feature and a Multi-Axis controller with PCode setup Axes defined are incompatible with one another. The user will be forced to disable one or the other with an error message if they want to run.

In SCN 4139 the code printer communication code was restructured. The restructuring was successful except for printers that respond with strings longer than 10 characters. An errant line of code mistakenly informed the communication methods that it could only receive a maximum of 10 characters. The communication method was waiting for and seeing the characters in the x370 receive buffer but it would not request them since it believed it did not have enough room in its receive buffer to hold them.

DIP switch 13 will now allow the Shear Press to be configured as Open Loop. Punches must be enabled. When so configured, Die 1 shifts to Press 1 and if enabled, Die 2 shifts to Press 2.

A customer complained of Intermittent Run Input issues. The Controller would appear to intermittently not respond.

The issue was tracked down to a memory leak related to the Bundle Ticket option and deleting orders.

The scenario to reproduce the problem involved a long period of time where orders were deleted immediately after production completion. When this happened, the orders were able to be deleted from the user interface or Eclipse but they are only hidden. The final deletion of the memory was not able to take place due to an invalid Memory Record Id test that failed to consider records that are marked for deletion. Eventually the number of orders and item records needing memory deletion resulted in a statistically significant(noticeable) chance that the run mode would be locked out when the user attempted to enter run.

The invalid Record ID test was fixed.

To prevent small run lockout times from causing random Run Input failures, the run lockout test now allows a 100msec delay. If the lockout is released within 100msec the controller will continue into the run mode, otherwise the run mode will be forced to HALTED (as displayed on the screen).

The PC simulation would sometimes crash during a shear operation, depending on who configured the simulation.

If the Order, Material or PCode were left blank, the simulation would crash during a shear operation.

The cause is related to shared strings in the XL. An empty shared string results in a null pointer. When copying strings, the source pointer gets tested and considers a Null string as an empty string. The Sub_String and Add_String functions needed the same code.

A PC has OS protection to detect using Null pointers. The XL hardware does not. Some users have gotten in the habit of not programming the order fields, which works on the XL hardware due to lack of OS null pointer tests. This habit caused this bug to be detected in the PC Simulation due to the addition of new code that used the Sub_String function.

The bug fix for intermittently ignoring the run input broke the Die Test function in several unexpected ways.

  1. The die test encoder simulation failed to run.
  2. Every attempt to run Die Test resulted in a new "Test Order"
  3. After a failed die test, all Run Modes were locked out.

These have all been resolved.

Even though the initial bug reported was related to the Closed Loop Die Test, the fixes impact other run modes and functions like Clearing the Queue, which can be a run mode. All Open and Closed Loop models are likely to have been impacted in unexpected ways by this bug. Only run modes that were explicitly locked by the prior locking scheme will now be locked, which will restore all prior operation.

The AA option allows the Part Length to scale an Analog output.A Hole detect controller does not really have a Part Length. However, if parts are downloaded by Eclipse, Eclipse can set the expected part length. Unfortunately, the AA option did not test the expected part length.

In addition, the AA option relied on testing the length of items referenced by Queue Records. Hole detect controllers do not fill anything into the queue until a hole is detected.

Two changes were made:

  1. The expected part length, for hole count controllers, if set by Eclipse, will be used to set the Analog output when using the AA option.
  2. Additional tests to get the Length of the running item were added for hole detect controllers.

When the delay after shear and other delay features were added we had larger operating system timer times and the limits on the length of the delay were smaller.

On closed loops with 1 msec operating system timer times and 64 second delay times , the size of the integer variables use to store and measure the delay times became unable to store the values and significant information was lost when delays became larger than 32 seconds, resulting in much shorter than expected delay times.

This has now been resolved.

SCN 4552 did not completely fix the issues with long Delay After Shear times. The bug was due to a missing edit. Longer delays were possible but due to the missing edit they were not accurate.

The range test on the Home Switch Position for Crank/Eccentric Dies was invalid.

Some valid positive values were not being allowed.

The valid range for the Home Switch Position is any value between +- Die Travel (Auto) as long as it is also outside of the Start Match to Stop Match Position Range.

Any Home Switch Postion between 0" and the Start Match Position would result in the die referencing to 1/2 of the Die Travel (Auto) value.

There is a function that finds the Rotor angle for a given Die Position in inches. It is given an initial guess angle and iterates to the actual angle. The function made an assumption about the initial guess that was resolved by adding an absolute test rather than assuming the error in the guess would always be positive.

DIP Switch 11 and 12 on an XL200CL-MRE2 controller is supposed to invert the assumed logic of the Home Sensor. However, those switch settings were being prevented by the Switch Validation test.

Until now the Auxiliary Compensation Parameter was only available on Open Loop Controllers.

The Auxiliary Compensation parameter did not make sense on a Closed Loop until the addition of the Open Loop Shear option on some Die Accelerator controllers.

The parameter will now be available if the main shear press is configured as open loop and the controller has the slave option enabled.

MRS discovered an issue one their machines with the Item Complete output on an E-Stop. After a reset of the E-Stop circuit, the Item Complete output would turn back ON.

They requested that we add an E-Stop input to all of their models and that it terminate the Item Complete timer early. They have been assuming that all XL controllers had an E-Stop input and have wired all of their machines this way.

Only Closed Loop controllers have an E-Stop input. Since our controller is not a safety rated device we are uncomfortable adding a new input to a controller with the name E-Stop to avoid potentially invalid assumptions about the purpose of that input.

A new input will be added to all XL Open Loop models that have an input available. It will be added based on DIP switch selection to avoid impacting legacy installations. The new input will be called "Sys. Ready". If the Sys Ready input is configured it will terminate the Item Complete timer if the input turns off. If configured, the input will also be required to enter the run mode and will also terminate any run mode in progress.

On Closed Loop models, losing the E-Stop input will terminate the Item Complete Timer.

The DIP switch configuration and the input location of the Sys Ready input will be defined in the Switch and IO documents for each controller model.

A new segment was required to store and access the ARM application required for the Rev G and higher 5386 board. This change reads the descripter table and populates the hardware structure so that the 5386 application can access the ARM application and program the ARM if required.

This is no longer the case. This change was removed prior to the software being released. The 5386 Watch Dog signal notifies the ARM chip that the 5386 Watchdog has failed.

The FM31265 will no longer be responsible for the 5386 Watch Dog on Rev G and higher boards. In the Rev H hardware the ARM processor will take over this responsibility with much more control and less 5386 overhead.

To facilitate printer driver protocol testing the windows simulation is able to communicate to a printer simulation through the Loopback address on a hardcoded tcp/ip port.

This change allows the IP address and the port to be specified so that an actual printer on the network can be used as well.

The command argument format for the printer IP address, using the loop back address as an example is: pip127.0.0.1

The command argument format for the printer port number, using 4567 as the example port is: ppor4567

both arguments are case sensitive.

In 2016 we added logo printing to the 1510 printer for Rondo, based on the latest ESI printer protocol spec, because we have no printers to test with. Now in 2020 when they try to use it, it does not work.

We have discovered today, the latest ESI protocol document from VideoJet has an error in it. Yet somehow we got it correct when logo printing was added for the 1520 printer.

The [1B][84][38] command required an 8 character file name. It had to be 8 characters. This is the command we were attempting to use but the latest ESI protocol document actually documents the [1B][84][43] command, which has an argument to specify the file name length. Instead of adding the [1B][84][43] command, someone edited the [1B][84][38] command in the document instead.

Both the 1510 and 1520 drivers are now using the correct [1B][84][43] command.

The VideoJet driver, in its extended mode, uses row and column numbers to locate field data within the print message format.

The XL print driver allowed for 3 rows and 4 columns but the Eclipse driver allows 4 row values 0-3 and 5 column values 0-4.

The XL protects its array bounds by converting any index with a range error to 1.

Rondo was trying to use 5 columns. Since a bug with logo printing in SCN 4304 is also being fixed, an additional column is also being added in the same release. To avoid having to change and release Eclipse as well to allow them to use the 5th column, the XL driver will now stop converting column 0 to column 1. This effectively changes the column index field from a 1 based index to a zero based index.

The AMS Generic and the other Matthews drivers like the ViaJet and PM5100 already had the ability to connect to an MPERIA windows simulation via a Tcp/Ip Ethernet socket. They could also connect to an actual printer by specifying the printers IP Address and Port using command line arguments.

This change allows the PC simulation to connect to any printer, including bundle ticket printers, that support Ethernet Tcp/Ip socket connections.

New command line arguments have been defined that allow the IP address and Port for the bundle ticket printer be specified.

The command argument format for the bundle printer IP address, using the loop back address as an example is: bip127.0.0.1

The command argument format for the bundle printer port number, using 4567 as the example port is: bpor4567

Enabled Ansynchronous Printing with the AMS Generic Print driver.

When displaying the Asynchronous Print Buffer, the buffer text box was covering the OK button. The solution was to resize the window to allow all of the controls to be displayed correctly.

When using Asynchronous printing, the controller attempts to treat the line as Shear-Only Line if there is only one other press and there are no gags. It does this by clearing the Part Queue on every halt. It also replaces the last part in the Print Queue when entering run. This allows the operator to set next and have it take effect immediately. However there were some holes in the logic that caused the print queue to get out of sync.

  1. If the last part in the print queue had already been triggered by the sensor but not yet been cut off, entering the run mode queued another message for the part in progress.

  2. Halting and restarting with more than one part in the print queue.

Both scenarios resulted in an extra part in the print queue. Eventually, with enough run cycles the print queue would fill up.

The logic for this was incorrect and was spread out over the code. The existing implementation was removed and replaced with a simpler one.

If the controller is operating in the simulated shear only mode:

  1. When initializing the Part Queue, if there are messages in the Print Queue, replace the last Print Queue added with the first part in the Part Queue.
  2. When initializing the Part Queue, if the printer sensor is blocked, the first part has already been printed on so don't add the first part in the Part Queue to the Print Queue.

The RE and MRE models do calculations to create a cam table that is used to position the die.

A recent SCN, SCN 4266, fixed a bug that artificially limited where the home sensor could be due to incorrect calculations that resulted. Fixing that bug opened up those same calculations to an infinite loop.

The calculations in question, iteratively determine the angle of the rotor (motor) given a linear position of the die.

The initial calculations had an error if the initial guess provided to the iteration resulted in a negative error. When that bug was fixed using an ABS comparison, unknowingly, the function was then open to new failure. The error could begin to ping pong between positive and negative values, failing to get below the accuracy threshold.

The infinite loop was resolved by requiring the absolute error to be constantly decreasing. Once it fails to decrease, we have found the closest angle, within the resolution our available math functions provide.

SCN 4248 Enabled the Maximum Backup Distance parameter on Open Loop Feed to Stop applications. This edit opened up a code path that failed to clean up/free up presses that were waiting on a feed to complete. Since those presses were stuck waiting for a feed to complete, they were unable to signal that they had exited the run mode and the Run output would stick on because the controller failed to completely exit the run mode.

The only way out was to power cycle the controller and then it would display a "Power Off in Run Mode" error.

The Error messages that Eclipse has Setups or Tools Locked are normal under some conditions. For Example, Setups cannot be modified while Eclipse is uploading or updating setups. The same goes for Tools or any of the record chains in memory.

However, MODBUS, when the PLC Remote Setup or Tool Configuration Selection features are enabled was causing this condition to be much more likely. The MODBUS code was reading the current configuration ID's from the PLC and should have been looking for a change before making a selection. Since it did not look for a change, every manual shear(for example) would cause the Setup and or Tool Configuration to be re-selected. If an operator tried to clear the queue with two manual shears in a row, depending on how quick Eclipse was, Setups and or Tools may have been locked and the operator would get a message indicating such on the second shear attempt.

This has now been resolved by only attempting to update the Setups and Tools when the PLC has actually changed its selection to be different from the current Setup or Tool configuration.

Historically all print drivers have been developed and tested with one RS232 baud rate. This baud rate is configured in the x370 by the driver when the x370 is identified.

The AMS Generic print driver will be used by numerous printers as printer manufacturers develop plugins or inserts to allow their printers to more easily integrate or simulate other printers.

ReaJet has developed an integration. Rather than force them to use the default rate that the AMS generic print driver selects, 57600, a new setup has been added. The parameter is currently available only when the AMS Generic Driver is selected. All other drivers will continue to use their defaults for now.

The new setups are called "Part RS232 Baud Rate" and "Bundle RS232 Baud Rate"

The selection options are 9600, 14400, 28800, 38400, 57600 and 115200.

If Eclipse does not set the Height and Width multiplier or if it sends a zero, the Height and Width multipliers will be defaulted to 1.

All communication was modified to allow the printer 500msec to respond.

The 6370 was not responding to a protocol version request from the printer due to an unneeded carriage return in the command string interfering with the 6370 command communication.

The Ams Generic interface version command was modified to allow the response of "1" to be equivalent to "1.00". The printer is no longer required to send the ".00" part of the version number.

If Eclipse does not send the point size, the point size will default to 14 as the spec says.

The Clear Print Queue and Check Status commands were waiting for too many characters.

From the very first instance of the Videojet print driver, the driver did not report communication errors with the printer as long as communication with an x370 was active.

The driver attempted to configure a two byte response in the printer when a new message was sent but in fact, due to a documentation discrepancy it actually turned off the response it was looking for and turned on status messages that it was not looking for.

In the past few years Rondo noticed that a printer was not even required to make the XL happy, as long as an x370 was connected and communicating. They asked us to add additional checks to detect when the printer failed to respond correctly. However, this was a risky task since we had no printer to test it with. Their initial testing appeared to work on the surface.

We now have a printer simulation from Videojet that allows us to test communication on the PC simulation. Using this, the configuration issue was discovered and corrected so that the response we are looking for will be generated.

The command in question was being sent as [18][01][06][04] when it should have been sent as [1B][01][06][FB]. The last byte is a mask byte and the purpose of each bit to enable or disable a response was backwards. A zero bit enables the response rathers than a one.

Two issues were found that prevented the Image printer from communicating. The Image printer requires the binary communication commands with the 6370. Neither issue was in the driver itself but in the common communication code that passes binary data to and from the 6370 board.

  1. Single character commands would not be sent to the printer. There was a bug with a single character string that resulted in the command not being sent. This was intrroduced in the restructuring done in SCN 4139.

  2. For binary communication the code did not wait long enough for the response when using the new protocol introduced in SCN 4138.

The VideoJet Driver uses the Height Multiplier field in an unconventional way. It is used as a modifier to the selected Font to select Single, Double or Triple line depending on the selected Font. Typically a multiplier should be 1 or higher. In the case of the VideoJet driver a Height of zero has meaning so changing a zero to a one is undesirable. However, this is what SCN 4338 did in the base driver code.

This was fixed by adding a virtual method to allow the VideoJet Driver to override the standard default of one with a zero.

Dual Die Accelerator controllers operating in Hole Detect or Hole Correct mode had the potential of displaying an ever increasing hole count number on the Top Line portion of the display.

The sum of the Hole detect counts on Inputs 23 and 24 were displayed on Hole Enabled controllers. Input 23 is used for the Home Switch input for the second die accelerator. Any time the second die hit the Home Switch, a hole was added to the hole queue for that input and was never being cleared out.

This has been resolved.

If a press punches too close together it can damage press tooling and it is inefficient time wise. Sometimes customers program patterns with overlapping punches that span the trailing edge of one part and the leading edge of the next part so that the first and last parts will both get all of their holes. We detect the redundant press hits in the middle and remove the duplicates. Press hits, with gags are OR'd together to become one press hit with the gags of both operations.

SCN 2585 changed the threshold of +- one encoder count to be equal to the part tolerance. However, this can result in holes that can be as much as two times the tolerance out of spec. In addition, the change was made for one customer for a problem we were unable to duplicate.

We have added a new setup called "Punch Combination Tolerance". This provides independent control over how close targets can be before they are OR'd together.

For now it will be available on controllers that are configured with Gags. When unavailable the tolerance will be the equivalent distance of 1 encoder count, which reverts it back to the original tolerance prior to SCN 2585.

A setup was created in a theorized attempt to improve tolerance. After a move, rather than test to see if other presses are within tolerance, this new setup would allow each press to do its own move.

The Setup is called Punch Tolerance mode and has two settings, Individual and Parallel. The intent is that Independent will force each press to do its own move to get as close to its target as possible. Parallel is the legacy operation where a press will test to see if it is within tolerance and will not attempt to move.

When beginning to implement the actual run logic of the setup it became apparent that it was a larger job than it sounds like on the surface. It will require a lot of changes and an approach similar to the one 5226 motion controller uses where a 75% threshold within the tolerance is used to decide if the press needs to attempt its own move. It is a little more complicated because not all lines are able to back up like the folding machine axes the 5226 deals with.

For now, until/if we decide to revisit this, the setup will be hidden and will have no effect.

Allow the Stitching Feature on the XL200 OL and CL. Since an XL200 has no gag outputs, short parts are stitched together by leaving out shear operations. The parts must be separated by cutting them down by hand in post operations.

On Feed to Stop applications, while Stitching parts, this change allows the Shear press operation to be selectively omitted without stopping at the shear target. It does this while still accurately tracking material and part completion for the parts that have the omitted press fires.

Internally, tracking part completion without stopping and without firing the shear press has been described as a Phantom Shear.

Some feed to stop machines don't have a physical shear tool. A future, generic implementation of a phantom shear for those machines will be able to make use of this same mechanism that has been implemented for Stitching.

This feature is not currently compatible with the SGF option. We have a customer waiting for this for a Brake and Hump line. There are too many concerns with the target adjustments for the Weld Station and the Weld Knockoff station to consider right now.

SCN 3575 was a change to leave the lag active during die return. Turning the lag off was causing a motor jump.

Having the lag off makes the die return smoother at the expense of a motor jump as the die comes to a stop at the end of travel.

The lag calculations rely on a filter for the command velocity. That filter adds a phase shift in the calculated command velocity. Suddenly removing the lag portion of the analog, which relies on the command velocity filter, results in an abrupt change in analog voltage or velocity command for SERCOS.

SAMCO complained about this, the only solution was to leave the lag active all the time.

This same phase shift is also responsible for the knee "velocity overshoot" that can be seen in the closed loop data screen. The phase shift results in the die position being behind because we are under correcting for the die velocity due to the phase shift. The overshoot is the die having to catch up to the target as the phase shifted velocity catches up to the actual velocity. This phase shift causes a knee or velocity overshoot at each trapezoid transition in the set point motion profile.

SAMCO is now complaining about vibration that can be seen at the transition points when the die stops at end of travel and at home. This new parameter allows them to turn off the lag during the die return, which will make the transitions smoother, returning the motion profile to what they are used to.

The harsh transitions are more impactful on them because they are using belt drives that stretch, which results in vibration.

SCN 3577 corrected a bug with hard coded filter constants that were incorrect when SERCOS was being used. The constants should be calculated based on the cutoff frequency and the sample time. The sample time goes from 1ms to 2ms when SERCOS is used so the constants needed to change for SERCOS.

SAMCO has a belt drive system that they were able to tune with V4.48.00 and not able to tune in v4.49.00 which is where is bug was fixed. After experimenting with their settings we realized that they found settings on the old software that were a balance between accuracy, smoothness, die stroke and the drive overheating. If we provide them a method to use the old hard coded filter constants, we expect they will be able to use the latest software successfully.

A new setup called Lag Command Velocity Filter has been added. Its default value is 35.6Hz. If SAMCO uses 17.8Hz when using SERCOS they will be back to the filter constant values that were hard coded. If they are using analog they should use the default values

When using SERCOS with a Die Accelerator there was a negative blip in the command profile at the start of the acceleration ramp. This blip did not exist when using analog.

The challenge for SERCOS is the motor encoder feedback is one sample old and the new command takes effect one sample delayed. The calculations attempting to account for this had a bug in them. They were attempting to make adjustments to the set-point ramp and when the ramp started.

The Set-Point ramp is now identical between SERCOS and analog. All adjustments for the old feedback and delayed command are now made in the loop. The error calculations in the loop are all made against the old Set-point which is also one sample old. The Lag Integral calculations that are removing the error will push the actual die position out ahead by one sample so that the actual die position will begin to match the new set-point by the time it becomes active and the die should be matching speed and position.

The only remaining customization in the set-point calculations for SERCOS is the tolerance test. Since we only know where the die was one sample time ago, the tolerance is compared with where the material was one sample time ago.

A request was made to add a PLC handshake for stopping shear operations. This will allow a PLC to control the production rate of the line. The PLC must give permission for every shear while in the Run Mode (Automatic). Full documentation on how the Handshaking works is documented in the MODBUS spec.

When waiting for the OK to Shear from the PLC the controller will display "STANDBY" in the run status.

SCN 4435 added the ability for a PLC to control when the shear fires on a Stopping Shear line. The XL lets the PLC know when the shear has fired and it has 500msec to acknowledge that is has seen it or this Stopping Shear Handshake Timeout error will occur. However, it should not occur if the feature is not enabled. There was a bug that caused the error to occur even when the feature was disabled. This has been resolved.

A customer has an SPD controller that sometimes halts after each part and generates a new Bundle ID. Production records indicated it was halting for an out of orders condition. A new ID is generated on an Order change or when it runs out of orders.

The customer sent their settings and it was determined that they are configured to use the Hole Correction feature.

On a shear only controller, which they have, the next part is queued 10 inches before the current part gets cut. In the simulation using their settings I was able to determine that the controller was using the wrong resolution (input vs output) for this test and it was queueing 0.56" inches before the current part got cut. If the line runs fast enough the run task may not have time to queue the next part.

A second issue was discovered. The Hole Correction feature can cause the part to get cut before the queue expects it. The Hole Tolerance needed to be added to the 10 inches so that the even if the target got adjusted to be cut sooner, the queue still had at least 10 inches before the cut to add the next part.

The Hole correction had bug that was able to cause the Input Task Watch Dog test to fail and report an F0001 Task Error.

If a hole was detected within the Hole Tolerance and on the exact encoder count of the shear target, an infinite loop having no sleeps within the Shear Task would occur. This would use all of the CPU time not allowing the Input Task to run and the Input Task Watch Dog would trigger.

This seems improbable but we had lots of task error dumps and other evidence that all pointed to the Hole Correction logic being the cause. This condition was the only path that could be found that would have caused an infinite loop. All of the Task Error dumps showed that the Shear task was in code involved in this loop.

Time will tell if it resolves the issue for the customer having the Task Errors.

The 81000002 and 81000004 task errors get reported if an integer to string or integer to hex string function is called and the caller specifies to allow zero characters to be used for the conversion.

A customer mistakenly caused this by specifying zero characters to print a bundle number. This shut down their entire factory since they rely on this one machine for all of their production.

Rather than shut the whole controller down for a simple mistake, the decision was made to do what the function arguments said to do and use zero characters, in other words, set the string to zero length or add zero characters depending on if it was a copy or add string function call.

A customer complained that they would be missing gags on the first part when entering Run Mode. The gags were Expanded Gags that get sent to a PLC via MODBUS.

The customer had PLC strip data records that showed the gag would come on briefly at the appropriate time and then briefly at the end of the press cycle. Rewiring one of the affected gags to use a hardwired gag eliminated the problem for that gag.

The diagnostic data screen on the XL showed no blips on the affected gags.

A code review showed that there was a race condition when sending the Expanded Gags to the PLC. There was no Mutex protecting the time when the data was copied into the command buffer and when it was sent. This allowed a lower priority task (B) make a copy of the data but get interrupted by a higher priority task (A) before it could send it. Task A was able to modify the master data and send its copy. When task B was allowed to send its copy, task A's edits were overwritten in the PLC. If a third task (C, A or B) needed to send gags, since the master data was correct, it would fix the issue caused by the race condition. This led to the affected gags to flicker on and off at the beginning and the end of the press cycle.

We have no way to duplicate the timing of the customers machine. Something about the timing is making this race condition occur on the first part after entering run. This bug fix will most likely fix it but there is no way to absolutely know for sure until it is tried on that machine.

The Press Information diagnostic screen displays the state of the Expanded Gag IO. The display headers of each gag byte were supposed to display the Gag Id range contained within the byte. If more than one press was configured, this failed to be the case.

The gag number range in the header of each gag byte now represent the Gag Id numbers as are programmed into Tool records.

The Press Information screen now displays the number of Local and Remote presses and gags. It also displays the total number of presses and gags.

Persistent Memory, which is where the SERCOS settings are stored, had corrupted SERCOS settings. The Cycle Time setting was invalid, resulting in an invalid setting for the XL operating system timer. This is what caused the 80090270 task error to occur.

The controller will now test the settings on power up and configure them to valid default values if they are found to be out of range.

These changes are in the Boot Code. In order for these changes to be present the Boot must be updated to V2.05 or Higher.

Most of these changes were made by Jim with some changes made by me. They were made in response to issues with erasing and programming on the Rev H hardware, though there should not have been a difference.

Programming Improvements.

  1. Check to see if a word location is already programmed before trying to program it. If it is already programmed correctly it must be due to a communication timeout retry. If it is not programmed correctly or not erased report a programming error back to FlashWizard.
  2. Check for programming completion using the method specified in the Flash Part Spec sheet by doing two reads in a row.
  3. The commands were doubled, duplicated in the command word with no explanation. This did not match the chip documentation. The Rev C hardware was presumably programming two chips at the same time. The High and Low Bytes may have been going to two different chips. We only have one Flash chip in the Rev D and Higher that operates in a Word Mode. Removed the duplication for clarity.

Erasing Improvements

  1. Removed an Unprotect command. This command is not part of the erase process and should never have been in the code.
  2. Added an erased test on the first word or each segment as a quick double check of erasure. Not a comprehensive test but simple double check.
  3. The same command duplication that was removed from programming was removed in erasing, though erasing already had most of this removed.

Rev F and earlier 5386 hardware use an external Watch Dog chip that resets the 386 processor and the DSP in case the 386 processor locks up.

Rev F and earlier 5386 hardware has a signal line P1.3 that resets the DSP, which makes the IO on the 5387 board safe in cases where a Task Error or some other unsafe condition is detected by the software.

On Rev H hardware, resetting the ARM, to make the IO safe during a task error will also reset the 386, which is undesirable.

So here are the changes.

  1. P1.3, which is connected to the ~MR line will now be monitored by the ARM. The Watch Dog Chip is also connected to this line. The 386 can either drive this pin low or let the Watch Dog Chip do it to reset the system. .
  2. The 386 will rely on the ARM to make the IO safe if the 386 fails to send the cyclical IO data to it. On a system reset the ARM will NOT have any IO ON or configured. The IO states are contained within the cyclical data. Once the cyclical data starts being received, if the ARM then fails to receive the expected data it will go into a safe mode and reset the 5387 board to make the IO safe.
  3. Undo, SCN 4290 which removed the Watch Dog operation for Rev G boards.
  4. While programming the Boot with the Universal Programmer the ~MR line is driven low. Unless the ARM knows that the Universal Programmer is being used, it will reset the 386 and thwart the programming. The ARM is able to indirectly monitor the FWP line that is driven low by the JTAG connector from the Universal Programmer. The Keyboard Pic drives this line low to signal Flash Programming mode desired. The Keyboard Pic is now placed in reset when entering Flash Program mode so that it will release the FWP line. This may be unnecessary since the Watch Dog is disabled during Flash Programming Mode but it makes the operation of the FWP line consistent between entering Flash Program mode via the Keypad or through the debug P command.

Notes!!!! In order to make the WatchDog system and code work the same way as the Ref F board it would be preferable for the ARM to be able to hold the ~MR line low while the reset occurs. The Watch Dog Chip has special logic to continue holding the line low for 100msec after it is released externally. The ARM would wait for the Watch Dog to release the line before bringing the 386 out of reset. This would synchronize the Watch Dog and 386, preventing the 386 from trying to talk to the Watch Dog until it is ready to accept communication. It would also prevent the watch dog from running before the 386 is ready keep the Watch Dog happy. It would make the Watch Dog effectively reset the system the same way as the Ref F where the 386 would start after the 100msec low enforced by the WatchDog. Since we can't do that, it appears as if the Boot16 code attempts to stop the watch dog nearly as soon as it boots. It is able to see if the Watch Dog is responding and retries many times if it doesn't. The worst that will happen is that the ARM will reboot the system again if the Watch Dog fails

The 5386 Rev H hardware has a new heartbeat LED labeled i86. This LED blinks at a 1 second rate to indicate the 386 processor is still running.

The 386 uses output P3.6 to control the LED. Prior uses of P3.6 had to be found and eliminated for REV H boards.

The "simcon" command line argument to set the port for the simulation console failed to parse the correct port. The default port, 4002, was used instead.

This bug has been fixed.

IO Names can now be requested from the Simulation to allow a more user friendly IO interface to be developed. Details on the interface are defined in the XL200/Diagnostics OneNote.

External Memory and other devices must provide a ready signal to the 80386 processor when the processor attempts to read or write them. Unless interrupted, the processor will wait forever if a ready signal is not given.

In order to detect hardware or software conditions that cause this the Rev H 5386 board has a CPLD chip with logic to detect the error and trigger an interrupt. The interrupt is IRQ 9.

When IRQ 9 occurs the controller will display a Task Error 8F00xxxx where xxxx is the status register from the CPLD that contains information that will help engineering determine which device or software is responsible for the timeout.

This feature is very similar to Even Spaced Punching except the spacing is calculated based on a desired spacing and a distance between two points on the part. The spacing will vary based on part length.

This feature requires an Eclipse Update to support UART Command version 3.56 or higher. The controller will report an error on the first attempt at reading the status indicating an updated Eclipse version is required.

Three new Operation References were added.

  1. Proportional Min. This reference will attempt to space Holes greater than or equal to the programmed offset.
  2. Proportional Max. This reference will attempt to space Holes less than or equal to the programmed offset.
  3. Proportional Limit. This reference will place an upper or lower limit on the calculated spacing that will be allowed depending on which of the two Proportional Spacing references was used. If the limit is not appropriately above or below the selected Proportional Spacing reference an error will be displayed that references which pattern is at fault. If the calculated spacing is not within the selected spacing reference and the limit an error that references the pattern and part length will be displayed.

The programming method of Proportional Spacing is very similar to the Even Spacing program method. All operations must contain the same tool, shape or macro ID. The table below shows the required order. With the exception of the Proportional Max or Min operations, all of the others are optional and can be removed from the pattern. If both a Proportional Max and a Proportional Min are present in the pattern, they will be treated as independent operations. All of the rules will be applied to each of them independently.

Tool Reference Offset nnn Leading Edge 12.000 nnn Proportional Min 12.000 nnn Proportional Limit 20.000 nnn Trailing Edge 12.000

The example above will place one hole 12.000 from the leading edge and one 12 from the trailing edge. It will calculate how many holes will be required to space holes at least 12.000 apart and then it will calculate the required spacing. If the spacing is less than or equal to 20.000, it will make the part.

If the Leading Edge reference is removed, the leading edge of the part will be used to calculate the number of holes and the spacing. The first hole will be at the calculated spacing distance from the leading edge.

If the Trailing Edge reference is removed, the trailing edge of the part will be used to calculate the number of holes and the spacing. The last hole will be at the calculated spacing distance from the trailing edge.

If the Proportional Limit reference is removed, no limit will be placed on the calculated spacing, min or max, depending on the Proportional Spacing reference selected.

If a Proportional Max referenced were used in the above example, the Proportional Limit would need to be less than 12.000 or removed. The calculated spacing would be less than or equal to 12.000.

Quality Audit Triggers and other custom lists allow 40 characters for the length of the name. These lists are displayed in table format in the Production Data screen and in the case of QA Triggers, in a dialog window. If the name is too long or uses lots of the wider characters like W, the name may not have room to display entirely.

This change addresses this issue for QA Triggers when they are presented in the dialog window. Instead of using a single line prompt to display the name it was changes to a multi-line Text Box that allows text wrapping. The entire name is now able to display when presented in this way.

The Allow Coil Override setup was unintentionally being hidden when Allow Coil Inventory was configured to "Remote". This bug was introduced when the "Remote" setting was added Allow Coil Inventory. It has now been resolved.

The reported error occurred on an XL200I controller with switch setting 102.

The Following settings were used: Min Auto Stitch Length - 48.000" Max Auto Stitch Length - 65.000" Minimum Slow Distance 10.000" Shear and Punch Dwells - 1.0sec

Programmed 4 pieces @ 16.000"

On the PC simulation the controller would stop with a memory access error caused by using a NULL Pointer. This type of error is not detected on the Controller Hardware. The results of using a NULL pointer are not entirely predictable. It is very likely in the customers case it ultimately resulted in a Missed Shear Error.

There was a bug in the code that only occurred if more than two parts were stitched together. This has been resolved.

A customer requested that we be able to send the XL Line Speed to the PLC via MODBUS. They are unable to add an Analog card to their PLC to get this information via analog.

This feature sends the speed as an integer in inches per 100 seconds. This is easily converted to inches per second and provides two decimal places of resolution.

The update rate can also be specified by setting a field in the MODBUS configuration structure. This field indicates how many times per second to update the field. Care must be taken by the customer to only update it as often as required to prevent excessive slowing of other MODBUS features.

Explicit details on how to use configure the feature in MODBUS can be found in the XL200 Series PLC Interface Spec.

Code is being moved around and restructured on the 386 CPU to account for differences in the ARM and the DSP co-processors.

While in Blanking mode there was a bug in the code that prevented edits to the Front Shear Kerf from being used. They would not get used until the next transition from Standard Mode to Blanking Mode.

This has been resolved.

The ARM ethernet stack on the Rev H 5386 board assumes a different byte order than the DSP.

The most convenient place to handle it was in the Ethernet Setups, common the V4 and V5 XL2 software.

Added conditional assembly to allow ARM processor to share the main functional portions of the code with the DSP processor.

The Close Loop Brake and Hump controllers already have had the Short and Very Short outputs and Delay after Shear times. We have started to do some Open Loop brake and hump style lines and these features have been requested.

This change adds the Setups, Outputs and the Delays to the Open Loop controller. The outputs require Expanded IO (PLC/MODBUS IO). All of the setups to control the two features require the PLC (I) option in order to be visible in the Open Loop.

Short Part is on output 33. Very Short Part is on output 34.

DIP Switch 4,5,6,8,14 all ON, which is Switch = 8376, was invalid but was being allowed.

The configuration resulted in four presses and six gags.

In this configuration the Press 3 boost output was Clobbering the Stacker output. The configuration was fixed by eliminating one gag output. This shifts up the Press Up and Press Boost outputs up by one so that the Stacker output and the last press no longer attempt to use the same output.

Originally the XL244CL supported gags up to Gag 6. The addition of DIP Switch 14 enabled two additional gags, up to Gag 8.

We are now supporting up to four additional gags above original with the addition of DIP switch 15.

DIP switch 14 and 15 are mutually Exclusive. Only one can be ON at a time.

If more than two presses are configured, Gag 10 and other gags, counting down, will be replaced by the required configured press outputs.

The windows simulation shuts down when running an MHA controller. The cause is that the press task runs out of stack space. The symptoms could be all sorts of issues. It is not entirely predictable. In the Windows Simulation it was causing the simulation to shutdown as the die was returning home wile in the run mode.

This change relates to the XL2CL project and standard single hit die accelerators.

Due to the discovery of the stack size issue addressed in SCN 4502, the available stack size was investigated for the standard die accelerator shear task. It was discovered to only have about 15% free space. Just to be safe, the stack size was increased by 20% to head off any issues that may be occurring under conditions I did not cover in my test. This also provides some head room for future software development.

In the Windows Simulation Die Accelerators would sometimes have dips in command voltage or report Drive Not Responding errors. This was tracked down to a simulation only issue.

In the windows simulation the press operations were being logged to the console window to make watching the simulation easier. These debug prints were sometimes causing the press task not to run and generate new Set-points but the timer interrupts, encoder simulation and Loop still did run. This caused a dip in the command signal as the Loop tried to follow the instantaneous stop in the Set-points and then a Drive Not Responding when the Set-points instantly started again.

The Die Test would run a maximum of 9999 cycles before stopping.

9999 cycles is usually enough but during some testing we want to leave it running longer.

The issue was that the Die Test was keeping track of parts that it filled into the queue. It would only fill 9999 parts, which is what the hidden Die Test, test part is programmed to. No production is tracked against this part, keeping track of how many items for this part were filled into the queue was not necessary.

SCN 3575 and SCN 4426 provide history and context for this change.

With the "Lag on Die Return" set to NO there have been disturbances in the command signal (Analog) when switching the Lag ON and OFF.

The command signal is made up of proportional, integral, Lag and Feed Forward components. If any of those components are suddenly removed or added, they will cause a disturbance (Jump) in the signal. When the Lag is turned ON or OFF during the Die Cycle, this is what happens. These disturbances are especially bad if they result in a jump in the opposite direction than the signal is already trending.

The solution is to switch the Lag ON and OFF when the Lag and Feed Forward components are as close to zero as possible and when any necessary jump will be in the same direction as the signal is already trending.

The motion profile (Set-point) code knows when it wants the Lag to switch ON and OFF. The Loop code knows when it is safest to do the switch. The Loop code will now delay the switch until the best time to do so.

When switching the Lag ON, the Loop will wait until the Filtered Set-point velocity is at or above zero.

When switching the Lag OFF the Loop will wait until the sum of the Acceleration Feed Forward and the Lag are less than 0.5% of Maximum Analog. This point in time happens during the deceleration of the die before it comes to a stop. The Set-point code now requests the switch at the start of the deceleration ramp.

SCN 4049 created the Selective Closed Loop feature. It describes how the feature works.

Two bugs were found in the feature, both related to Coil Tail In.

  1. The original change included the ability to switch from Closed Loop to Open Loop on the fly during a Coil Tail Out. However, the code failed to prevent switching from Open Loop to Closed Loop on the fly, which would only happen on a Tail In. The Tail It causes a jump in the Command signal due to the loop error that accumulates while in Open Loop. A large enough loop error results in a Drive Not Responding Error. The solution was to force the controller to stay in Open Loop until the material stops and the motor is disabled. Switching to Closed Loop only occurs when the material is stationary while enabling the motor.

  2. The motor Set-Point was not being set correctly during a Tail In. This resulted in a Slip Test Error because the Selective Closed Loop performs a Slip Test by making sure the loop error does not become excessively large. The incorrect Set-Point was resulting in loop errors large enough to trigger the Slip Test failure.

This change involves remapping the V4 Flash to match the new V5 mapping.

In addition, Flash programming will become faster because we will no longer be storing the PIC Keyboard application in Flash. It will never be used because even if we were able to update the PIC on the main display, we could not update remote displays.

The operating system has the ability to initialize the blue screen and display text. The application can use the display once the PEG graphics software is running.

This change adds two functions to the operating system that will allow the application to use and display text on a blue console style screen before the time when the graphics software is running.

The Logger class was also modified to use these functions so that printf style methods can be used to display text on the screen.

The Lag on Die Return setup was missing for Die 2. The end result was that it was effectively defaulted to NO all of the time.

This has been rectified.

When using the omitting shears algorithm the Stitch Mode parameter was not active. In this algorithm the controller effectively functioned in Item Separate mode.

The Stitch Mode setup will now be available and active when Omitting Shears. It will default to Item Separate in order to stay backwards compatible rather than the normal default of Bundle Separate.

The Windows simulation now has the capability to simulate Battery Backed Ram. This allows the simulation to function just like a controller that remembers its memory between startups.

The use of command Line arguments to set the Model and the Switch setting are required. If the two command line arguments are used the simulation will save its memory records and its setups to two binary files, BSSMem.bin and RECMem.bin. The two files are created/updated when the simulation is shutdown in one of the three methods.

  1. The main controller display window is closed with the windows close, X, button.
  2. The debug window is closed with the windows close, X, button.
  3. The debugger Q command is used to shut the simulation down.

These two files are valid, just like the memory in the controller, only for the simulation version, Switch setting and Model that the files.

If the simulation is started with the Switch and Model command line arguments it will look for the two files. If they are present, the simulation will attempt to use them. If the files were created using a different software version, Switch or Model, just like the controller does, the simulation will start up from a cleared memory state. If the same Software, Switch and Model are used the memory will be retained and the simulation will start up in the same state it was in when shutdown.

To allow for multiple simulations to run at the same time with Eclipse we have the port command line. If the port command line is used, the filenames of the files storing memory change slightly. In this case the port number gets incorporated in the file name. For example, if the port number is 1234 the file names will be BSS1234Mem.bin and Rec1234Mem.bin.

We have added a new trigger type for Quality Audits. We can now trigger on a shift change.

The XL controller does not know anything about shifts. It relies on Eclipse to send a shift change command at the end of each shift. This new trigger relies on Eclipse being running and the XL being powered up and communicating at the end of shift.

On a tile machine the material must have forming steps placed in it in order for the material to feed all the way through the forming presses through the shear.

Scrap pieces, like a test part, have never had a pattern applied to them. This made the Test part feature, added after the fact, useless on a Tile Machine.

The Coil Trim Cut feature was always intended to cut a small strip off of the leading edge of the first part after a coil change, it was never intended to be large enough to require a Tile Step. However, we have discovered that the first several feet of a newly threaded coil on some Tile Machines have some wavy visual defects in them. On these machines they prefer that the Coil Trim Cut feature remove this first few feet. The length of the scrap piece requires it to have forming steps to make it all the way through the presses.

The solution to both problems was to modify our current part calculation and part queueing functions to accept override parameters that specify the length and type of part that is being dealt with.

To prevent issues on legacy installations a new setup parameter called Coil Trim Cut Mode was added to the XL270. It has two settings, No Steps and With Steps. The setting defaults to No Steps. Customers who want to use longer Coil Trim Cuts can select the With Steps option so that their Coil Trim Cut parts will have steps.

In both cases, Test Part and Coil Trim Cut, the pattern that defines the steps comes from the item currently being filled into the part queue.

The combination of part length, tool locations and the size of the formed step can result in some part lengths that cannot be produced without part damage that comes from a step forming process that draws a previously formed step backwards into the lower shear blade. The controller has run time code that tests for this condition. in the case of a Coil Trim Cut or Test part it may not be obvious that it is not the programmed part length that is at fault. For this reason two new error messages were added, one for Test Part and One for Coil Trim Cut. The Errors are Coil Trim Cut Failure and Test Part Failure. Both errors have instructions to reference the prior error message for the cause. For cases when the part length is causing a problem it is hoped that the user will understand that it is the Test Part or Coil Trim Cut length that is at fault rather than the part length in the programmed items.

SCN 4516 Broke the Delay After Shear feature. SCN 4516 to enable the Stitch Mode when omitting Shears resulted in a reorganization of the stitching code. This change was required to allow multiple items to be stitched together using the omission of shears.

Prior changes had been made to support stitching on a Break and Hump line, SCN 4418 and SCN 4419.

In order to support all of the Delay after Shear options and Brake and Hump the length of the uncut Blank must be known. The changes required for SCN 4516 combined with all of the other changes made, and all of the new options created by SCN4516 made it an extensive problem to know what the final stitched blank size will be at the start of the blank, which is required. A new setup parameter was created so that a blank size can be provided for stitched parts. It is called Average Stitched Blank Size. This is the blank size that will be used for Stitched parts when considering Delay After Shear and the Short Part and Very Short Part outputs used in Brake and Hump applications.

In order for the Short Part and Very Short Part comparisons to work properly on an SPD controller the correct output resolution must be used. This has been resolved.

Hole Correction on a line where the detected holes are put in by a system that uses a different encoder than the cutoff has additional considerations. The corrected resolution of the XL must be adjusted to match the resolution detected using the distance between sensed holes. If we don't, the XL's shear targets will drift forever with respect to the detected holes.

To test this condition on the PC simulation requires a different simulation. This simulation did not start the first hole correctly.

For diagnostic purposes and to prevent long runs of uncorrected parts a new error message was added. If the controller is configured for hole correction and a hole is not detected within the Hole Tolerance of the shear, a Missing Hole Correction error will be displayed and the line will be halted.

The new screen is displayed if the controller is in Hole Correction mode.

The new screen currently shows three fields.

  1. The controllers correction Factor is displayed.
  2. The Hole Correction is displayed.
  3. The Offset is displayed.

The Hole Correction will be 100% if the Shear targets being Queued using the controllers corrected resolution (Correction Factor). On Shear only applications where the controller is detecting holes put in by another system, the controller will have to correct the targets it queues to prevent them from drifting outside of the Hole Tolerance. It is assumed that the system placing the holes will be placing them correctly. In this case the Hole Correction is the percentage that the Targets are being adjusted by when being added to the Queue. This is a correction of the controllers correction factor.

The Offset is the difference between where the XL has its target queued and where the holes are being detected.

In SCN 4533 the Missed Hole Correction error condition was still being tested when not in Hole Correction mode. This caused the controller to halt and report an error on every part. This has now been resolved.

Two separate customers have reported issues with B0002 Task errors when using Asynchronous printing. The error is generated when using an item pointer out of the Asynchronous Print Queue to get access to a print message from Eclipse. All of the data (Task Error Data) we have captured indicates that that the Item pointer or its Parent (Order) pointer may be bad. The B0002 error is generated when the ID bits in a record are tested and the pointer is outside of the address range allowed for records. In this case the address is above the records address space ending address.

One of the customers reports that they have other lines using the same print driver that don't have the same issue. Both customers are using different print drivers. The combination of these two clues indicate that it is not a Driver specific problem, it is an issue with the common Asynchronous Print Queue code.

A code review of the queue code showed a non-standard use of a ring buffer using a complicated three index system. This code was refactored to use traditional Input and Output indexes. To eliminate accidental dangling pointers using an invalid index, all item pointers are now zeroed (Nulled) out once the message for the item has been triggered. The code treats a NULL pointer as a request for an empty print message.

Using a Belt and Suspenders approach, the Item pointer and its Parent pointer are both tested to ensure that they point at a valid Item and Order before they are used. If an entry in the ring buffer is found to have an invalid pointer, the part for that entry will receive an empty print message instead of being allowed to continue and cause a task error to be generated later on.

This change is related to SCN 4356 where B0002 Task Errors would occur with Asynchronous printing.

SCN 4356 prevented the Task Error with Asynchronous Printing by Testing for the suspected error condition.

This SCN prevents the Error condition from occurring in the first case.

The ultimate cause, which also affects Bundle Ticket printing, was that Items and Orders were able to be permanently deleted even though they were still referenced by the Part Printer Queue or the Bundle Ticket Cutlist. There was a bug in the tests intended to catch and prevent the problem.

The error would occur if any item other than the first item was referenced by either Queue. When an order or item is deleted it is hidden from view and only actually deleted when safe to do so. There are two different methods of navigating records. One method includes the hidden records and one does not.

The test for records being in the queue was using the correct method when checking for the first item record but the wrong one when looking for the next records.

The Total Memory and Used Memory totals were incorrect in the Windows simulation after the SCN 4520 - Simulated Battery Backed Ram change.

Record Memory was being included in one of the segments that get added to the Total Mem and Total Used row. That resulted in it being counted more than once. Moving Records into its own segment on Windows and Adjusting how the total memory is calculated in Windows resolved the issue.

Hole Correction must work slightly differently if the XL is placing the holes that it then corrects on vs detecting and correcting on holes than another control system is placing.

A new setup parameter called Hole Correction Mode has been added to allow the operation to configured.

The setup has two settings, Synchronous and Asynchronous.

Select Synchronous if the holes are being placed by the XL using the same encoder as the cutoff.

Select Asynchronous if the holes are placed by another control system using a separate encoder.

When Asynchronous is selected, the controller compares the measured length of the parts (based on hole locations) to the expected length of the parts calculates a Hole Correction factor to adjust the targets that is adds to the queue. This adjustment must occur to prevent the XL targets from drifting out of Hole Tolerance with respect to the holes it is correcting on.

The Hole Correction Diagnostic screen was modified to show the current setting for Hole Correction Mode.

Asynchronous mode requires an Initial Hole in order to initialize the part queue. The controller will shear on this hole to start the process. If there is no hole present when the queue is initialized the controller will halt and display a Missing Initial Correction Hole error. This hole must be located in the material beyond the leading edge of the coil. If a hole is detected prior to the strip making it beyond the sensor an Invalid Initial Correction Hole error will be displayed and the controller will be halted.

The initial hole must be detected before entering the Run Mode. This will require the operator to clear the Queue and then jog the hole through the sensor before placing the controller into run.

Hole Correction was enabled on the following Models:

  1. XL202CLF, XL206CLF, XL212CLF
  2. XL202HCLF, XL206HCLF, XL212HCLF
  3. XL200HCL
  4. XL244HCL
  5. XL200H
  6. XL202H, XL206H, XL212H

This is the first time that Hole Detection and Hole Correction have been available in the same controller. Hole Correction is available when a Hole Detect Controller (Hole Mode Select) is in Standard Mode rather than Count Hole Mode.

The Print Trigger Driver had the Print Dwell setting but it became invisible when the driver was configured for Non-Stop operation.

The Print Reaction time was not active. This is a generic driver that can be used for either Stopping or Non-Stopping printers. It needed the Print Reaction Time for accuracy in Non-Stop applications.

Sometimes machines don't have a physical shear. A downstream system cuts the part. The controller has always stopped for a shear whether there was one or not in order to do all of the bookkeeping that required the material to be stopped. This is annoying to customers and is inefficient.

Sometimes the customer is able to hide the shear operation in some other operation. Sometimes this is not possible or convenient.

Recent changes have allowed the controller to stitch parts by omitting shears without stopping for a shear operation. This gave us the ability to configure the controller, using a setup parameter, to do what has always been referred to as phantom shears. A phantom shear is basically the same as omitting a shear but still counting the part as complete.

A new setup called Phantom Shear Mode has been added to allow a customer to tell us that there is no shear so don't stop for the operation. It has two settings, No and Yes. It defaults to No. When set to Yes, all shears will be treated as Phantom.

Due to competing requirements and business priorities the setup is not available in Continuous Press mode when multiple presses are enabled. In continuous press mode a Phantom Shear will force the press into single stroke mode during the feed that contains the phantom shear. These limitations may be removed in the future when business priorities and time allow.

Hole Correction is not possible on a Continuous Press controller. The controller must know how long a feed is before it starts, which is incompatible with Hole Correction.

A request was made to make retrofitting Beck controllers on Viper systems easier.

These systems initiate Rollformer and Feeder motion with a Run signal. They create part separation through the Rollformer with a Delay After Shear like feature that slows the Feeder. We cannot use our Run signal to initiate material motion. That function belongs to the material motion outputs.

This requires us to provide three states of motion in the run mode for the Feeder, Stopped, Slow and Fast. If the Feeder is in Slow or Fast, the Rollformer on the Viper needs to be in motion.

The chosen solution was to allow the Delay After Shear feature to use the Slow speed to create the part separation rather than Stopped. This setup is available when our open loop motion outputs are provided to control material motion.

A new setup has been created called Delay After Shear Mode. It has two settings, Stop and Slow. It defaults to Stop, which causes Delay After Shear to Stop for the delay as it did before this change. Slow causes Delay After Shear to Slow for the delay.

One exception to this is if there is a Bundle Stop Delay that is active at the same time. If the part in question initiates the Bundle Stop, Bundle Stop takes precedence and the controller will stop for the delay instead.

Coil End Point and the Front Shear feature are intended to be mutually exclusive. If you have a Front Shear you don't need to enable the Coil End Point because the Front Shear implements an automated Coil End Point.

However, a customer had them both enabled and they were getting F0001 Task errors, which indicates something is preventing Inputs from being scanned. This is an indication of an infinite loop that does not give up CPU time for the input task to run..

The exact path of the infinite loop is unknown. What is known is that the Coil End Point was placing the controller into Coast To Stop mode at the same time as it was stopping for the Front Shear operation prompts.

To ensure Feed to Stop press tasks cannot use all of the CPU time in this mode the Feed to Stop function now tests for Coast to Stop mode. If the controller is already in Coast to Stop mode, the function will sleep until the controller has switched to Halted before proceeding.

SCN 4544 allowed a Hole Count Controller to operate in Hole Correction Mode when the Hole Mode Select is in Standard Mode. This change caused a bug in the Display Header (Top Three Lines Display). The Hole Count display no longer appeared when in Hole Count mode. This has been resolved.

The bug was experienced on an XL200-MRE2 with a linear DA configured for the Shear. The Run output would stick on if a Tail-Out occurred during the acceleration before the Shear Press turned ON. Tolerance Mode was set to Cut and Stop.

New code was added in SCN 4435 (released in V4.72.00) to handshake the shear operation with a PLC. It was preventing the Shear Press cycle from starting if the Run Mode was Halted. The code entered a loop that requires the press cycle to be active and to complete in order to exit. The press cycle was requested and assumed to have started but this new feature mistakenly prevented it and then the shear task was stuck in the loop with no way out. Since it was stuck, the Run Task was waiting forever for it to finish up and that is why the Run output remained on.

As a safety measure, code was added to this loop to give it a way out if the press is not active and the Run Mode halts. It should never happen but it is there just in case some other bug, present or future, creates the same condition.

The actual bug in the code exists in the Open Loop as well. It is unknown what its symptoms might be if encountered.

Through our MODBUS PLC integration feature, the ability for a PLC to initiate Quality Audit Triggers has been added.

The PLC must be configured as documented in our XL200 PLC Interface document. The PLC must know the Custom List ID (Return Value) of the Quality Audit that it wishes to trigger. It must then follow the sequence outlined in the XL200 PLC Interface document to use that ID to trigger the Quality Audit.

The Text Entry Custom List records were not properly validating the length of the text string entry.

The length of the text string entry is not supposed to exceed the maximum number of characters specified in Eclipse. Entering more characters than allowed was not generating an error as it should.

When validating against a user field, the entered text string must match the user field.

When not validating against a user field, the text string must be less than or equal to the maximum number of characters specified in the Custom List Record.

A customer pointed out a missing option when unloading a coil. When we see a Tail-Out input it can be for one of four reasons.

  1. The coil was removed because there are no more orders for it.
  2. It was completely used up.
  3. It was just backed out temporarily
  4. The remaining coil is un-usable and must be scrapped out.

We had options to handle 1-3 but we were missing a way to report option 4.

The unload coil screen now has a button for "Remaining Coil is Scrap". It becomes enabled if the Eclipse UART version is 3.59 or higher. Otherwise it is disabled because the customers version of Eclipse is not able to support the new feature.

If enabled, pressing the button opens a new dialog window that shows the user the coil number and the total footage used on the coil. It also has prompts to allow a scrap code to be entered and the remaining footage to be entered. If the customer has configured Eclipse properly with the initial footage of the coil and they are using Coil Validation, the controller will be able to calculate and pre-populate the remaining footage of the coil. If the initial footage was not provided or the controller calculates there is negative footage remaining it will pre-populate zero instead.

The dialog window has a "Scrap the Coil" button and a "Cancel" button.

Pressing the "Scrap the Coil" button reports the remainder as scrap using the footage and scrap code provided by the operator.

Pressing the "Cancel" button returns back to the original Unload Current Coil window.

A customer complained that the Die Reference mode was moving the die forward no matter what the state of the home sensor. In their case an important clue was that the die position was a large negative number, -21480.860".

A code review of the die reference function revealed the problem. The forward target was 1000.0" and the reverse target was -1000.0". Both of those targets would have resulted in a forward die motion when compared to the current die position.

The code was modified to prevent this condition by calculating the forward and reverse targets using the current die position.

The instance of the task error that is being fixed occurred on a V5 XL200CL and can only occur on the V5 XL200CL. However, the fix impacts all Models, V4, V5 Open and Closed Loop.

The Error is caused when a new timer interrupt has occurred without the prior timer interrupt receiving its return cyclical data from the DSP/ARM. The error was only possible on the CL because the CL is the only project that allows tasks to run between sending cyclical data and receiving it.

There was one command, receiving 16bits of data, that ran outside of the cyclical interrupts. That command was executing with interrupts disabled when the system info screen was displayed or when Eclipse initiated the ‘vE’ command. Just by luck it was sometimes receiving the Word that the ARM sends to initiate the IRQ for the return cyclical data. Reading this data cleared the interrupt.

Interrupts were Off when the ARM filled in its word so the 386 did not see the IRQ. The 386 requested its word but got the word the ARM already had put there. When that word was read the IRQ got cleared and the 386 never saw it, leaving the word the 386 asked for behind. On the V5, all of the ARM communication needs to be in the cyclical interrupts or his can happen. The fix impacts common software for all Models of Closed Loop and Open Loop.

Added four new setups to the list of settings controlled by Eclipse.

The Setups are:

  1. Auto Delete Done Orders After
  2. Show User Data - Program Screen
  3. Show User Data - Status Screen
  4. Stagger Panel Field
  5. Set Done Items to Ready

SCN 3970 provides more specific details on Settings of this type.

We had a bug report that the controller was displaying a Missed Shear Target error when it actually should have displayed a Missed Punch Target error. It caused considerable confusion in this particular instance until someone with more experience looked at the customers punch pattern. They had two punch targets too close together. Better error reporting may have saved some time.

The following change is being made to eliminate this issue in the future.

A single function, requiring the press Id will now be used to display this error. This function will check to see if the press Id is zero and if there are gags defined. If there are any gags defined the function will display a Missed Target Error and will display which press has the missed target error. If there are no gags and the press is press 0 a Missed Shear Target error will be displayed.

This change will result in the user always knowing which press to look at when investigating these errors. By still displaying the Missed Shear Target error when we know for sure it is a shear, we minimize the disruption that these sorts of changes sometimes cause.

In order to support data entry for EU countries that use characters in the extended ASCII range the following changes were made to the Virtual Keyboard in the XL.

  1. The Back key was moved to its traditional location next to the += key. In its place an AltGr key was added. EU keyboards use this key to switch between the traditional standard (Latin) characters and the extended characters used in their languages.
  2. When Russian is selected, the Radio buttons, Russian and English are still present for backwards usability. However, for all other languages they are replaced with buttons with the text Standard and Extended.
  3. Both the Radio Buttons and the AltGr button will switch back and forth between the Standard and Extended character sets.
  4. To avoid creating a new keyboard layout for each language, the EurKey Keyboard Layout is used when displaying the Extended character sets, with the exception of the Russian language. It uses the Windows 1521 keyboard layout.
  5. With the exception of Russian, we use the ASCII code page 1252 for our fonts. For any characters present on the EurKey layout but not in the 1252 code page font, the standard Latin character is displayed instead. There were a small handful of symbols that fell into this category.

The error message "No material code programmed" displayed on a Multi-Axis machine even though the Order had a material code. After investigating, it was discovered that it was the coil that had no material. It checks the coil material because the material may have been overriden or substituted. We need to use the material properties of the actual coil not what the order calls for when settting up Axes for the machine. What it does is correct but the error message was incomplete and did not direct the user to check the coil material.

If Coil Inventory is turned OFF, the original error message is displayed.

If Coil Inventory is ON a new error message is displayed that directs the user to look at both the Order and Coil material. The reason for this is that the coil material some times getes set based on the Order material.

There were a couple of issues with DIP switch 17 to enable the second line encoder on some of the Closed Loop models.

  1. The SGF, MRE2, HMRE2, and MDA2 models would always report a Memory Configuration Data has changed. Memory will be cleared error when DIP switch 17 was present.

  2. The MDA2 would report DIP Switch 17 as an Invalid DIP Switch setting.

On the hardware Issue 1 hid issue 2. On the PC simulation issue 2 was present due to differences in how the PC simulation starts vs the Hardware.

Each axis in a Multi Axis controller has a Minimum and Maximum Position setting that limits the Axis Position command. For an axis on the negative side of the machine it is easy to mix up what is the maximum value and what is the minimum value. For example -10.000" can look larger than -0.001". Entering the values into the wrong field results in axes seemingly reporting erroneous Position Limit failures.

To prevent this issue the two fields will be checked. If the Maximum Position is less than the Minimum Position, every time the user attempts to leave the configuration screen an error will be displayed until it is resolved.

Re-Factored the Multi-Axis Axis Configuration screens to eliminate duplicate code and to make creating new Axis drivers easier in the future. There should be no detectable differences to the user.