建立与控制器的连接

<< 点击显示目录 >>

主页  PVI通信 > PVI帮助信息 > PVI Services > Communication classes > CPU class >

建立与控制器的连接

连接参数是通过  CPU对象的Connection 属性配置的  。下面的代码描述了如何设置与CPU的串行连接。

        private void serial_CPU_Connection()
        {
            BR.AN.PviServices.Cpu testCpu;
            testCpu = new Cpu(this.testService,"Cpu");
            testCpu.Connected += new PviEventHandler(cpu_Connected);
            testCpu.Disconnected += new PviEventHandler(cpu_Disconnected);
            // 为一个串行连接设置连接属性
            testCpu.Connection.DeviceType = DeviceType.Serial;
            testCpu.Connection.Serial.BaudRate = 57600;
            testCpu.Connection.Serial.Channel = 1;
            // Cpu 连接
            testCpu.Connect();
        }
        private void cpu_Connected(object sender, PviEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("Cpu connected   Error=" + e.ErrorCode.ToString() );
        }
        private void cpu_Disconnected(object sender, PviEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("Cpu disconnected   Error=" + e.ErrorCode.ToString() );
        }
        private void tcpip_CPU_Connection()
        {
            BR.AN.PviServices.Cpu testCpu;
            testCpu = new Cpu(this.testService,"Cpu");
            testCpu.Connected += new PviEventHandler(cpu_Connected);
            testCpu.Disconnected += new PviEventHandler(cpu_Disconnected);
            // TcpIp 绑定
            testCpu.Connection.DeviceType = BR.AN.PviServices.DeviceType.TcpIp;
            testCpu.Connection.TcpIp.DestinationIpAddress = "10.43.70.202";
            // Cpu 绑定
            testCpu.Connect();
        }

Connected 事件报告说,连接已经成功建立。

调用 Disconnect 方法会断开连接。

如果断开连接是成功的, 那么 报告Disconnected 事件。

如果连接被物理断开,也将由 Disconnected 事件报告。

通过ANSL连接到控制器

通过ANSL(AutomationNetServiceLink)连接到控制器的方法与通过INA2000的方法基本相同。只有参数是不同的。

private void ansl_CPU_Connection()
{
    BR.AN.PviServices.Cpu testCpu;
    testCpu = new Cpu(this.testService, "Cpu");
    testCpu.Connected += new PviEventHandler(testCpu_Connected);
    testCpu.Disconnected += new PviEventHandler(testCpu_Disconnected);
    // TcpIp 连接
    testCpu.Connection.DeviceType = BR.AN.PviServices.DeviceType.ANSLTcp;
    testCpu.Connection.ANSLTcp.DestinationIpAddress = "10.43.70.202";
    // Cpu 连接
    testCpu.Connect();
}

与INA2000的不同之处用 粗体字表示 。

除了INA2000可用的功能外,ANSL还提供了一些额外的服务,其中大部分是由Automation Studio使用。

一个重要的新功能是能够通过一个虚拟/集群IP地址连接到一个冗余的控制系统,以提供无故障的PV通信,而不需要在客户端应用程序中进行额外编程。

对无障碍设施的要求 PV 通讯

ANSL连接到控制器(INA2000不支持此功能)。

用于连接的IP地址必须是虚拟/集群的IP地址。

冗余事件是使用Cpu.RedundancyEvent属性激活的。(相应的事件处理程序是Cpu.ActiveCpuChanged)

例子:

private void redundancy_ansl_CPU_Connection()
{
   BR.AN.PviServices.Cpu testCpu;
   testCpu = new Cpu(this.testService, "Cpu");
   testCpu.Connected += new PviEventHandler(testCpu_Connected);
   testCpu.Disconnected += new PviEventHandler(testCpu_Disconnected);
  // TcpIp Verbindung
   testCpu.Connection.DeviceType = BR.AN.PviServices.DeviceType.ANSLTcp;
   testCpu.Connection.ANSLTcp.DestinationIpAddress = "10.43.70.202";
  // 在出现冗余的情况下,激活 "无障碍 "PV通信
  // 只要 "10.43.70.202 "是虚拟/集群的IP地址。
   testCpu.RedundancyEvent = true;
  // 此外,预示着冗余情况的事件也被钩住了。
   testCpu.ActiveCpuChanged += new PviEventHandler(testCpu_ActiveCpuChanged);
  // Cpu 连接
   testCpu.Connect();
}
void testCpu_ActiveCpuChanged(object sender, PviEventArgs e)
{
   System.Diagnostics.Debug.WriteLine("Active Cpu has changed (Redunancy EVENT).  Error=" + e.ErrorCode.ToString());
}

读取冗余信息

调用方法Cpu.ReadRedundancyInfo() ,以便读取冗余信息。响应将在事件 "RedundancyInfoRead "中提供。只要 "Error "成员为0,就可以通过属性Cpu.RedundancyInfo以XML字符串的形式访问该数据。

例子

private void ReadREDU_Info()
{
    // 附加事件处理程序以读取冗余信息
    testCpu.RedundancyInfoRead += new PviEventHandler(testCpu_RedundancyInfoRead);
    // 从CPU读取冗余信息
    testCpu.ReadRedundancyInfo();
}
void testCpu_RedundancyInfoRead(object sender, PviEventArgs e)
{
    testCpu.RedundancyInfoRead -= new PviEventHandler(testCpu_RedundancyInfoRead);
    if (0 != e.ErrorCode)
    {
        System.Diagnostics.Debug.WriteLine("RedundancyInfoRead:  Error=" + e.ErrorCode.ToString());
    } else {
        System.Diagnostics.Debug.WriteLine("RedundancyInfoRead:  Info=" + ((BR.AN.PviServices.Cpu)sender).RedundancyInfo);
    }
}