Libnodave - daveStart() Ошибка при использовании TCP-соединения

Я установил соединение с ПЛК Siemens S7-300 (смоделированным через PlcSIM) с использованием библиотеки libnodave. Нет проблем с подключением и записью данных в ПЛК. Однако я не могу изменить состояние ПЛК с пуска / останова. Я пытаюсь использовать следующие методы libnodave для таких действий:

int daveStatus = daveStart(dc);
int daveStatus = daveStop(dc);

Оба вызова функции возвращают одну и ту же ошибку: 33794

nodave.c Цитирует ошибку следующим образом:

case 0x8402: вернуть "CPU уже в RUN или уже в STOP?";

Использование daveStart() а также daveStop() функции можно посмотреть в примере testS7online.c:

if(doStop) {
    daveStop(dc);
}
if(doRun) {
    daveStart(dc);
}

В примерах функции пуска / останова вызываются только при выполнении соединений MPI с ПЛК. Кто-нибудь знает, поддерживаются ли функции запуска / остановки для использования с TCP-соединениями? Если да, какие-либо предложения относительно того, что может быть причиной моей ошибки?

1 ответ

Я только что попробовал dc.start() и dc.stop(), используя libnodave 8.4 и инструмент NetToPlcSim. Это сработало отлично. Возможно, вы не используете инструмент NetToPlcSim, который устанавливает соединение с PLCSim через TCP/IP (очевидно, это 127.0.0.1 порт 102), поэтому dc даже не может подключиться. Так что, если ваши строки не работают, значит, вы делаете что-то не так.

Другие вопросы по тегам