Twincat 中如何将位变量链接到字节

最近在测试一个EtherCAT IO模块,

参考视频Ethercat总线快速入门教程——1-2TwinCAT基本操作_哔哩哔哩_bilibili

我手里是欧辰的一个模块,它的输入输出都是字节形式的

 

image

 因此小改了下PLC程序

1. 在DUTs中新建了一个结构体和联合体

image

结构体内容

TYPE Bits8 :
STRUCT
	bBit1  : BIT;
    bBit2  : BIT;
    bBit3  : BIT;
    bBit4  : BIT;
    bBit5  : BIT;
    bBit6  : BIT;
    bBit7  : BIT;
    bBit8  : BIT;  
END_STRUCT
END_TYPE

  联合体内容

TYPE Bits8Union :
UNION
	DataByte AT %Q* : BYTE; 
	DataBits : Bits8 ;
END_UNION
END_TYPE

  主程序内容

PROGRAM MAIN
VAR
	input1 AT %I*:BYTE;
	timer:TON;
	output1 : Bits8Union;
	state: INT := 0;

END_VAR

//-----------------------------------------
CASE state OF
    0:  // 输出为1,持续1500ms
        output1.DataBits.bBit2 := TRUE;
        timer(IN := TRUE, PT := T#1500MS);
        IF timer.Q THEN
            state := 1;
            timer(IN := FALSE);
        END_IF;

    1:  // 输出为0,持续500ms
        output1.DataBits.bBit2 := FALSE;
        timer(IN := TRUE, PT := T#500MS);
        IF timer.Q THEN
            state := 0;
            timer(IN := FALSE);
        END_IF;
END_CASE

  编译后再次link就可以啦

image

 

posted @ 2025-09-20 22:13  永不停息的发动机  阅读(12)  评论(0)    收藏  举报