0

我已经在两个通过 CAN 总线通信的组件之间连接了 Wago PFC200 750-8204,以便接收消息并进行进一步处理。我的方法是使用 WagoCanLayer2_02.lib 库在 codesys 2.3 中实现它,但我在读取 canbus 时失败了。编码。

open(BAUDRATE := 500000 ,ENABLE := TRUE );
can11BitFrame(
CAN_ID:= 16#380,
CAN_BUFFER:= FALSE,
ENABLE:= TRUE,
READ_FRAME:= frame,
DATA=> data);

你知道我该如何解决这个问题并有你的代码示例吗?

4

1 回答 1

1

我无法发表评论,所以我必须回答(尽管无论如何可能为时已晚)。

假设 CAN 接口已初始化并正常工作,并且您can11BitFrame是一个CAN_RX_11BIT_FRAME实例,则以下内容应该可以工作:

can11BitFrame(
    CAN_ID := 16#380,
    CAN_BUFFER := FALSE,
    CAN_PORT := 0,    (* not sure if this is really necessary here *)
    ENABLE := TRUE,
    READ_FRAME := frame);

data := can11BitFrame.DATA;

或者可能

IF can11BitFrame.error = CAN_RECEIVE_OK THEN
    data := can11BitFrame.DATA;
END_IF

并且您必须设置frametrue每次要阅读该消息。

我不知道它是否以及DATA => data应该如何工作(我在这里使用 FUP)。我所知道的。在 ST 中,您必须先执行功能块,然后才能访问输出参数。

于 2016-03-31T07:31:06.320 回答