草庐IT

康耐视InSight相机与西门子PLC关于Profinet通讯说明

武尚发的博客 2024-02-05 原文

1.准备:

硬件:

  • 康耐视 InSight-8402 智能相机
  • 西门子S7-1200 PLC
  • 电脑

软件:

  • Cognex In-Sight Explorer
  • 西门子 TIA Portal 软件

组态文件:

  • 相机的组态文件位于In-Sight Explorer软件安装目录下:Factory Protocol Description\GSD。本次使用的相机为8XXX系列,相机固件低于5.8,所以后面组态的时候选择8XXX不带ClassB的版本即可。

2. 组态GSD文件:

  1. 博图中安装GSD文件。
  2. 添加CPU硬件。
  3. 添加相机设备硬件。
  4. 配置CPU硬件网络信息。
  5. 配置相机设备网络信息。主要设置 相机的 IP 地址和 Profinet 设备名。
  6. 连接网络设备。
  7. 完成。

3. 相机端设置:

  1. 在电子表格视图中,选择菜单栏中–传感器—网络设置,打开下图。

    这里主要设置相机的 IP 地址、选择工业以太网协议为Profinet、并启用 Profinet 站名。这里IP地址和站名要求和PLC中配置的严格一致,站名区分大小写。

  2. 双击电子表格中的A0单元格,将触发器类型修改为”网络“。

  3. 插入函数。
    Count: 用来监控相机的触发次数。
    FormatOutputBuffer: 定义输出缓冲区,引用要发送给PLC的结果单元格。

    WriteResultBuffer: 发送缓冲区数据(注意这里的事件选择的A0就表示网络信号触发一次,此函数写入一次)

    经过上面的步骤,相机发送数据到PLC的操作已经完成,接下来插入相机的接收PLC的函数。
    FormatInputBuffer: 定义输入缓冲区,注意数据类型。

    ReadUserDataBuffer: 读取缓冲区数据,缓冲区引用前面定义的 FormatInputBuffer。

    GetBufferData: 获取缓冲区数据,前面输入缓冲区定义了3组数据,所以此函数后面使用索引 0、1、2 代表输入的3个32位浮点数据。

4. 输入输出数据对照表:

在 Cognex In-Sight Explorer 帮助菜单下\ Communication Reference\ PROFINET Communications\ PROFINET IO Module Reference\ PROFINET IO Module Reference Table- In-Sight 5.x.x and Later Fireware 依次双击打开。


博途中自动生成的地址数据:

5. 通讯测试:

  • 确保相机处于联机状态。
  • 博途中将部分关键的地址单独拉出来,保持监视。

1. 触发相机:① Trigger Enabled ② Trigger


2. 触发相机+PLC接收相机结果:① Trigger Enabled ② Trigger ③ Inspection Result 中 Byte4 开始为结果数据


3. PLC发送数据到相机:① Trigger Enabled ② User Data 中写入要发送的数据 ③ Set User Data 置1 ④ Trigger


4. 切换相机作业:① Trigger Enabled ② SetOffLine置1 ③ 在Command中写入16位整数类型的job号 ④ Execute Cammand置1 ⑤ SetOffLine置0

写到这里,走过路过点个关注点个赞,谢谢。。。

有关康耐视InSight相机与西门子PLC关于Profinet通讯说明的更多相关文章

  1. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

  2. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  3. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  4. ruby - 关于 Ruby 中 Dir[] 和 File.join() 的混淆 - 2

    我在Ruby中遇到了一个关于Dir[]和File.join()的简单程序,blobs_dir='/path/to/dir'Dir[File.join(blobs_dir,"**","*")].eachdo|file|FileUtils.rm_rf(file)ifFile.symlink?(file)我有两个困惑:首先,File.join(@blobs_dir,"**","*")中的第二个和第三个参数是什么意思?其次,Dir[]在Ruby中有什么用?我只知道它等价于Dir.glob(),但是,我对Dir.glob()确实不是很清楚。 最佳答案

  5. elasticsearch源码关于TransportSearchAction【阶段三】 - 2

    1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>

  6. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

  7. ruby - 如何在 Ruby 中使用 OpenID 访问 Google 通讯录 - 2

    我正在使用devise登录omniauth,authid。当用户登录时,我得到user_info:name:RiccardoTacconilast_name:Tacconiemail:email@gmail.comfirst_name:Riccardouid:https://www.google.com/accounts/o8/id?id=xxxxxxxxxprovider:google_apps我找到了一个插件:http://stakeventures.com/articles/2009/10/06/portable-contacts-in-ruby获取Google通讯录。我只需要使

  8. ruby - 关于 Ruby/ChefSpec 编码风格的反馈 - 2

    我是Ruby的新手,但过去两周我一直在对Chef测试进行大量研究。该测试使用ChefSpec和Fauxhai,但它看起来不是很“像ruby”,我希望社区能给我一些编码风格的建议。有没有更好的方法来编写这样的嵌套循环?Recipe/foo/recipes/default.rbpackage"foo"doaction:installendRecipe/foo/spec/default_spec.rbrequire'chefspec'describe'foo::default'doplatforms={"debian"=>['6.0.5'],"ubuntu"=>['12.04','10.04

  9. ruby - 关于 ruby​​ 类变量的困惑 - 2

    假设一个使用类变量的简单ruby​​程序,classHolder@@var=99defHolder.var=(val)@@var=valenddefvar@@varendend@@var="toplevelvariable"a=Holder.newputsa.var我猜结果应该是99,但输出不是99。我想知道为什么。由于类变量的范围是类,我假设@@var="toplevelvariable"行不会影响类中的变量。 最佳答案 @@var是Holder的类变量。而顶层的@@var不是Holder的同名类变量@@var,是你在创建类Obj

  10. 一文解决关于VLAN所有的疑惑 - 2

    一文解决关于VLAN所有的疑惑VLAN基本概念为什么需要VLAN?怎么在交换机上划分VLAN,VLAN的工作原理有了子网,已经隔离了广播,还需要VLAN干啥?只进行子网划分,不进行VLAN划分VLAN划分与子网划分附加VLAN信息的方法VLAN划分交换机的端口类型(Access和Trunk)一、访问链接二、汇聚链接汇聚链接VLAN间通信为什么要进行VLAN间通信?路由器实现VLAN间通信路由器和交换机的连接方式通信细节三层交换机实现VLAN间通信加速VLAN间通信三层交换机与路由器三层交换机路由器路由器和交换机配合构建LAN的实例使用VLAN设计局域网的特点VLAN增加网络的灵活性不使用VLA

随机推荐