Find answers to common questions here. Not finding the answer you were looking for? Please send a mail to

Field application update

How to make updates to your live systems

How can I download new Customware to a running system?

Program download with PD 688

If you require new features or program changes in a project, and you want to use a PD 688 as a device for download, then you can do the following steps.


Make the updates you want to your project.

STEP 2: Prepare the downloader PD 688

  • Add a new device as PD 688 to your project assembly and give it a proper name.
  • Connect the new PD 688 to your chosen network, for example IP.
  • Add a visualization for the Configurator (PD_3184-nn - View_for_Configurator) as a Guest view for the new PD 688.
  • Insert the right serial number for the new PD 688 in your VIGO6 project.
  • Build the project.
  • Download the Customware to the PD 688 and see that the download screen shows on the PD 688.
  • Copy the ‘Output’ folder from the project folder in your VIGO6 library to a SD card. You have to place the ‘Output’ folder in the root of the SD card with the name ‘Output’.
  • Insert the SD card in the PD 688.

STEP 3: Use the PD 688 for download

  • Connect the new PD 688 to the running system in the field via the desired network.
  • Switch on power for the new PD 688.
  • Press the button for ‘Config all modules’ and the PD688 will download new customware to all devices in the running system.
  • Your running system now contains the new Customware.

Hardware modules

Tips on the COPP hardware modules and peripherals

Can I protect hardware installed on a motor vehicle?
Indeed you can. Use the PD 690 Automotive Power Protection with the base module BM108. You can connect it to its base module BM018. You can use it with other modules than VIGO6, even with non-PD hardware. For purchase information contact .
Can I work with GPS-positions in VIGO6?
Yes indeed. You have two options: Choose the PD803 COPP DPI which also include a GSM modem supporting 2G/3G and GPRS. Choose the PD947 GPS Navigation Receiver
Which NFC-TAGs work with the PD688 NFC-reader?
You can use:
  • cards
  • bracelets
  • keyhangers
  • stickers
Or any other vessel that contains a TAG of type:
  • NTAG210 (Mifare Ultralight)
  • NTAG213
  • NTAG 214
  • NTAG216.
Which printers work with VIGO6?
You need a PD688 or a PD803 to be able to print from VIGO6. The printer must:
  • support USB
  • support ESC/POS command format
We have tested two printers: EPSON TM-T88V-042 model M244A CITIZEN model CT-P293 Special note for the CITIZEN printer. The switches must be set as in the pictures below in order to function correctly.

IT and Support

When something does not work, look here

Can I get PD-support on my program?
Your PD-contact person can help you sort out what kind of support you need, and what is appropriate for your specific problem. If we need our VIGO6-experts to have a look at your problem, they will typically ask for a support file. Instructions on how to generate a support file:
  1. Right click on the component title and select “Gather support info”.
  2. VIGO6 asks you to confirm, to create a zip-file.
  3. Press yes and wait for the file to finish.
  4. Once VIGO6 has created the file, you can either send it via e-mail or a ftp-link.
My VIGO6-editor says offline, can I keep working?
You can continue working offline on all the content in your local archive. Once you are back online, you can then push your work to the company's archive (signer archive) for safe keeping. You can find the content of your local and company archive in the editor by selecting "open"-> "All types". In addition, the section "Draft types" contains a subset of the local archive. It holds all the types you are the writer of, and that you have not yet pushed to the company archive. It means that anything in the "Draft types"-section  only exists on your local PC.  
Our company firewall is blocking the VIGO6-server, what do we do?
PROCES-DATA hosts your VIGO6 server. It communicates with TCP on port 35349. In short, change the company's firewall settings to allow communication on that port, and you are ok.
What sort of PC do I need to run the VIGO6-editor?
We have the following minimum recommendations for the workstation used to run the VIGO6-editor:
  • Minimum 3,6 GHz CPU
  • Minimum 6 GB RAM
  • A SSD-disk
Especially the SSD disk is important for the speed. We have seen 50-60 times speed improvements between using a non SSD-disk and a SSD-disk.


Understand the elements of VIGO6 and the COPP programming language.

