签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
最近一个项目有用到手持式扫码枪,在调试过程遇到一些问题分享个大家。
扫码枪是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
232转TCP不需要增加成本吗,下来还不如直接加个232.起码还省事
关键是232模块比转TCP贵。
引用1楼详细内容:
能贵几多钱?你调试的时候,时间不是钱?后续的维护不是钱?不能只看眼前,也要看后续。。。
正常情况下,可以添加通信模块,但是当下价格和供货周期受很大影响,换成 网关模块是个方法;
很多别家的触摸屏本身是支持扫码枪接入的,西家的不行吗?
另外感兴趣的是1200存字符串的结构,按帖子说的,是BSTR了吧
假设我想手动设置个 "ABCD",那需要在 "41 42 43 44" 前加个字符串长度,是这样吧?
晚些时间我去试试,谢谢分享
不是,你接收用字符串格式的话,如果字符串没有有效长度,你就要将接收的实际长度加进去才能在触摸屏上显示。
引用2楼详细内容:
你看四楼上面说的,就不是大家现在遇到的问题,当前交期长,价格也比以前贵,你这个232还没有以太网好用,增加以太网网关唯一就是增加调试时间,显现调试出来了,以后出现问题都好解决,而且出问题232也会出现。我项目里面全是总线和TCP,编程也方便一些。
引用4楼详细内容:
嗯,看了帮助文档了,之前西家的没用到字符串,还真不知道是这么保存字符串的
另外,字串默认最大是254,但在定义时可以把长度定义进去,占用字节就是 字符串长度+2
刚好手里的项目就要用到字符串,我得去改我的解析驱动模块了
引用5楼详细内容:
你这个是定义截图标注是定义字符串长度,而不是实际长度。西门子字符串默认长度是254,你可以自己定义短一点,你字符串的的第二字节是字符串的有效长度, 这个有效长度是指字符串里面有多少字符。
想不到西门子字符串跟第三方通讯的字符串格式不一样,是网关造成的吗?如果是232串口,或是Profinet接口的会不会这样。我刚好打算把扫码枪扫到的字符串显示的西门子触摸屏上,不过扫码枪还没收到,到时候测试一下。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录