Fork me on Github

Ads操作

1.Ads连接

        /// <summary>
        /// 摘要:打开ADS连接,无参数
        /// </summary>        
        /// <returns>返回是否成功连接结果bool</returns>
        public bool ADSConn()
        {
            try
            {
                //连接ADS
                adsClient.Connect(AMSAdress, IPSet);
            }
            catch
            {
                return false;
            }
            //定义临时变量
            bool tempbool = false;

            //返回结果
            IsConnected = AdsReadBool("MAIN_CTRL.machine_opened", ref tempbool); 
            return IsConnected; //是否读取变量成功
          
        }

2.Ads读取数据

      /// <summary>
        /// 读PLC数据AdsReadBool
        /// </summary>
        /// <param name="varname">varname:PLC变量名</param>
        /// <param name="getresult">getresult:读取结果</param>
        /// <returns>结果bool</returns>
        public bool AdsReadBool(string varname, ref bool getresult)
        {
            if (!IsConnected)
                return false;
            AdsStream istream = new AdsStream(1);
            BinaryReader bBinRead = new BinaryReader(istream);
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.Read(hvar1, istream);
                istream.Position = 0;
                getresult = bBinRead.ReadBoolean();
            }
            catch
            {
                //IsConnected = false;
                return false;
            }
            finally
            {
                istream.Dispose();
                bBinRead.Dispose();
            }
            return true;
        }

      /// <summary>
        /// 摘要:读PLC数据AdsReadInt16
        /// </summary>
        /// <param name="varname">varname:PLC变量名</param>
        /// <param name="getresult"> getresult:读取结果</param>
        /// <returns>结果bool</returns>
        public bool AdsReadInt16(string varname, ref Int16 getresult)
        {
            if (!IsConnected)
                return false;
            AdsStream istream = new AdsStream(2);
            BinaryReader bBinRead = new BinaryReader(istream);
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.Read(hvar1, istream);
                istream.Position = 0;
                getresult = bBinRead.ReadInt16();
            }
            catch
            {
                //IsConnected = false;
                return false;
            }
            finally
            {
                istream.Dispose();
                bBinRead.Dispose();
            }
            return true;
        }

      /// <summary>
        /// 摘要:读PLC数据
        /// </summary>
        /// <param name="varname">varname:PLC变量名</param>
        /// <param name="getresult">getresult:读取结果</param>
        /// <returns>结果bool</returns>
        public bool AdsReadSingle(string varname, ref Single getresult)
        {
            if (!IsConnected)
                return false;
            AdsStream istream = new AdsStream(4);
            BinaryReader bBinRead = new BinaryReader(istream);
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.Read(hvar1, istream);
                istream.Position = 0;
                getresult = bBinRead.ReadSingle();
            }
            catch
            {
                //IsConnected = false;
                return false;
            }
            finally
            {
                istream.Dispose();
                bBinRead.Dispose();
            }
            return true;
        }

      /// <summary>
        /// 摘要:读PLC数组AdsReadSingleArr
        /// </summary>
        /// <param name="varname">varname:PLC变量名</param>
        /// <param name="getresult">getresult:读取结果</param>
        /// <param name="arrlength">arrlength: 数组长度</param>
        /// <returns>结果bool</returns>
        public bool AdsReadSingleArr(string varname, ref Single[] getresult, int arrlength)
        {
            if (!IsConnected)
                return false;
            AdsStream istream = new AdsStream(4 * arrlength);
            BinaryReader bBinRead = new BinaryReader(istream);
            getresult = new Single[arrlength];
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.Read(hvar1, istream, 0, 4 * arrlength);

                istream.Position = 0;
                for (int i = 0; i < arrlength; i++)
                {
                    //istream.Position = 4 * i;
                    getresult[i] = bBinRead.ReadSingle();
                }
            }
            catch
            {
                //IsConnected = false;
                return false;
            }
            finally
            {
                istream.Dispose();
                bBinRead.Dispose();
            }
            return true;
        }

      /// <summary>
        /// 摘要:读PLC数据
        /// </summary>
        /// <param name="varname">varname:PLC变量名</param>
        /// <param name="getresult">getresult:读取结果</param>
        /// <param name="strLength">strLength: 字符串长度</param>
        /// <returns>结果bool</returns>
        public bool AdsReadString(string varname, ref string getresult, int strLength)
        {
            if (!IsConnected)
                return false;
            AdsStream istream = new AdsStream(strLength);
            BinaryReader bBinRead = new BinaryReader(istream);
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.Read(hvar1, istream);
                istream.Position = 0;
                char[] cha = bBinRead.ReadChars(strLength);
                getresult = new string(cha);
            }
            catch
            {
                //IsConnected = false;
                return false;
            }
            finally
            {
                istream.Dispose();
                bBinRead.Dispose();
            }
            return true;
        }

3.Ads写数据

       /// <summary>
        /// 摘要:写PLC数据
        /// </summary>
        /// <param name="varname"> varname:PLC变量名</param>
        /// <param name="writevalue">writevalue:写内容</param>
        /// <returns>结果bool</returns>
        public bool AdsWriteBool(string varname, bool writevalue)
        {
            if (!IsConnected)
                return false;
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.WriteAny(hvar1, writevalue);
            }
            catch
            {
                return false;
            }
            finally
            {

            }
            return true;
        }

        /// <summary>
        /// 摘要:写PLC数据
        /// </summary>
        /// <param name="varname">varname:PLC变量名</param>
        /// <param name="writevalue">writevalue:写内容</param>
        /// <returns>结果bool</returns>
        public bool AdsWriteInt16(string varname, Int16 writevalue)
        {
            if (!IsConnected)
                return false;
            try
            {
                int hvar1 = adsClient.CreateVariableHandle(varname);
                adsClient.WriteAny(hvar1, writevalue);
            }
            catch
            {
                return false;
            }
            finally
            {

            }
            return true;
        }

 

posted @ 2025-04-14 14:27  昂昂呀  阅读(13)  评论(0)    收藏  举报