ReleaseNotes:Feature Review December 2021

From Planimate Knowledge Base
Revision as of 17:08, 31 May 2022 by Rick (talk | contribs)
Jump to navigation Jump to search

Planimate combines a powerful and fast simulator with a development framework that delivers reliable and comprehensive applications that are in use every day world-wide. The last two years have seen focus on major initiatives for Planimate.

This summary covers Planimate enhancements in 2020 and 2021, over versions 10.13.1 to 12.26.10. It includes major developments. Many minor improvements are documnented in the release notes.

UNICODE Support

Planimate supports the use of Unicode (multi byte) characters in virtually every aspect of a model including labels, paint, text data and even the names of attributes and tables. This makes Planimate a great choice where models need to support languages world-wide.

File/data operations now enable the developer to control when ASCII or UNICODE are used, important for data interchange. 

New Licensing System

InterDynamics has implemented a new licensing system which Planimate supports both for its own use and for use in applications developed with Planimate. A new web portal enables you to manage your licenses. The licensing system is very flexible and available as a service in its own right. Contact InterDynamics for details. Previous versions of Planimate use a “KEY” file.This has been replaced. When you upgrade to a newer version of Planimate, you will receive a new license for it.

Planimate and dotNET

Planimate is a dotNET application with the core engine and UI being C++ and Win32. This enables it to deeply integrate with dotNET code including embedding of dotNET controls (eg: LiveCharts graphs) into models. There's a mature and straightforward interface between Plamimate's fast Table, Attribute and Label List data structures (optimised for simulation) to dotNET managed data suitable for two way interfaces to databases, complex JSON data providers, ODBC sources and web APIs such as real time routing. The core interface is called PLCLR and it provides flexible data conversion to c# types and the ability to browse and use c# class properties and methods from Planimate routine code. An open source c# library, PLEngine enables sophisticated interaction between c# modules and Planimate including interfaces to control the simulator, process data, provide value conversion and access UI features such as fonts and colors. For example, changes made to Planimate Tables can trigger updates in c# code so dotNET graphs automatically update to relfect changes in data or table column structure.

Planimate LITE

A no-license version of Planimate is available for users who are interested in exploring or teaching simulation. It has no runtime requirements and operates as a "portable" application (no install or admin access needed). It has minimal requirements and impact on the system it runs on. This makes Planimate LITE ideal for use in educational environments.


Major UI & Graphics Changes

  • A new Time menu now holds options related to simulation time and animation speed.
  • New models start with a clock view. Right click it to edit or delete it.
  • An Explicit "Relative Times or Calendar Dates" option helps beginners make the distinction.
  • The Sidebar contains new "Modules" list. Modellers can add modules to the Modules folder in their Planimate. A couple of beginner focussed stat viewers use new capabilities to run just the module so they can configure themselves when you drag them onto your model.
  • Area and Line graphs handle huge data sets faster and display such that peaks and throughs in the data are not lost no matter how much data is being viewed.
  • High quality panel image export (good for graphs) where the image is generated and saved at 2 or 4 times the resolution that it appears in a window.

Modelling

Conveyor

A new Conveyor object handles a number of conveyor types and options, with variable item length, the option of packing when blocked, multiple conveyor interlocking, parameterised control including speed

Delay (previously called MultiServer)

Delays can be paused/resumed using a Run Control attribute and support a new "Stopped" State.

Splitter

You can control when the original item leaves, before or after the split items, even if they are the same class. This is very useful when that item is a message as it ensures the message completes only after the other items have been produced, avoiding manual interlocking.

Entry

The item count can now be dynamically changed, it can reference an attribute.

Switch

You can have "additional dependencies" explicitly specified so the switch knows to triggered when data indirectly related to the control condition changes. for example data processed in a routine just before a blocking switch. In the past, "tickle" attributes had to be toggled to force a switch to re-test.

PickUp and DropOff

New options to let a carrier item in only if its not blocked from leaving, and to auto-create a carrier once a threshold of items to pick up are present. These further increase the capability these objects offer when it comes to collecting items for common movement and for implementing wait-until logic that does not require messing around with attributes and blocking switches. Similar to a splitter, for a DropOff you can now control whether the carrier leaves before or after carried items have all exitted.

Dynamic Flow Path Support

Routine operations CopyPortal() and RemovePortal() also copy immediately adjanced flow steps, enabling a model to restructure itself (eg: add a server) whilst retaining the use of simple zero-time flow path connections between the objects.

Easy Localised Broadcasting

Routine operation BroadcastLocal() sends a broadcast scoped to the panel the routine is on, with a wait for the broadcast to complete, useful for localised procesing (eg:UI handling).

ISO Dates and UTC Time

Planimate can read and write date times in ISO-8601 format with the option to use UTC or a local timezone offset. You have access to the sy6tem timezone and can set the timezone a given model should assume dynamically.

3D Model

With some new scaling capabilities, a running 3D visualisation of a mine was developed featuring the ability to zoom and rotate the view in 3D whilst items animated on it. This was implemented using a module.

Module Initialisation

Planimate supports running only part of a model which is used when pasting modules as it enables them to perform initialisation/configuration code even if the rest of the model is in development and not in a runnable state.

Relative References

Have reduced the need for object labels for portals by enabling "s.OwningPortalr" in many cases. This enables a relative reference in the model instead of required an object label to be created. You can use s.OwningPortal.Owner.Owner (etC) to reference higher levels in the model's hierarchy. This is useful in a distribution network model when lower level handler code at a location want to determine the actual location. It keeps the lower level code generic.

Table Reference Using Data OBject Label

In many routine operations requiring a table to be referenced, a data object label can be used, making the code generic rather than fixed to a table or having to use Dynamic table references.

Misc

  • When paused, context clicking objects with capacity lists the items in them.
  • Names (objects, attributes, tables, columns, labels) can be longer and include unicode.
  • You can select a group of objects and copy/paste them between instances of Planimate, this also carries across flows.
  • You can receive informative change broadcast when items enter/leave or other changes occue within objects with capacity. These are used by the new StatViewer modules.
  • New defaults for models: a predefined "_general" item includes all attributes included by Planimate broadcasts (you can add these to any item) which is useful for getting started quickly or as a UI handler.
  • An inbuilt System broadcast "_Button_Clicked" is availble to modellers to use with buttons.
  • You can reindex object and paint label lists in the UI. References are updated where they are associated with the list.
  • New Icon commands (preceed an icon name) to flip and create sized icons on the fly.
  • The text in paint buttons can be fine aligned with settable offsets. This is useful bor buttons containing symbols now available using unicode.