Can I work with 0-10V inputs?
While PROCES-DATA has designed the modules for 4-20mA inputs and outputs, it is still possible to use a 0-10V input. Below is an example of a 0-10V level input transforming the 0-10V input signal to a length. We have implemented basic error handling, which means that it will signal to its supervisor if it has an error.  You can operate it in "manual feedback", "auto" and "disabled". For more info on the built in functionality of process components see tutorial 7 . The component is PD-18096 and in the documentation section, you can see what it does. Basically, it reads a voltage and converts it to meters. We have also created a visualization for the component (PD-18048) and a visualization for the assembly (PD-18117). But, you have the possibility to create your own too. As we have mentioned in the documentation for the component, you can only locate it in a PD850. Additionally, you need to set operator rights in order to edit and see the visualization. If you do not add any operator control, you will likely not see any fields on the visualizations we have made.  That is why I have added component PD-17553 Display interface control to the assembly. In effect, I can add the login or logout button to my assembly visualization. This enables me to play around with the operator rights. To see how you can use the component, there is a project with the GUID PD-18108. If you want to interface to this component in your overall control component, then do it as a “supervisor-servant”-connenction.  Below you see how to access the “level in metres”    
How do I change the automatically assigned channels?
First locate your components into devices – which will give you the automatic configuration. The method is that the first output you add gets the first output channel. The first input you add gets the first input channel etc. The system only allocates to an I/O channel, when all I-channels are full. You can change the allocation:
  1. Find the Hardware interface of the component.
  2. Right click and then select “Assign hardware interface to channel”.
If you have “filled” all channels in the device, you can start by clearing the channel number on a few of the components, so you have space to move around.
How do I change units? I would like to have volume in litres and flowrate in either m3/h or L/min.
Using one of the predefined "Quantity <-> local units relation table" All units in VIGO6 are stored as SI-units but can be displayed as any derived unit you want. Volume in Litres and flow rate in litres pr second are already defined and are e.g. used in the “quantity <-> local units relation table” PD_12849 Europe_metric_system_MID. So if you select that one in both project and editor, you will work in litres instead of m3.   Creating your own derived quantity If you want eg litres pr minute, you first need to create your own local unit. Open PD_13598 Volume_flowrate_l/s. Rightclick and select “create new type” now rename this new type to “Volume_flowrate_l/minute” and adjust the symbol to “l/m” and the scale to 60000 (1000 to go from M3/s to l/s and another 60 to go from l/s to l/m) You then need to create your own “quantity <-> local units relation table”. Open PD_12849 Europe_metric_system_MID. Right click and press “create new type”. Rename to eg” MYCOMPANYNAME_europe_metric_system” Then you right click on  “VolumeFlowRate” and select “Add local unit type” and choose the “volume_flowrate_l/minute” you just created. And then you press on the radio button next to your own unit.

The final step is then to select this new “quantity <-> local units relation table” in your project(right click on the project name and select “quantity <-> local units relation table”). You should also add it  in your editor (set on the setup screen).

How do we design our VIGO6-program?

Overall design

In general PD recommends to create components for “logical functions”. As an example , please see the below component structure for a milk tanker system. By following this method, you can use a broad range of physical components such as pumps and valves. You can even use a combinations of them, without having to change any program code.  We have made a demo-project PD_17604-02 that implement the described component structure.  

Using methods to reduce number of program lines

Sometimes you find that a method becomes so large that you find it difficult to read. In that case, you have the option to create methods within the component, that you can call from your “too large” method. An example is functionality used in many places. Another example is to make a method for each state in a state machine. In the end, remember that you can make a supervisor/servant-connection from one component to another. As a result, you can get access to the methods and data in another component.  
I am not sure whether I need relay outputs or 1A DC outputs. How do I proceed?
In VIGO6, you do not need to know the specific final design of your outputs, or inputs for that matter. You can develop all your control code without deciding which type of digital output to use. In your control component, you add a connector or servant proxy to ” PD_2824-xx - Digital_output_base”. Now your control code can interface to any of the decendants of the digital output_base. This is illustrated in green colour in the inheritance diagram below.   Now you can write your control code that controls the (generic) output. You can also see tutorial 1: Once you have made the decision about the type of output, you can proceed. Let us assume that you have selected a relay output. In your assembly you simply:
  1. Add the relay output component(PD-2825) and your control component.
  2. Connect the two
  3. Locate the relay and contorl component in PD850 (or in another suitable device)
