FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
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
The following articles describe various error messages and numbers you may see as you work with your FlexSim licenses, along with possible solutions and workarounds.   flxActCommonHandleOpen (50003, 71000, 10103) flxActAppReturnSend (50018, 41145, 32) Manual activation error (50019, 41200, 19) Manual XML licensing error (50019, 42107, 10246) Licensing activation error (50041, 41143, 34)   Operations error: 7032 Invalid fulfillment ID Operations error: 7109 Invalid activation ID Operations error: 7131 Server activation is not allowed Operations error: 7174 Only deployed entitlement line item can be fulfilled Operations error: 7189 Client activation is not allowed Operations error: 7284 Cannot perform support actions on inactive fulfillment record Operations error: 7288 fulfill count exceeded the available seat count Operations error: 7466 The return of the fulfillment is denied Operations error: 7581 Online return/repair request is not originated from the original client machine   Trusted storage binding change detected
View full article
O presente vídeo tem como objetivo demostrar três formas de sincronizar eventos no FlexSim através da espera (Wait) por um período X, ou até algum outro evento (Wait for Event). Sincronização de Tarefas - WAIT no FlexSim (3 das n possibilidades)
View full article
Have you received this licensing error? Operations error: 7131 Server activation is not allowed to activate entitlement line item: Make sure the license model is a server license model. You may encounter this error if you attempt to activate a standalone license using flexsimserveractutil.exe on a license server. A standalone license is intended to be activated directly within FlexSim Simulation Software installed on a client PC. Please see our instructions for standalone licensing for the procedures to use with your standalone FlexSim licenses.
View full article
The instructions below are for Internet-connected license servers.   If your server cannot connect to the Internet or to FlexSim's main license server, try our offline/Manual XML license return instructions.   Assumed configurations   All steps below assume that you followed the installation instructions as described in our license server installation instructions, and that all FlexSim's license server files were extracted to the location C:\FlexSim_LMTOOLS. Throughout these instructions we will reference files inside that folder.   Find your fulfillment ID   On your license server, run the flexsimserveractutil.exe program (C:\FlexSim_LMTOOLS\flexsimserveractutil\flexsimserveractutil.exe) by right-clicking and selecting Run as Administrator.     In the FlexSim ServerActUtil program, go to Tools > View License Rights.     Copy the Fulfillment ID for the Activation ID you are upgrading by highlighting the Fulfillment ID and pressing Ctrl+C.     Attempt online return   When your license server returns a license over the the Internet, flexsimserveractutil.exe will communicate with the following FlexSim servers via HTTP (port 80) and HTTPS (port 443):   www.flexsim.com sw.flexsim.com sw1.flexsim.com license.flexsim.com   In the FlexSim ServerActUtil program, select Connect > Return.     Paste the Fulfillment ID into the field using Ctrl+V, and press the Return button.     After a few seconds and several status messages, you should receive an indication of success.     If you have any questions or problems, please search our Answers Community for possible solutions. There is a good chance someone else has already asked your question. Still not finding what you're looking for? Submit a new question and we'll check it out. If you're including any confidential information, such as license codes, be sure to mark your question as private! You can also contact your local FlexSim distributor for live phone, web, or email help.
View full article
O presente tutorial tem como objetivo demonstrar de forma resumida a construção e alteração de um modelo utilizando a biblioteca "Bottling", da qual utiliza o MassFlowConveyor, que é basicamente um conveyor desenvolvido pela equipe da FlexSim USA para a simulação principalmente de linhas de envase. Mass Flow Conveyor no FlexSim 2017 Update 1
View full article
Have you received this licensing error? Operations error: 7466 The return of the fulfillment is denied by the return policy because max return exceeded. This error indicates that returns are disabled for your license. Your license is configured for one-time activation onto a computer. If you believe your license should be able to transfer from one computer to another, please contact your local distributor to discuss the situation.
View full article
Have you received this licensing error?   Operations error: 7288 The activation of the fulfillment is denied by the activation policy because fulfill count exceeded the available seat count.     Here are some common reasons you may encounter this error, along with some possible solutions.   All seats are already in use   Problem: All the seats of this license are already activated. There are no available seats left to activate.   Solution: You must return a seat from a computer where it is currently activated. Once a seat has been successfully returned it is available for a new activation.   If you are not sure where your license is currently activated, there are two main methods for finding out:   Go on a hunt: On each computer where the license may be activated, check the license status by opening FlexSim and going to Help > License Activation > View Licenses tab > press the View Licenses button. This will show you the license information for the current PC. Check the history: You can view your activation/return history from your FlexSim account's licenses page. On the Licenses page, expand the folders until you can see the Activation ID you are trying to track down. Click the Activation ID to load the history for this license. This history includes dates/times of the activations and returns. If the information is available it will also list the computer name where the license was last activated and the Windows username of the logged in user who completed the action. If the computer where your license was activated has been stolen, destroyed, wiped, etc., please contact your local distributor to discuss a solution.   Activation ID is obsolete   Problem: You are trying to activate an obsolete activation ID. An activation ID can become obsolete if it has been cancelled, replaced, or upgraded.   Solution: Make sure to use the most up-to-date version of your license. Log in to your FlexSim account to view your latest license codes.   Consider the following scenario: You purchased a FlexSim license and were emailed a license code. You used that license on your laptop for several years, upgrading FlexSim as new versions were released and following the prompts to upgrade your license as needed. Now you have purchased a new laptop. You successfully returned your license from your previous laptop. On the new PC you installed FlexSim and needed to get it licensed. You looked up your original license code from your years-old email, but when attempting to activate you received error 7288.   The reason is that over the years as you upgraded FlexSim you also upgraded your license code. The old, original license code is obsolete. You must log in to your FlexSim account to get the most recent license code. With the new license code you are able to successfully activate your license on your new laptop.
View full article
Failed to connect to the license server Have you ever encountered this error? ERROR: flxActAppActivationSend - (50041, 41143, 34) "Failed to connect to the license server or Operations server. Recover: check connection and that server is operational." This error indicates that your computer is not able to communicate with FlexSim's license server. If your computer is purposely air-gapped, please use the Manual XML licensing methods listed at the bottom of this article. Protocols, ports, and addresses A license activation or return will attempt to make HTTP (port 80) and HTTPS (port 443) connections, currently with the following servers: license.flexsim.com www.flexsim.com sw.flexsim.com sw1.flexsim.com Make sure these communications are allowed on your network. To make sure you maintain compatibility with any possible future changes to our server configurations, consider configuring your network to allow communication with any *.flexsim.com subdomain. Troubleshooting Any of the following could prevent your FlexSim software from communicating with FlexSim's license servers: Your computer is air-gapped or otherwise blocked from communicating over the Internet. The FlexSim software is not allowed to communicate over the Internet. FlexSim's above-listed addresses are blocked on your network or computer. Your network communicates through a proxy service but you haven't configured the proxy server settings inside FlexSim. FlexSim's license server may be down due to some outage or maintenance. Let's look at solutions for each possibility: 1. No communication / connection issues If your computer is disconnected from the Internet, you will need to connect in order to activate or return a license online. If this is not possible, please use the Manual XML licensing methods listed at the bottom of this article. You may also see this error if you're on a flaky wi-fi connection, or a slow network connection. The communication must be solid enough that it does not time-out, where the client software is able to receive a response in a timely manner. If you are connected to the Internet but on a slow or unreliable connection, you can fall back to the Manual XML licensing methods, or you can retry the online activation multiple times - it may eventually complete successfully after several attempts. 2. FlexSim's communications are blocked If your computer is connected and you can visit other sites, but FlexSim's licensing actions are still blocked, it could be due to an anti-virus solution or other security measure preventing FlexSim's communications. Work with your IT team to disable such measures and test if FlexSim is allowed to communicate. If so, configure your security measures to allow FlexSim to communicate for licensing purposes, or if that is not possible, use the Manual XML licensing methods listed at the bottom of this article. 3. FlexSim's license server is blocked Perhaps one or more of FlexSim's license server addresses (listed above) is blocked on your network. This could be a deliberate blocking of a specific address, or more likely a general block of a wider range of sites or IP addresses. Work with your IT team to determine if this is the case and if the block can be removed. If that is not possible, use the Manual XML licensing methods listed at the bottom of this article. 4. Proxy is not configured If your network settings require that FlexSim communicates through a proxy server, you'll need to configure the software to do so. For FlexSim version 23.0 and higher you'll do this directly in the software. From FlexSim's main menu, navigate to Help > License Activation > Advanced > Proxy Details. Fill in your proxy server information and click the Apply button. If you're using an older version of FlexSim, you can download this attached model. This is an older model file compatible with FlexSim version 5.0 and up. It has a Model Control GUI that is an extension to the License Activation window that includes this extra tab where you can put proxy details. proxy-details-v5.fsm 5. License is already activated but fulfillment is broken The license you're trying to activate may already be activated on your computer, but in a broken or unusable state. Follow the instructions for your license hosting situation to remove the broken fulfillments: Standalone - Delete fulfillment License Server - Delete fulfillment 6. License server offline There are circumstances when FlexSim's main license server can go offline. Most commonly this is due to regular updates or patches being applied. In this case the server will return to normal operation shortly. Please be patient and try again in a few minutes. In cases where longer maintenance is planned you will find a notification at the top of this community indicating the purpose, date/time, and expected duration of such maintenance. This notification will be given as early as possible to help you plan around such downtime. In rare circumstances an outage could be caused by a failure in one or more of the license server's databases, operating system, server hardware, networking, or data center. When such an outage occurs, we will post a notice at the top of this community and work to restore service as quickly as possible. Help! I need support! If none of the above suggestions work for you, please start a new question and include as many details as possible about what you've already tried and what you see happening. Please be aware that if FlexSim's license server is online and other clients are able to activate and return their licenses successfully, that the issue is within your organization's network or on your computer. The proper place to turn to for support will be to your own internal IT teams. The above information, including the protocols, ports, and addresses and the different troubleshooting suggestions should be enough information to solve the issue. Manual XML licensing If you are not able to allow FlexSim to communicate over the Internet, please use our manual XML activation/return methods for offline systems: Standalone - Activation - XML / Offline Standalone - Return - XML / Offline License Server - Activation - XML / Offline License Server - Return - XML / Offline
View full article
When you try to activate offline, the following error might appear in the console: ERROR: flxActSvrActivationRespProcess - (50019, 42107, 10246) "Failure to process response for an unspecified reason. This error may be returned when a valid failure response is received, for example when the activation server denies a request. Recovery: check parameters used for the request." License Server Manual XML Activation error example: Standalone Manual XML Activation error example: If you encounter this error, check the response.xml file you are attempting to process. If it includes the text SERVER_CONFIG or CLIENT_CONFIG, but your Trusted Storage is already configured, you may receive this error. With Trusted Storage already successfully configured, you must generate a brand new activation request. Upload the new request to your FlexSim Account for processing. If the license is available you will be able to download the XML response. This response should process and successfully activate your license. Full instructions for performing manual XML licensing for license servers can be found in our license server installation instructions document. ===== Here are some other items to keep in mind with manual XML licensing on your license server: Download the response XML files and transfer them to their license server without modification. Modifying the XML files in any way will "break" them. This includes line endings and other white space. The files include checksums and if the files change they will not work. The destination license server needs to be the same system where the request was generated. The FlexNet Licensing Service 64 needs to be installed, be a high enough version, and be running properly as a Windows service. Checking these items is covered in our license server installation instructions starting on page 6 with 3. FlexNet Licensing Service. flexsimserveractutil.exe may need admin privileges to write to the proper places on the system. Be sure to right-click the application and choose Run as Administrator.
View full article
Have you received this licensing error?   An error occurred in the activation request Operations error: 7109 Invalid activation ID:     This error can occur when you are attempting to activate a standalone license online using the Activate tab.   You may encounter this error if you have incorrectly typed your activation ID, left the field blank, or if the system otherwise does not recognize the license code you have entered as a valid activation ID.   Some older versions of FlexSim also were not able to remove spaces or other whitespace from the beginning or end of the activation ID field, so be sure that any spaces or other extraneous characters are removed from both the beginning and ending of the license code text.
View full article
Have you received this licensing error? An error occurred in the activation request Operations error: 7189 Client activation is not allowed to activate: Check the license model to make sure a client can activate. You may encounter this error if you attempt to activate a network license directly within FlexSim software. A network license is intended to be installed on a license server using a FlexNet license manager - either lmtools or lmadmin. Please see our instructions for installing a license server, which also include directions for connecting your client software to the license server to obtain a license.
View full article
I was recently asked how a user can implement jerk, i.e. a rate of acceleration change, in the AGV module. The AGV module uses FlexSim's kinematics API to define the motion of AGVs along paths. The kinematics API does not natively support jerk. However, the AGV module has included a hook to allow developers, and audacious end users :-), to customize the kinematics that drive AGVs on paths. Using this hook, you can approximate jerk by breaking what would otherwise be a single kinematic, with a single acceleration/deceleration, into multiple smaller kinematics that gradually change the acceleration/deceleration of the object as it progresses. There are two ways to do this. The first option is to simply do it as an end user, confining your changes to your model, by customizing nodes in the tree. The second option is to do it as a module developer, using the module SDK. Adding Jerk as a User The AGV network uses an "AGV Customization Delegate" to allow for hooks to be placed at certain points in the AGV navigation logic. There is a default customization delegate that the AGV network uses, but you can override the logic of this default delegate by adding and configuring a special node at MODEL:/AGVNetwork>variables/customizationDelegate. But before I tell you how to do it, I want to explain a little more about how it works. I've attached three C++ files. The main ones you'll want to look at are AGVCustomizationDelegate.h and AGVCustomizationDelegate.cpp. These show the definition of the customization delegate class. In the header file, you'll see the definition of AGVCustomizationDelegate class. This class includes several methods, but the main method relevant here is addKinematics(). This method takes several parameters defining the context. Its responsibility is to add one or more kinematics, in the positive X direction, that will move the AGV the target distance along a path. The AGVCustomizationDelegate class is the default customization delegate used by the AGV network. The C++ files also define a subclass called UserAGVCustomizationDelegate, which overrides the methods of its parent class by delegating the logic to FlexScript code that the user can write in the model. So, now for actually doing it in the model. We want to instantiate an instance of UserCustomizationDelegate at the node MODEL:/AGVNetwork>variables/customizationDelegate, so that we can write FlexScript code to add the kinematics. Navigate in the tree to MODEL:/AGVNetwork>variables/customizationDelegate Right click on that node, and choose Edit > Designate this Node (so) In a script window execute the script: nodeadddata(so(), DATATYPE_SIMPLE) Add a subnode to that node named sdt::attributetree and give it the text: AGV::UserAGVCustomizationDelegate. Copy the node and then paste it onto itself. This will instantiate the UserAGVCustomizationDelegate. Right-click on the addKinematics subnode and choose Build > Toggle Node as FlexScript. Right-click on the addKinematics node and choose Explore > As Code. This will allow you to edit the code for adding kinematics. The header for field should be as follows (note this is determined by the evaluate() command in AGVCustomizationDelegate.cpp at line 71). treenode kinematics = param(1); // the kinematics node to call addkinematic()/getkinematics() on treenode section = param(2); // the associated travel path section double startAtTravelDist = param(3); // the agv cumulative travel distance at this point double distance = param(4); // the distance to travel on the path section (your addkinematics() calls should add up to this distance) double startTime = param(5); // the start time for the first addkinematic() call double startSpeed = param(6); // the initial speed to start at double endSpeed = param(7); // the target end speed (should be going this speed at the end) int reason = param(8); // reason for adding the kinematic (see AGVCustomizationDelegate.h) treenode endSpeedOut = param(9); // if target end speed cannot be reached, update this node's value with the actual end speed double peakSpeed = param(10); double acc = param(11); double dec = param(12); TaskExecuter agv = ownerobject(tonode(get(kinematics.up))); // the agv At this point you can customize how kinematics are added to the kinematics node in this code. To approximate jerk you would break it up into small addkinematic() commands that each change the acceleration/deceleration. Please refer to the kinematics api for more information on how to manipulate kinematics. Note that you should only use the addkinematic() and getkinematics() commands in this field (not initkinematics() or updatekinematics()), and the addkinematic() command should only tell the AGV to move forward in the X direction. Y and Z directions are ignored by the AGV travel logic. In other words, from a kinematics perspective, the AGV network "flattens" an AGV's path into movement in a straight line along the x axis. When you're finished adding kinematics, you should return the end time of the last added kinematic. This will be the same as the return value of the last called addkinematic() command. Adding Jerk as a Module Developer To implement jerk as a module developer, you would first create a module using the module SDK. Then you would include AGVClasses.h and AGVCustomizationDelegate.h in your project (do not include AGVCustomizationDelegate.cpp as it won't compile properly. I'm including that file just to be informative in this article). Then you would subclass AGVCustomizationDelegate with your own class that overrides the appropriate methods, specifically the addKinematics() method. Once you've done that, you would replace MODEL:/AGVNetwork>variables/customizationDelegate with an instance of your customized class, using the same steps described above, but using your own class name instead of AGV::UserAGVCustomizationDelegate. If you need more header files so you can access more information, i.e. the definition of TravelPathSection, the let us know and we can get them to you. agvheaderfiles.zip
View full article
We have released a beta version of our Emulation module. The Emulation module adds a tool that enables communication between FlexSim and OPC / Modbus Servers and PLCs. Help files are included in the FlexSim User Manual to assist you. This beta version must be installed with FlexSim 2017 Update 1. 32-bit and 64-bit installers can be downloaded through the downloads section in the Modules tab of the FlexSim website: FlexSim Downloads The following are known issues: Asynchronous Write for OPC Connections is not working. The option has been disabled. Please post any feedback or bug reports either as a comment to this article or you can email them to dev@flexsim.com
View full article
What is ODBC? FlexSim can use ODBC, and ODBC can connect to many different kinds of data sources, including files (like Excel) and databases. It allows you to use SQL queries to get data from any supported data source. ODBC uses a driver determine how to get data from a given data source. A driver is translator between ODBC and whatever data source you are querying. For example, there is a driver for Excel files. If you have that driver on your system, you could use ODBC to query data from Excel files. As another example, there is a driver for SAP HANA, the database for SAP. If you have that driver, then ODBC will know how to talk to SAP. This means that if the correct driver is installed, and is working correctly, that you can use FlexSim to query any ODBC data source. Using the Database Connector FlexSim has a tool called the Database Connector. You can use it to configure a connection to a database. This article uses that tool. For more information, see https://docs.flexsim.com/en/20.2/Reference/Tools/DatabaseConnectors/ As an example, let's say that you want to connect to Excel using ODBC. Assuming you have the Excel ODBC driver installed on your system, you can configure a Database Connector to look like this: Note that you must specify the full connection string. In the connection string, you can see that the driver and the file are specified. Then you can query the data in a given sheet with a query like this: SELECT * FROM [Sheet1$] You can find more information on querying Excel files at websites like this: https://querysurge.zendesk.com/hc/en-us/articles/205766136-Writing-SQL-Queries-against-Excel-files-Excel-SQL- If you use Office 365, you may need to install the Microsoft Access Database Engine 2016 Redistributable. This includes newer drivers for Excel and Access Be sure to install it with the /quiet flag on the command line. Instructions can be found in this troubleshooting guide: https://docs.microsoft.com/en-us/office/troubleshoot/access/cannot-use-odbc-or-oledb Note that FlexSim has an Excel tool, which is usually easier to use. This tool requires Excel to be installed, but does not require the ODBC driver for Excel to be installed on your computer. For more information, see https://docs.flexsim.com/en/20.2/Reference/Tools/ExcelInterface/. Excel makes a good example because most people have it, and it's easy to get the driver for it. Connection Strings Different kinds of connections require different connection strings. The following list has an example connection string for a few data sources: Excel Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=Path\To\Excel\File.xlsx Access Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=Path\To\Access.accdb SQLite Driver={SQLite3 ODBC Driver};Database=Path\to\sqlite.db SAP HANA DRIVER={HDBODBC};UID=myUser;PWD=myPassword;SERVERNODE=myServer:30015 Checking for Drivers Note that each connection string specifies a driver, and then additional information. The additional information depends on the driver you are using. In order to determine which drivers are on your system, you need to open the ODBC Data Sources Administrator window. To do that, hit the windows key, and then type ODBC. Then choose the option called ODBC Data Sources (64 bit). If you are running 32-bit FlexSim, open the 32 bit version. Go to the Drivers tab. Here is what my Drivers tab looks like: You can see I have drivers for Access, Excel, SQL Server, and SQLite3. I don't have drivers for SAP HANA. If I did, you'd see a driver named HDBODBC in the list. To access that kind of database, I'd need to install that driver. You can also see that the name of the driver used the the connection string must match exactly to what is shown here. Other Info You may see an exception appear when you test the connection to your database. If the view shows that the connection succeeded, then it has succeeded. The exception happens because FlexSim tries to get a list of tables from the database that it's querying. FlexSim may not guess correctly for your particular data source. That exception can be safely ignored. If you used the old db() commands in the past, consider upgrading to using the Database Connector. It will be orders of magnitude faster to read in an entire table.
View full article
One of the most powerful uses of a Fixed Resource Process Flow is to unify a set of machines and operators as a reusable entity. For example, many factories have several production lines. Simulation modelers often wonder what would happen if they could either open or close more production lines. If you were to open a new line, would the increased output be worth the cost? Or if you were to close a line, would the factory still be able to meet demand? These are the kinds of questions modelers often ask, and by using a Fixed Resource Process Flow, you can answer this question. This article demonstrates how to use a Fixed Resource Process Flow (or FR Flow) to coordinate several machines and operators as a single entity. The example model represents a staging area, where product is staged before being loaded on to a truck. However, most of the concepts that are discussed could be used in any Fixed Resource Process Flow. Creating a Collection of Objects When you set out to build a reusable FR Flow, it is usually best to start by making a single instance of the entity you want to replicate. Often, it is convenient to build that entity on a Plane. When you drag an object in to a Plane, it is owned by the Plane, which makes the Plane a natural collection. If you copy and then paste the Plane, the copy will have all the same objects as the original Plane. This makes it very easy to make another instance of your entity: just copy and paste the first. If the Plane is attached to an FR Flow, then the copy will also be attached to the same Flow, and will then behave the exact same way. In the example model, you will find a Plane with a processor, five queues, and two operators. This makes up a single staging area. The Plane itself is attached to the FR Flow, meaning an instance of the FR Flow will run for the Plane. It also means the Plane can be referenced by the value current . (You may find it helpful to set the reset position of any operators, especially if they wander off the plane at any point during the model run.) Using Process Flow Variables In order to drive the logic in your entity using an FR Flow, you will need to be able to reference the objects in each entity, so that they will be easily accessible by tokens. For example, if items are processed on Machine A, Machine B, and Machine C, in a production line, then you would want an easy way to reference those machines in each line. This is where Process Flow Variables come in. In the example model, you will find the following Process Flow Variables: Every staging area has a Packer, a Shipper, and a Palletizer, each referenced using the node command. Remember that current is the instance object, which is the Plane. Once these variables are in place, you could create an FR Flow like the following: If you ran this model with the Plane shown previously (complete with correctly named objects) and this flow with the shown variables, then the Packer operator would travel to the Palletizer. If you then copied the Plane, you would see that all Packers go to their respective Palletizers, as shown below: Using Variables and Resources Together Sometimes, you may want to adjust the number of operators per line, or even the number of operators in a specific role. To do this, you can again you Process Flow Variables. The sample model includes these variables: The sample model also includes these resources; the properties for the Shipper Resource are shown: Because this resource is Local, it is as if each attached object has its own version of this resource. Because it references a 3D operator, it will make copies of that operator when the model resets. The number of copies it creates will depend on the local value of the ShipperCount variable. To edit the value for a particular instance object, click on that object in the 3D view, and edit the value in the quick properties window. Disabling Entities Often, modelers simply want to "turn off" parts of their model. If that part of the model is controlled by a fixed resource flow, then you can easily accomplish this task. In the example model, you will find the following set of activities: The Areas resource is numeric, and it is global. The Limit Areas activity is configured so that any token that can't acquire the resource immediately goes to the Area Disabled sink. If the token that controls the process dies, then the area for that token is effectively disabled. The example model uses a Process Flow Variable to control how many areas can be active at a time: The Areas resource uses this value to control how many shipping areas are actually active. If this number is smaller than the number of attached objects, then some of the areas won't run. Note that the order the objects are attached in matters. The first attached area will be the first to generate a token in the Init Area source, and so will be the first one to acquire the area. Using Process Flow Variables in the Experimenter/Optimizer Currently, only Global and User Accessible variables can be accessed in the Experimenter. In the sample model, the only variable that can readily be used in an experiment is the TotalAreas variable, which dictates how many areas can be active. This allows the Experimenter or Optimizer to disable lines. To make it possible for the Experimenter or Optimizer to vary the number of Shippers or Packers per Area, the ShipperCount and PackerCount could be changed to Global Variables. You could put labels on the instance object (the Plane) that are read by the variable, like so: Then the experimenter could set the label value on the Plane object that is attached to the FR Flow. The Experimenter would set the label, which would affect the value of the Variable, which would affect how many copies of the Packer were created by the Packer resource. You could do the same for the ShipperCount variable. Sample Model The attached model (usingfixedresources-6.fsm) provides a working model that can demonstrate the principles in this article. It comes with only one Plane object attached to the FR Flow. Here are some things to try with the model: Reset and run the model to see how it behaves with a single area, where that single area has only one Packer and one Shipper. Create a copy (use copy/paste) of the Plane. Reset and run the model again to see how a second area is automatically driven by the same flow. You may need to adjust the TotalAreas variable if the second doesn't run. Adjust the number of Packers and Shippers (using the Process Flow Variables) on each Plane. Reset and run the model to see how adding more packers and shippers affects it. Create many copies of the first Plane (it is best to set the PackerCount and ShipperCount to 1 before copying). Reset and run the model, to observe the effect. Add or remove some staging areas (queues) to an Area. This model handles those changes as well (in the Put Stations On List part of the flow). Try to set up an experiment or optimization, that varies how many lines are active, and how many Packers and Shippers are in each. In general, play around with the sample model, or try this technique on your own. Other Applications This technique can be used to create production/packaging lines, complex machines, or any conglomerate of Fixed Resources and Task Executers. If you follow the methods outlined in this article, you will be able to create additional instances of complicated custom objects with ease. You will also be able to configure your model for use with the experimenter or optimizer.
View full article
FloWorks 22.0.0 is now available (21 December 2021). This version of FloWorks is intended for use with FlexSim 2022. If you are using FloWorks with FlexSim 2021 (LTS) you can upgrade to FloWorks version 21.0.5. If you are using FlexSim 2021 Update 2, you can upgrade to FloWorks version 21.2.1. 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 support@talumis.com. 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 support@talumis.com. Release notes FloWorks 22.0.0 Fixed and updated statistics pins. Tutorials revised and updated (thanks, @Clair!). All bug fixes in FloWorks 21.2.1 below. All bug fixes in FloWorks 21.0.5 below. FloWorks 21.2.1 New: (segmented) flow pipe has option to suppress "Product Out Changed" event from product 0 to initial product. Bug fix: changed wording in tutorial 2 so it can be completed again. Bug fix: FlowVessel and FlowTruck flow item issues fixed All bug fixes in FloWorks 21.0.5 below. Backwards Compatibility Note: The following change may change the way updated models behave. (Segmented) flow pipe no longer fires the "Product Out Changed" event for zero-width layers (e.g. as created by the Pass Product Downstream trigger). FloWorks 21.0.5 Bug fix: when impact event ends, when no recalculation is necessary, the flow object state is now re-determined. Bug fix: SetFlowConveyorSpeed function fixed. Bug fixes to solver: incorrect flow with full tank-type objects. Bug fix: FlowConveyor approximately full/empty issues fixed. Bug fix: FlowConveyor settings (width, speed, ...) could not be set in quick properties.
View full article
In a recent model I was building I needed a case packer that had some special abilities. This "Combiner" is different than a traditional library accessed Combiner because: 1) You can set how many containers can be packed at a time. (In my model 3 cases were packed simultaneously with each cycle. I call these "batches" in my logic. This variable is accessed as a label on the 3D object. 2) It assumes that all the flowitems being packed come from the same port, you can't have multiple sources of flowitems or have a recipe. Although it could be modified to allow for that. 3) It is very easy to set home many flowitems per container. This variable is accessed as a label on the 3D object. This could be changed easily as the itemtype or some other criteria changes while running the model. 4) If the flow of containers or flowitems is delayed, the machine can time out and release a partial batch or partially filled container. I have included a model control GUI so you can manually stop the sources and test this logic. Note the labels associated with max wait time in the object labels again. 5) After a batch of containers and flowitems has been collected, there is a RobotCycleTime that occurs that represents the moving of the flowitems into the containers, this time is ran one time for the entire batch. While this object may not be the final solution for a lot of instances, I believe that it is a good starting point for a lot of objects that will be needed in future models. The Process Flow is well documented to explain the logic. Note that this is an Object Process Flow and all instances will need to be connected to the logic in the process flow. CustomCasePacker.fsm 0
View full article
Lembre-se que para o desenvolvimento desse passo a passo, foi utilizado a versão 2017. Update 1, caso você esteja modelando utilizando outra versão algumas alterações podem ser necessários. Nesse exemplo será construído um modelo que usa listas para relações básicas de roteamento de itens. Os itens serão enviados de três filas para um dos quatro processos.Uma lista de itens (item list) será utilizada para resolver esse problema. As filas irão empurrar os itens para a lista e os processos irão puxar os itens da lista e processa-los. De início será construído um modelo puxado simples,e depois um modelo puxado com restrições e priorizações. Passo 1. Montar Layout Para esse exemplo, crie um novo layout. A Figura 1 mostra quais objetos devem ser adicionados Observe que NÃO há ligação entre as filas e os processos. Figura 1- Layout exemplo 2 Passo 2. Configurar source Na janela de propriedades do source, em inter-arrivaltime coloque exponential (0 ,2.5,0). Figura 2- Inserir inter- arrival time 2.Na aba FLOW, em send to port abra a lista de opções e escolha a opção random port. Figura 3- Sent to port 3. Na aba trigger, adicione uma Oncreation trigger para configurar o tipo e a cor. OnCreation> Data > Set item type and color> duniform(1,3). Figura 4- Configurar tipo e cor Passo 3. Adicionar lists Para adicionar a lógica é preciso criar um item list. Em Toolbox> > Global list> Item list(Figura 5). Figura 5- Adicionar item list Ao clicar em Item list irá abrir janela de propriedades da lista (Figura 6), por agora apenas feche a aba. A sua lista deve estar nomeada como ItemList1. Figura 6- Janela de propriedades Itemlist **Não é necessário definir nenhuma das configurações agora. Apenas feche a janela de propriedades.** Passo 4. Configurar queue Para configurar a queue para empurrar os itens para a lista, clique sobre cada uma das filas> Aba Flow> Send to port> abra a lista de opções> Escolha use list> Push to item list. CONFIRA se o o nome da lista corresponde ao nome da lista que você criou. Figura 7- Push to item list **OBS: Faça o Passo 4 para TODAS as filas** Passo 5. Configurar Processos Para fazer com que os processos puxem da lista, configure cada input de processos para todos os 4 processos. Clique em um dos processos, na aba Flow vá na parte de input, marque a opção pull strategy. Na aba de escolha da estratégia(Pull Strategy) >Use list>Pull from item list. Deixe o campo QUERY em branco. E confira se o nome da lista escolhida é o mesmo da lista que você criou no Passo 3. Figura 8- Estratégia puxada **Obs: Faça o Passo 5 para todos os processors.** Faça um test rápido! Reset seu modelo e confira como estão as entradas e saídas da sua lista, para verificar se até aqui as coisas estão funcionando da maneira correta. Nas propriedades do ItemList1, vá na aba General e clique no botão a esquerda “ View Back Orders”. Figura 9- View Back Orders Sua lista deve estar parecida com a da Figura 10. Mudando apenas os nomes dos processos de acordo como os seus estão nomeados. Figura 10- Janela de pedidos pendentes A Figura 10 representa que os processos começaram a puxar da lista, mas como não há itens que foram empurados para a lista, eles estão aguardando para poderem puxar e se tornarem fulfilled(preenchidos). Execute o modelo (Run) e você perceberá os itens entrando nas filas e sendo empurrados para a lista (View entries-Figura 9) fazendo com que os pedidos pendentes sejam atendidos e então começam a ser processados. Quando um item é empurrado para a lista e existe pedidos pendentes o item será imediatamente puxado da lista. Dessa forma o pedido pendente irá se tornar Fulfilled e será removido da lista de pedidos Back Orders. Eventualmente, todos os processos irão puxar os itens e dessa forma a lista de pedidos pendentes se tornará vazia, já que todos estão em operação. Então a lista de entradas vai crescendo(Figura 11) até que um dos processos termine o processamento e requisite puxar um item da lista. Figura 11- Entradas na lista aguardando serem puxadas Quando os itens são empurrados para a lista, eles são adicionados no fim da lista. Assim se o sistema puxado não utilizar prioridades como parte da sua tomada de decisão, os itens irão ser puxados como FIFO( first-in-first-out), ou seja, seguindo a ordem de quem chegou primeiro sai primeiro. O mesmo acontece com os pedidos pendentes, a primeira máquina que fica disponível puxa o primeiro item que está na lista. Salve seu modelo e ele está pronto para ser executado. ex2.fsm Modelos experimentos Para testar diferentes configurações das operações puxadas faça os seguintes cenários. Cenário 1- Filtrar por tipo de item Considere que um dos processos (Processor 1) pode apenas processar o tipo de item 2. Para vincular essa lógica na simulaçao utilize um Query nesse processo. Clique sobre o processo que deseja restringuir a entrada ao tipo 2 de item, na janela de propriedades, vá em FLOW > Pull strategy > em Query digite a restrição WHERE Type == 2 (Figura 12). Figura 12- Adicionar query para tipo de item Salve o modelo como Exemplo2_cenario1. Reset seu modelo e execute. ex2cenario1.fsm Cenário 2- Puxar pelo LIFO Agora todos os processos puxam seguindo a ordem último a chegar primeiro a sair (LIFO) ao invés do padrão FIFO, o que significa que o item mais recentemente adicionado na lista deve ser o primeiro a ser puxado . Crie essa lógica na simulação, implementando um Query. Abra o arquivo do exemplo 2, e salve como exemplo2_cenario2. Para cada um dos 4 processos faça o seguinte: Clique no processo >vá em FLOW > Pull strategy > em Query no adicionar> ORDER BY> AGE (Figura 13). Figura 13- Lógica LIFO Repita o 1) para TODOS os processos. Salve o modelo e coloque para executar. ex2cenario2.fsm
View full article
[ FlexSim HC 5.1 ] FlexSim HC 5.1 is available. The start page will automatically notify you of the update and allow you to download and install the update from within FlexSim. To manually download the installer log in to your account at www.flexsim.com, then go to the Downloads section. 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. Missing DLL Error when Installing This version of HC requires certain files that should be present on windows if you're up to date on windows updates. If you're experiencing this error or another similar one please refer to this answer for more information. 5.1.0 Release Notes New Features Added a getremainingprocesstime() command. Areas can now be added as members to a shift schedule. Added support for code labels in Appointments table Added ability to resize code snippet windows. Added support for areas as well as locations in the Stop/Resume Flow pick list options. Improved the First Activity Satisfying All Its Requirements pickoption in the Next Activity field. Added pickoptions to easily diplay variables, labels, and table values on the screen. Column width and Row heights of the PCI table are now saved. Added a checkbox dashboard widget. Added more Data Collector pickoptions. Updated the ambulance and helicopter shapes. Added helicopter rotor animation. Added more chair and med station shapes. Added label columns to the Custom Arrivals table Bug Fixes Fixed Based on Simulation Time pickoption not working for weekly tables after the first week. Fixed a bug with undoing after deleting a network node. Fixed the resource utilization box plot when showing multiple periods. Fixed Experiment Variable drop down placement when the panel is scrolled. Fixed model resetting when Flowchart window was opened. Fixed the By Patient's location/area pickoption for the Process Time field so that quotation marks are no longer required. Fixed console errors being thrown by the Start Animation pickoption. Fixed console errors from the Patient's label pickoption for the Next Activity field. Fixed bug when a low priority OffSchedule event happens when a lower priority Lunch request is already queued up. Fixed Stop/Resume pick list error in User Event Trigger. Fixed a bug with reassigning task sequences when a resource goes off schedule and the resource's group is in an Alternate Group. Fixed refresh issues in the Sample Set Filter popup. Fixed a memory issue with the Entrance Criteria pickoption code. Fixed window positioning so they open centered on the application window. Fixed bug in "Based on Nurse Workload" pick list option for Patient Destination field. Fixed Output Raw Data not writing State headers. Improved positioning of ambulances and helicopters after a transport activity
View full article
Top Contributors