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 даже не может подключиться. Так что, если ваши строки не работают, значит, вы делаете что-то не так.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]