You can also see tutorial 2:  
I have used VIGO5. Is it easy to move to VIGO6?
The programming language in VIGO6, called COPP, is similar to PROCESS-PASCAL, so this part should be no problem. And the VIGO6 platform contains many improvements that will make development easier, including:
  • In VIGO6 you build and test functionality one time, and then you can use it again. No copy paste - you just add the component to your assembly.
  • In VIGO6 you have a lot of premade components that you can use in your project. It can be a pump valve or flow meter components.
  • In VIGO6, you tie the visualisation to a component or assembly, and you can reuse it.
  • In VIGO6, you have better options for maintenance of existing systems. There are no settings done directly on the modules - as was the case in VIGO5. As a result, when you locate your project for the system, you know what is running, can make the updates you want, and then build and download the new program.
  • In VIGO6 you can replace a faulty module on-the-fly. You simply remove the faulty module and plug in a new one, type in the Serial Number of the new module and you are back in business.
See also advantages in VIGO6.
Is it possible to predefine users in a VIGO6 project?
While we suggest to use the NFC-reader in the PD688 display unit for easy login, you can also predefine users. We have created a control component  (PD_17553) and visualisation (PD_18202)that allow you to create 6 default users pr display unit pr project. These are instance constants in the control component, so once you have added the component to your project you simply define the default users you want. And of course remember to locate the component into the display unit. The user logs in with username + password OR with userID + password. Password and Usename is a (text)string. The string value is entered as plain text in the “AdaptString” cell. See example for Operator 0. NoOfElements is the string length, 0,1,2,3 …  is the elements of the string. So since NoOfElements is 20, the password can be up to 20 characters long.

Tip: To add the visualization, you need to find the  get/set method of the “Operator_log_in” (see the attached screendump)

Please explain more about the advantages of the supervisor/servant-model

How does it work?

You can find servant proxys in the subcomponents. They have an X as its icon. They create a communication channel between a supervisor and servant component. In the model, one supervisor can control many servants. But a servant can only have one supervisor. If you need more than one component to control another component, then you can add a connector. It is important to notice that inputs and outputs in VIGO6 are components too.  You can create a connector in the section “connection to external components”. The connector is a different way of communicating between two components. You have no “automatic notification” - as you have in the SUP/SERV model.


The data from the servant in your supervisor is validated by VIGO6. This means that you will get “invalid” if your servant component is not able to communicate. Another advantage is that the supervisor is automatically notified by the notification model, whenever there is a change in the data of the servant. In practice, the model updates the "actual" register and calls the method “calculate actual” in the supervisor.  So you don't need to ask the servants all the time about their status and data, as they will tell you themselves.

More information

To learn more about the notification model, see tutorial 4. For further information and inspiration of what the model can do for you, please check out tutorial 8. In that tutorial a servant exposes its error state and control condition of its servant. Its state is the sum of its own state and the state of its servants. This is a way to create an simple monitoring system that guides you to where the problem is. To learn more about connectors, see tutorial 1, step 5.


Tips and tricks on building awesome visualisations for your components and assemblies

Can I change the default keyboards?

Yes you can. Please see the attached guide, where you will get detailed instructions on how to create your own keyboard.

How can I add a button in a view that opens another (full screen) view of my choice?
Have a look at tutorial 6: It explains how to add either standard buttons  or custom made buttons NB! The view always opens in its built in size. It means, there is no “show on full screen”-mode. But as long as you design your view for your maximum screen size you will get the effect you want.
How do I create a swipe-view?
A swipe view consists of a number of frames that the user can swipe between. The program code can determine which frame to show on left or right swipe. By default, the display will show the first frame in the view list. The order that you add the frames to the view list, determines the swipe order. Each frame has a “Show” property when you add it to the view list. If  you haven't ticked the actual logged in users rights  in the frames list, the swipe will skip this frame and jump to the next visible frame.  

For control components:

First create a “basic view” based on PD_11813 - Comp_view that has the size you want and that contains the elements you want on all views. Examples are headers and buttons, but do not bother with the forward or back arrow – they will come automatically. Build each individual frame for the swipe using your “basic view” as your template. Build your swipe by using this view as your base:  PD_15398 Basic_swipe_view_for_component. Afterwards, place all the individual frames in the view list of this view. Remember to set the size of this view to the same size as you selected for your “basic view”.  

For assemblies:

