Forum Replies Created
-
AuthorPosts
-
oley
ParticipantI have gaps in the historical data (from couple hours ago) on the main server, but RapidGATE isn’t filling in those gaps.
oley
ParticipantUpdate: I created specific user with the Application role, and try opposite direction: RapidGate on local SCADA.
Now the log looks like:-------------------------------------------------------------------------------- 2026-05-02 09:49:46 Module ModRapidGate 6.1.1.1 started 2026-05-02 09:49:46 Check ModRapidGate registration: Registration key is valid. Expiration date is 02/05/2026. Computer code: =F2ABEFB92DB5AEB9-4AFA2B2EE4EA954E-69CE185AC8AF0D03-08C262988238E2BA-1A67F09752CCC18F-0CD2C7725F4B6C01-F0B7B8E7A118FEEA-E59F5CF46611CD5B-0B5645B04B1D4750-E905B6A2AB8B487E-D617E9425CCA10E2-A4CA3976AC9F1747-397A9F2508AA0055-60CCB8ADAB3A9209-59D39F054257525B-D6185D9A7A70FE16-E1D733A61A4BDD71-94242B73E648DE5E= Registration key: F571B75D9A2A40C6-1FD3E855CB38C3FD-48EDD2EBB6CD2FCA 2026-05-02 09:49:46 Start gatesoley
ParticipantHi,
I’ve found some time to revisit the topic of redundancy.
At one of the objects where GSM communication outages occur, I installed a miniPC running RapidSCADA configured specifically for that object.
And now the question: where should RapidGate be configured? On the main server serving all locations, or on the local SCADA system?
A quick test with RapidGate on the main server doesn’t work:2026-05-02 09:33:23 Error transferring event: Scada.ScadaException: Client is not logged in. Try again later. at Scada.Client.ClientBase.RestoreConnection() at Scada.Client.ScadaClient.WriteEvent(Int32 archiveMask, Event ev) at e.i() 2026-05-02 09:33:24 Error transferring command: Scada.ScadaException: Client is not logged in. Try again later. at Scada.Client.ClientBase.RestoreConnection() at Scada.Client.ScadaClient.SendCommand(TeleCommand command, WriteCommandFlags flags) at e.g() 2026-05-02 09:33:27 Error transferring current data: Scada.ScadaException: Insufficient rights at Scada.Client.ClientBase.RestoreConnection() at Scada.Client.ScadaClient.WriteChannelData(Int32 archiveMask, ICollection 1 slices, WriteDataFlags flags) at e.k()I use admin/scada credentials and secret key copied from the object local SCADA in the connection config.
-
This reply was modified 3 weeks, 3 days ago by
oley.
oley
ParticipantI put this as output formula:
public double SetPowerAll() { double value = CmdVal; SetData(800205, 0, 1); SetData(800204, value, 1); SetData(800205, 1, 1); return value; }and it does not work.
oley
ParticipantHi,
it works indeed with broadcast address 0 on separate device and without polling (only on command).
Now I do not need the loop, but unfortunately the device need this acknowledgment on separate channel.
What do you mean with “The formula looks incorrect. It should return a double value or byte array”? SetPowerAll() is used as an output formula. I will try it for one pair of channels.oley
ParticipantHi,
My example isn’t made up: the energy exchange publishes prices for the entire next 24 hours. I already have tomorrow’s prices and am entering them into the database:
0:00-1:00 100
1:00-1:00 500
…
23:00-24:00 333Now I’m querying the database constantly, comparing the time to the current time, but the simplest solution would be to once enter data with future times into the channel.
I wouldn’t burden the system with queries, and I’d see future data in the table.oley
ParticipantHi,
I have a problem with my fallback trigger.
Would you look on my ACM config:https://ibb.co/yBhJM43w
https://ibb.co/WvFwRSDk
https://ibb.co/Q3PXKnSd
https://ibb.co/6Jt3jdJ4
https://ibb.co/Kc4hhQpf
https://ibb.co/5hY5GjqK
https://ibb.co/S7x3ny1w
https://ibb.co/gLMbVgHHLogs:
2026-03-21 11:00:00 Trigger state “PowerAdjustment\Limit_28 [280120]”: Delay before firing 1 sec
2026-03-21 11:00:00 Trigger state “PowerAdjustment\NoLimit_28 [280120]”: Waiting
2026-03-21 11:00:00 No trigger commands to send
2026-03-21 11:00:00 No trigger events to send
2026-03-21 11:00:00 Trigger state “PowerAdjustment\Limit_41 [410120]”: Delay before firing 1 sec
2026-03-21 11:00:01 Trigger state “PowerAdjustment\Limit_13 [130120]”: Firing
2026-03-21 11:00:01 Send command. Channel 132204
2026-03-21 11:00:01 Sending trigger commands completed
2026-03-21 11:00:01 Sending trigger events completed
2026-03-21 11:00:01 Trigger state “PowerAdjustment\Limit_28 [280120]”: Firing
2026-03-21 11:00:01 Send command. Channel 282202
2026-03-21 11:00:01 Command is enqueued to be sent at 11:05:01. Channel 281208
2026-03-21 11:00:01 Sending trigger commands completed
2026-03-21 11:00:01 Sending trigger events completed
2026-03-21 11:00:01 Trigger state “PowerAdjustment\Limit_41 [410120]”: Firing
2026-03-21 11:00:01 Send command. Channel 412204
2026-03-21 11:00:01 Sending trigger commands completed
2026-03-21 11:00:01 Sending trigger events completed
2026-03-21 11:05:01 Send command with a delay. Channel 281208My calculated channel:
public bool IsPowerNotLimited() { return DataRel(-100).Val > 10; }First command is sent: Send command with a delay. Channel 281208, but no reaction of the trigger on 281208.
-
This reply was modified 2 months ago by
oley.
oley
ParticipantSome update:
I used the same trigger with delayed command to this calculated channel.
Additionally I created another trigger for this calculated channel with two commands which control the switches. I have to test it in my environment.Channel script looks like:
public bool IsPowerNotLimited() { return DataRel(-100).Val > 10; }-
This reply was modified 2 months, 1 week ago by
oley.
oley
ParticipantI’m a bit stuck:
I created a trigger identical to the one I use to limit power, but with a 300-second delay.
The channel with the current power is channel 108.
I linked the command to a new channel (208) of type Output with the formula:IsPowerNotLimited() ? CmdVal : double.NaNpublic double IsPowerNotLimited() { var ret = DataRel(-100).Val > 10 ? 1 : 0; SetVal(CnlNum, ret); return ret; }If the value on channel 108 is > 10, I need to shut down the system by setting channels 802 and 803 to 1.
Do I need to create a trigger for changes to this new channel 208?
oley
ParticipantHi Mikhail,
I will try this.
Thanks!oley
ParticipantMy problem now is that now I become evens which looks like defined channel data event:
21/01/2026 07:07:13 PV TANGO TangoEventCode Defined, 311.000 21/01/2026 07:07:13 PV TANGO TangoEventCode Defined, 310.000 21/01/2026 07:07:13 PV TANGO TangoEventCode Defined, 271.000 21/01/2026 07:07:13 PV TANGO TangoEventCode Defined, 270.000But I create a proper description for my device event in the driver (event is simple code, but has its meaning).
Recent Events +---------------------+----------------+-------------------------------------+ | Timestamp | Tag | Description | +---------------------+----------------+-------------------------------------+ | 20/01/2026 19:08:04 | TangoEventCode | <strong>ODWZB. WE 31</strong> | +---------------------+----------------+-------------------------------------+ | 20/01/2026 19:08:04 | TangoEventCode | POB. WE 18 | +---------------------+----------------+-------------------------------------+ | 20/01/2026 19:08:04 | TangoEventCode | ZAMKNIĘCIE OPERACYJNE ŁĄCZNIKA 1 7 | +---------------------+----------------+-------------------------------------+ | 21/01/2026 07:07:13 | TangoEventCode | ODWZB. ZAB. f<2 | +---------------------+----------------+-------------------------------------+ | 21/01/2026 07:07:13 | TangoEventCode | POB. ZAB. f<2 0 -100270580 2 | +---------------------+----------------+-------------------------------------+ | 21/01/2026 07:07:13 | TangoEventCode | ODWZB. ZAB. f>2 | +---------------------+----------------+-------------------------------------+ | 21/01/2026 07:07:13 | TangoEventCode | POB. ZAB. f>2 0 -8.214282E+11 2 | +---------------------+----------------+-------------------------------------+I want to see the description in rapid scada event table, in column description. Is this possible?
oley
ParticipantHi,
is there a specification of the dat file format?
How to export complete historian data to csv?
Writing an importer to existing DB with ef.core will not be a problem.oley
ParticipantHi Mikhail,
I tried to do this similar to DrvSimulator.
internal static class TagCode { public const string TangoEventCode = nameof(TangoEventCode); }public static List<CnlPrototypeGroup> GetGroups() { List<CnlPrototypeGroup> groups = new List<CnlPrototypeGroup>(); CnlPrototypeGroup group = new CnlPrototypeGroup("Events"); group.AddCnlPrototype(TagCode.TangoEventCode, "TangoEvent"); groups.Add(group); return groups; }DeviceTag eventTag = null; if (DeviceTags != null) { eventTag = DeviceTags[TagCode.TangoEventCode]; } DeviceEvent devEvent = eventTag != null ? new DeviceEvent(eventTag) : new DeviceEvent(); devEvent.Timestamp = eventUtcTime; devEvent.CnlVal = code; devEvent.CnlStat = CnlStatusID.Defined; devEvent.Descr = descr; DeviceData.EnqueueEvent(devEvent);I have created a channel in Scada bound to TangoEventCode tag.
Now I become an event in web app, but this containsDefined, <code>not my description of the event.Do I need to create a channel in Scada? If I use this driver for all my devices I have to gave this tag unique name with device number coded or similar.
I want to see my generated event with the description I created for it.
oley
ParticipantHi Mikhail,
I take a look at RapidGate and another backup strategies.
The link to the English document does not work.
Would you provide a valid link?oley
ParticipantHi Mikhail,
I tried yesterday and have success with type 3. Channel value has changed.
Unfortunately (it’s not so bad) I need 2 triggers: switch opened and switch closed.
Type 2. Channel data has changed fires every time I’m uploading configuration, and another disadvantage: I can’t define range of channels. -
This reply was modified 3 weeks, 3 days ago by
-
AuthorPosts