当前位置: 主页 > PLC控制

S7-200自由口通讯接收不到任何字符

自己参考做了一个自由口通讯简单程序,VB100开始接收数据,利用接收到字符中断触发(收到@38*后转码成56放在VW120)输出。实验后发现接收不到任何字符。串口调试助手试过了串口线波特率等等没有设置错误。请教各路大神找找问题~
程序:LDSM0.1
MOVB16#09,SMB30
MOVB16#F0,SMB87
MOVB16#40,SMB88
MOVB16#2A,SMB89
MOVW5,SMW90
MOVB10,SMB94
ATCHINT_0:INT0,23
ENI
RCVVB100,0
INT_0:
LDSM0.0
ATHVB102,VB121,2
LDSM0.0
AW=VW120,56
OQ1.3
ANM4.2
=Q1.3

问题补充:
首先非常感谢互撸哇的程序,测试后可以收到数据,但是不是发送的数据。情况如下:发送1,PLC中VB4有符号(0)VB5ASCLL(g)VB6AsclL(?)VB7ASCLL(?),再发1,PLC中VB8有符号(0)VB9ASCLL(g)VB10ASCLL(?)VB7ASCLL(?);重下载程序,发送2,PLC中VB4有符号(0)VB5ASCLL(3)VB6ASCLL(?)VB7ASCLL(=),再发2,PLC中VB8有符号(0)VB9ASCLL(3)VB10ASCLL(?)VB7ASCLL(=);SMB861000_0000
补充一下,我自己程序测试时候,串口调试助手收发数据正常,波特率等等都匹配,用的普通串口线。自己程序收不到任何数据时候无错误代码SMB1860000_0000(串口1)

最佳答案

你的是接收程序,你用串口调试助手可以收到通信对象的数据,而PLC接收不到么?通讯协议是否对应呢?
你接收起始条件为:空闲+起始字符,条件略苛刻呐。改为空闲或起始字符,再试试。

或者用下面的程序,再试试可否接收到数据。如果可以,就是你SMB87设置有问题。
MAIN:
LDSM0.1
MOVB16#49,SMB30//自由口,9600,偶校验
MOVD&VB4,VD0
ATCHINT_0:INT0,8//连接8号中断
ENI

INT_0:
LDSM0.0
MOVBSMB2,*VD0//将接收到的字符依次存入VB4等
INCDVD0

提问者对于答案的评价:
非常感谢~~问题已经找到啦,呵呵,困扰几天了,问题出在COM口通讯线缆上,我用的是普通直连COM线,9针1对1的。应该用专用的PC-PPI线缆通讯的~~~

专家置评

已阅,最佳答案正确。
在进行串口调试时,建议使用西门子标准电缆。

  • 关注微信

猜你喜欢

微信公众号