ReleaseNotes:Feature Review December 2021: Difference between revisions

From Planimate Knowledge Base
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.
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.
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.  
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.
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.
Line 6: Line 9:
== UNICODE Support ==
== 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.
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.  
File/data operations now enable the developer to control when ASCII or UNICODE are used, important for data interchange.


== New Licensing System ==
== New Licensing System ==
Line 22: Line 25:
This makes Planimate LITE ideal for use in educational environments.
This makes Planimate LITE ideal for use in educational environments.


== Modules ==
Planimate’s ability to use drop-in modules has been completely revamped.
Modules are basically Portals with self contained model code which provide useful services to a model. The sidebar includes a new Modules palette. You can drag-and-drop from the modules listed into your model.
Planimate includes a couple of modules, an object statistics display (useful for training with Queues and Delays) and a simple graphing module. Both are open source and implemented using Planimate flows and routines.
You can add modules to the Modules sub-directory in the directory containing the Planimate executable.
New features that benefit modules:
* Planimate is able to run just a subsection of a model even though other parts of the model are not in a ready to run state because they are still being developed. Modules can use this to provide helpful UIs to configure themselves.
* A new default item class “_general” which contains attributes for all Planimate generated broadcasts. Useful for UI and event handling as distinct to the core modelling.
* A predefined “_Button Clicked” broadcast so you don’t need to create one.
* The ability to use “relative” references to owning portals using s.OwningPortal and to work up the hierarchy using s.OwningPortal.Owner, avoiding the need to have object labels to “target” the Portal.
* A new “BroadcastLocal()” routine that sends a broadcast scoped to the Code object containing the routine, and waits for it to complete before the item continues. Great for UI update operations.


== Major UI & Graphics Changes ==
== Major UI & Graphics Changes ==
Line 27: Line 42:
* New models start with a clock view. Right click it to edit or delete it.
* 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.
* 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.
* 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.
* 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.


Line 55: Line 67:
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.
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 ===
=== ISO Dates and UTC Time Support ===
 
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.
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.
You have access to the sy6tem timezone and can set the timezone a given model should assume dynamically.
Line 65: Line 73:
=== 3D Model ===
=== 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.
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 ===
=== Table Reference Using Data OBject Label ===
Table 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.


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 ===
=== Misc ===
* When paused, context clicking objects with capacity lists the items in them.
* When paused, context clicking objects with capacity lists the items in them.
* Names (objects, attributes, tables, columns, labels) can be longer and include unicode.
* 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 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.
* 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 module.
* 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.
* 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.
* 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.
* The text in paint buttons can be fine aligned with settable offsets. This is useful bor buttons containing symbols now available using unicode.

Revision as of 20:09, 31 May 2022

This buffer is for text that is not saved, and for Lisp evaluation.
To create a file, visit it with C-x C-f and enter text in its buffer.

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.


Modules

Planimate’s ability to use drop-in modules has been completely revamped. Modules are basically Portals with self contained model code which provide useful services to a model. The sidebar includes a new Modules palette. You can drag-and-drop from the modules listed into your model. Planimate includes a couple of modules, an object statistics display (useful for training with Queues and Delays) and a simple graphing module. Both are open source and implemented using Planimate flows and routines. You can add modules to the Modules sub-directory in the directory containing the Planimate executable. New features that benefit modules:

  • Planimate is able to run just a subsection of a model even though other parts of the model are not in a ready to run state because they are still being developed. Modules can use this to provide helpful UIs to configure themselves.
  • A new default item class “_general” which contains attributes for all Planimate generated broadcasts. Useful for UI and event handling as distinct to the core modelling.
  • A predefined “_Button Clicked” broadcast so you don’t need to create one.
  • The ability to use “relative” references to owning portals using s.OwningPortal and to work up the hierarchy using s.OwningPortal.Owner, avoiding the need to have object labels to “target” the Portal.
  • A new “BroadcastLocal()” routine that sends a broadcast scoped to the Code object containing the routine, and waits for it to complete before the item continues. Great for UI update operations.

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.
  • 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.

ISO Dates and UTC Time Support

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.

Table Reference Using Data OBject Label

Table 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 module.
  • 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.