コード例 #1
0
 static void CreateHandles()
 {
     hWriteColumn = ads.CreateVariableHandle("MAIN.ExcelInfo.ColumnNumber");
     hColumnName  = ads.CreateVariableHandle("MAIN.ExcelInfo.ColumnName");
     hReady       = ads.CreateVariableHandle("MAIN.ExcelInfo.bReady");
     hexcelpath   = ads.CreateVariableHandle("MAIN.ExcelInfo.path");
 }
コード例 #2
0
 public AdsKid(TcAdsClient MOM, int KidIndex)
 {
     LastPolled.Start();
     if (!Connected)
     {
         try
         {
             this.Mom           = MOM;
             this.kidIndex      = KidIndex;
             TargetPosAddr      = MOM.CreateVariableHandle("MAIN.Kid[" + kidIndex + "].targetpos_FromMom_Raw");
             CurrentPosAddr     = MOM.CreateVariableHandle("MAIN.Kid[" + kidIndex + "].HomedPosition_toMom");
             ModeVelAddr        = MOM.CreateVariableHandle("MAIN.Kid[" + kidIndex + "].ModeVel_FromMom");
             ModeAccelAddr      = MOM.CreateVariableHandle("MAIN.Kid[" + kidIndex + "].ModeAccel_FromMom");
             ModeDecelAddr      = MOM.CreateVariableHandle("MAIN.Kid[" + kidIndex + "].ModeDecel_FromMom");
             DeadManPressedAddr = Mom.CreateVariableHandle("MAIN.Kid[" + KidIndex + "].RMT_DeadManPressed");
             ScalingIntAddr     = Mom.CreateVariableHandle("MAIN.Kid[" + KidIndex + "].ScalingNumber");
             MomControlAddr     = Mom.CreateVariableHandle("MAIN.Kid[" + KidIndex + "].CheckIn.MomControl");
             string checkStr = MOM.ReadAny(TargetPosAddr, typeof(int)).ToString();
             //  TcAdsSymbolInfoLoader tcl = MOM.CreateSymbolInfoLoader();
             // TcAdsSymbolInfo tci = tcl.FindSymbol("MAIN.Kid[" + KidIndex + "].SCALINGINT");
             currentPosition = int.Parse(MOM.ReadAny(CurrentPosAddr, typeof(int)).ToString());
             targetPosition  = currentPosition;
             Connected       = true;
         }
         catch
         {
             Connected = false;
             throw;
         }
     }
 }
コード例 #3
0
ファイル: MySQL.cs プロジェクト: Arpad1111/PLC-projekt
 private void CreateHandles(TcAdsClient ads)
 {
     hDB       = ads.CreateVariableHandle("MAIN.ConnectDB.DBInfo.MYSQLConnectionInfo.DB");
     hServer   = ads.CreateVariableHandle("MAIN.ConnectDB.DBInfo.MYSQLConnectionInfo.server");
     hUser     = ads.CreateVariableHandle("MAIN.ConnectDB.DBInfo.MYSQLConnectionInfo.user");
     hPassword = ads.CreateVariableHandle("MAIN.ConnectDB.DBInfo.MYSQLConnectionInfo.password");
 }
コード例 #4
0
ファイル: DBManager.cs プロジェクト: iautomationeu/DBManager
        private void SQLLiveDataDump()
        {
            int    nVar = ReadNSqlTypes();
            string queryF;
            string query = "INSERT INTO " + SchemaName + "." + TableRT + " (";

            //ManageTime
            string date = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");

            string queryT  = "'" + date + "'";
            var    SQLList = GetPLCSymbolsLiveSQL();

            //Get columns Names
            string NameCol      = string.Join(" , ", SQLList.ToArray());
            string NameColClean = "RecordTime ," + cleaner(NameCol);
            string queryN       = NameColClean + ") VALUES ( ";

            query += queryN + queryT;

            foreach (string TagSQL in SQLList)
            {
                string value = adsClient.ReadAny(adsClient.CreateVariableHandle(TagSQL.ToString()), typeof(int)).ToString();
                query += (", '" + value.ToString() + "' ");
            }
            queryF = query + ");";
            insertinsql(queryF);
            //listBoxDBLog.Items.Add("Row inserted with data from" +date);
        }
