发布于 2007-03-01 19:50:22
0楼
我加了DB50.DBX29.6后问题好像没有再出现,但是不知道为什么要这么做,把源程序发上来给大家看看。由于plc有ups供电,而rtu没有ups电源,所以每次停机的时候总有cpu还在运行,rtu已经停电,所有通信就一直报故障,第二天起来就不行了,不知道是不是cp341错误太多会停止发送。
M1.3:2hz的脉冲
DB50.DBX 29.6--->很关键的东西,我加了这个以后通信一直正常,有人可以解释原因吗?
A M 1.3 //Trigger SEND
= M 4.5
= DB50.DBX 29.6
A M 4.5
AN DB40.DBX 0.0 //SEND_REQ
AN DB40.DBX 0.4 //SEND_DONE
AN DB40.DBX 0.5 //SEND_ERROR
R M 4.5 //Reset Trigger BSEND
S DB40.DBX 0.0 //Set SEND_REQ
// ------------------------
// Generate edge SEND_REQ
// ------------------------
A(
O DB40.DBX 0.4 //SEND_DONE
O DB40.DBX 0.5 //SEND_ERROR
)
A DB40.DBX 0.0 //SEND_REQ
R DB40.DBX 0.0 //SEND with REQ=0
// S M 4.5
// ------------------------
// Supply LEN
// ------------------------
L W#16#6 //Length SEND-Data
T DB40.DBW 10 //SEND LEN
// ------------------------
// SEND with Instance-DB
// ------------------------
CALL FB 8 , DB50
SF :='S'
REQ :=DB40.DBX0.0
R :=DB40.DBX0.1
LADDR :=DB40.DBW16
DB_NO :=44
DBB_NO :=0
LEN :=DB40.DBW10
R_CPU_NO:=
R_TYP :='X'
R_NO :=
R_OFFSET:=
R_CF_BYT:=
R_CF_BIT:=
DONE :=DB40.DBX0.4
ERROR :=DB40.DBX0.5
STATUS :=DB40.DBW12
// -------------------------------
// Check "Complete without error"
// -------------------------------
A DB40.DBX 0.4 //DONE ?
JCN CON1 //if NO
L DB40.DBW 6 //"Complete without Error"
+ 1 //increment counter
T DB40.DBW 6
NOP 0
NOP 0 //further user functions
NOP 0
JU LEAV
// -------------------------------
// Check "Complete with error"
// -------------------------------
CON1: A DB40.DBX 0.5 //ERROR ?
JCN CON2 //if NO
L DB40.DBW 8 //"Complete with error"
+ 1 //increment counter
T DB40.DBW 8
NOP 0
NOP 0 //Error-Handling
NOP 0
L 0
L DB40.DBW 12 //if STATUS <> 0
==I
JC LEAV
T DB40.DBW 14 //save STATUS
JU LEAV
// ----------------------------
// Check "Error in STATUS"
// ----------------------------
CON2: L 0
L DB40.DBW 12 //if STATUS <> 0
==I
JC LEAV
T DB40.DBW 14 //save STATUS
NOP 0 //
NOP 0 //Error-Handling
NOP 0
LEAV: CLR
If anything can go wrong, it will.