签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
各位前辈好,我想这边遇到一个小问题,向各位前辈请教请教!
我这边在用s7-200smart做一个类似通讯中继的东西,功能如下:
(1)p0口连接PC,接收PC发出的指令,p1口连接四个驱动器(地址分别为11 12 13 14),将PC的指令解析后分别发到四个驱动器。
(2)PLC上电时先向四个驱动发送初始化指令,完成后等待接收PC的指令。
遇到的问题如下:
当用串口助手分别模拟PC和驱动接发数据时,通讯正常,一旦接到驱动器后,上电的初始化那部分通讯正常。但是PC发送的指令解析后,发到地址为11的驱动后,PLC接收不到返回的数据,用串口助手检测发现驱动是返回了数据的,这时假如用串口助手模拟发送返回值的话PLC能接收到。我确保数据解析和校验没问题,驱动器没问题,望各位前辈帮忙提提意见。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1604183&b_id=64&s_id=0&num=5
P1口与四个驱动器如何连接的?
建议自己画流程图来分析吧。
单纯的靠空想是很不负责任的。
还有你哟用的是啥通讯协议,不是每种通讯协议都返回数据的。
PLC直接跟驱动器通讯返回数据但PLC不认,PLC跟串口助手通讯返回数据PLC能正常识别,有可能是驱动器没按通讯协议要求接收数据后延时一段时间再返回,而是接收数据后立刻返回造成PLC接收的数据帧前面几个字节没完整接收所以判断数据帧无效。或者是PLC发送完成后没有直接切换为接收状态导致漏接数据。
第一部分,plc分别向驱动器发送初始化命令,驱动器收到,并返回了数据,正确!第二部分,plc将pc的命令解析后分别将速度命令发送给驱动器,第一驱动器收到命分,plc将pc的命令解析后分别将速度命令发送给驱动器,第一驱动器收到命令,电机也转动了,驱动也返回数据了(通过串口助手检测到的),但是接收缓存区里没有数据。
引用2楼详细内容:
1、P0、P1通讯口是使用不同的SMB,绑定不同的中断,你有正确配置了么,会不会P0、P1的SMB搞乱了?中断绑定搞乱了?
2、一般的RS485通讯协议吧,先完成当前的任务后才能进入新的任务,如果你在P0的中断函数里面不判断P1的任务状态直接切换P1的收发使能,P1通讯就不满足协议逻辑咯。
3、一般通讯任务都是放到主程序里面处理的,保证不同的通信口通讯不会影响到另外一个通信口正在进行的任务。
检查SMB87设置,
你说的没返回数据分两种情况:1,要确定PLC指令信息是否发给了11号站,发送的指令信息是否正确,这是返回信息的前提。
2, 11号站确实返回数据,但PLC并不一定认为是有效数据。如果你用的是RVC指令。SMB87设置不对会忽略或终止接收到的信息,再有RVC指令接收完成后必须再次启动该指令才能再次接收信息,不然你可能只能接收到一次信息。PLC端口0是否接收信息可以启动 8 号中断事件,在中断程序中设置个累加器以监视接收字符数量的变化。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录