关于倍福EtherCAT3的ADS通讯

Beckhoff ADS (Automation DeviceSpecification)提供一个应用程序之间互相通信的接口,在TwinCAT3系统中,TwinCAT PLC,TwinCAT NC,TwinCAT CNC等被设计成虚拟的自动化设备,类似于实际的物理设备与设备之间通过基于TCP协议的路由来交换信息,参考下面的图示

ADS设备最重要的两个属性就是端口号和AdsAmsNetId

•  AdsPortNr   指定通信的虚拟设备(ADS server),比如PLC,NC
•  AdsAmsNetId  指定ADS路由器,是TCP IP地址的扩展。

以上参考某位前辈

例如控制器物理网卡ip为169.254.71.120,起对应的AdsAmsNetId169.254.71.120.1.1,设备如耦合器,ethercat接口驱动器网址为169.254.71.120.1.x,通过后面两位识别不同的设备。

这里可把ADS路由器看成虚拟的路由器,倍福的ipc各个网口内部都连接在此路由,也就是一台twincat控制器(pc)有一个amsNetID,任意一个网口都能通过虚拟路由连接到这个amsNetID上来控制其他硬件,只需在twincat的设备的地方选择某个网卡即可。(原来理解为amsNetID要与硬件相连接的网卡的4段ip地址一致,可以不必相同,amsNetID只是一个用于区分ethercat设备的虚拟ip地址)

带来的优势是当其他pc需要与控制器通讯时连接某个网卡上,把pc的ip地址设成同一网段,在控制器中添加该ip路由,使用ads通讯协议即可与控制器的amsNetID建立连接,从而与PLC、NC、CNC建立连接,极大方便工程应用。上位机不局限与某种语言,诸如c++、c#、Delphi等都可以与twincat plc建立连接,很方便读写操作。

不太方便的是使用非intel网卡无法安装twincat驱动,这样无法添加到ads路由表中。无法与工控机建立ads连接。

常用ads为异步通信

实例代码:

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using TwinCAT.Ads;//twincat安装目录中有

using System.IO;

namespace HmiAdsTest

{

    public partial class MainForm : Form

    {

        public MainForm()

        {

            InitializeComponent();

        }

        public static TcAdsClient tcAdsClient;//建立通讯

        private int handle;

        private void button1_Click(object sender, EventArgs e)

        {

            tcAdsClient = new TcAdsClient();//实例化

            //tcAdsClient.Connect(851);//同一台机器上使用

            tcAdsClient.Connect("169.254.71.120.1.1", 851);//amsNetID  851是twincat3 端口号

            try

            {

                //handle = tcAdsClient.CreateVariableHandle("IOs.ConnectSucceed");

                handle = tcAdsClient.CreateVariableHandle("IOs.Dog");

                MainForm.VariableAssignment.ConnectSucceed = (bool)(tcAdsClient.ReadAny(handle, typeof(bool)));

                tcAdsClient.DeleteVariableHandle(handle);

            }

            catch

            {

                MainForm.VariableAssignment.ConnectSucceed = false;

                MessageBox.Show("未能连接网络");

            }

            if (MainForm.VariableAssignment.ConnectSucceed)

            {              

                MessageBox.Show("成功连接网络");

                button1.BackColor = Color.Green;

            }

            else { timerReadPeriod.Enabled = false; }          

        }

         

        public class VariableAssignment

        {

            public static bool ConnectSucceed;

            public static int AO_ProportionalValve2Dint;

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)

        {

            handle = tcAdsClient.CreateVariableHandle("IOs.AO_ProportionalValve2Dint");

            tcAdsClient.WriteAny(handle, (int)numericUpDown1.Value);

            tcAdsClient.DeleteVariableHandle(handle);

            

        }

}

}

测试界面

PLC变量定义,注意c#和PLC变量类型位数要匹配,如c#中int是32bit,twincat中dint是32位

注意:也可把控制器、设备、外部PC挂在同一个交换机上,带来的风险是控制器和设备数据量大时,外部pc无法与控制器建议ads通信。可靠的话twincat控制器至少有两个物理网口


关于ads通讯之前有些地方不太准确

如果用PC作为控制器(跑PLC和NC程序),则应使用intel型号网卡,支持型号请看以下链接

https://blog.csdn.net/x356982611/article/details/81450716

如果只是ADS通讯,非intel网卡也可以支持(前面写的不准确,此次修正

当显示以下某个信息,可能是要升级一下系统补丁,仅对win7

这和网卡没关系,安装下面升级补丁

再提醒:

添加ads路由前要ping通,如果ping不通,查下网络连接

如果没有活动网络,查看网卡设置中,把不必要的驱动去掉

一般都能ping通

  • 10
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
倍福 EtherCAT 从站协议栈是一种用于实时通信的工业网络协议栈。EtherCAT是一种开放的以太网通信协议,它可使各种设备通过以太网实现高速、实时和分布式通信。 倍福 EtherCAT 从站协议栈是基于EtherCAT协议的实现,用于从站(或被控设备)的通信管理。从站是指连接在EtherCAT网络中的被控设备,它们通过EtherCAT网络与主站(或控制器)进行通信。倍福 EtherCAT 从站协议栈负责处理从站与主站之间的通信报文的收发、解析和处理。 倍福 EtherCAT 从站协议栈提供了丰富的功能和特性。首先,它具有高度可靠的通信性能,能够在高负载的情况下实现实时通信。其次,它支持多种EtherCAT通信模式,如逻辑总线模式、分布式时钟模式和嵌套模式,以满足不同应用场景的需求。此外,倍福 EtherCAT 从站协议栈还支持多种数据传输方式,如广播传输、邮箱传输和RV传输,可灵活满足各种数据传输的需求。 倍福 EtherCAT 从站协议栈易于集成和使用。它提供了丰富的编程接口和开发工具,方便开发人员进行开发和调试。同时,厂家还提供了详细的技术支持和培训,以帮助用户更好地使用和调整EtherCAT从站协议栈。 总之,倍福 EtherCAT 从站协议栈是一种可靠、高性能的通信协议栈,适用于工业领域的实时通信应用。它提供了丰富的功能和灵活的配置选项,可以满足不同应用场景的需求,并且易于集成和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值