技术论坛

1200与扫码枪TCP通讯

作者 主题
奇侠

经验值: 5549
发帖数: 626
精华帖: 6
主题:【探讨】1200与扫码枪TCP通讯


只看楼主 楼主 2022-04-01 20:20:20

              

        最近一个项目有用到手持式扫码枪,在调试过程遇到一些问题分享个大家。

扫码枪是232接口,如果PLC直接和扫描枪通讯需要增加232通讯模块,这个模块会增加项目成本,改成了通过第三方网关来将232转换成TCP通讯。通过网关转换后通讯就出现一些问题。下面一一介绍出现哪些问题和怎样解决这些问题。

        手持式扫码枪是扫二维码,通讯数据都是字符串格式。扫码枪做客户端,PLC做服务器端。首先用网关软件设置客户端参数,和扫码枪通讯的波特率,这不比较简单,而且每家网关制造商都不一样,我就不截图说明,网关是买深圳三旺这家公司的产品,型号是NP302T系列串口服务器。设置完网关的参数后,再到PLC建立通讯接收数据DB块。接收数据格式你可以设置成字符(Char)数组格式或是字符串(String)格式。我下面图一是设置字符格式,图二是字符串格式,图二是另一款产品通讯也是有和喷码机一样的问题,处理方法都是一样。下图是我两个TCP通讯的DB块地址,两个产品不是一样,但是都是同样问题,处理方法思路一样,程序编程稍有不同。由于调试周期比较紧没有来得及拍照,一些图片无法提供。

                         图1

                               图2

    下面我就详细说明问题。

     西门子字符串格式定义:数据类型为 string 的操作数可存储多个字符,最多可包括 254 个字符。字符串中的第一个字节为总长度,第二个字节为有效字符数量。
字符串(string)在存储上类似字符的数组,所以它每一个元素都是可以提取的字符,如:"abcdefg"叫字符串,而其中的每个元素叫字符。

     正因为西门子字符串格式是这样,和第三方通讯接接收到字符串格式不是这样,就会导致接收到数据,没有有效长度无法在触摸屏显示。如果是西门子自己产品就不会出现这样问题。出现这样情况就需要自己编程将接收到有效长度写入到字符串有效长度里面后才能通过触摸屏显示出来。触摸屏显示字符串需要有效长度后才能显示字符串来,哪怕你PLC能接收到完整的数据,可以在DB块里面监视到完整数据,只要你字符串里面没有有效长度,就不能再触摸屏显示字符串。这个问题解决方法是西门子触摸屏技术支持提供方法,中途打过几次PLC技术支持没有找打问题,后来PLC技术支持建议打触摸屏技术支持,通过两次和触摸屏电话后来触摸屏支持给了我这样的解决方案,我试了一下就解决。这个问题前后花了我两天时间才解决。解决此问题感谢西门子PLC和触摸屏技术支持。

      编程第一步是要使用到接收指令中的接收长度管脚。

      编程第二步将接收到长度减一的结果数据格式转。通讯指令长度格式是UDINT格式,要将UDINT格式减1的原因是网关会自带发送一个结束字符,这个字符是不需要的需要去掉。将UDINT转换成DINT原因是,字符转换成字符串指令的长度格式是DINT格式。通过这样转换后的字符串格式才能正常显示。

下面是详细编程截图。

                          图3

       如果用图二数据格式,你就只要将接收到数据长度减1后的结果转换成字节格式后,再将转换后的结果长度传送到字符串第二有效长度里面既可以,不需要像图三编程。这样编程就少一步。




 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1755550&b_id=50&s_id=0&num=0

侠客

经验值: 731
发帖数: 83
精华帖: 0
回复:1200与扫码枪TCP通讯


只看楼主 1楼 2022-04-01 20:40:12

232转TCP不需要增加成本吗,下来还不如直接加个232.起码还省事


学无止境,三人行必有我师。
以下网友喜欢您的帖子:

  
奇侠

经验值: 5549
发帖数: 626
精华帖: 6
回复:1200与扫码枪TCP通讯


只看楼主 楼主 2楼 2022-04-01 21:17:05
以下是引用beyondcoin在2022-04-01 20:40:12的发言 >1楼

232转TCP不需要增加成本吗,下来还不如直接加个232.起码还省事

关键是232模块比转TCP贵。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7679
发帖数: 1228
精华帖: 2
回复:1200与扫码枪TCP通讯


只看楼主 3楼 2022-04-02 07:59:06
以下是引用Siemens automation在2022-04-01 21:17:05的发言 >2楼

关键是232模块比转TCP贵。

以下是引用beyondcoin在2022-04-01 20:40:12的发言 >1楼:232转TCP不需要增...

引用1楼详细内容:

232转TCP不需要增加成本吗,下来还不如直接加个232.起码还省事

能贵几多钱?你调试的时候,时间不是钱?后续的维护不是钱?不能只看眼前,也要看后续。。。


every day is new day !
以下网友喜欢您的帖子:

  
侠士

经验值: 1322
发帖数: 172
精华帖: 0
回复:1200与扫码枪TCP通讯


只看楼主 4楼 2022-04-02 09:34:46

正常情况下,可以添加通信模块,但是当下价格和供货周期受很大影响,换成 网关模块是个方法;


很多别家的触摸屏本身是支持扫码枪接入的,西家的不行吗?


另外感兴趣的是1200存字符串的结构,按帖子说的,是BSTR了吧


