PLC代码
#RunR_TRIG(CLK := #Exe );
#DoneR_TRIG(CLK := "112AS228TSend2".DateID=0);
IF #RunR_TRIG.Q OR "Clock_0.5Hz" THEN
CASE #Var1 OF
0:
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate1;
"112AS228TSend2".DateID := 16#1001;
#Exe := FALSE;
1: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate2;
"112AS228TSend2".DateID := 16#1002;
#Exe := FALSE;
2: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate3;
"112AS228TSend2".DateID := 16#1003;
#Exe := FALSE;
3: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate4;
"112AS228TSend2".DateID := 16#1004;
#Exe := FALSE;
4: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate5;
"112AS228TSend2".DateID := 16#1005;
#Exe := FALSE;
5: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate6;
"112AS228TSend2".DateID := 16#1006;
#Exe := FALSE;
6: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate7;
"112AS228TSend2".DateID := 16#1007;
#Exe := FALSE;
7: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate8;
"112AS228TSend2".DateID := 16#1008;
#Exe := FALSE;
8: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate9;
"112AS228TSend2".DateID := 16#1009;
#Exe := FALSE;
9: // Statement section case 2 to 4
"112AS228TSend2".DateID := 16#100A;
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate10;
"112AS228TSend2".DateID := 16#100A;
#Exe := FALSE;
10: // Statement section case 2 to 4
"112AS228TSend2"."Date" := "115AS2_Date".AxisDate11;
"112AS228TSend2".DateID := 16#100B;
#Exe := FALSE;
ELSE // Statement section ELSE
#Var1 := 0;
#Exe := FALSE;
END_CASE;
END_IF;
IF #DoneR_TRIG.Q THEN
#Var1 := #Var1 + 1;
#Exe := TRUE;
END_IF;
IF NOT #Run THEN
#Var1 := 999;
END_IF;
上方程序值做一个动作,当"112AS228TSend2".DateID==0时,激活变量#Var1自加1,触发下一个数据传输。"112AS228TSend2".DateID内数据设置0需要 接收数据方/数据处理方 来执行。
数据
下方时需要交换给其他设备的数据变量,1个ID,8个数据。
事件触发
"112AS228TSend2".DateID 即IP_33_ateID==4097,延时0.2s触发AS2_DateIDBack=2,允许其他设备转存数据,并将AS2_DateIDBack=1,告知中转设备,数据被接收。
数据接收
IF DateIDBack=2 THEN
IF DateID=16#1001 THEN
BMOV( ExcDate , 16 , Var_1 );
DateIDBack:=1;
ELSIF DateID=16#1002 THEN
BMOV( ExcDate , 16 , Var_2 );
DateIDBack:=1;
ELSIF DateID=16#1003 THEN
BMOV( ExcDate , 16 , Var_3 );
DateIDBack:=1;
ELSIF DateID=16#1004 THEN
BMOV( ExcDate , 16 , Var_4 );
DateIDBack:=1;
ELSIF DateID=16#1005 THEN
BMOV( ExcDate , 16 , Var_5 );
DateIDBack:=1;
ELSIF DateID=16#1006 THEN
BMOV( ExcDate , 16 , Var_6 );
DateIDBack:=1;
ELSIF DateID=16#1007 THEN
BMOV( ExcDate , 16 , Var_7 );
DateIDBack:=1;
ELSIF DateID=16#1008 THEN
BMOV( ExcDate , 16 , Var_8 );
DateIDBack:=1;
ELSIF DateID=16#1009 THEN
BMOV( ExcDate , 16 , Var_9 );
DateIDBack:=1;
ELSIF DateID=16#100A THEN
BMOV( ExcDate , 16 , Var_10 );
DateIDBack:=1;
ELSIF DateID=16#100B THEN
BMOV( ExcDate , 16 , Var_11 );
DateIDBack:=1;
END_IF;
END_IF;
根据ID号接收对应数据,并将DateIDBack:=1;
接收完毕
DateIDBack==1时,接收完毕,将ID和状态清0,让PLC切换到下一个数据。