Industry News, Trends and Technology, and Standards Updates

Anderson Kim; Solutions Engineer

Recent Posts

How to customize CCF for LoadPort without Carrier ID reader

Posted by Anderson Kim; Solutions Engineer on Dec 6, 2024 9:00:00 AM

This blog explains an approach that Cimetrix CIMControlFrameworkTM (CCF) developers can use to customize CCF for load ports without any carrier ID readers.

When implementing a loadport, you may implement a derived loadport by inheriting the LoadPort class that includes the Carrier ID reader from CCF.

If the Carrier ID reader is unavailable, you will then need to try modifying the derived loadport in several situations.

Among them:

  • When the loadport does not physically have any Carrier ID Readers.
  • When a Carrier ID Reader is temporarily unavailable.

However, CCF provides a cool configuration parameter to address these challenges without changing the source code.

The rest of this posting briefly shows you how to accomplish this, and how to disable Carrier ID Reader.

How to disable the Carrier ID reader

When the Supervisor is not running, open the configuration file ‘Runtime\Configuration\Config.cfge’ by double-clicking on the file. Please make sure that Supervisor is not running before you move forward to the following because the Dynamic property of the configuration parameter is false.

If the configuration file is not opened automatically with CCF Configuration Editor, run ‘CCF\Bin\Cimetrix.ConfigurationEditor.exe’ and select the configuration file by clicking ‘File - Open’ on the top menu.

Go to the ‘LP1IDReaderAvailable” parameter in ‘FactoryAutomation – LoadPorts’ on the left tree panel. This parameter is for LoadPort 1. So, if you would change the parameter for LoadPort 2, go to ‘LP2IDReaderAvailable’.

Go to the ‘Value’ item in the right property panel and change the value from True to False. Then save the configuration file. Additionally, please apply the same value to the decrypted file ‘ConfigDecrypted.cfgx’.

This change will disable the Carrier ID Reader in the Load Port without changing any source code. Therefore, your derived Load Port can operate without a Carrier ID reader.

How to test it

Then run Supervisor and Operator Interface.

After that, you can enter a Carrier ID yourself manually on the Operator Interface when loading a carrier.

 

In Summary

  • You can disable a Carrier ID reader by changing the configuration parameter ‘LPxIDReaderAvailable’ for Load Port x without changing any source code.
  • You can enter a Carrier ID value yourself on the OperatorInterface.

All are helpful solutions for CCF developers who need to implement Load Port without Carrier ID Reader.

To learn more about this solution and other CCF programming best practices, please schedule a time to talk with a Cimetrix representative.

 

Topics: Industry Highlights, SECS/GEM, Semiconductor Industry, Smart Manufacturing/Industry 4.0, Standards

How to Dynamically Generate ECVs in a CIMControlFramework Implementation

Posted by Anderson Kim; Solutions Engineer on Aug 23, 2023 10:30:00 AM

This blog explains an approach that Cimetrix CIMControlFrameworkTM (CCF) developers can use to dynamically generate ECVs (EquipmentConstant Variables) in source code as a convenient, effective alternative to including them in the default configuration file.

When implementing the GEM interface for equipment, it is often necessary to define EquipmentConstant Variables (ECVs). If the GEM interface is part of a CCF-based equipment control system, you would normally define the ECVs in the Equipment.epj file. However, registering the ECVs with this approach can take a lot of effort in a number of situations. Among them:

  • When you need to register hundreds or even thousands of ECVs;
  • When you need to dynamically register ECVs based on the specific configuration of an instance of the equipment;
  • When you want to register ECVs without changing the EPJ file.

In these cases, dynamically generating the ECVs from the source code easily addresses these challenges.

The rest of this posting briefly shows you how to accomplish this, and how to change and monitor the values of ECVs.

How to generate ECVs programmatically 

After calling ecs.Start() inside Supervisor's Run(), the code sample below generates an ECV.

What you need to be most careful about here is that the ecid and ECV’s name should not be duplicated with other VIDs.

ECV-pic1

Then you can see the newly generated ECV  in the Equipment Constants screen of the OperatorInterface.

ECV-pic2How to change the value of an ECV

The ECV’s value can be updated  through FactoryAutomationServer using the code below.

ECV-pic3

You can then see a message that the ECV’s value has been changed.

ECV-pic4

How to detect the ECV’s value change

If you want to detect changes to the ECV’s value, you can receive a callback  by registering ValueChangedHandler as shown in the code sample below.

ECV-pic5ECV-pic6To Summarize:

  • You can dynamically generate an ECV by calling CreateVariable of CIMConnect;
  • You can change the value of an ECV by calling SetEquipmentConstants of FactoryAutomationServer;
  • You can detect changes in the value of the ECV by calling RegisterValueChangeHandler of CIMConnect.

All are helpful solutions for CCF developers who need to generate ECVs dynamically.

To learn more about this solution and other CCF programming best practices, please schedule a time to talk with a Cimetrix representative.

Contact Us

Topics: Industry Highlights, SECS/GEM, Semiconductor Industry, Equipment Control-Software Products, Smart Manufacturing/Industry 4.0, Cimetrix Products, Standards