4.80.0
11/30/2021
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 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.
- The main controller display window is closed with the windows close, X, button.
- The debug window is closed with the windows close, X, button.
- 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.
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.
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.
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.
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.
- The coil was removed because there are no more orders for it.
- It was completely used up.
- It was just backed out temporarily
- 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.
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:
- Auto Delete Done Orders After
- Show User Data - Program Screen
- Show User Data - Status Screen
- Stagger Panel Field
- 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.
- 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.
- 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.
- Both the Radio Buttons and the AltGr button will switch back and forth between the Standard and Extended character sets.
- 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.
- 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.