У меня есть только некоторый опыт работы с TwinCAT3, но библиотека та же самая.
В TwinCAT3 различаются режимы RUN и CONFIG. Для переключения между обоими режимами вам понадобится TCatSysManagerLib, это правда. Но не существует (особенно для TwinCAT3) метода переключения обратно в режим CONFIG (пока... но Beckhoff работает над этим).
Если вы хотите это сделать, вам нужно будет пройти через AmsPort.SystemService, который равен 10000.
Вот пример того, как переключиться из режима RUN в режим CONFIG:
public void setConfigMode()
{
TcAdsClient client = new TcAdsClient();
StateInfo mode = new StateInfo();
client.Connect((int)AmsPort.SystemService);
mode.AdsState = AdsState.Reconfig;
client.WriteControl(mode);
client.Dispose();
}
А здесь обратный путь из режима CONFIG в режим RUN (с использованием TCatSysManagerLib): --> только для TwinCAT3
public void setRunMode()
{
// _solution_path, _solution_name must be replaced by your solution path and solution name
Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
EnvDTE80.DTE2 dte2 = (EnvDTE80.DTE2)System.Activator.CreateInstance(t);
dte2.MainWindow.Visible = false; //keep TwinCAT window closed
Solution4 solution4 = (Solution4)dte2.Solution;
EnvDTE.Project project = null;
solution4.Open(Path.Combine(_solution_path, _solution_name + ".sln").ToString());
project = (EnvDTE.Project)solution4.Projects.Item(1);
ITcSysManager5 sysmanager5 = (ITcSysManager5)project.Object;
sysmanager5.StartRestartTwinCAT();
dte2.Quit();
}
или (я не пробовал):
public void setRunMode()
{
TcAdsClient client = new TcAdsClient();
StateInfo mode = new StateInfo();
client.Connect((int)AmsPort.SystemService);
mode.AdsState = client.ReadState().AdsState;
mode.AdsState = AdsState.Reset;
client.WriteControl(mode);
client.Dispose();
}
person
Chris
schedule
05.11.2015