技术论坛

回复关于200smart Modbus通讯之RS232的那些事

作者 主题
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
主题:【探讨】回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 楼主 2021-01-06 08:44:54

回复关于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

至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 楼主 1楼 2021-01-06 09:10:30

因为我没有你的那个扫描枪进行通讯程序的测试,你如果看到此贴,按我的方式排除可能的问题,并测试通讯程序。


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 2楼 2021-01-06 10:59:38






您好 我通讯上了但是我觉得应该有瑕疵。但是我扫码串口调试助手接收的对,在程序里接收的是字母f 请问是需要转换ascll码么?另外转换的话您有相关资料吗 学习一下。麻烦了


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 楼主 3楼 2021-01-06 11:11:37
以下是引用苏越0826在2021-01-06 10:59:38的发言 >






您好 我通讯上了但是我觉得应该有瑕疵。但是我扫码串口调试助手接收的对,在程序里接收的是字母f 请问是需要转换ascll码么?另外转换的话您有相关资料吗 学习一下。麻烦了

这个看你具体扫描枪的数据格式,F字符是第一个数据字符。

转换用项目树下的“转换”指令,一般看看F1帮助基本能够理解了,对于特殊的单独做一下验证。

扫描枪的数据格式是字节单位还是其它格式的?




 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 4楼 2021-01-06 14:21:06


这是怎么回事啊 用串口调试软件能直接往plc里传,用扫码枪就不行。扫码枪连接串口调试软件也能读到条码信息。扫码枪连plc就不行。


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 5楼 2021-01-06 15:18:22

大佬能留个联系方式吗,这边有点着急想尽快解决问题,我看您这边一直没回复想详细咨询一下。我**************************


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 6楼 2021-01-06 15:25:14

现在问题就是串口调试软件往plc里写0-9没问题,扫码器扫出来的数字到plc里就乱码,都是ascll。只是往plc写数的环境不一样。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事
推荐帖


只看楼主 楼主 7楼 2021-01-06 15:27:06
以下是引用苏越0826在2021-01-06 14:21:06的发言 >


这是怎么回事啊 用串口调试软件能直接往plc里传,用扫码枪就不行。扫码枪连接串口调试软件也能读到条码信息。扫码枪连plc就不行。

这样吧,我问你确认,跟着我的思路走。

看找到问题需要几问。

第一问:你定义的SMB130通讯参数与霍尼韦尔扫描枪上设置的通讯参数是否一致?



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 楼主 8楼 2021-01-06 15:33:38

你设置的plc侧通讯参数SMB130 = 16#09:

相当于SMB130 = 2# 1001,其中:

通讯频率   自由口协议

  010             01

9600pbs

霍尼韦尔侧你如何设置?

plc侧通讯设置:

无校验、8个数据位、9600pbs、的自由口通讯模式。


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 9楼 2021-01-06 15:59:38
 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 楼主 10楼 2021-01-06 16:01:21

不行,必须验证确认过!

霍尼韦尔的3320g扫描枪默认的通讯协议是什么?

我需要你有具体的参数形式答复,霍尼韦尔的3320g通讯参数是什么?


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 11楼 2021-01-06 16:06:18

这是霍尼韦尔那边给发的邮件




 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 12楼 2021-01-06 16:09:17

接收程序.rar

这是我说的那个程序


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 楼主 13楼 2021-01-06 16:24:21

你的程序是你自己写?

这个地址重复使用问题:

1)中断次数记录,你调用的地址为VB200,你为什么在RCV指令的TBL管脚仍然写VB200?虽然这个VB200在RCV指令并不参与通讯任务,是只是记录接收数据长度的字节。修改了!

2)字符复制STR_CPY指令,IN管脚的地址是什么含义?VB100,目的我清楚,是想把VB100存放的字符复制到VB300中,那VB100是如何来的数据?

3)RCV指令的TBL管脚你定义的是VB200,也就是说接收数据是从VB201字节开始的一串连续数据。

你一个处理VB201开始的一串数据到VB300才对呀,你的思路有点乱了。




 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 楼主 14楼 2021-01-06 16:27:24

先按我修改的程序测试。

接收程序.zip



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 楼主 15楼 2021-01-06 16:30:12

我的程序暂时取消了字符转换的那段程序,及其它地址使用的修改。

扫描枪发送的数据是什么形式?

将程序重新下载到plc,接收扫描枪数据,看VB300开始的数据是什么?

将状态图表VB300的数据修改为ascll监控数据,截图给我。



 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 16楼 2021-01-06 16:38:34

int-0里的程序全删了只留了rcv指令实验完还是不行.确实乱了不知道该怎么弄了


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 17楼 2021-01-06 16:42:43


没反应下进去扫码


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 楼主 18楼 2021-01-06 16:42:53

如果我这个程序还是无法接收,那我要动用第二问了,你的外部与扫描枪连接的硬件连接是怎么样连接的?

我要看VB101后面的数据,或者VB300后面的也可以。


 
以下网友喜欢您的帖子:

  
游士

经验值: 175
发帖数: 13
精华帖: 0
回复:回复关于200smart Modbus通讯之RS232的那些事


只看楼主 19楼 2021-01-06 16:47:33




扫描枪本身输出232信号直接和信号板连的


 
以下网友喜欢您的帖子:

  
收起
回复关于200smart Modbus通讯之RS232的那些事
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。