コード例 #5
0
        private void buttonConnect_Click(object sender, EventArgs e)
        {
            // luodaan AdsClient-olio yhteyttä varten
            adsClient = new TcAdsClient();
            // otetaan yhteys TwinCAT PLC:hen portin 851 kautta
            adsClient.Connect(851);

            // luodaan PLC:n muuttujiin viittaavat "osoittimet"
            startHandle = adsClient.CreateVariableHandle("MAIN.start");
            stopHandle  = adsClient.CreateVariableHandle("MAIN.reset");

            // Luodaan tapahtumankäsittelijä. Parametrina näyttöä päivittävän metodin nimi
            adsClient.AdsNotification += new AdsNotificationEventHandler(UpdateVariables);

            // avataan Ads-stream (luettava byte-määrä pitänee antaa parametrina
            this.adsStream = new AdsStream(24);
            binReader      = new BinaryReader(this.adsStream);

            /*
             *  timeHi: UDINT;      // aika
             *  timeLo: UDINT;	        // aika
             *  measurement1: REAL;	// mittaus 1
             *  measurement2: REAL;	// mittaus 2
             *  measurement3: REAL;	// mittaus 3
             *  counter: INT;			// juokseva numero
             *  arrayValue: INT;		// jotain
             * */
            measurementDataHandle = adsClient.AddDeviceNotification("MAIN.measurementData", this.adsStream, 0, 24,
                                                                    AdsTransMode.Cyclic, 100, 0, null);


            buttonConnect.Enabled  = false;
            buttonSetSR1.Enabled   = true;
            buttonResetSR1.Enabled = false;
        }
