public void StartS7VPLCISOServer(string VPLCIP)
 {
     try
     {
         S7VPLCISOServer = new IsoToS7online(false, S7VPLCISOServerPort);
         IPAddress localhost = "127.0.0.1".ToIPAddress();
         IPAddress address   = VPLCIP.ToIPAddress();
         S7VPLCISOServer.start(S7VPLCISOServerName, localhost, S7VPLCTSAPS, address, 0, 1);
     }
     catch (Exception)
     {
         throw;
     }
 }
Example #2
0
        private List <S7Protocol> AddStation(IReadOnlyCollection <S7Protocol> adding)
        {
            var ret = new List <S7Protocol>();

            if (adding == null)
            {
                return(ret);
            }
            try
            {
                log.Info($"=== Adding S7 PLCSim List ===");
                foreach (var item in adding)
                {
                    var  tsaps = new List <byte[]>();
                    byte tsap2 = (byte)(item.Rack << 4 | item.Slot);
                    tsaps.Add(new byte[] { 0x01, tsap2 });
                    tsaps.Add(new byte[] { 0x02, tsap2 });
                    tsaps.Add(new byte[] { 0x03, tsap2 });

                    IsoToS7online srv = null;
                    try
                    {
                        srv = new IsoToS7online(false);
                        var ip       = IPAddress.Parse(item.Ip);
                        var err      = string.Empty;
                        var srvStart = srv.start(item.Name, ip, tsaps, ip, item.Rack, item.Slot, ref err);
                        if (srvStart)
                        {
                            var conn = item.Connect();
                            if (conn)
                            {
                                srv.DataReceived = item.DataReceived;
                                s7ServerList.TryAdd(item.Ip, srv);

                                ret.Add(item);
                                item.ErrorHandler = new Action <string>((ipp) => ErrorHandler(ipp));

                                log.Info($"OK, {item.ToString()}");
                            }
                            else
                            {
                                srv?.Dispose();
                                srv = null;
                                item?.Dispose();
                                log.Warn($"NG, {item.ToString()}");
                            }
                        }
                        else
                        {
                            log.Warn($"NG({err}), {item.ToString()}");
                        }
                    }
                    catch (Exception ex)
                    {
                        srv?.Dispose();
                        srv = null;
                        item?.Dispose();
                        log.Error($"ERR, {item.ToString()}", ex);
                    }
                }
                log.Debug("==============================");
            }
            catch (Exception)
            {
                throw;
            }
            return(ret);
        }