TwinCAT 3:块保持忙碌
TwinCAT 3 : Block stays busy
我想将一些数据保存到 .txt 文件中。我可以创建它,但我无法向其中写入文本,因为 FB 一直很忙。
CASE counter OF
1:
fileOpen.sNetId := '';
fileOpen.sPathName := 'C:\test\test.txt';
fileOpen.nMode := FOPEN_MODEWRITE;
fileOpen.bExecute := TRUE;
fileOpen.tTimeout := T#200MS;
fileOpen();
counter := 2;
2:
IF NOT fileOpen.bBusy AND NOT fileOpen.bError THEN (* bBusy stays true*)
counter := 3;
END_IF
3:
fileOpen.bExecute := FALSE;
fbPutFile(sNetId := '', hFile := fileOpen.hFile, sLine := 'FOO', bExecute := TRUE, tTimeout := INT_TO_TIME(200), bBusy =>, bError =>, nErrId =>);
END_CASE
我进入了第2步,但是我无法进入第3步,问题出在哪里?
因为您已经停止调用打开文件功能块。您在这里所做的是在第 1 步中调用 FB_FileOpen,然后停止调用它。 bBusy 标志在步骤 1 中变高(真),但永远不能更改为任何其他内容,因为您再也不会调用 FB。您还需要在步骤 2 中调用它。请记住,bExecute 也是 ADS 命令的触发器,因此在第 2 步中完成后,您可以在第 2 步中将 bExecute-input 设置为 FALSE,因为您已经触发了命令。
...
2:
fileOpen(bExecute := false);
IF NOT fileOpen.bBusy AND NOT fileOpen.bError THEN (* bBusy stays true*)
counter := 3;
END_IF
...
还要记住,Beckhoffs FB_FileOpen 假定目录 C:\test 存在(尽管文件 test.txt 不存在,如果您使用 FOPEN_MODEWRITE 打开它,它将自动创建)。要创建所有必要的目录(如果它们尚不存在)使用 TwinCATs FB_CreateDir.
我想将一些数据保存到 .txt 文件中。我可以创建它,但我无法向其中写入文本,因为 FB 一直很忙。
CASE counter OF
1:
fileOpen.sNetId := '';
fileOpen.sPathName := 'C:\test\test.txt';
fileOpen.nMode := FOPEN_MODEWRITE;
fileOpen.bExecute := TRUE;
fileOpen.tTimeout := T#200MS;
fileOpen();
counter := 2;
2:
IF NOT fileOpen.bBusy AND NOT fileOpen.bError THEN (* bBusy stays true*)
counter := 3;
END_IF
3:
fileOpen.bExecute := FALSE;
fbPutFile(sNetId := '', hFile := fileOpen.hFile, sLine := 'FOO', bExecute := TRUE, tTimeout := INT_TO_TIME(200), bBusy =>, bError =>, nErrId =>);
END_CASE
我进入了第2步,但是我无法进入第3步,问题出在哪里?
因为您已经停止调用打开文件功能块。您在这里所做的是在第 1 步中调用 FB_FileOpen,然后停止调用它。 bBusy 标志在步骤 1 中变高(真),但永远不能更改为任何其他内容,因为您再也不会调用 FB。您还需要在步骤 2 中调用它。请记住,bExecute 也是 ADS 命令的触发器,因此在第 2 步中完成后,您可以在第 2 步中将 bExecute-input 设置为 FALSE,因为您已经触发了命令。
...
2:
fileOpen(bExecute := false);
IF NOT fileOpen.bBusy AND NOT fileOpen.bError THEN (* bBusy stays true*)
counter := 3;
END_IF
...
还要记住,Beckhoffs FB_FileOpen 假定目录 C:\test 存在(尽管文件 test.txt 不存在,如果您使用 FOPEN_MODEWRITE 打开它,它将自动创建)。要创建所有必要的目录(如果它们尚不存在)使用 TwinCATs FB_CreateDir.