如图在循环中断编写的程序,大概是通过SEND_PTP模块传一个开始传输的字符指令给串口,然后等待50ms,启动RCV_PTP模块进行接受从站传过来的字符信息。但是下载运行监测时,修改M10.0为1后,SEND_ptp工作正常,成功发送,并且M0.1为1,后RCV_PTP的EN_R端口为1,但为能接受到字符信息,NDR端口状态为0,ERROR状态为0,STATUS状态为16#0000,LENGTH状态为0。随后用串口通信程序调试,确定可以接受到SEND_PTP发过来的字符,然后自己发送字符串,亦可使RCV_PTP接收到,但状态为16#0095。请教各位大神,我是程序逻辑有错误,还是什么问题?如果有相关范例也可以发我一个谢谢,邮箱地址:1659989633@qq.com
问题补充:
我现在也怀疑是不是我发送的启动指令有问题造成仪器没有响应,所以RCV一直都接受不到数据?又有一个新问题,使用RS232串口线,用PLC读取从站(测量仪器)的数据,PLC的SEND_PTP模块发送#000F启动指令,我首先用字符串形式发送,没有启动仪器回传数据,然后下载了一个串口调试程序,USB-RS232线连接电脑和仪器,以ASCII形式发送#000F,成功回读到数据。请问PLC中SEND_PTP模块中的BUFFER数据块的发送指令应该怎样设置?谢谢!
图片说明:
最佳答案
1. 16#0095是由于出现了超时, 因此终止了消息接收。
你用串口通信程序调试发送字符,S7-1200 都能接收到,说明硬件是好的, 肯定是程序有问题了。
2. PLC中SEND_PTP模块中的BUFFER数据块可以建一个VARAINT的数据类型,可以是单个字符或字符串,例如P#DB10.DBX0.0 Byte10
3.有个S7-1200与串口调试软件的例子程序可以看看:
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=3793&loginID=&srno=&sendtime=
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc195187.html