コード例 #6
0
 /// <summary>
 /// 写单个D-INT(PLC定义的INT和DINT类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <param name="values">数值</param>
 /// <returns></returns>
 public bool WriteSingleIntD(TcAdsClient tac, string address, int values)
 {
     try
     {
         int NUMBER = tac.CreateVariableHandle(address);
         tac.WriteAny(tac.CreateVariableHandle(address), values);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
コード例 #7
0
 public bool ReadBool(string pou, string variableName)
 {
     try
     {
         var hVar         = _tcClient.CreateVariableHandle(pou + "." + variableName);
         var readVariable = _tcClient.ReadAny(hVar, typeof(bool));
         _tcClient.DeleteVariableHandle(hVar);
         return(bool.Parse(readVariable.ToString()));
     }
     catch (AdsErrorException)
     {
         Debug.LogError("TC Read Error - Bool" + pou + "." + variableName);
         return(false);
     }
 }
コード例 #8
0
        /**
         * Reads one variable from the PLC. The variable must be declared as a REAL.
         *
         * Input:
         * tcAds - TwinCat ADS client object
         * var - The variable name (as a string) to be read from the PLC. E.g "MAIN.var1"
         * vartype - The variable type as declared in the PLC. REAL is the only supported variable type.
         * More types can be added by making changes where appropriate.
         *
         * Output: Floating value representing the value in the PLC.
         *
         **/
        static float readByString(TcAdsClient tcAds, string var, string vartype)
        {
            int hVar = 0;

            try
            {
                hVar = tcAds.CreateVariableHandle(var);
            }
            catch (Exception err)
            {
                Console.WriteLine(err);
            }
            if (vartype == "REAL")
            {
                // creates a stream with a length of 4 byte
                AdsStream    ds = new AdsStream(4);
                BinaryReader br = new BinaryReader(ds);
                tcAds.Read(hVar, ds);
                try
                {
                    tcAds.DeleteVariableHandle(hVar);
                }
                catch (Exception err)
                {
                    Console.WriteLine(err);
                }

                return(br.ReadSingle());
            }
            else
            {
                Console.WriteLine("Error: Variable type not implemented!");
                return(0.0F);
            }
        }
コード例 #9
0
        //TcAdsClient tcClient = new TcAdsClient();
        //AdsStream dataStream = new AdsStream(4);
        //AdsBinaryReader binReader = new AdsBinaryReader(dataStream);

        public bool writeToPLCInt(string sName, int iValue)
        {
            TcAdsClient     tcClient   = new TcAdsClient();
            AdsStream       dataStream = new AdsStream(4);
            AdsBinaryReader binReader  = new AdsBinaryReader(dataStream);
            int             iHandle    = 0;

            tcClient.Connect(851);
            iHandle = tcClient.CreateVariableHandle(sName);

            try
            {
                tcClient.WriteAny(iHandle, iValue);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                tcClient.DeleteVariableHandle(iHandle);
                tcClient.Dispose();
            }

            return(true);
        }
コード例 #10
0
        public bool writeToPLCString(string sName, string sValue)
        {
            bool            bret       = true;
            TcAdsClient     tcClient   = new TcAdsClient();
            AdsStream       dataStream = new AdsStream(100);
            AdsBinaryReader binReader  = new AdsBinaryReader(dataStream);

            int iHandle = 0;

            tcClient.Connect(851);
            iHandle = tcClient.CreateVariableHandle(sName);

            try
            {
                tcClient.WriteAnyString(iHandle, sValue, sValue.Length, Encoding.Default);
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                bret = false;
            }
            finally
            {
                tcClient.DeleteVariableHandle(iHandle);
                tcClient.Dispose();
            }

            return(bret);
        }
コード例 #11
0
        public static void WriteBusQueue(List <string> list)
        {
            try
            {
                WriteTwincat("GVL.EraseTable", true);

                TcAdsClient client = new TcAdsClient();
                client.Connect(amsnetid, Convert.ToInt32(amsnetport));
                int handle = client.CreateVariableHandle("GVL.DataFromBus");

                foreach (string el in list)
                {
                    AdsStream       stream = new AdsStream(500);
                    AdsBinaryWriter writer = new AdsBinaryWriter(stream);
                    writer.WritePlcString(el, 500, Encoding.Unicode);
                    client.Write(handle, stream);
                    stream.Dispose();
                    writer.Dispose();
                    Thread.Sleep(10);
                }

                client.DeleteVariableHandle(handle);
                client.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine("BusWrite: " + ex.Message);
            }
        }
コード例 #12
0
        public int GetHandle(string name)
        {
            if (IsConnected() == false)
            {
                throw new Exception("ADS connection is not established in UlTcAdsClient::GetHandle");
            }

            lock (criticalLock)
            {
                if (handles.ContainsKey(name) == false)
                {
                    try
                    {
                        int handle = client.CreateVariableHandle(name);
                        handles.Add(name, handle);
                    }
                    catch (Exception e)
                    {
                        string str = string.Format("Occurred exception({0}) in UlTcAdsClient::GetHandle", e.ToString());
                        throw new Exception(str);
                    }
                }
            }

            return(handles[name]);
        }
コード例 #13
0
ファイル: WoopsaAdsServer.cs プロジェクト: xxGL1TCHxx/Woopsa
        public bool IsHeartBeatAlive()
        {
            try
            {
                AdsStream       dataStream = new AdsStream(4);
                AdsBinaryReader binReader  = new AdsBinaryReader(dataStream);

                int iHandle = 0;
                int iValue  = 0;
                iHandle = _tcAds.CreateVariableHandle("TwinCAT_SystemInfoVarList._AppInfo.OnlineChangeCnt");

                _tcAds.Read(iHandle, dataStream);
                iValue = binReader.ReadInt32();
                dataStream.Position = 0;
                if (iValue != _onlineChangeCount)
                {
                    _onlineChangeCount = iValue;
                    isHierarchieLoaded = false;
                }
            }
            catch (Exception e)
            {
                DiagnosticWindow.AddToDebug(e.Message);
                return(false);
            }
            return(true);
        }
コード例 #14
0
 public void ConnectPLC()
 {
     adsClient = new TcAdsClient();
     AMSNETID  = Config.Instance.AMSNETID;
     PORT      = Config.Instance.port;
     try
     {
         adsClient.Connect(AMSNETID, PORT);
         ReceiceHandle  = adsClient.CreateVariableHandle(Config.Instance.ReceiceHandle);
         SendHandle     = adsClient.CreateVariableHandle(Config.Instance.SendHandle);
         timer1.Enabled = true;
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
コード例 #15
0
 public bool GetSmokeFlag()
 {
     try
     {
         int          handle_g_SetState = tcclient.CreateVariableHandle("MAIN.smokeFlag");
         AdsStream    dataStream        = new AdsStream(1);
         BinaryReader binRead           = new BinaryReader(dataStream);
         tcclient.Read(handle_g_SetState, dataStream);
         dataStream.Position = 0;
         smokeflag           = binRead.ReadBoolean();
     }
     catch (Exception)
     {
         MessageBox.Show("ADS read value  smokeFlag error");
     }
     return(smokeflag);
 }
コード例 #16
0
        private void DateTime_Load(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;

            client = new TcAdsClient();
            client.Connect(851);
            try
            {
                htime1 = client.CreateVariableHandle("MAIN.time1");
                hdate1 = client.CreateVariableHandle("MAIN.date1");
                hdate2 = client.CreateVariableHandle("MAIN.date2");
            }
            catch (Exception err)
            {
                MessageBox.Show("DateTime Form load " + err.Message);
            }
        }
コード例 #17
0
ファイル: Form1.cs プロジェクト: WoSea/WindowsFormsLightDemo
        private void Form1_Load(object sender, System.EventArgs e)
        {
            try
            {
                adsClient = new TcAdsClient();

                // PLC1 Port -  TwinCAT 3=851
                adsClient.Connect(851);

                intStart  = adsClient.CreateVariableHandle("GVLLighting.StartLight");
                intStop   = adsClient.CreateVariableHandle("GVLLighting.StopLight");
                intStatus = adsClient.CreateVariableHandle("GVLLighting.LightingStatus");
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }
コード例 #18
0
        static void Main(string[] args)
        {
            TcAdsClient     tcClient   = new TcAdsClient();
            AdsStream       dataStream = new AdsStream(4);
            AdsBinaryReader binReader  = new AdsBinaryReader(dataStream);

            int      handle = 0;
            int      iValue = 0;
            int      exValue = 0;
            string   variable, adres;
            DateTime now = DateTime.Now;

            Console.WriteLine("Podaj adres serwera ADS: ");
            adres = Console.ReadLine();
            Console.WriteLine("Podaj  nazwe zmienna do zapysywania w bazie danych: ");
            variable = Console.ReadLine();
            FileStream   File   = new FileStream("data.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter writer = new StreamWriter(File);

            writer.WriteLine(adres + "  801  " + variable + "    " + now.ToString("F"));

            try
            {
                tcClient.Connect(adres, 801);

                handle = tcClient.CreateVariableHandle(variable);

                Console.WriteLine("Czekam na znak");

                do
                {
                    tcClient.Read(handle, dataStream);
                    iValue = binReader.ReadInt32();
                    dataStream.Position = 0;
                    if (iValue != exValue)
                    {
                        writer.WriteLine(iValue + "    " + now.ToString("F"));
                    }

                    Console.WriteLine("Aktualna wartosc wynosi: " + iValue);

                    exValue = iValue;
                } while (Console.ReadKey().Key.Equals(ConsoleKey.Enter));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + " xdddd");
            }
            finally
            {
                writer.Close();
                tcClient.DeleteVariableHandle(handle);
                tcClient.Dispose();
            }
            Console.ReadKey();
        }
コード例 #19
0
        public void WriteValue(X parameterName, object value, bool selfVerify = false)
        {
            var att = parameterName.GetAttribute <TypeAttribute>();

            if (att.RWStatus == TypeAttribute.RW.ReadOnly)
            {
                return;
            }

            var pName   = $"{att.SourceFunction}.{parameterName}";
            var writeId = _tcClient.CreateVariableHandle(pName);

            _tcClient.WriteAny(writeId, value);
            _tcClient.DeleteVariableHandle(writeId);

            if (selfVerify)
            {
                OnChange(parameterName);
            }
        }
コード例 #20
0
        /// <summary>
        /// Subscribe to an observable and write the emitted values to a PLC variable
        ///
        /// Use this method to regularly write values to PLC variable. For one-off writes, use the Write() method
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="variableName">Name of the PLC variable</param>
        /// <param name="observable">Observable that emits values to write</param>
        /// <param name="scheduler">Scheduler to execute the subscription on. By default uses the scheduler the Observable runs on</param>
        /// <returns>An IDisposable that can be disposed when it's no longer desired to write the values in the observable</returns>
        public IDisposable StreamTo <T>(string variableName, IObservable <T> observable, IScheduler scheduler = null)
        {
            scheduler = scheduler ?? Scheduler.Immediate;

            int variableHandle = _client.CreateVariableHandle(variableName);

            var subscription = observable.ObserveOn(scheduler).Subscribe(value => WriteWithHandle(variableHandle, value));

            // Return an IDisposable that, when disposed, stops listening to the Observable but also deletes the variable handle
            return(new CompositeDisposable(subscription, Disposable.Create(() => _client.DeleteVariableHandle(variableHandle))));
        }
コード例 #21
0
        public async Task <T[]> ReadArray <T>(string PLCName, int size)
        {
            string plcname = "." + PLCName;

            return(await Task.Run(() =>
            {
                try
                {
                    int handle = Tcads.CreateVariableHandle(plcname);
                    T[] returnData = (T[])Tcads.ReadAny(handle, typeof(T[]), new int[] { size });
                    Tcads.DeleteVariableHandle(handle);
                    return returnData;
                }
                catch (Exception ex)
                {
                    ErrorFile.ErrorLog(ex.Message, ADS.Logfilepath);
                    return default;
                }
            }));
        }
コード例 #22
0
 /// <summary>
 /// 写单个M-布尔(PLC定义的Bool类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address"></param>
 /// <param name="values">值</param>
 /// <returns></returns>
 public bool WriteSingleBoolM(TcAdsClient tac, string address, int values)
 {
     try
     {
         tac.WriteAny(tac.CreateVariableHandle(address), values == 1 ? true : false);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
コード例 #23
0
 /// <summary>
 /// 读单个D-双精浮点数(PLC定义的LREAL类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <returns></returns>
 public Double ReadSingleDoubleD(TcAdsClient tac, string address)
 {
     try
     {
         int number = tac.CreateVariableHandle(address);
         return(Convert.ToDouble(tac.ReadAny(number, typeof(Double))));
     }
     catch
     {
         return(-1);
     }
 }
コード例 #24
0
 /// <summary>
 /// 读字符串-(PLC定义的STRING类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <returns></returns>
 public String ReadString(TcAdsClient tac, string address)
 {
     try
     {
         int number = tac.CreateVariableHandle(address);
         return(tac.ReadAny(number, typeof(String), new int[] { 9999 }).ToString());
     }
     catch
     {
         return("");
     }
 }
コード例 #25
0
 /// <summary>
 /// 写单个D-32位无符号整数(PLC定义的USINT类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <param name="values">数值</param>
 /// <returns></returns>
 public bool WriteSingleUsintD(TcAdsClient tac, string address, int values)
 {
     try
     {
         tac.WriteAny(tac.CreateVariableHandle(address), Convert.ToByte(values));
         return(true);
     }
     catch
     {
         return(false);
     }
 }
コード例 #26
0
ファイル: Form1.cs プロジェクト: niuhongyan/test
 private void Form1_Load(object sender, EventArgs e)
 {
     adsClient           = new TcAdsClient();
     notificationHandles = new ArrayList();
     try
     {
         adsClient.AdsNotificationEx += new AdsNotificationExEventHandler(adsClient_AdsNotificationEx);
         button4.Enabled              = false;
         button6.Enabled              = false;
         adsClient.Connect(801);
         hbool1         = adsClient.CreateVariableHandle("MAIN.bool1");
         hint1          = adsClient.CreateVariableHandle("MAIN.int1");
         hstr1          = adsClient.CreateVariableHandle("MAIN.str1");
         hlreal1        = adsClient.CreateVariableHandle("MAIN.lreal1");
         hcomplexStruct = adsClient.CreateVariableHandle("MAIN.ComplexStruct1");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
コード例 #27
0
 /// <summary>
 /// 写单个D-双精浮点数(PLC定义的LREAL类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <param name="values">值</param>
 /// <returns></returns>
 public bool WriteSingleDoubleD(TcAdsClient tac, string address, double values)
 {
     try
     {
         tac.WriteAny(tac.CreateVariableHandle(address), values);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
コード例 #28
0
 /// <summary>
 /// 写字符串-(PLC定义的STRING类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <param name="values">值</param>
 /// <returns></returns>
 public bool WriteString(TcAdsClient tac, string address, string values)
 {
     try
     {
         tac.WriteAny(tac.CreateVariableHandle(address), values, new int[] { values.Length });
         return(true);
     }
     catch
     {
         return(false);
     }
 }
コード例 #29
0
ファイル: TwinCATAds.cs プロジェクト: Monkeybin11/SIM
 public void AddCoil(TwinCATCoil mTwinCATCoil)
 {
     if (mTwinCATCoil.CoilMode == TwinCATCoil.Mode.Read)
     {
         ToRead.Add(mTwinCATCoil);
     }
     else
     {
         ToNotice.Add(mTwinCATCoil);
     }
     try
     {
         mTwinCATCoil.CoilHandle = adsClient.CreateVariableHandle(mTwinCATCoil.CoilName);
     }
     catch (Exception ex)
     {
         Console.WriteLine(System.DateTime.Now.ToString() + "    " + "变量" + mTwinCATCoil.CoilName + "失败");
         Trace.Write(ex, "AddCoil");
     }
     mTwinCATCoil.CoilUpdate += mTwinCATCoil_CoilUpdate;
 }
コード例 #30
0
 /// <summary>
 /// 读单个D-32位无符号整数(PLC定义的USINT类型)
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="address">地址格式(MAIN.dint1 (MAIN目录标签 ,dint1在MAIN这个目录定义的dint1这个名)) </param>
 /// <returns></returns>
 public int ReadSingleUsintD(TcAdsClient tac, string address)
 {
     try
     {
         int number = tac.CreateVariableHandle(address);
         return(Convert.ToInt32(tac.ReadAny(number, typeof(Byte))));
     }
     catch
     {
         return(-1);
     }
 }
コード例 #31
0
ファイル: MainClass.cs プロジェクト: plopp/TwinCatToCouchDB
        /**
         * Reads one variable from the PLC. The variable must be declared as a REAL.
         *
         * Input:
         * tcAds - TwinCat ADS client object
         * var - The variable name (as a string) to be read from the PLC. E.g "MAIN.var1"
         * vartype - The variable type as declared in the PLC. REAL is the only supported variable type.
         * More types can be added by making changes where appropriate.
         *
         * Output: Floating value representing the value in the PLC.
         *
        **/
        static float readByString(TcAdsClient tcAds,string var,string vartype)
        {
            int hVar = 0;
            try
            {
                hVar = tcAds.CreateVariableHandle(var);
            }
            catch (Exception err)
            {
                Console.WriteLine(err);
            }
            if (vartype == "REAL")
            {
                // creates a stream with a length of 4 byte
                AdsStream ds = new AdsStream(4);
                BinaryReader br = new BinaryReader(ds);
                tcAds.Read(hVar, ds);
                try
                {
                    tcAds.DeleteVariableHandle(hVar);
                }
                catch (Exception err)
                {
                    Console.WriteLine(err);
                }

                return br.ReadSingle();
            }
            else {
                Console.WriteLine("Error: Variable type not implemented!");
                return 0.0F;
            }
        }
コード例 #32
0
ファイル: AutoDispenTwincatDevice.cs プロジェクト: hxd3/GTL2
        public override void init()
        {
            adsClient = new TcAdsClient();
            nameDict["MAIN.MDF_WhichStack"] = typeof(int);
            nameDict["MAIN.MDF_WhichDish"] = typeof(int);
            nameDict["MAIN.MDF_RunningError"] = typeof(int);
            nameDict["MAIN.MDF_online_state"] = typeof(int);
            nameDict["MAIN.MDF_Command_response"] = typeof(String);
            nameDict["MAIN.MDF_bar_code"] = typeof(string);
            nameDict["MAIN.MDF_Motor_1_cur"] = typeof(float);
            nameDict["MAIN.MDF_Motor_2_cur"] = typeof(float);
            nameDict["MAIN.MDF_Motor_3_cur"] = typeof(float);
            nameDict["MAIN.MDF_Motor_4_cur"] = typeof(float);
            nameDict["MAIN.CCS_to_MDF_command_listen"] = typeof(String);
            nameDict["MAIN.CCS_to_MDF_NumsperStack_listen"] = typeof(int);
            nameDict["MAIN.CCS_to_MDF_VolsperDish_listen"] = typeof(float);
            cmdString = "MAIN.MDF_Command_response";
            try
            {
                adsClient.Connect(801);
                adsClient.AdsNotificationEx += new AdsNotificationExEventHandler(handleNotification);
                foreach (String s in nameDict.Keys)
                {
                    handleMap[s] = adsClient.CreateVariableHandle(s);
                    if (nameDict[s] == typeof(string))
                    {
                        adsClient.AddDeviceNotificationEx(s, AdsTransMode.OnChange, 100, 0, s, nameDict[s],new int[]{ConstSettings.StringLength});
                    }
                    else
                    {
                        adsClient.AddDeviceNotificationEx(s, AdsTransMode.OnChange, 100, 0, s, nameDict[s]);
                    }
                }
                adsClient.WriteAny(handleMap["MAIN.MDF_online_state"], 1);
            }
            catch (Exception ex)
            {

            }
        }
コード例 #33
0
ファイル: BeckHoff.cs プロジェクト: junzheng/YF17A
        public BeckHoff(TcAdsClient adsClient)
        {
            this.adsClient = adsClient;
            foreach (String name in plcVariableNameTypes)
            {
                Type t = typeof(int);
                if(name.StartsWith(BOOL_TOKON)){
                    t = typeof(Boolean);
                }

                String varName = name.Substring(1);

                plcVariableNames.Add(varName);
                plcVarTypeMap.Add(varName,t);
                createPlcAccessHandle(varName);
            }

            mWriteFlagHandle = adsClient.CreateVariableHandle(".WriteFlag");
            initThreadHold();
            initVarDescription();
        }