假设我想手动设置个 "ABCD",那需要在 "41 42 43 44" 前加个字符串长度,是这样吧?

晚些时间我去试试,谢谢分享


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5549
发帖数: 626
精华帖: 6
回复:1200与扫码枪TCP通讯


只看楼主 楼主 5楼 2022-04-02 09:38:36
以下是引用xinchen在2022-04-02 09:34:46的发言 >4楼

正常情况下,可以添加通信模块,但是当下价格和供货周期受很大影响,换成 网关模块是个方法;


很多别家的触摸屏本身是支持扫码枪接入的,西家的不行吗?


另外感兴趣的是1200存字符串的结构,按帖子说的,是BSTR了吧


假设我想手动设置个 "ABCD",那需要在 "41 42 43 44" 前加个字符串长度,是这样吧?

晚些时间我去试试,谢谢分享

      不是,你接收用字符串格式的话,如果字符串没有有效长度,你就要将接收的实际长度加进去才能在触摸屏上显示。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5549
发帖数: 626
精华帖: 6
回复:1200与扫码枪TCP通讯


只看楼主 楼主 6楼 2022-04-02 09:42:39
以下是引用xiaode在2022-04-02 07:59:06的发言 >3楼

能贵几多钱?你调试的时候,时间不是钱?后续的维护不是钱?不能只看眼前,也要看后续。。。

以下是引用Siemens automation在2022-04-01 21:17:05的发言 >2楼:关键是232模块比转T...

引用2楼详细内容:

关键是232模块比转TCP贵。

以下是引用beyondcoin在2022-04-01 20:40:12的发言 >1楼:232转TCP不需要...

引用1楼详细内容:

232转TCP不需要增加成本吗,下来还不如直接加个232.起码还省事

  你看四楼上面说的,就不是大家现在遇到的问题,当前交期长,价格也比以前贵,你这个232还没有以太网好用,增加以太网网关唯一就是增加调试时间,显现调试出来了,以后出现问题都好解决,而且出问题232也会出现。我项目里面全是总线和TCP,编程也方便一些。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1322
发帖数: 172
精华帖: 0
回复:1200与扫码枪TCP通讯


只看楼主 7楼 2022-04-02 10:47:07
以下是引用Siemens automation在2022-04-02 09:38:36的发言 >5楼

      不是,你接收用字符串格式的话,如果字符串没有有效长度,你就要将接收的实际长度加进去才能在触摸屏上显示。

以下是引用xinchen在2022-04-02 09:34:46的发言 >4楼:正常情况下,可以添...

引用4楼详细内容:

正常情况下,可以添加通信模块,但是当下价格和供货周期受很大影响,换成 网关模块是个方法;


很多别家的触摸屏本身是支持扫码枪接入的,西家的不行吗?


另外感兴趣的是1200存字符串的结构,按帖子说的,是BSTR了吧


假设我想手动设置个 "ABCD",那需要在 "41 42 43 44" 前加个字符串长度,是这样吧?

晚些时间我去试试,谢谢分享


 嗯,看了帮助文档了,之前西家的没用到字符串,还真不知道是这么保存字符串的


 另外,字串默认最大是254,但在定义时可以把长度定义进去,占用字节就是 字符串长度+2


 刚好手里的项目就要用到字符串,我得去改我的解析驱动模块了


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5549
发帖数: 626
精华帖: 6
回复:1200与扫码枪TCP通讯


只看楼主 楼主 8楼 2022-04-02 20:25:50
以下是引用xinchen在2022-04-02 10:47:07的发言 >7楼


 嗯,看了帮助文档了,之前西家的没用到字符串,还真不知道是这么保存字符串的


 另外,字串默认最大是254,但在定义时可以把长度定义进去,占用字节就是 字符串长度+2


 刚好手里的项目就要用到字符串,我得去改我的解析驱动模块了

以下是引用Siemens automation在2022-04-02 09:38:36的发言 >5楼:      不是,你接...

引用5楼详细内容:

      不是,你接收用字符串格式的话,如果字符串没有有效长度,你就要将接收的实际长度加进去才能在触摸屏上显示。

以下是引用xinchen在2022-04-02 09:34:46的发言 >4楼:正常情况下,可以添...

引用4楼详细内容:

正常情况下,可以添加通信模块,但是当下价格和供货周期受很大影响,换成 网关模块是个方法;


很多别家的触摸屏本身是支持扫码枪接入的,西家的不行吗?


另外感兴趣的是1200存字符串的结构,按帖子说的,是BSTR了吧


假设我想手动设置个 "ABCD",那需要在 "41 42 43 44" 前加个字符串长度,是这样吧?

晚些时间我去试试,谢谢分享

你这个是定义截图标注是定义字符串长度,而不是实际长度。西门子字符串默认长度是254,你可以自己定义短一点,你字符串的的第二字节是字符串的有效长度, 这个有效长度是指字符串里面有多少字符。


 
以下网友喜欢您的帖子:

  
游民

经验值: 59
发帖数: 10
精华帖: 0
回复:1200与扫码枪TCP通讯


只看楼主 9楼 2022-05-01 14:24:39

想不到西门子字符串跟第三方通讯的字符串格式不一样,是网关造成的吗?如果是232串口,或是Profinet接口的会不会这样。我刚好打算把扫码枪扫到的字符串显示的西门子触摸屏上,不过扫码枪还没收到,到时候测试一下。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
1200与扫码枪TCP通讯
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。