@C# 通过网络和三菱的PLC通信
作為一個新人我就就我所見的各種類型簡要的談一下好了
首先你是通過IP連接還是通過邏輯站連接,在此分為兩種。
先說最火的一種通過邏輯站連接,然後慢慢談IP連接,說的會有點慢,希望各位大佬批評指正。
1.邏輯站連接
在連接之前,你首先得下載MX component網上應該有很多安裝的教程,安裝完成后
找到Monitor 的文件夾,這是方便我們尋找我們配置文件。
這個路徑之上有個Act/Samples
找到Vcs.NET (我觉得这是三菱给不同的软件写的配置文件)
我们是C#所以进去Vcs.NET找到Sample
进去之后可能不同的人会不一样,没有生成我的这些文件,用VS打开一下就好了,同意生成更高的框架的文件。生成之后就会有我这些文件了。接下来就是非常重要的去寻找我们要的dll。
这几个配置文件就是一直困扰我的配置文件,对了刚刚那个form打开之后你可以直接测一下从逻辑口读数据,如果你认真读一下这段代码
基本上你就对如何去读取数据非常了解了。
这几个配置文件,应该就是三菱专门写来和C#form通信的。
到这一步,你基本上可以去网上找教程连接了,但是还有一些小的细节,我可能需要多说一下,我遇到的一些小麻烦。
这两个dll都可以用来通信,区别在于AxInterop.ActUtlTypeLib.dll应该是用在Form中。
官方是用在form中,我目前只了解到这。
public Form1(){
InitializeComponent();
this.axActUtlType = new AxActUtlTypeLib.AxActUtlType();
this.Controls.Add(this.axActUtlType);
//这个必须要加,这个是form将控件都加载到form当中,
//如果不加会抛异常
timer1.Start();
}
public bool ConnectToPLC() {
int iReturnCode;
string iReturnCodeOX;
this.axActUtlType.ActLogicalStationNumber = 1;
//设置站口
this.axActUtlType.ActPassword = "";
//设置密码
iReturnCode = this.axActUtlType.Open();
iReturnCodeOX = Convert.ToString(iReturnCode, 16);
//这里是我方便看错误代码写的没啥意义
return iReturnCode == 0;
//看手册可以知道返回0代表的是连接成功
}
当然如果你用的是WPF你就不能用这个AxInterop.ActUtlTypeLib.dll这个控件了你应该用Interop.ActUtlTypeLib.dll这个控件。
使用的方式和这个差不多。
ActUtlType actUtlType = new ActUtlType();
public bool ConnectToPLC() {
bool openOrNot = false;
actUtlType.ActLogicalStationNumber = 1;
if (actUtlType.Open() == 0) {
openOrNot = true;
actUtlType.Close();
} else {
actUtlType.Close();
}
return openOrNot;
}
顺便说一句不要忘记using ActUtlTypeLib;
连接上之后估计就没什么别的了,你可以边看手册边去使用函数。读写爱干啥干啥去了。
对了运行这些代码之前你得先配置一下逻辑站,网上有很多我就不赘述了。贴几张图吧。
2.IP連接
其实IP连接和这个差不多不过
ACTETHERLib.ActQNUDECPUUDP actQNUDECPUUDP = new ACTETHERLib.ActQNUDECPUUDP();
public bool ConnectToPLC() {
bool openOrNot = false;
string ardess=“127.0.0.0”;
actQNUDECPUUDP.ActHostAddress = ardess;
if (actQNUDECPUUDP.Open() == 0) {
openOrNot = true;
actQNUDECPUUDP.Close();
break;
} else {
actQNUDECPUUDP.Close();
}
return openOrNot;
}
2.IP連接
其实IP连接和这个差不多不过,不过你先得有Interop.ACTETHERLib.dll这个文件来配置一下;
对不同型号的三菱PLC你得去配置不同的类来读取数据,我觉得比较麻烦,虽然我现在用的就是这个。