基于西门子和GRM322的数据交互程序

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切换到下一个数据。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Envis_liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值