FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
We recently had a customer ask how to draw a flow item label on the flow item object. I thought that this information would be useful to other FlexSim users as well. In the 3D model, drag and drop a Text visual from the Library. Select the text in the 3D model, then copy it to the clipboard using Ctl + C Go to the Toolbox tab, open the FlowItem Bin, and double click the Flow Item of interest. Right click the 3D flow object, and click "Explore Tree" Click in the white space underneath the Flow Item's node, and use Ctl + V to paste the text as a subnode to the flow item. If you zoom out in the Flow Item's 3D view, you will see the text. You can double click on the text and use the General tab to position it wherever you would like. Double click the 3D Flow Item. Underneath the Labels tab, select the green plus sign to add your label. In my example, I added a number label called "Type" with a default setting of 0. Click "OK". Double click the text that you added in step 5 and 6. Underneath the Display tab, click the custom code button next to Text Display. Within the custom code type something like the following: /**Custom Code*/ Object current = ownerobject(c); treenode textnode = param(1); textnode.value = "Type: " + string.fromNum(current.up.Type); //Note: If your label is called something other than "Type", make sure to replace it in both places. Click out of the "FlowItem Bin" tab and back into the "Model" tab. Double click the source where your Flow Item is being created. Underneath the Triggers tab, add an On Creation trigger. Click the green plus next to the On Creation trigger. Hover over Data and select "Set Label". Make sure the text next to the Label field matches the text of the label you set in step 7 and 8. By following these steps, each Flow Item will have a text label that displays the Flow Item label next to the Flow Item object. Please see the attached gif for a demonstration. flowitem-label.gif
View full article
The Statistics Collector is a powerful object. Its purpose is to record data about the model run as a table, and it is very effect at doing that. However, it is very abstract; being abstract allows it to be highly flexible, but makes it more difficult to learn. This article is meant to help you understand (or remember) how the Statistics Collector models the problem of converting model data from objects and events into a table of data. This article compares a Statistics Collector to a train being loaded an unloaded. It is NOT an article about how to model a trainyard or other rail-industry systems. The purpose is to compare the Statistics Collector, which is very abstract, to something most people understand. So we'll start by talking about the story of a simple freight train. This story has the following elements: Starting - the train starts its journey a the beginning of the line Loading Stops - the train makes several stops along the way to load goods Unload Planning - unlike a normal train, this train determines where it needs to go after this point based on what was loaded into the train Unloading Stops - the train makes several stops along the way to unload goods This is a very simple story. Just keep the sequence in mind - the train starts, makes several load stops, figures out its destinations, and then makes several unload stops. To see how this is like a Statistics Collector, take a look at this model: StatsCollectorVisualization.fsm This model is very simple. It consists of a Source, Queue, Processor, and a final Queue: Items are generated at the Source and flow through the Model. Items have a Type label, so that there are three Types of items: Type 1, Type 2, and Type 3. If you zoom out, you'll see a much bigger section of the model: This section simulates the logic of a Statistics Collector. As the model runs, you'll see AGVs run along the track, like a train. You'll see them make several stops and pick up boxes. Then you'll see them stop at the "Table" (the bigger black box in the image above) and "unload" data into the table. The Statistics Collector tool is a lot like this simulation. It has an internal "train", and you reference that train with the keyword data. When you use the Statistics Collector, you are configuring the journey of the train, which determines what data is recorded in your table. Starting the Train The statistics collector creates a train (the data object) when it observes an event. You configure which events a Statistics Collector cares about on the Events tab. You can listen to many different things, including: A flowitem enters or exits an object A token enters or exits an activity The model is reset The model gets to the warmup time Whenever any of these things happen, the Statistics Collector creates a train (again, called data) and starts it going on its journey. In this example, the Statistics Collector listens for items to enter Queue1. It also listens for items to exit the processor. Either event will start a train. Loading the Train Once the train is going, the Statistics Collector "loads" the train with information. In reality, this happens by adding labels and setting values on data. First, data gets all the values associated with the event (the event parameters) assigned as labels. Then, data gets all the labels specified in the "Additional Labels" section. Finally, data visits the Row Value station. Here, the special property called rowValue is set. Note that as you load the train, you can use anything already on the train to get more information loaded on train. In the example model, the row value is set to "data.item.Type"; data is the train, and the "item" label is already on board, so the row value field can use that to load additional information. Unload Planning The next stop for the train is something that you can't really see, but that is very important. The Statistics Collector inspects the row value on data. The Statistics Collector remembers all row values that it has ever inspected, and it adds a row to the table for each unique row value. This is where the row value got its name. If the Statistics Collector sees a value it has never seen before, it adds a row to the table, and associates the new row with the row value. Once the row is either added or found, the Statistics Collector sets the property rowNum on data. So now, the train knows which row it is going to visit. All that is left in this phase is to figure out which columns the train will visit. First of all, if the row was added, the train will visit all the columns to set their initial value, which is called the Row Add Value (the value to set when the row is added). Whether or not the row was added by the event, the train will also visit any columns that are connected to the event, setting the value to the Event Value (the value to set when a connected event happens). So in summary, the Statistics Collector figures out which row the train will visit based on the row value, adding a row if necessary. If the row was added, then the train visits all columns in the row, to set the Row Add Value. If the event is connected to any columns, the train will also visit those columns, and set the Event Value. Unloading the Train Finally the train can unload data into the table. As it visits each cell, it unloads information into that cell. As the user, you configure what gets unloaded at each cell. You can unload anything into the cell, including anything on the train, anything connected to anything on the train, or anything globally accessible. In reality, whenever the Row Value or Event Value is evaluated, you can access and labels or properties on data. You can also use values on data to access other values. Or you can access global values, such as the current model time, or a Global Variable, or a value in a Global Table. In the example model, the Event Value field accesses the value that is currently in the table at the cell being visited by data. Does the statistics collector really have to travel? In the visualization model, the data train takes up time on the clock to load, plan, and unload. However, for the true Statistics Collector, all of that happens in zero time. For example, when an item enters Queue1, the real statistics collector in the model finishes updating instantaneously. In contrast, the visualized statistics collector train is still moving to get more labels. This is for illustration purposes only. What about "Update when accessed" columns? All Statistics Collectors know when something is trying to read their values. For example, if you have a chart pointed at a Statistics Collector, and that chart repaints, it will read the Statistics Collector. Or if you access the table through FlexScript with code like Table("MyStatisticsCollector")[1][1], that will read the Statistics Collector also. So in a way, it's just another event. However, there are two differences: You can't load custom labels on the train for this event; it "skips" those stops The train visits all rows in the table When you set a column to update when the value is accessed, you are basically connecting it the "OnAccess" event. So when the table is accessed, the data train visits all rows of the table. For each row, it gets the rowValue and rowNum properties set, and then it visits all the "update on access" columns. What about other features? This article just covers the basics, and doesn't cover other features of the Statistics Collector. Just know that there are many ways to configure the train's journey. For a full reference, see https://docs.flexsim.com/en/21.0/Reference/Tools/StatisticsCollector/ However, all of the features discussed in the reference add more detail; you can just improve your mental image of how the Statistics Collector works.
View full article
FlexSim Answers is designed to make information available to the FlexSim community. However, there are times when you will need help with a model or project that contains proprietary or otherwise confidential information. Here are a couple ways of getting the help you need while protecting sensitive information. Private Questions When you create a question you can mark it as Private. The question is then only viewable to FlexSim employees. A lock icon will show up next to the question for those who can see the question Comment Visibility (Currently this option is only available to moderators, but moderators may use it to make comments visible only to you and other FlexSim employees) You can also post private comments by setting the visibility level of your comment. Setting the visibility of the comment to Viewable by Moderators will make the comment visible only to FlexSim employees. Posting private comments is useful for posting confidential information to questions that aren't private.
View full article
O presente tutorial tem como objetivo explicar o significado dos principais estados assumidos pelos objetos padrões do FlexSim em um modelo convencional que contenha tanto objetos fixos (Fixed Resources), quanto executadores de tarefas (Task Executers). Link para o vídeo: Explicação dos Principais Estados no FlexSim Obrigado.
View full article
O link que segue leva a um vídeo no qual é apresentado um exemplo de Análise de Sistema utilizando-se o módulo FloWorks FlexSim. No vídeo, um modelo Portuário é analisado com o objetivo de encontrar o gargalo do Sistema. Vídeo Tutorial: FloWorks - Análise de Modelo Esperamos que aproveitem mais este vídeo tutorial.
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
[ FlexSim 2016 ] FlexSim 2016, version 16.0.5, is available. To download the installer log in to your account at www.flexsim.com, then go to the Downloads section and click on More Versions. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Fixed sin() command not displaying in the Command Helper. Fixed a bug when shift-selecting entire rows and columns of global tables. Fixed C++ Variant comparisons where the primitive is on the left side. Fixed the return values for CURRENT_MINUTE, CURRENT_SECOND, and CURRENT_MILLISECOND in getmodelunit(). Fixed a bug with SQL parsing of FlexScript functions returning doubles in 32-bit FlexSim. Fixed some pin buttons in the Stats window. Fixed a bug in a Pull From List pick option. Fixed Crane and Robot speeds not scaling with model units. Fixed a bug with the From/To Lookup Table popup not putting quotes around table names. Fixed a bug with exporting Custom Chart data as CSV sometimes not working. Fixed some UI issues with the Edit Name box for User Libraries. Fixed an exception in the Set Label trigger popup. Conveyor Fixed header for OnMessage trigger of Photo Eyes. Fixed decision point rotation in a rotated container. Fixed a bug with calculating the time that items will split off from each other when an ahead item speeds up. Fixed a rare crashing issue with accumulated items. Fixed an issue with resuming nonaccumulating conveyors that weren't stopped. Process Flow Fixed a UI bug with the process flow variable panel in Quick Properties when opening a model. Fixed some instance references from showing just the name to now showing the path to better distinguish objects in containers. Fixed an extra line being added in the token Shared Assets list when requesting a Zone. Fixed the Quick Library so you can collapse sections. AGV Fixed issue with click-creating AGV control points before creating paths. Fixed issue with calling stopobject() on an agv when it has arrived at a control point at (near) zero speed.
View full article
I have created the following model to use elevator for different floor. I am not sure what I have missed out that the elevator is not working. Please advise me. Thanks multi-floor.fsm David
View full article
A new feature has been added to our Answers Platform. In App notifications are now available for all users. These are instant notifications designed to work in coordination with or in place of email notifications. You'll now see a bell icon next to your avatar in the upper-right hand corner of your browser on the Answers website. In order for this location to start showing notifications, you will need to click on your avatar and choose 'My Preferences' Then click the Notifications tab in the top Navigation Bar. From here, you can choose to set certain actions to notify you instantly by selecting the radio button next to the action you would like to be notified on. Once there is content matching your notification settings, you'll see a red circle on the bell icon, as shown below: If you click the Bell icon, you will be redirected to a page showing all your recent notifications which will show you a summary of the notification as well as a link to the post:
View full article
O artigo "Using Fixed Resource Process Flows" que descreve algumas funções do Fixed Resource Process Flow tem um modelo de exemplo. O exemplo está em anexo e mostra como podemos utilizar do Fixed Resource Process Flow para multiplicar lógicas de fluxo e de trabalho. Esse representa uma área de despacho de produtos onde o produto vem de um estoque transportado pelo empacotador (Packer) e é preparado em uma paleteadora. Depois o produto é levado em lotes pelo empacotador para uma estação e dali ele vai ser despachado pelo carregador (Shipper). A função do Fixed Resource Process Flow facilita a replicação da lógica dessas paleteadoras e dos funcionários envolvidos. Alguns teste como se aumentássemos o número de recursos conseguiríamos suprir melhor a demanda podem ser realizados por esse recurso. Nesse artigo descreveremos o passo a passo desse modelo. A descrição segue no arquivo exemplo FR Flow em anexo.
View full article
O link que segue leva a um vídeo no qual é apresentada uma Visão Geral sobre o módulo FloWorks FlexSim. Os tópicos abordados no vídeo são: O que é o FloWorks? Qual a aplicação do módulo FloWorks? Qual a diferença entre FloWorks e o módulo de Fluidos? Quais os principais objetos da biblioteca FloWorks? Algumas propriedades interessantes do Módulo. Vídeo Tutorial: FloWorks Overview Esperamos que aproveitem mais este vídeo tutorial.
View full article
O link que segue leva a um vídeo no qual é apresentada UMA entre várias formas de criar a lógica de alocação de peças no Rack. Os tópicos abordados no vídeo são: Objeto Rack Configurações lógicas do Rack Exemplo prático Vídeo Tutorial: https://youtu.be/tTeRwjt--Eo
View full article
Nesse vídeo disponível no canal Youtube da FlexSim Brasil, demonstramos como retornar as licenças standalone do FlexSim em um procedimento simples e rápido. Para licenças em rede, o procedimento é diferente, no entanto, o arquivo com as instruções para retorno das licenças standalone e em rede, encontra-se anexo nesse artigo. passoa-passo-retorno-de-licenca-flexsim.pdf flexsimlicenseserver-upgrade.pdf flexsimlicenseserver-installation.pdf
View full article
O link que segue leva a um vídeo no qual é apresentado um exemplo de modelagem utilizando-se o módulo FloWorks FlexSim. No vídeo, modela-se um processo de fabricação de Suco de Laranja, desde sua extração até seu envase. Recursos do FloWorks utilizados no vídeo: ItemToFlow: Extração do suco FlowPipe: Transporte do fluido FlowTank: Armazenamento FlowMixer: Processo de mistura de conservantes Vídeo Tutorial: FloWorks Exemplo de Modelagem Esperamos que aproveitem mais este vídeo tutorial.
View full article
O link que segue leva a um vídeo no qual é apresentado uma introdução à nova ferramenta do FlexSim, o Statistics Collector. No vídeo, explica-se quais são as configurações básicas da ferramenta. Também pode-se acompanhar um exemplo simples, desde a coleta de uma estatística básica, até a apresentação dos dados em um gráfico, do tipo histograma. Vídeo Tutorial: Overview sobre Statistics Collector Esperamos que aproveitem mais este vídeo tutorial.
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
Neste vídeo, abordamos de forma rápida e bem resumida, como funciona simulação em ambientes hospitalares e elaboramos uma rápida demonstração através de um passo a passo, o funcionamento do software FlexSim Healthcare. O vídeo encontra-se disponível no canal do Youtube da FlexSim Brasil.
View full article
FlexSim 2020 Update 2 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Updated the run speed slider so you can customize the ratio of display units to real seconds. Moved object properties windows into the context sensitive Properties window (formerly known as Quick Properties). Added a new Quick Properties window that appears next to your cursor when double clicking on an object. Added a pop-out button to the Labels panel of the Properties window. Added a Dark theme for FlexSim's UI. Removed help manual from the installer and linked help to docs.flexsim.com. Created a separate installer for a local help manual. Added Unit edit buttons to more edit fields. Updated the Quick Library to match the current state of collapsed and expanded panels in the main library. Removed the View Settings window and moved all its options into the Properties window. Improved performance of Properties window and various other UIs. Added Object Property tables. Added Object class properties and methods to the Variant class in FlexScript. This removes the need to use .as(Object) if you know the treenode pointed at by a Variant is an Object. Added Object.resetPosition property. Added capture groups to the string.replace() method. Enabled several SQL clauses - NOT, NOT IN, DELETE FROM, INSERT INTO, and LEFT JOIN/LEFT OUTER JOIN. Added ARRAY_VAL() sql function for accessing a value in an array. Added unit conversions to the convert() command - convert(4.5, "ft/min", MODEL_UNITS). Improved performance of loading media by making it multi-threaded. Updated the default web server 3D view to stream using WebGL data instead of video. Added Color.fromPalette options to several Set Color popups. Added a pickoption for the Source's On Creation trigger for attaching items to an Object process flow. Disabled the beeping noise when pressing Enter in edit fields. Fixed the Create Object edit mode sometimes not creating objects and just exiting (like when clicking on the library when the User Manual was active). Fixed a draw issue with tables drawing bold text sometimes. Fixed a bug with window docking. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed updatehotlinks() to only repaint the view if it applies a node with a viewsyncupdate attribute of 1. The keywords VALUES an DELETE were added to the sql parser. This means that previous models that use the term VALUES, Values, values, DELETE, etc. will get an error because sql now sees it as a special keyword. If you get this error, just wrap your term with square brackets: [Values] to tell the parser to not interpret it as a sql keyword. Agent Added the Agent module to the Flexsim Installer. Enabled A* walls as static agents. Added a neighbors() function to the Agent API. Fixed social forces for agents not in model space. Fixed bugs with using A* bridges. AGV The join tool now joins in all cases, defaulting to a straight path if it can't solve for a curved path. Conveyor The join tool now joins in all cases, defaulting to a straight conveyor if it can't solve for a curved conveyor. Emulation Added Allen-Bradley connections. People Improved performance of state history tables. Fixed listening to travel events on a person created with the Create Person activity. Process Flow Added new Kinematics activities. Added new Warehousing activities. Added an Enabled checkbox to the Source activities so that you can turn them off. Consolidated Fixed Resource and Task Executer process flow types into a single "Object" type. Added a right-click menu option to the 3D view so a user can right-click on an object and add an Object process flow directly. Added an Object Flow field to the Create Object activity and added a pickoption for attaching items to an instanced flow. Changed double clicking on an activity to be more consistent with the 3D view and now opens the activity's properties window. This window now has a name edit field so you can still easily rename the activity. You can also slow double click to only open the old name edit field. Improved performance of activity properties windows.
View full article
Nesse vídeo demonstramos como importar modelos de animações para os executadores de tarefas ou recursos através de arquivos criados em software específicos para modelagem de animações e disponíveis em repositórios como o Mixamo. Veja o passo clicando em BoneAnimationVideo Também descrevemos o passo a passo de uma parte, logo abaixo. Estes são os passos que seguimos para criar os operadores com bone animation no FlexSim. (opção disponível a partir da versão 7.7) Copie o conteúdo deste diretório "Pasta Operador" para o seu diretório FlexSim/ fs3d / Operator para que ele tenha 5 opções de operadores ao invés de apenas 3; Abra o FlexSim; Arraste um Operador; Clique duas vezes nele para editar suas propriedades; Selecionar Masculino - High Res ou Feminino - High Res na opção do Shape na guia Operador; Pressione Aplicar; Reinicialize o modelo (Isso é necessário para atualizar as animações porque esses arquivos possuem mais animações do que o padrão); Clique com o botão direito do mouse no Operador na vista 3D e selecione Editar> Animações Existem agora 12 animações disponíveis; Execute estas animações usando listas de seleção, utilizando um Triggers para Iniciar e ou Parar a Animação eu sua Modelagem no 3D ou então use a atividade Run Animation na criação da sua lógica com o ProcessFlow. Abaixo você encontra os arquivos necessários para incluir os operadores em alta resolução em seu FlexSim e também uma grande quantidade de animações de dança extras adicionadas! Faça o download aqui do material explicando sobre o bone animation. Faça o download aqui do material usado no passo a passo do vídeo deste artigo. Inscreva-se e acompanhe nosso canal de videos no YouTube FlexSim Brasil -------------------------------------------------------------------------------------------
View full article
O link abaixo, remete a um vídeo onde mostramos como usar o recurso paths para criar o percurso que recursos e pacientes devem seguir durante o fluxo dentro de um hospital, respeitando os limites dos layouts feito em Autocad e, o impacto nos indicadores usando o dashboard para análise. Vídeo Tutorial: FlexSim Healthcare - Parte II Esperamos que aproveitem esses vídeos com algumas dicas simples.
View full article
Top Contributors