小第是个初学者,最近方知在同一端口不能同时使用,XMT/RCV,现在有一任务,要求S7226通过口1,自由口通讯方式每200ms给上位机发送数据,上位机在接到请求数据后立即返回信息。这就需要在时序上切换RCV和XMT。怎么做最合适,还请各位告知;原本想用定时中断来控制时间,但因程序中已使用定时中断来控制PID,自己简单做了个例子,用定时器来控制,但出现了一个问题,如果上位机接、发正常,能保证PLC发送正常,但是如果上位机接发出现问题,或者上位机并无工作,那么PLC的发送也出现故障,变成近1S发送一次。请问各位,这怎么解决,下面是我编的例子,希望各位给予指正:
主程序:
NETWORK 1
LD SM0.1
CALL SBR_0
NETWORK 2
LD SM0.0
MOVB 14, VB80
MOVD 16#50756D70, VD81
MOVD 16#20312069, VD85
MOVD 16#73206F6E, VD89
MOVW 16#0D0A, VW93
NETWORK 3
LD SM0.0
TON T32, +200
TON T33, +100
NETWORK 4
LD T33
CALL SBR_0
MOVW +0, T33
NETWORK 5
LD T32
LPS
XMT VB80, 1
AENO
MOVB 16#B0, SMB187
LPP
MOVW +0, T32
//子程序SBR_0
NETWORK 1
LD SM0.0
MOVB 16#09, SMB130
MOVB 0, SMB187
MOVW +5, SMW190
MOVB 16#0A, SMB189
MOVB 100, SMB194
RCV VB100, 1
ATCH INT_0, 25
ENI
//中断程序INT_0
NETWORK 1
LDB= SMB186, 32
MOVD VD100, VD300
MOVD VD104, VD304
MOVB VB100, VB300
MOVB VB101, VB301
MOVB VB102, VB302
MOVB VB103, VB303
MOVB VB104, VB304
MOVB VB105, VB305
MOVB 0, SMB187