签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
回复关于200smart Modbus通讯之RS232的那些事
今天在“找答案”栏目中看到有一则提问,问题大致意思是组态了一个prot1口的基于RS232与扫描枪的通讯程序,程序基本按官方例子程序编写的,就是无法与扫描枪通讯连接起来,读取扫描枪发送过来的数据。
问题贴链接:http://www.ad.siemens.com.cn/service/answer/solved_246042_1076.html#
一说起官方提供的那些例子程序,我有部分验证过,均能够正常通讯。而无法通讯的可能原因大多是验证者的硬件连接错误或个别编程时的低级错误引起。所以,我在回复前很自然的想到自己初次验证时可能存在的错误,即外部硬件连接错误。
提问者他调用的通讯口为prot1,即为200smart 扩展信号板(SB CM01 信号板订货号:6ES7 288-5CM01-0AA0)。该扩展信号板共有6个接线端子,分别为:1#=(系统地)、2#=TX/B(RS232通讯信号正)、3#=RTS、4#=M(信号地)、5#=RX/A(RS232通讯信号负)、6#=5V(一般用于终端电阻的连接电源),200smart也只有扩展信号板通过硬件组态设置为RS232通讯口,集成的RS485口无法通过硬件组态设置为RS232口。
RS485与RS232通讯电平的差异:以prot1通讯信号板接线端子说明。
RS232通讯为通讯信号输出端与M端子之间的电压信号,即通讯时,通讯电平-15V~-5V为通讯电平逻辑1,+5V~+15V为通讯电平逻辑0,最高通讯频率20Kbit/S,通讯距离最长15米,只能实现一对一的通讯模式。
RS485通讯为通讯信号输出差分方式,即端子2#与端子5#之间的电压差。其中,+2V~+6V为通讯电平逻辑1,-6V~-2V为通讯电平逻辑0,通讯频率1200 ~ 115200Bit/S,通讯距离最长50米,可以与最多31个从站实现通讯。
由此,通过控制信号板CM01连接到扫描枪的RS232通讯接线,必须有2#、4#、5#这3个接线端子与扫描枪的通讯输出端子对接,端子2#、5#交叉,4#对接。提问者没有列举具体的扫描枪,故无法最进一步说明连接方式。这个是我首先怀疑无法通讯,容易出错的地方。
另外容易出错的地方是定义接收指令的接收信息,接收起始符或者信息定时器。相对起始符容易理解,即plc一直处在接收状态,当plc接收到定义好的起始符(在SMB188中定义字符),即作为接收信息的开始。如果定义接收信息的结束符,那么,同样道理,接收信息接收到结束符即判断为接收信息的结束。提问者没有定义这些起始和结束符,而是调用了信息定时器,即判断信息“串”与信息“串”之间的时间间隔,他定义为5mS在SMW192中),另外,同时定义信息的长度50个字符(这个定义非常重要,是必须要填写的项目之一)。根据他的问题描述,倒推通讯参数的控制字节SMB187的值应该是2#10001000,因为手头上没有通讯电缆,无法测试通讯控制字节的这点差异(通讯控制字节第0位),这个是我第二个疑点。其次,定义接收信息控制字节SMB187,建议定义为2#10010100比较合适。
还有一个可能出错的原因是定义的SMB130数据,是否与扫描枪的通讯参数保持一致,如果不一致也是造成通讯失败的原因之一。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1665848&b_id=64&s_id=83&num=0
因为我没有你的那个扫描枪进行通讯程序的测试,你如果看到此贴,按我的方式排除可能的问题,并测试通讯程序。
您好 我通讯上了但是我觉得应该有瑕疵。但是我扫码串口调试助手接收的对,在程序里接收的是字母f 请问是需要转换ascll码么?另外转换的话您有相关资料吗 学习一下。麻烦了
这个看你具体扫描枪的数据格式,F字符是第一个数据字符。
转换用项目树下的“转换”指令,一般看看F1帮助基本能够理解了,对于特殊的单独做一下验证。
扫描枪的数据格式是字节单位还是其它格式的?
这是怎么回事啊 用串口调试软件能直接往plc里传,用扫码枪就不行。扫码枪连接串口调试软件也能读到条码信息。扫码枪连plc就不行。
大佬能留个联系方式吗,这边有点着急想尽快解决问题,我看您这边一直没回复想详细咨询一下。我**************************
现在问题就是串口调试软件往plc里写0-9没问题,扫码器扫出来的数字到plc里就乱码,都是ascll。只是往plc写数的环境不一样。
这样吧,我问你确认,跟着我的思路走。
看找到问题需要几问。
第一问:你定义的SMB130通讯参数与霍尼韦尔扫描枪上设置的通讯参数是否一致?
你设置的plc侧通讯参数SMB130 = 16#09:
相当于SMB130 = 2# 1001,其中:
通讯频率 自由口协议
010 01
9600pbs
霍尼韦尔侧你如何设置?
plc侧通讯设置:
无校验、8个数据位、9600pbs、的自由口通讯模式。
3320 中文入门手册.pdf
不行,必须验证确认过!
霍尼韦尔的3320g扫描枪默认的通讯协议是什么?
我需要你有具体的参数形式答复,霍尼韦尔的3320g通讯参数是什么?
这是霍尼韦尔那边给发的邮件
接收程序.rar
这是我说的那个程序
你的程序是你自己写?
这个地址重复使用问题:
1)中断次数记录,你调用的地址为VB200,你为什么在RCV指令的TBL管脚仍然写VB200?虽然这个VB200在RCV指令并不参与通讯任务,是只是记录接收数据长度的字节。修改了!
2)字符复制STR_CPY指令,IN管脚的地址是什么含义?VB100,目的我清楚,是想把VB100存放的字符复制到VB300中,那VB100是如何来的数据?
3)RCV指令的TBL管脚你定义的是VB200,也就是说接收数据是从VB201字节开始的一串连续数据。
你一个处理VB201开始的一串数据到VB300才对呀,你的思路有点乱了。
先按我修改的程序测试。
接收程序.zip
我的程序暂时取消了字符转换的那段程序,及其它地址使用的修改。
扫描枪发送的数据是什么形式?
将程序重新下载到plc,接收扫描枪数据,看VB300开始的数据是什么?
将状态图表VB300的数据修改为ascll监控数据,截图给我。
int-0里的程序全删了只留了rcv指令实验完还是不行.确实乱了不知道该怎么弄了
没反应下进去扫码
如果我这个程序还是无法接收,那我要动用第二问了,你的外部与扫描枪连接的硬件连接是怎么样连接的?
我要看VB101后面的数据,或者VB300后面的也可以。
扫描枪本身输出232信号直接和信号板连的
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录