基本信息
源码名称:西门子PLC以太网通讯组件
源码大小:0.16M
文件格式:.rar
开发语言:C#
更新时间:2018-11-13
   源码介绍

西门子S7协议通讯,使用与S7-200/300/400/1200等

可同时监控几百台PLC

.C#语言开发,采用NET4.5框架,TCP通讯方式,通信效率高。



public void butLink_Click(System.Object sender, System.EventArgs e)
{
            PLC1.ConnTimeout = 10000;
            PLC1.RecvTimeout = 10000;
            PLC1.SendTimeout = 10000;
            PLC1.mima_Id = "注册码";
            
            int re = 0;

            re = PLC1.ConnectTo(txtRemoteIP.Text.Trim(), 0, 1);

            if (re == 0)
            {
                EntLink = true;
                MessageBox.Show("PLC联接成功!");
            }
            else
            {
                EntLink = false;
               
                MessageBox.Show("PLC联接失败: " PLC1.ErrorText(re));
            }

}


public void butClose_Click(System.Object sender, System.EventArgs e)
{
            int re = 0;
EntLink = false;
            re = PLC1.Disconnect();
}



public void butRead_Click(System.Object sender, System.EventArgs e)
{

            int re = 0;

if (!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
if (Conversion.Val(txtReadCnt.Text) < 1)
{
                MessageBox.Show("CmdRead方法的length参数必须大于0.");
return;
}
            string s_data = "";

            int readAdd = Convert.ToUInt16(txtReadAdd.Text);
            int getlength = Convert.ToUInt16(txtReadCnt.Text);
            byte[] dbBuffer = new byte[getlength];

            switch (cmbReadMry.Text)
            {
                case "I":
                    re = PLC1.EBRead(readAdd, getlength, dbBuffer);
                    break;
                case "Q":
                    re = PLC1.ABRead(readAdd, getlength, dbBuffer);
                    break;
                case "M":
                    re = PLC1.MBRead(readAdd, getlength, dbBuffer);
                    break;
                case "V":
                    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                    break;
                //case "AI":
                //    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                //    break;
                //case "AQ":
                //    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                //    break;

                default:
                    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                    break;
            }

            switch (cmbReadType.Text)
            {
                case "W_INT16":
                    s_data = S7.GetIntAt(dbBuffer, 0).ToString();
                    break;
                case "W_UINT16":
                    s_data = S7.GetUIntAt(dbBuffer, 0).ToString();
                    break;
                case "D_DINT32":
                    s_data = S7.GetDIntAt(dbBuffer, 0).ToString();
                    break;
                case "D_REAL32":
                    s_data = S7.GetRealAt(dbBuffer, 0).ToString();
                    break;
                //case "AI":
                //    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                //    break;
                //case "AQ":
                //    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                //    break;

                default:
                    re = PLC1.DBRead(1, readAdd, getlength, dbBuffer);
                    break;
            }
            txtReRead.Text = s_data.ToString();
   

}