FAQ

General

What software do I need to configure/program Regul PLCs?

There is only one software package for both configuration and for programming. The software is called Epsilon LD and could be freely downloaded from our website, tab Software. The software supports programming with any of IEC 61131-3 languages, or with CFC. There is a built-in visualization editor, debugger, simulator.

What is the maximum number of I/O channels that Regul PLCs support?

With the Regul R500/R600 the maximum number of I/O channels is 130 000. Regul R200 is generally used in smaller systems – local control systems or RTUs, where the number of channels is less critical. Maximum number of I/O modules in one rack is 12 for R600, 40 for R500, 70 for R200. Maximum number of I/O racks is 255 for each of the series.

Communications

Can I use fiberoptics with Regul controllers?

Yes, single-mode and multi-mode. The choice of cables between the racks depends on the rack extension modules, ST XX. You can also combine copper cable on one side of the rack and fiberoptic cables on another.

CPU synchronization can be done over copper or fiberoptic cables. Just both CPU modules need to have ports for fiberoptic connection in the latter case. Same applies to SCADA connection.

The limitation is that there are two ports for fiberoptic connection, so in case of redundant CPU sync and redundant SCADA connection, you have to select which one uses copper.

What kind of fiberoptic cables can I use (single/multi-mode, diameter, etc.)?

Everything depends on the type of transceiver you select for your project. Our support team has tested commonly used transceivers and confirmed compatibility for 26 of them (for the use in rack connections). Some models include Avago AFBR-5715APZ / AFCT-5715PZ / AFCT-5715APZ, Cisco GLC-FE-100FX=, Source Photonics SPL-35-03-EBX-IDFM, Etherwan EX-1250TSP-MB4L-A S (more are compatible). Send us an e-mail to support@gp-systems.com for the full list of compatible modules.

Time server, time stamping, GPS

Which GPS antenna is the best for Regul PLC?

Many of the CPU modules of the Regul controllers, in all the series, have an integrated GPS/Glonass receiver. Its purpose is to be able to have an internal time server in the system, with a direct synchronization to the signal from the satellite.

To connect an external antenna you need one with an SMA (SubMiniature version A) connector, and support the following frequencies:

GPS: 1176.45 MHz (L5), 1227.60 MHz (L2), 1381.05 MHz (L3), or 1575.42 MHz (L1)
GLONASS: 1602.0–1615.5 MHz (L1) and 1246.0–1256.5 MHz (L2)

One of the antennas available on the market and tested with Regul controllers is Navilock NL-69AT, available from Conrad: https://www.conrad.de/de/p/navilock-nl-69at-sma-gps-empfaenger-schwarz-378865.html

How time stamping works in the Regul controllers?

Regul PLC CPU modules have built-in time server. Its time can be synchronized to:
1. An external time server.
2. To an internal GPS/Glonass receiver (almost all CPU modules).

Accuracy of the time inside the CPU module is 50 mks. I/O modules are synchronized to the CPU
module time server and also have an internal clock that can keep the time going, although with a smaller precision than it does the CPU module.

In the DI modules, time stamping is done by the module itself with the accuracy of 1 ms. For other modules it depends on the implementation in application, with the most common formula: conversion time in module + 1 ms + 2 bus cycles + 1 task cycle that processes signal.

Accuracy of the time stamping depends on the selected protocol. IEC 104 allows transmission of the information about signal together with the time stamps. OPC UA does time stamping at the moment of transmission. Minimum cycle for OPC UA is 50 ms. This means that if several events happened with this period, they are stamped with the same time.

A workaround could be to have an internal buffer and then using an extra OPC tag for transmitting time stamp previously stored in the buffer.

How to get system time from the controller?

1. Add library “SysTimeRtc”;

2. Declare variables:

VAR_GLOBAL

Time_UTC : ULINT; // Sys Time UTC
Time_Local : RTS_SYSTIMEDATE; // Sys Time Local

END_VAR

3. Add code in program:

//Get Sys Time UTC
SysTimeRtcHighResGet(Time_UTC);

//Convert UTC to Local
SysTimeRtcConvertHighResToLocal(Time_UTC, Time_Local);

//Using of Time Local
Time_Local.wYear;
Time_Local.wMonth;
Time_Local.wDay;
Time_Local.wHour;
Time_Local.wMinute;
Time_Local.wSecond;

How to read events stored in the memory of DI module?

————create structure (DUT) DI_Event_t

TYPE DI_Event_t :
STRUCT
ch:USINT;
state :BOOL;
ts_str:STRING;
END_STRUCT
END_TYPE

————create program DI_Events_Example

PROGRAM DI_Events_Example
VAR
ch:USINT;
e:USINT;
fbton :ton;
events_count:UDINT:=3;
events : ARRAY [1..80] OF DI_Event_t;// :=[(ch:=1,state:=0,ts_str:=’2016-01-01′), (ch:=1,state:=1,ts_str:=’2016-01-02′), (ch:=1,state:=0,ts_str:=’2016-01-03′)];
END_VAR

————paste code in program DI_Events_Example

events_count:=0;
FOR ch := 0 TO 31 DO
IF DI_32_011.Events[ch].Count > 0 THEN //DI_32_011 – module DI in crate configuration
FOR e := 0 TO DI_32_011.Events[ch].Count – 1 DO
events_count:=events_count+1; //counter of events

//events
events[events_count].ch:=ch+1;
events[events_count].state:=DI_32_011.Events[ch].E[e].xValue;
events[events_count].ts_str:=UTCTIMENS_TO_STRING(DI_32_011.Events[ch].E[e].uliTS, TRUE, TRUE);
END_FOR
DI_32_011.Events[ch].Clear(); //clear list of events
END_IF
END_FOR;

Leave us a question