Forum Replies Created
-
AuthorPosts
-
minhnt152
ParticipantHi Manjey,
The fill tank is a group of batch process.
We need the scada to collect the order, then check the truck, then verify the station, then fill tank, then re-check tank… And the process will have to continue even if the primary scada server is fail. It can’t be restart from begining. That why we need a redundant server solution.
The PLC also designed to have redundant CPU already.Thanks
minhnt152
ParticipantHi Mikhail,
The source article is: https://www.machinebuilding.net/why-and-where-to-use-redundant-scada-systems
We need the system to not stop if there is a problem with a server. When one server down, the remain server must continue the work smoothly.
For example, while filling the tank for gasoliine truck, the process can’t stop.
Thanks
minhnt152
ParticipantHi Mikhail,
I want it to work automatically, not by manual.
And if we use the communication work in parallel, it will make high data rate on the gateway, which i don’t want.The standby server does not duplicate the primary server’s functions. In that scenario, both servers would have to communicate with the PLCs, thus doubling the load on the PLC network and reducing system performance. A better alternative for a client/server system is one in which only the primary server communicates with the PLCs. The primary server also communicates with the standby server, continually updating the plant’s status. If communication is interrupted, the standby server assumes the primary server has failed and takes over the role as the primary server. When the primary server is repaired and returned to service, it reads the plant’s status from the standby server and resumes its role as the primary server. Data is automatically backfilled and the two servers become synchronised again as the standby server reverts to its former role.
Thanks
minhnt152
ParticipantHi,
We have a system for gasoline depot that manage the gasoline tank and tank fill terminal which has some batch controllers.
There are two servers that works as H-A, they will manage the scada system, call Primary and Secondary servers. At one moment, only one server will communicate with the devices and it will synchronize with the remain server. If the main server (A) go down, the second server (B) will detect and step up to be main server with full function. After A is recover, the (B) still work as main and synchronize data to A.
The server also need to get the order from SQL, to control down to the scada.Thanks
minhnt152
ParticipantHi,
I create a KP for HID access control system, I want to show the picture of card holder based on the card number. So, I will create a webpage that get the “card number” parameter, find image and show.minhnt152
ParticipantHi,
It’s BACnet protocol. In the message, it contains the full address of the device (there are multiple address in one device). I found it’s difficult to locate the device only by address and callnum, because after the initialization, the address won’t appear on the packet.
Thanks
minhnt152
ParticipantHi Mikhail,
Let me check again.
Can I get the list of KP from CommLineSvc?Regards
minhnt152
ParticipantDear,
I also change the type of the kpCallNumDict to List
// protected Dictionary<string, KPLogic> kpCallNumDict;
protected List<KeyValuePair<string, KPLogic>> kpCallNumDict;Thanks
minhnt152
ParticipantDear Mikhail,
The BACnet IP is run in UDP/IP, and if there are BACnet MS/TP controllers connect to server via a BACnet gateway, all the controllers will run through a same IP address.
Your CommUdpLogic only support to process incoming data the first KPLogic, so I must change to process incoming data for all KPLogic of the IPAddress.Origin:
KPLogic kpLogic;
if (kpCallNumDict.TryGetValue(udpConn.RemoteAddress, out kpLogic))
{
// обработка входящего запроса для определённого КП
ExecProcIncomingReq(kpLogic, buf, 0, buf.Length, ref kpLogic);
}
else
{
WriteToLog(string.Format(Localization.UseRussian ?
“{0} Не удалось найти КП по IP-адресу {1}” :
“{0} Unable to find device by IP address {1}”,
CommUtils.GetNowDT(), udpConn.RemoteAddress));
}Change to:
foreach (var _kpLogic in kpCallNumDict.Where(x => x.Key == udpConn.RemoteAddress))
{
var kpLogic = _kpLogic.Value;
ExecProcIncomingReq(kpLogic, buf, 0, buf.Length, ref kpLogic);
}Regards
minhnt152
ParticipantDear Mikhail,
I have changed the archive name to KpBACnet_1.1.0.0.zip.
Regards
minhnt152
ParticipantDear Mikhail,
1. Why do you include ScadaCommCommon.dll and ScadaData.dll into the archive? Is it possible to remove them because they are already exist in the destination directories?
>> The ScadaCommCommon must change, because I have changed some code in the UDPTransport so it can work with BACnet, ScadaData can remove.2. What is the pricing? Which license types are available?
>> The price is 180$/license and full support in 1 years. User can run it in demo mode for 10 minutes, after 10 minutes, need to restart the communication line.3. May be it would be useful if you add version number in the archive name, e.g. KpBACnet_5.0.0.0.zip
>> OK, I will add version to it.Regards
minhnt152
Participantminhnt152
ParticipantThank you
minhnt152
ParticipantHi,
May i know if you will update it soon or not?minhnt152
ParticipantThanks i made it 🙂
-
AuthorPosts