编译器给出了以下程序的错误。我解决不了它。
这是用ST语言编写的Codesys系统。我想使用位操作来操作电磁阀。
CanRx := can_getDatabox (CAN_2, 10, ADR(CanRx_data), ADR(CanRxNumBytes));
Rx_test_1 := CanRx_data[1];
Rx_test_2 := CanRx_data[2];
Rx_test_3 := CanRx_data[3];
Rx_test_4 := CanRx_data[4];
IF(Rx_test_1 & 4 = 4)THEN
out (OUT_1_POH_CL, 1500);
ELSE IF(Rx_test_1 & 8 = 8)THEN
out (OUT_1_POH_CL, 0);
END_IF
编译器错误:
Error: 4011:Callback_MAIN_Task(XX): Type mismatch in parameter 1 of 'AND':Cannot convert 'INT' to 'ANY_BIT'
Error: 4024:Callback_MAIN_Task(XX): Expecting END_IF_before"
发布于 2020-11-20 18:40:03
我能够自己解决这个问题。我使用ELSIF而不是&,使用ELSIF实例的ELSEIF。下面是正确的代码。
Rx_test_1 : BYTE;
IF ((Rx_test_1 AND 1) =1) THEN
statement1;
ELSIF (( Rx_test_1 AND 2) =1) THEN
statement2;
ELSIF (( Rx_test_1 AND 4) =1) THEN
statement3;
ELSE
statement4;
END_IF
https://stackoverflow.com/questions/64925396
复制相似问题