FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
UPDATE (January 22, 2021): FloWorks 20.0.5 is now available. Except for critical bug fixes, this is likely to be the final bug fix release for FloWorks 2020. Please consider upgrading to FlexSim & FloWorks 2021. UPDATE (December 23, 2020): FloWorks 20.0.4 is now available. UPDATE (June 15, 2020): FloWorks 20.1.2 is now available. UPDATE (February 4, 2020): FloWorks 20.0.1 is now available. FloWorks 20.0.0 is now available (16 December 2019). This version of FloWorks is intended for use with FlexSim 2020. If you are using FloWorks with FlexSim 2019 LTS, please use FloWorks version 19.0.8. If you are using FlexSim 2019 Update 2, please use FloWorks version 19.2.2. All versions can be found in the Downloads section of your FlexSim account on the 3rd party modules tab. Please do not hesitate to report any bugs, usability improvements and feature requests to [email protected]. About FloWorks FloWorks is a 3rd party module developed and maintained by Talumis BV ( talumis.com). It provides faster and more accurate modelling and calculation of fluid systems than the default FlexSim fluid library. It is especially useful within the oil, gas, and bulk industry both for production and supply chain optimization. This module requires a FloWorks license with active maintenance. For any questions, please email [email protected]. Release notes FloWorks 20.1.3 (20 August 2020) All bug fixes included in FloWorks 20.0.2 below. FloWorks 20.1.2 (15 June 2020) Bug fix: Fixed exception in release of Flow To Item. Bug fix: Removed internal output to console. Bug fix: Removed redundant license check in old solver. FloWorks 20.1.1 (23 April 2020) Bug fix: Update script for FloWorks Custom Action activities. Bug fix / improvement: Library grid updated. FloWorks 20.1.0 (17 April 2020) Release for FlexSim 2020 Update 1. FloWorks 20.0.5 Bug fix: All products shown as black in some cases where product color table was broken. Bug fix: Items would sometimes not exit from previously blocked Item To Flow. Bug fix: Network solver gave incorrect result in some models using output ratios. FloWorks 20.0.4 Bug fix: Flow conveyor sometimes lags because of unnecessarily many content blocks. Bug fix: Removed redundant license check in model limit panel. Backwards Compatibility Note: The following change may change the way updated models behave. Bug fix: Several issues in the network flow calculation resolved. Bug fix: Flow pipe passes name instead of product ID in first On Product Out Change after reset. FloWorks 20.0.3 (02 September 2020) Bug fix: Input / output triggers were sometimes scheduled at infinity. FloWorks 20.0.2 (20 August 2020) Bug fix: Set content activity uses FlowTank in code header. Added "Max. content" option to picklist. Bug fix: Process Flow activity did not correctly set relative output trigger amount. Bug fix: Flow item tank reset content at end of warmup. Bug fix: Adding Process Flow activity created module dependency. Bug fix: Documentation for flow processor updated. Bug fix: Update script for FloWorks Custom Action activities. Bug fix / improvement: Library grid updated. Bug fix: Fixed exception in release of Flow To Item. Bug fix: Removed internal output to console. Bug fix: Removed redundant license check in old solver. FloWorks 20.0.1 (04 February 2020) Bug fix: Fixed incorrect berth configurations. Bug fix: Removed popup during startup. Bug fix: MODE_RESTART_FALLING was sometimes incorrectly #define d the same as MODE_RESTART_RISING . Bug fix: Several bug fixes and improved stability for the new (beta) solver. Documentation: updated Tank trigger levels description. FloWorks 20.0.0 (13 December 2019) Feature: Added Process Flow activities for FloWorks. Feature: Added Process Flow templates for Basic Berth and Tank Pool. User request: Added option not to checkout FloWorks license. Bug fix: Removed inconsistent behavior after (de)activating license. Bug fix: Tank level trigger could cause event list to become unsorted. Bug fix: Max. Object Depth setting in FloWorks charts was ignored.
View full article
FlexSim 2018 Update 1 is available. If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space. Release Notes Added a Database Connector tool and Database FlexScript API. Updated the Emulation module and added it to the toolbox. Updated object triggers to be dynamically added and executed to improve performance and flexibility. Added an option to store StatisticsCollector bundle data on the hard drive. Added a global preference for date and time formats, which will default to the system's locale settings. Updated the stick() command to be able to get information about the VR headset by passing -1 for the stick number. Added a Box Plot chart type. Added a visual Walls object, which can be connected to A* as a member. Added an option to reverse rows on a gantt chart. Updated how the gantt chart handles colors. Added a time window option to several charts. Improved axis title options on several charts. Added a y-axis range option to the time plot. Output, system, and compiler consoles now wrap lines. Added a binoculars button to the bottom of properties windows. Fixed a bug with using local variable "a" within FlexScript lambda commands, such as findmatch(). Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Removed FlowNode, Reservoir, WatchList, and other unused library class objects. Changed transportincomplete() to be more fail-safe so that it only affects the object when called correctly. Fixed an issue with the Rack sometimes receiving items out of order when the upstream object is using a transport. Process Flow Added a Variable shared asset. Updated the Event-Triggered Source and Wait for Event activities to be able to match values. People Added a Waiting Line object and a Wait in Line activity. AGV Fixed a bug with preempting an AGV during a pre-arrival event. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Improved AGV proximity detection for stop-space-based accumulation. Fixed an issue with reversing direction on accumulating paths. A* Added a routing mode for traveling at right angles only. Added an option for stopping and turning when changing directions. Added an option for routing by travel time. Improved the usability of creating and editing barriers and dividers. Added an option for snapping dividers between grid points. Fixed some visual issues with various components. Fixed a bug with distancetotravel(). Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Improved the accuracy of the calculation of which grid points are affected by dividers. The mechanism for recovering from deadlock has been changed. The path costing system was slightly changed to allow for travel-time-based routing.
View full article
FlexSim 2017 Update 1 is available. If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space. Release Notes Changed FlexSim to store strings using UTF-8 encoding. Added support for Oculus Touch controllers. Implemented OpenVR for HTC Vive compatibility. Improved the shadow frustum calculation in VR so that shadows look better. Added a global preference for changing the resolution of the shadow map. Added support for nested queries in SQL. Added ROW_NUMBER as a SQL keyword. Implemented F2 and Esc functionality in tables. Updated the table view and labels tab to be more robust with different datatypes. Added Table(name) method for referencing Global Tables. Added more FlexScript classes, including List, AGV, Conveyor, and TrackedVariable. Added more properties and methods to existing FlexScript classes, including Object stats and additional string methods. Improved scientific notation for literals in FlexScript. Added a start value to tracked variables. All tracked variables in the model now reset on model reset. Changed itemtype references to referencing an item's type label instead. Improved the Person flowitem's 3D shape. Added repeating events to time tables. Added a short description field to user commands. Made the gantt charts and time charts scroll with a fixed time window. Removed the global table Clear on Reset checkbox and replaced it with a reset trigger. Added new visualization options for the Rack. Added duplicate buttons to the Excel Interface window. Added a duplicate option to the Toolbox's context menu. Taskbar now shows experimenter/optimizer status and runtime based upon stop time. Disabled deleting objects while the model is running. Fixed an issue with the undo history when pasting over nodes with pointer data. Fixed issues with using the ternary operator after properties. Fixed an issue with writing to Access databases with read-only fields. Included fixes listed in 17.0.4. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Removed the FlexSim WebServer application from the default installation and developed a new WebServer application using Node.js that streams the 3D view much faster. The new WebServer can be downloaded through FlexSim's Online Content. Existing models will continue to work with itemtype, but new models should be built using a type label instead of the itemtype attribute and commands. Process Flow Added an Assign Released Resource(s) To field on the Release Resource activity. Added functionality to allow you to Ctrl+Drag activities in an activity block. Added a right-click menu option and Alt+Click to open the Token View. Added a sampler to the assign labels Label Name field so you can sample other activities or tokens to get label names. Added a right-click menu option to open multiple views of a Process Flow. Added an Assign To property to the Create Tokens activity. Added a Make Array label aggregation type to the Batch. Added Center in View buttons for fields with pointer data. Added a name property to the Token FlexScript class. Fixed a bug with duplicating Process Flows using the Toolbox. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Updated the Pull From List activity so it does not assign a null label when nothing was pulled or the token was released early (manually). Previously, if you used a Max Wait Timer or Max Idle Timer (or some other mechanism) to release a token from a Pull from List prematurely, the label specified in the Assign To field would be created with a value of NULL. Now, the label will not be created. This may break other models that are checking to see if the label value exists. For example, saying objectexists(token.pulled) will throw an exception if the pulled label is never created. This can be easily remedied by changing the code to objectexists(token.pulled?). The ? will cause the value returned to be nullvar when the pulled label does not exist. Universal Edit fields are now more strict when accessing labels on a token. Previously, typing token.labelThatDoesNotExist would happily return NULL and move on. Now the Universal Edit will throw an exception if the label doesn't exist. This does not include Universal Edit fields that assert labels, for example the Assign To fields.
View full article
I created this custom visual tool because I had a situation where we needed to see the progress of activites in the 3D View. I basically just change the size of a plane based on the completion level and calculate a percentage. Model is attached and contains some explanations. Enjoy, Custom visual tool.fsm
View full article
Railworks 24.0.1 is now available (02 April 2024). This version of RailWorks is intended for use with FlexSim 2024. Railworks 2023.0 will become LTS, for any use cases with updated bug fixes use the latest 23.0 version available. If you are using RailWorks with FlexSim 2023 (LTS), please use RailWorks version 23.0.6 (LTS). If you are using RailWorks with FlexSim 2023 Update 2, please use RailWorks version 23.2.3. All versions can be found in the Downloads section of your FlexSim account on the 3rd party modules tab. Please do not hesitate to report any bugs, usability improvements and feature requests to [email protected]. Signal: New feature in railworks This new feature adds a 3D object called Signalized Rail, a track with signals that can control train traffic with precise speed changes, sight and safety distances for rail reservations and signal advances. You can configure signal aspects, sight distance and train safety distance with just this object.For more information read 3Dobjects. Importance of the Signal A signal in a railroad system is a way of controlling train traffic speeds, ensuring safety and maximizing the flow. There are different types of signals for different cases and countries, the most common being speed control signals on sections to prevent train collisions. These signals change their appearance in order to indicate a reduction in speed, and can have different aspects for different speed changes. This type of sign is the new railworks feature. About Railworks The FlexSim Brazil RailWorks module consists of premade custom objects, designed to represent a real environment for the Rail problem modeling, with less configuration. Our approach is to unite 3D modeling with the Process Flow functionality, allowing object configuration and visualization through the native 3D FlexSim solution, and the rail system events to be triggered by the Process Flow, using not only defaults FlexSim Process Flow activities, but also new ones developed by our team. Release Notes View the full release notes in the online documentation. RailWorks 24.0.1 (02 April 2024) Bug-Fixes All bug fixes in RailWorks 23.2.3 below. Features New object:Introducing signalized rails - tracks equipped with signs at their ends for improved traffic control and safety at critical network points. Learn more about signaled rails and practice using them on the 3D objects page. Feature:Take control of your rail network with the new rail signaling control feature. Configure aspect signals, customize their colors, set speed correspondences, and define safety or sighting distances for a more realistic train operation experience. Feature: New picklist options to set destination in MoveTrain and MoveWagon activities. RailWorks 23.2.3 (18 March 2024) Bug-Fixes All bug fixes in RailWorks 23.0.6 below. MoveWagon Label Control Improvements: Enhanced the user interface for the MoveWagon label control. OnPass Speed Alteration Fix: Compositions with wagons attached change speeds correctly and consistently. AssingTo labels on MoveWagon Fix: The creation of a new label works with individual wagons on MoveWagon. RailWorks 23.0.6 (18 March 2024) Bug-Fixes Consistent Parked Wagons Positioning: Wagons now position themselves alongside other wagons more consistently. Rail Reservation Logic Optimized: Improved logic for rail reservation to ensure smooth operation. Refined Rail Control Point Triggers: More precise behavior for RailControlPoint's onPass, onContinue, and onArrival triggers. Smoother Undo Functionality: Improved responsiveness and reliability of the undo function (Ctrl+Z). Automatic Brakes Optimized: Automatic brakes now stop on the correct rail for better train control. Wagon Creation Streamlined: Wagon creation now adapts its position automatically when placed on multiple rails. Copy & Paste Errors Resolved:Fixed exceptions that occurred during copy and paste operations. Train Creation Collisions Addressed: Inconsistent collisions during train creation have been eliminated. Enhanced Locomotive Interaction: Improved interaction between compartments and leading locomotives for more realistic behavior. Departure Rail Control Point Fix: Fixed an issue where moving a wagon wouldn't release the departure Rail Control Point. Automatic Braking Refined: Improved automatic braking for scenarios with low acceleration and high speeds. Multiple Rail Braking Enhanced: Resolved issues with braking zones spanning multiple rails. Limited Station Parking: Locomotives destined to a Station no longer allowed to enter while occupied. Better Composition Positioning on Curved Rails: Movement on CurvedRails is now smoother. Added Locomotive and Wagon icons to FlowItemBin. Modelling fixes: Preventive fixes to improve modelling experience. Performance Enhancements Faster Rail Connections: Optimized rail automatic connection for improved performance. MoveWagon Streamlined: Object selection offers more consistent behavior when detaching wagons from larger compositions. Streamlined ConnectPoint Creation: Made changes to ConnectPoint creation for better performance. Optimized Pathfinding: Enhanced path discovery algorithms to improve overall performance. Status Window Consolidation: Review and behavior correction of status bubble on flowitems and task executers.
View full article
This article lists off application models of Games and VR: Games, VR and Visualizations
View full article
FlexSim 2026 Beta is now available.   FlexSim 26.0.0 Release Notes   To get the beta, log in to your account at https://account.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list.   The More Versions button does not appear when logged in as a guest account. The beta is available only to licensed accounts and accounts that have a license shared with them. Learn more about downloading the best version of FlexSim for your license here. If you have bug reports or other feedback on the software, please create a new post in FlexSim Forums.
View full article
En este video van a aprender cómo establecer diferentes tasas de llegadas según la hora del día utilizando el objeto Source. Para más videos tutoriales pueden acceder al canal de YouTube de FlexSim Andina y acceder a nuestra lista de reproducción de FlexTips.
View full article
FlexSim 2018 includes functionality for creating a custom table view GUI using a custom data source from within FlexSim. This article will go through the specifics of how to set this up. The Callbacks Custom Table Data Source defines callbacks for how many rows and columns a table should display, what text to display in each of the cells, if they're read only etc. If you require further control of your table you can use a DLL or module and sub class the table view data source in C++. An example of how this data source is used can be seen in the Date Time Source activity properties. In the above table, the data being used to display both of these tables is exactly the same. The raw treenode table data can be seen on the right. The table on the left is displaying the hours and minutes for each start and end time rather than the the start time and duration in seconds. In FlexSim 2018, there are a number of tables that currently utilize this new data source. They can be found at: VIEW:/modules/ProcessFlow/windows/DateTimeArrivals/Table/Table VIEW:/pages/statistics/ChartTemplateProperties/tabcontrol>variables/tabs/StatePieOptions/SplitterPane/States/Table VIEW:/pages/statistics/ChartTemplateProperties/tabcontrol>variables/tabs/CompositeStatePieOptions/SplitterPane/States/Table VIEW:/pages/statistics/ChartTemplateProperties/tabcontrol>variables/tabs/StateBarOptions/SplitterPane/States/Table Copying one of these tables can be a good starting point for defining your own table. The first thing you have to do in order for FlexSim to recognize that your table is using a custom data source is to add a subnode to the style attribute of your table GUI. The node's name must be FS_CUSTOM_TABLE_VIEW_DATA_SOURCE with a string value of Callbacks. Set your viewfocus attribute to be the path to your data. This may just be a variable within your table. It's up to you to define what data will be displayed. If you want to have the default functionality of the Global Table View, you can use the guifocusclass attribute to reference the TableView class. This gives you features like right click menus, support for cells with pointer data (displays sampler), tracked variables (displays edit button) and FlexScript nodes (displays code edit button). If you're going to use this guiclass, be sure to reference the How To node (located directly above the TableView class in the tree) for which eventfunctions and variables you can or should define. At this point you're ready to add event functions to your table. There are only two required event functions. The others are optional and allow you to override the default functionality of the table view. If you choose not to implement the optional callback functions, the table view will perform its default behavior (whether that's displaying the cell's text value, setting a cell's value, etc). These event function nodes must be toggled as FlexScript. The following event functions are required: ---getNumRows--- This function must return the number of rows to display in the table. 0 is a valid return value. param(1) - View focus node ---getNumCols--- This function must return the number of columns to display in the table. 0 is a valid return value. param(1) - View focus node The following event functions are optional: ---shouldDrawRowHeaders--- If this returns 1, then the row headers will be drawn. The header row uses column 0 in the callback functions. param(1) - View focus node ---shouldDrawColHeaders--- If this returns 1, then the column headers will be drawn. The header column uses row 0 in the callback functions. param(1) - View focus node ---shouldGetCellNode--- Allows you to decide whether you want to override the table view's default functionality of getting the cell node. param(1) - The row number of the displayed table param(2) - The column number of the displayed table If shouldGetCellNode returns 1 then the following function will be called: ---getCellNode--- Return the node associated with the row and column of the table. param(1) - The row number of the displayed table param(2) - The column number of the displayed table ---shouldSetCellValue--- Allows you to decide whether you want to override the table view's default functionality of setting a cell's value. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table If shouldSetCellValue returns 1 then the following function will be called: ---setCellValue--- Here you can set your data based upon the value entered by the user. param(1) - The row number of the displayed table param(2) - The column number of the displayed table param(3) - The value to set the cell ---isCustomFormat--- Allows you to decide whether you should define a custom text format for the cell. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table If isCustomFormat returns 1 then the following functions will be called: ---getTextColor--- Return an array of RGB components that will define the color of the text. Each component should be a number between 0 and 255. [R, G, B] for example red is [255, 0, 0]. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table param(4) - The text to be displayed in the cell param(5) - The desired number precision ---getTextFormat--- Return 0 for left align, 1 for center align and 2 for right align. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table param(4) - The text to be displayed in the cell param(5) - The desired number precision ---shouldGetCellColor--- Allows you to decide whether you should define a color for the cell's background. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table If shouldGetCellColor returns 1 then the following function will be called: ---getCellColor--- Return an array of RGB components that will define the cell's background color. Each component should be a number between 0 and 255. [R, G, B] for example red is [255, 0, 0]. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table ---shouldGetCellText--- Allows you to decide whether you want to override the table view's default functionality of getting a cell's text. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table If shouldGetCellText returns 1 then the following function will be called: ---getCellText--- Return a string that is the text to display in the cell. param(1) - The cell node as defined by getCellNode param(2) - The row number of the displayed table param(3) - The column number of the displayed table param(4) - The desired number precision param(5) - 1 if the cell is being edited, 0 otherwise ---shouldGetTooltip--- Allows you to decide whether a tooltip should be displayed when the user selects a cell in the table. param(1) - The cell node as defined by getCellNode param(2) - The row number of the selected cell param(3) - The column number of the selected cell If shouldGetTooltip returns 1 then the following function will be called: ---getTooltip--- Return a string that is the text to display in the tooltip. param(1) - The cell node as defined by getCellNode param(2) - The row number of the selected cell param(3) - The column number of the selected cell ---isReadOnly--- Return a 1 to make the cell read only. Return a 0 to allow the user to edit the cell. param(1) - The row number of the displayed table param(2) - The column number of the displayed table
View full article
FlexSim 2020 Beta is available. (Updated 26 November 2019.) To get the beta, log in to your account at www.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space. Release Notes Changed models to automatically open the environment in which they were saved. Added boy and girl shapes to people visuals. Improved keyboard interactions within table views. Improved tabbing between fields in certain windows. Updated the 3D names and stats text rendering to support more fonts and Unicode. Improved the 3D view's lighting capabilities by adding Light objects that can be arranged in the model. Improved lighting in RTX Mode, including support for soft shadows and a denoiser. Adjusted the Rack Dimensions tab to be able to specify slot padding. Added an optional parameter to TaskSequence.create() for waiting until TaskSequence.finish(). Added an OnValuePulled event to the List. Added methods for creating a DateTime using a string or component parts. Added support for in-place addition and subtraction of DateTimes. Fixed bugs with DateTime methods when using certain years or ranges of time. Improved the convert() command's capabilities with converting dates and times. Improved the exporting of null bundle values to Excel. Added an excelcreateworkbook() command. Added statistics collectors and calculated tables to the Excel Export. Added an option for creating sheets using the Excel Export. Fixed rotation issues with pasting certain objects. Added a Vec3.projectRotation() method. Added a Vec2 FlexScript class. Changed the License Activation window to be responsive during licensing operations. Added an index type to statistics collector columns for improving performance. Added a categorical combo type to tracked variables. Updated the query builder to handle CASE statements. Simplified certain queries written by the query builder. Changed the tree structure to simplify creating custom webserver interfaces. Added a repeat type to animations for remaining in the last frame after running the animation. Added a Go To Row/Column option in quick properties for tables. Improved time plots to be able to show durations as well as calendar times. Added an optional wire mesh rack visualization. Added more picklist options to the storage object slot assignment strategy. Updated the animator so that keyframes are updated using a right-click menu option instead of automatically. Added an option to duplicate an animation keyframe into another animation. Changed the default network node speed limit to 0 (no speed limit). Reorganized the Use Transport pick list and added a No Transport Reference option. Fixed a bug with the rack's default pull requirement not reevaluating after becoming full. Fixed an issue with copy/pasting sub-locations. Fixed the dark patterns when zooming out in RTX Mode. Fixed a crash on certain hardware in RTX Mode when rendering too many transparent layers. Improved the Time Table Date Based GUI to draw past the last event and allow scrolling into the future. Added PushWheelchair and PushCart animations to Operators Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Time tables now combine consecutive down periods if using the same state and profile or the same down behavior. Fixed issues with pick/place offsets on drive in racks to improve usability with A*. Because of performance improvements to query(), the row order is not guaranteed unless using an ORDER BY statement. Fixed excelrangewrite() so that the correct overload is available in FlexScript. Improved the FlexScript hypertext preprocessor scoping mechanism used by the webserver. Fixed object color being applied incorrectly to ambient material color on certain meshes. Changed point source light attenuation. Changed TASKTYPE_NODEFUNCTION to pass variants in as parameters instead of interpreted legacy doubles. This fixes the types of arguments that are passed when calling treenode.evaluate() as part of a TASKTYPE_NODEFUNCTION task. This allows you to add TASKTYPE_NODEFUNCTION tasks with parameters that are not just numbers, (nodes, strings, arrays, etc.) and have those parameters be preserved in a type-safe manner and properly passed into the subsequent treenode.evaluate() call. However, this change may have some consequences for older models. The following guidelines apply: If you use the inserttask() command, and cast a node to a number with tonum() to pass it in as a task variable, then you should use parnode() to get those parameters out in the nodefunction. While this method will continue to work, this mechanism is nevertheless deprecated. The now-correct method for adding a TASKTYPE_NODEFUNCTION task to a task sequence is to use TaskSequence.addTask(). This method takes full Variants as its task variable parameters, so you do not need to use tonum(). When using this, you should use param() to get the parameters back out. Older models that use neither of these methods may need to be updated to use method 2 in order to work properly in this version. Process Flow Changed the default behavior of the Create Task Sequence activity to work easier with task sequences created outside of Process Flow. Added a Finish Task Sequence activity that works with the new Create Task Sequence features. Changed the default value of Task activities from token.resource to token.taskSequence. Improved the interface for connecting activities. Added a mechanism for connecting to and from containers and routing tokens between activities using those connections. Added an option to the Run Sub Flow activity to run tokens one at a time. Adjusted the size of containers and connections based on the zoom level when created. Removed the width attributes of themes. Improved the UI for entering times in the Date Time Source activity. Change Set Color By Case and Set Object Color pick options to enable setting the color of a token. Fixed the display of task parameters in the event log. People Improved people resource shared assets to be able to reference other people resources. Added Sort By and Filter By fields to people resources. Simplified and improved several activity sets. Improved the list of labels in drop-down menus to include People Settings labels. Added a Kiosk to the list of locations. Added an Observation Room multilocation. Added an option to the Toolbox to add all people tables to the Excel Export. Added more people tables and charts. Improved the performance of many existing people tables and charts. Updated preempted resources to be able to be reacquired with a higher priority. Updated Escort Patient and Tranpsort Patient activities to set the staff's TravelingWithPatient label when escorting or transporting a patient. Improved the query builder interface with support for adding group/individual subsets. Changed people acquire activities to have the default max wait timer trigger release the token out connector 2. Changed the Split activity default to creating child tokens in the Healthcare environment. Changed the repeat type of the LayDown and SitDown/SitDown2 animations to repeat the last frame. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed how labels are handled by People Settings. Improved animations and positioning of transports and equipment when staff move them. Emulation Added support for OPC UA connections.
View full article
This article lists off application models of Healthcare: Patient Flow Behavior, Facility and Resource Constraints, and Reference and Learning Models
View full article
Cycle time per process.fsm When we create simulation models, sometimes we limit ourselves to modeling a process or a part number, in which we have problems. But what happens when we run a complete production plan with different part numbers, which in turn run at different cycle times? This is a way that allows you to run different part numbers in as many different processes as you want, each with its own cycle time. What do we need? 1.- Label on each item that identifies what part number it is. For example • Label: IDpart Value: ABC12 2.-Label on each machine that identifies the process that it runs. For example • Label: Station Value: Processor1 3.- Global table that contains in the columns the different processes that you have in your production line and in the rows the different part numbers that can run in your line. The information contained in this table will refer to the cycle times of each part number in each process. For example: Processor1 Processor2 Processor3 ABC12 20 10 13 BAC21 11 30 20 4.-You must configure the processing time of your processor referring to your global table and placing the following: With this, we will obtain weighted usage statistics for the equipment. Benefits: 1. You can run different part numbers on the same line with their respective cycle time each. 2. More accurate use of equipment and operators. 3. Modifying cycle times in a global table is easier and more controlled than directly in the processes. 4. Calculation of the capacity of your line running a real production plan will be accurate. 5. You can add and remove processes or even modify the flow of your line without affecting the cycle time that processor runs. Since it is referenced by its label to the global table.
View full article
En este video aprenderán el uso del objeto Robot de FlexSim. Para más videos tutoriales pueden suscribirse al canal de YouTube de FlexSim Andina y acceder a nuestra lista de reproducción de FlexTips.
View full article
En este video aprenderán a utilizar la herramienta Time Table para establecer turnos de trabajo en un modelo de simulación. Para más videos tutoriales pueden suscribirse al canal de YouTube de FlexSim Andina y acceder a nuestra lista de reproducción de FlexTips.
View full article
The attached model contains an object process flow for a basicFR to sit between a regular conveyor and a Mass Flow. It looks at the interval between the discrete items leaving the regular conveyor and creates a new generative rate when it detects a change, allowing you to convert a stream of hundreds of items to singular events for the MFC as needed and capitalize on the advantages of MFCs. It's a simple process flow: To use just connect a BasicFR between the two conveyors and add it to the object process flow as a member instance. This is a proof of concept and does not currently handle accumulation across the interface, or aggregation from multiple discrete conveyors. MFC_RateMaker.fsm
View full article
Good practice to reduce variance when experimenting is to separate streams of things that might vary in the model so that the random sampling is independent. An example might be that you have a number of processors who are members of the same breakdown profile (MTBF/MTTR object) where the individual breakdowns are dependant on the state of the processor. If during one scenario a processor is used more than before then it may sample the duration and next breakdown earlier, and therefore change the sequence with the other machines sampling of breakdown times, increasing variance. This is because the default setting for the MTBF time fields are using 'getstream(current)' - which means a single stream for the MTBF object, shared across all members. You could try to change this in the MTBF by using 'getstream(involved)' where 'involved' refers to the breakdown member machine. This causes other problems since if you're sampling processing times using the machine's stream too, then the amount of items processed will again change the breakdown times samples. You may judge this to be acceptable, but in a ideal world you'd still want separate streams and may want multiple streams for setup, processing, breakdowns, or subsystem failures. One way to accomplish this is by changing the way getstream() works such that it can generate a stream for any value you pass to it. That might be an object, as the current getstream() accepts, or it could be the string name of the object or it's path. It could also be an array which then opens a number of possibilities: In a breakdown you could replace getstream(current) with getStream([current,involved])   //generates a unique stream number for the MTBF/machine pair* In an Object Process Flow you could replace getstream(activity) with: getStream([current,activity]) // generates a unique stream for the instance and activity pair and works for the general process flow too. For a processing time on a processor instead of getstream(current) you could use getstream([current,"Processing"]) and getstream([current,"Setup"]) to generate two seperate sampling streams. The attached library contains an auto-installing user command that overrides getstream() to provide this functionality. The stream values save with the model. getStream-byvariant3.fsl * This implementation does have some limitations since during an experiment it does not communicate back the master model when trying to create new streams. For this reason you'll want to try and have all possible streams set up before running an experiment or avoid the type of actions that dynamically create the requirement for new streams - so that might be keeping all possible fixed resources and task executers, and hiding/removing them from groups rather than destroying them as the OnSet options of the parameters table do currently. Alternatively if you consistently name the dynamically created instances then the MTBF stream expression could be: getStream([current, involved.name]) Update: I've edited this post and library to use getStream (capital 'S') since the override parameter (var thing) doesn't stay in place and eventually causes FlexScript build errors. So with the updated library you'll need to find/replace from the model tree 'getstream' with 'getStream'.
View full article
FloWorks 22.2.0 is now available (31 August 2022). This version of FloWorks is intended for use with FlexSim 2022 Update 2. If you are using FloWorks with FlexSim 2022 Update 1, please use FloWorks version 22.1.1. If you are using FlexSim 2022 (LTS) please use FloWorks version 22.0.2. All versions can be found in the Downloads section of your FlexSim account on the 3rd party modules tab. Please do not hesitate to report any bugs, usability improvements and feature requests to [email protected]. About FloWorks FloWorks is a 3rd party module developed and maintained by Talumis BV ( talumis.com). It provides faster and more accurate modelling and calculation of fluid systems than the default FlexSim fluid library. It is especially useful within the oil, gas, and bulk industry both for production and supply chain optimization. This module requires a FloWorks license with active maintenance. For any questions, please email [email protected]. Release notes FloWorks 22.2.0 New: Added a Flow Gauge object to measure and visualize the flow through a connection New: Added a Time Series object to the Toolbox as a source of daily, weekly or monthly changing values Improvement: Added several alternative shapes for Flow Source such as Plant and Well Improvement: Level Triggered Event now has an OnTriggerFired event that ProcessFlow can await Bug fix: Some additional issues with incorrect scaling when not using meters Bug fix: Flow tank level triggers issue with multiple levels (not) firing All bug fixes in FloWorks 22.0.2 below. Backwards Compatibility Note: The following change may change the way updated models behave. Flow Impact Event has been deprecated and may be removed in the future. Picklist options for applying impact factors have been added to FlexSim's own MTBF/MTTR and Timetable. As an improvement, the same picklist options are also available in Down Behaviors. FloWorks 22.1.1 All bug fixes in FloWorks 22.0.2 below. FloWorks 22.1.0 (12 May 2022) All bug fixes in FloWorks 22.0.1 below. FloWorks 22.0.2 Bug fix: FlowMixer.loadRecipe can handle re-ordered product tables Bug fix: Statistics are now correctly initialized for flow tanks created during run. FloWorks 22.0.1 (12 May 2022) Added support for Object Property Tables Bug fix: incorrect MassFlowConveyor content Bug fix: LoadingPoint issue with not-released positions (and status) Bug fix: Object created at incorrect scale when not using meters
View full article
FlexSim 2020 Update 1 is available. If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space. Release Notes Updated the Statistics Collector to be simpler and more user friendly. Added a PowerPoint FlexScript API. Added an HTTP FlexScript API. Added a sorting tab to various charts. Improved performance of chart templates. Replaced the code profiler with a new Performance Profiler. Added a Memory Profiler. Added OnEntry and OnExit events to TaskExecuter objects. Added an icon to library items that launch a pop-out library of choices. Reorganized the dashboard library using the pop-out library to consolidate charts with multiple visualizations. Updated the WebServer to use the Version Selector. Added a Find/Replace UI for global tables. Added support for Ctrl-F and Ctrl-H keyboard shortcuts for various windows. Added support for renaming objects using the F2 keyboard shortcut. Added a Vec3 overload to the Object.setRotation() method. Added a stop parameter to the userinput() command which will stop code execution until a value is entered. Added a default parameter to the realtime() command that returns realtime(1)+0.001*realtime(2). Updated various pickoptions to use the TaskSequence and TaskExecuter APIs. Added tutorials for the Statistics Collector. Added a Variant overload to the Table() constructor. Fixed some issues with the importtable() command. AGV Added new Train functionality. Added offset travel functionality to the AGV network. Added a time-based trailing option. Added the routing drawing feature to a right click option. Updated Quick Properties' apply to all selected objects functionality to work with AGV objects. Made arrows bigger. Fixed several spinners in Quick Properties not applying immediately. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed behavior for when a TaskExecuter is connected to an AGV network, and is set to use the navigator for its offset travel. Previously, the navigator was hard-coded to find the closest control point. Now, you instead need to add an OnAGVOffsetTravel trigger to the navigator, wherein you can direct the AGV how to offset. People Added clipboard, test tube, and pill bottle flow items. Added a Max Speed property to Equipment objects. Updated Transport and Equipment objects to do low priority returns. Added the ability to install instanced People flows. Updated the LocationStaytimeHistory chart to handle people entering and exiting transports inside a location. Process Flow Added an AGV travel activity. Updated the Sink to notify parent tokens on a Run Sub Flow activity that the child token finished the subflow. Updated the Wait for Event and Event-triggered Source activities to be able to display more than one link at a time. Updated the sampler for Universal Edit fields to display process flow variables and current labels when sampling white space. Added a pop-out library for choosing the shape of Container objects. Added a pop-out library for choosing the type of travel activity. A* Updated the Heat Map to use a Color Pallete.
View full article
Have you ever encountered this error?   --- Status... Status: 4 Creating request Status: 5 Request created Status: 6 Context created Status: 7 Connected to remote server Status: 0 Error ERROR: flxActAppReturnSend - (50018,41145,32) "Failure to send request or receive a response for an unspecified reason. Recovery: check parameters used for the request." ---   We're looking for more information on this error. If you're encountering this error, please comment below.   This error appears to be a communication error where the client PC may have an Internet connection, but is not successful in contacting the license server. This may be due to a firewall misconfiguration or a proxy server.   You may want to make sure your client PC can connect to FlexSim's servers (addresses and ports listed in this article).   You may also need to configure FlexSim to communicate through your proxy server:  
View full article
"switch by case" is a stucture in many programming languages. It is a availbale in Flexscript. A case must be a number for a switch by case structure in Flexscript. A decide activity can switch even to string value cases. All you need is to rename the connector from a decision activity to a following activity. process_flow_by_case.fsm
View full article
Top Contributors