Same as control components, but create a “basic view” based on PD_13556 - Asm_view and build your swipe by using this view as your base:  PD_15452 Basic_swipe_for_assembly. The first two elements in the view list for the PD_15398 and PD_15452 are buttons to swipe left or right and they work automatically. The first frame in the view list will be shown first, and then the second etc. FYI: Process components have a predefined set of frames with pre-programmed “swipe-logic”. They are based on  “PD_15399-17 - Swipe_View_for_Process_component_100_x_75”. See tutorial 7 for examples on how they work. Process assemblies (as e.g. valve or pump) have a special swipe-control which give an “assembly process component” the same swipe-logic as a process component. They are based on “PD_15453-15 - Process_swipe_for_assembly”.
How to set language and operator access rights for visualization and printouts?
A project may have more than one device for visualization and printing. Each device may use one language, and a project can use up to four different languages. You can set Language and user access rights in each device, and in different ways depending on the device:
  1. Fixed in the program to default.
  2. Fixed in the program via Instance constants or set via program.
  3. Login via a visualization where the operator enters his credentials.
  4. Login by using NFC.


If you don't want to restrict any user access, or use any translations, the default setting is Language = 1. If you haven't defined language 1 in the project, the system will show texts as you wrote it in the program. Furthermore, set user access rights to all rights. There are no restrictions in what you can show, edit, or print.


If you must set the language and user access rights to specific values, then you must locate PD_17553-xx - Display_interface_control in the device. Furthermore, you must locate one for each kind of presentation interface, which can be a screen or printer. This is the default setting when you use the PD_13619-xx - PD688_complete assembly. For other devices, you must add and locate the Display_interface_control component. Now you can set the power-on Language and User access rights through the instance constants in the figure below: Automatic_Logout_at_StartUp must be True. Set Logout_language_index to your prefered language. Set Logout_operator_rights for the presentation interface. Or, you can set the Language in your program: Create a connector to the Display_interface_control component and write the following line: Display_interface_control.Display_interface_Language_index.Language_index:= 3 (1 to 4) The value you assign may be a constant (3 in this example), or a variable. As always, remember to connect the connector in your control component.


When you add the PD_17553-xx - Display_interface_control to a device, then you can add a visualization for this component: PD_18202-xx - View for operator define. Through this visualization, the operator can enter his credentials and setup the rights and language as defined in the operator array. You can cover the login view by the drawing “PD_18207-xx ca_Cover_login_logout_button”. Remember to disable the hit-test: The Instance constant Operator_array defines the rights, language, name, password and ID for a group of operators. If you want more information, see the documentation for PD_17553-xx - Display_interface_control. If you use the PD_13619-xx - PD688_complete assembly, visualizations for Logged-in user and Printer setup are already included in the PD_17616-xx - Setup_PD_688_pushbutton visualization. They are individual swipe frames, where you can see the operator access rights and select a Language. In this way, you can have individual Language settings for visualization and printouts. PD_17552-xx - View_for_PD_688_active_operator_data: PD_20658-xx - View_for_PD_688_printer:


Using NFC login is possible for a PD 688. The default setup for setting the language is that both the Display (visualization) and the Printer (printouts via USB) are set to the same language, when a user is logs in with an NFC card. The specific language to set is stored on the NFC card. This is the default setting when you are using the PD_13619-xx - PD688_complete assembly. However, you may wish that any login via NFC will only affect the visualization and the printouts should always have the same language. You select it through the Instance constant NFC_login_actions in the PD_15627-xx - PD688_NFC_component. Default setting is that the system sends NCF login information to both Screen and Printer. You can now select that the Printer presentation interface is not informed, NFC_login_actions[Printer] = False, and then you can configure your settings for the Printer presentation interface as described in section ‘2’ above.
I need to add a variable that will display a blinking message on the user interface when a given variable is TRUE. How do this?

This can be done in VIGO6 via a pre-built component.

Once I open a new screen with a touch button, it opens up a screen on top of another screen without closing the original screen? This creates a stack of screens, is this normal?
Yes this is “as designed”. We have not included close buttons as default on the views because:
  • They take up space, and some visualizations will need to utilize every available pixel for other purposes.
  • If a view is set as “non closeable” it makes no sense to have a close button on it.
But of course you have several options to change the default behaviour of the screens. In the implementation of the “button that opens a view” you can set behaviours such as “ close when parent closes”. There are also two close buttons available:
  • PD_18158-01 - Close_all_windows_button (closing all windows EXCEPT guest views  that youhave marked “Non closeable” in the project/assembly) – a button with a red circle
  • PD_18157-01 - Close_window_button (closes only the window it is located on- as long as you haven't marked the window as “Non closeable”) – a button with a red X.
You can change the size of the buttons by the scale factor. And if you want to have other symbols you can clone the buttons and choose other images. To create your own design, just clone our button and replace the picture with another of your own choosing You must add these two buttons as “Drawing” on the view list. Also : in your project, you can define behaviours of your “start screen”. An example is "non-closeable".