FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
FlexSim licenses can either be standalone or network-based. Each license model has its pros and cons. Learn more about these two different license models. You're here because you've chosen network licensing and you're ready to get started. A license manager by any other name FlexSim is licensed using technology from Revenera's FlexNet. FlexNet is one of the top software licensing technologies and is used by many large software companies, including several others in the engineering software space. FlexNet offers two different license managers: lmtools and lmadmin. You decide which platform will work best for your organization's needs. (Spoiler alert: we like lmtools best). lmtools Hosting your FlexSim licenses with lmtools lmtools is a simple utility for creating and managing the licensing service that will serve your FlexSim licenses to your organization's client PCs. This basic utility isn't installed - it is a simple executable. It has no 3rd party dependencies. For maximum security, compatibility, and simplicity, FlexSim recommends using lmtools. Many organizations that add FlexSim to their toolkit already use lmtools for managing their license hosting services for other software, so using lmtools to manage your FlexSim licenses just makes sense. Even if your FlexSim purchase marks the first time your org has set up a license manager, lmtools is a great way to go, and is our recommended license manager. Visit Hosting your FlexSim licenses with lmtools for a complete reference on configuring your license server using lmtools. lmadmin Hosting your FlexSim licenses with lmadmin lmadmin is FlexNet's newer, shinier license manager. It includes a web-based front end, so all the administration is done from your web browser. It is more complex than lmtools, serving both the licensing service and a management front end, and lmadmin relies on Java, which you will need keep up to date with patches and security updates. FlexSim usually does not recommend lmadmin, mainly because of the more complex configuration needed to host and manage the web front end (including additional firewall considerations, an extra username and password, etc.), its reliance on Java, and the fact that many FlexSim users already host other software licenses using lmtools. Visit Hosting your FlexSim licenses with lmadmin for a complete reference on configuring your license server using lmadmin.
View full article
This article is used to aggregate all other licensing articles under one heading. You can use the navigation panel in Answers' right column to navigate between the various licensing articles in this tree. Sharing your licenses License Models Licensing Procedures Licensing Errors FlexSim Feature Limitations by License Type License server - feature pools - only checkout features for license type FlexSim Version Numbering, including how licensing works for a given version number In addition, the following links contain some general licensing tips. These will likely be added to a future article. A few of the items are outdated, but in general the advice is still good. General licensing tips (Mar 9, 2018) License Q&A (Jul 17, 2017)
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
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
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
Trusted Storage FlexSim is licensed using FlexNet's Trusted Storage. Trusted Storage is a secure storage area FlexNet creates on your license server where it keeps encrypted and hashed license information for licensing FlexSim. Before you can activate a FlexSim license to your license server, its Trusted Storage must be configured. This is done by your license server authenticating with FlexSim's main license server. Below we'll cover configuring Trusted Storage on your license server. If you're here looking for instructions for standalone licensing, check out the article Standalone - Configure Trusted Storage. I haven't configured Trusted Storage before - why now? When your license server communicates over the Internet with FlexSim, this initial Trusted Storage configuration happens automatically and invisibly during the course of the license server's first license activation. The first time you activate a FlexSim license to your license server, your license server and FlexSim's main license server authenticate with each other, configuring your local Trusted Storage, and then immediately activating the requested license. In other words: Internet-connected activation = automatic and transparent Trusted Storage configuration. But you're here because your license server can't communicate over the Internet with FlexSim's main license server. Consequently, your Trusted Storage configuration must be completed manually before activating any license. Create a Trusted Storage config request On your license server, in your extracted download folder of FlexSim license server materials, navigate into the folder flexsimserveractutil. Right-click flexsimserveractutil.exe and select Run as administrator. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Generate Request. Enter a valid Activation ID. You can use our special activation ID configure-ts, but any valid activation ID can work. Enter 1 for the Count (seat quantity). Click Browse to select an Output File. Choose a filename for the saved request. We used configure-ts.xml. Press Save. Press Generate. You've just saved a new XML activation request in the location you selected. You can confirm this is a Trusted Storage config request by viewing the saved XML file in a text editor like Notepad. A configuration request will lack the TrustedHostInformation tag. If your configure.xml file contains that tag, that means your Trusted Storage is already configured. In that case, you can move on to the offline license activation steps for your license server. Otherwise, continue configuring your Trusted Storage below. Submit your Trusted Storage configuration request Transfer your Trusted Storage config request XML file from your chosen save location to a computer with Internet access. From your Internet-connected computer, open a web browser and login to any FlexSim Account - even a new guest account will work. Click the Licenses link in the header, then choose Manual XML in the Licenses submenu. Upload your XML request file by dragging it onto the drop zone. Your uploaded XML request will be processed. Upon completion, you will be prompted to download the XML response. Did you get a red error message instead of a green success indicator? A message "Fulfill count exceeded the available seat count" means that Trusted Storage is already configured on your license server. In that case, move on to the offline license activation steps for your license server. Otherwise, continue below to finish configuring your Trusted Storage. Process your manual activation responses Transfer your downloaded XML activation response to your offline license server. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Process Response. Browse to an XML activation response file. Press Process. FlexSim should give you an indication of successful processing of your config request. At this point your Trusted Storage should be fully configured. You are ready to activate your licenses. 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
Top Contributors