Я установил соединение с ПЛК 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-соединениями? Если да, какие-либо предложения относительно того, что может быть причиной моей ошибки?
Я только что попробовал dc.start () и dc.stop (), используя libnodave 8.4 и инструмент NetToPlcSim. Это сработало отлично. Возможно, вы не используете инструмент NetToPlcSim, который устанавливает соединение с PLCSim через TCP / IP (то есть 127.0.0.1 порт 102), следовательно, dc даже не может подключиться. Так что, если ваши строки не работают, значит, вы делаете что-то не так.
Других решений пока нет …