Cognex InSight 相机的TCP\IP通讯设置以及字符命令触发

发布时间 2023-08-25 15:01:21作者: 一杯清酒邀明月

1. TCP\IP通讯
智能相机既可以作为TCP\IP服务器存在,又可以作为TCP\IP客户端,这里分别介绍如何在电子表格模式下,设置InSight相机的客户端和服务器下的收发数据。

2. 客户端
创建客户端设备:

  1. 在电子表格中分别插入一个EditString控件用于输入服务器IP地址。
  2. 然后插入EditInt控件用于插入Port端口号。
  3. 插入TcpDevice控件。
  4. 然后将TcpDevice控件中的HostName绝对引用至前面的EditString输入框。
  5. 接着将TcpDevice控件中的Port绝对引用至前面的EditInt输入框。
  6. 点击确定,这样我们已经创建了一个TCP设备。

通过客户端(相机)发送数据:这里我们模拟使用一个按钮手动发送数据。

  1. 插入一个Button按钮,名称任意。
  2. 编辑一段要发送的数据。(如果需要帧起始符、帧结束符,可以插入FormatString控件添加)
  3. 插入WriteDevice控件,然后依次引用Button,TcpDevice,数据。
  4. 然后确定。

通过客户端(相机)接收数据:默认接收的数据尾部要加回车\换行(\r\n)。

  1. 插入ReadDevice控件,然后引用TcpDevice作为Device。
  2. 然后确定。

测试:

  1. 使用TCP助手作为服务器,相机作为客户端,进行测试数据收发。
  2. 先绑定TCP助手的服务器IP地址和服务器端口,然后监听服务器。
  3. 将电子表格联机,客户端会主动去连接服务器。

 4.相机发送数据给服务器:点击Button

 5.相机接收数据:

3. 服务器:

InSight相机作为服务器,创建TcpDevice的时候,HostName栏应该为空。

其他收发数据,和上面客户端的方式没有区别。

4. 通过TCP触发相机拍照:

这里相机作为客户端,通过服务器 (PC) 发送命令控制相机拍照。

1.首先将电子表格的AO单元格触发器类型选择为 “手动”。

2.在ReadDevice控件的附件插入表达式:If(Exact(C12,“TRG”),1,0)
C12就是ReadDevice所在的单元格位置,这个位置可以任意,只要引用的对象是ReadDevice就可以。
这个表达式的意思是将接收到的数据值和“TRG”做对比,如果一致则返回1,否则返回0。
换句话说,只有当服务器端发送的值与“TRG”一致的时候才会返回1,否则0。

3.插入SetEvent事件,然后将触发改为 “手动” 。

4.接着右击SetEvent,选择单元格状态,选择“已有条件的启用”,选择“绝对”,然后点击“选择单元格”,引用到 If(Exact(C12,“TRG”),1,0) 表达式,这样,一旦接收到触发字符,if表达式就会置1,然后SetEvent事件就会被激活触发一次。

 如果还是不明白,请看动图:

 这里补充一下,SetEvent是一种事件,除了可以被定义为手动触发之外,还可以被自定义为各种软事件,比如在PROFINET通讯中,用户可以通过SoftEventControlInput来触发指定的软事件。

 5. 联机测试: