以下是泵的启动程序,用一个字作泵的控制字,控制字定义如下:
Reading and writing to the motor control words:
Addressing format:DB(+DB number).DBX(+word number).(+bit number)
EXAMPLE:
Adressing pump / motor on word 0 in DB nr.50
DB50.DBX0.0= RUN (SCADA green) 泵运行位
DB50.DBX0.1= request to run 请求运行
DB50.DBX0.2= general alarm state 报警汇聚位
DB50.DBX0.3= runstate alarm 启动失败报警位
DB50.DBX0.4= alarm device 1 外部报警信号位1
DB50.DBX0.5= alarm device 2 外部报警信号位2
DB50.DBX0.6= alarm device 3 外部报警信号位3
DB50.DBX0.7= motor-alarm countdown 报警计数状态位
DB50.DBX1.6= auto / man 自动/手动位
DB50.DBX1.7= man off / on 手动关/开位
When addressing pump / motor on word 2 start with DB50.DBX2.0
以下是程序:
L #DATAWORD_NUMBER // DW adress motor data
SLW 3 //不知道此处为何左移3位???
LAR1
OPN #MOTOR_DB // DB motor status data
// ********************************
// Reset Alarms
// ********************************
A #RESET_PLS // reset input
R DBX [AR1,P#0.4] // alarm device #1
R DBX [AR1,P#0.5] // alarm device #2
R DBX [AR1,P#0.6] // alarm device #3
R DBX [AR1,P#0.3] // run state alarm
// ********************************
// Check Security Devices
// ********************************
AN #NC_ALM1 // device #1 (input: NC)
S DBX [AR1,P#0.4] // alarm devive #1
AN #NC_ALM2 // device #2 (input: NC)
S DBX [AR1,P#0.5] // alarm device #2
A #NO_ALM3 // device #3 (input: NO)
S DBX [AR1,P#0.6] // alarm device #3
// ********************************
// Runalarm
//*********************************
A DBX [AR1,P#0.1] // request to run
AN #RUN
O
AN DBX [AR1,P#0.1] // request to run
A #RUN
= DBX [AR1,P#0.7] // motor-alarm countdown
// ********************************
// Runalarm; counter
// ********************************
A DBX [AR1,P#0.7] // motor-alarm countdown
A #SEC_PLS
AN DBX [AR1,P#0.3] // run state alarm
JNB _001
L #COUNT // internal counter
L 1
+I
T #COUNT // internal counter
_001: NOP 0
// ********************************
// Runalarm, reset counter
// ********************************
AN DBX [AR1,P#0.7] // motor-alarm countdown
//;
JNB _002
L 0
T #COUNT // internal counter
_002: NOP 0
// ********************************
// Runalarm; set merker
// ********************************
AN DBX [AR1,P#0.7] // motor-alarm countdown
A #RESET_PLS
R DBX [AR1,P#0.3] // run state alarm
L #COUNT // internal counter
L #RUNTIME
>I
S DBX [AR1,P#0.3] // run state alarm
// ********************************
// Collect alarms
// ********************************
A DBX [AR1,P#0.4] // alarm device #1
O DBX [AR1,P#0.5] // alarm device #2
O DBX [AR1,P#0.6] // alarm device #3
O DBX [AR1,P#0.3] // run state alarm
= #GENERAL_ALARM // "Alarm" (for e.g. SCADA)
= DBX [AR1,P#0.2]
// ********************************
// Control Motor
// ********************************
A(
AN DBX [AR1,P#1.6] // 0 = auto / 1 = man
A #REQUEST
O
A DBX [AR1,P#1.6] // 0 = auto / 1 = man
A DBX [AR1,P#1.7] // 0 = man-off / 1 = man-on
)
AN DBX [AR1,P#0.2] // alarm state
A #INSTALLATION_ON // installation enabled
= DBX [AR1,P#0.1] // request to run
= #REL // relay control
//;
A #RUN
= DBX [AR1,P#0.0] // For SCADA (Symbol Green)
//;
AN DBX [AR1,P#1.6] // 0 = auto / 1 = man
R DBX [AR1,P#1.7] // 0 = man-off / 1 = man-on
AN DBX [AR1,P#1.6] // 0 = auto / 1 = man
A #REQUEST
S DBX [AR1,P#1.7] // 0 = man-off / 1 = man-on
//;
AN DBX [AR1,P#1.6] // 0 = auto / 1 = man
AN #REQUEST
R DBX [AR1,P#1.7] // 0 = man-off / 1 = man-on
不知第二行为何要SLW 3 ????????请大家帮忙