① 三菱plc梯形图转可以源代码c吗
可以,但是你要和三菱公司联系,他们允许的话可以给你资料的。PLC北来就是类似C语言的高级编程语言的图形化编程后代。你打开了就全中国都可以搞PLC软硬件设计了。
不用转换,你可以致电三菱PLC公司中国办事处购买他支持类似C语言的编程软件支持包,如果你用的PLC够高端的话。
② plc的sfwr指令在哪个系列有仿三菱plcfx2n底层源代码
ld x0
sfwrp d0 d1 k10
end
意思就是说:当x0从OFF→ON时,D0的内容被存入d2 d1的内容为1,当D0内容变更后,x0再次OFF→ON时,这个D0的内容被存到D3 ,D1变为2 。以此类推。 D0为源 D1,,,,D10 10点,D1为指示器
③ 三菱plc fx2n系列的解密,关键字解密
正确安装USB转COM口驱动,连接电脑和PLC,打开你的电脑设备管理器,里面会出现虚拟COM口编号,设置软件通信,通信测试,成功再打开解密软件,设置同前面的虚拟COM口编号,点连接PLC,点破解,出现密码(关键字),输入编程软件下载窗口,搞定。
④ 求C#与三菱Q系列PLC 通讯实例或源码
⑤ 三菱PLC 程序解释 求高人!
这是一个3层嵌套循环程序,从内往外循环
FOR K1X000与NEXT是一个循环(假设为循环A),循环次数与他说的一样,是一个4位二进制数的数字,循环好后,假设为5次;A循环5次
FOR D0Z NEXT,继续循环(循环B),假设循环3次;A循环3*5次
循环FOR K4 NEXT(C);这个就是4次,这样的话C循环4次。B循环3*4次,A循环5*3*4次
⑥ 哪位有C#与三菱PLC通讯的源码,最好有实例
提供一个C#与FX5U以太网通讯的代码:
usingSystem.Collections.Generic;
usingSystem;
usingSystem.Linq;
usingSystem.Drawing;
usingSystem.Diagnostics;
usingSystem.Data;
usingSystem.Xml.Linq;
usingMicrosoft.VisualBasic;
usingSystem.Collections;
usingSystem.Windows.Forms;
usingSystem.Net;
usingSystem.Runtime.InteropServices;
namespaceTCP_CLIENT
{
publicpartialclassForm1
{
publicForm1()
{
InitializeComponent();
if(defaultInstance==null)
defaultInstance=this;
}
#regionDefaultInstance
;
publicstaticForm1Default
{
get
{
if(defaultInstance==null)
{
defaultInstance=newForm1();
defaultInstance.FormClosed+=newFormClosedEventHandler(defaultInstance_FormClosed);
}
returndefaultInstance;
}
set
{
defaultInstance=value;
}
}
staticvoiddefaultInstance_FormClosed(objectsender,FormClosedEventArgse)
{
defaultInstance=null;
}
#endregion
EntFxPlc.PlcClientPLC=newEntFxPlc.PlcClient();
boolEntLink;
longScanCount;
shortScanRet;
Int32PlcHand;
[DllImport("winmm.dll",ExactSpelling=true,CharSet=CharSet.Ansi,SetLastError=true)]
();
publicvoidForm1_Load(System.Objectsender,System.EventArgse)
{
this.CenterToScreen();
cmbReadMry.Items.Clear();
cmbReadMry.Items.Add("X");
cmbReadMry.Items.Add("Y");
cmbReadMry.Items.Add("M");
cmbReadMry.Items.Add("D");
cmbWriteMry.Items.Clear();
cmbWriteMry.Items.Add("X");
cmbWriteMry.Items.Add("Y");
cmbWriteMry.Items.Add("M");
cmbWriteMry.Items.Add("D");
cmbBitMry.Items.Clear();
cmbBitMry.Items.Add("X");
cmbBitMry.Items.Add("Y");
cmbBitMry.Items.Add("M");
cmbReadType.Items.Clear();
cmbReadType.Items.Add("INT16");
cmbReadType.Items.Add("UINT16");
cmbReadType.Items.Add("DINT32");
cmbReadType.Items.Add("HEX32");
cmbReadType.Items.Add("REAL32");
cmbReadType.Items.Add("BIN16");
cmbWriteType.Items.Clear();
cmbWriteType.Items.Add("INT16");
cmbWriteType.Items.Add("UINT16");
cmbWriteType.Items.Add("DINT32");
cmbWriteType.Items.Add("HEX32");
cmbWriteType.Items.Add("REAL32");
cmbWriteType.Items.Add("BIN16");
cmbReadMry.SelectedIndex=3;
cmbWriteMry.SelectedIndex=3;
cmbBitMry.SelectedIndex=2;
cmbReadType.SelectedIndex=0;
cmbWriteType.SelectedIndex=0;
lstRead.Items.Clear();
txtWrite.Text="";
cmbCmdType.SelectedIndex=0;
}
publicvoidbutLink_Click(System.Objectsender,System.EventArgse)
{
shortre=0;
stringrestr="";
re=PLC.EntLink(txtLocalIP.Text.Trim(),Convert.ToUInt16(txtLocalPort.Text),txtRemoteIP.Text.Trim(),(Convert.ToUInt16(txtRemotePort.Text)),"DEMO",refPlcHand,Convert.ToUInt16(1000),Convert.ToBoolean(cmbCmdType.SelectedIndex));
txtReLink.Text=re.ToString();
if(re==0)
{
EntLink=true;
MessageBox.Show("PLC联接成功!");
}
else
{
EntLink=false;
MessageBox.Show("PLC联接失败:"+restr);
}
}
publicvoidbutClose_Click(System.Objectsender,System.EventArgse)
{
shortre=0;
EntLink=false;
re=PLC.DeLink(PlcHand);
txtReClose.Text=re.ToString();
}
publicvoidbutRead_Click(System.Objectsender,System.EventArgse)
{
shorti=0;
object[]RD=null;
RD=newobject[Convert.ToUInt16(txtReadCnt.Text)];
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
intvar1=cmbReadType.SelectedIndex+1;
EntFxPlc.PlcClient.DataTypetyp=(EntFxPlc.PlcClient.DataType)var1;
switch(cmbReadMry.SelectedIndex)
{
case0:
ScanRet=PLC.CmdRead(PlcHand,EntFxPlc.PlcClient.PlcMemory.DI,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
case1:
ScanRet=PLC.CmdRead(PlcHand,EntFxPlc.PlcClient.PlcMemory.DQ,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
case2:
ScanRet=PLC.CmdRead(PlcHand,EntFxPlc.PlcClient.PlcMemory.MR,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
case3:
ScanRet=PLC.CmdRead(PlcHand,EntFxPlc.PlcClient.PlcMemory.DR,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
}
txtReRead.Text=ScanRet.ToString();
lstRead.Items.Clear();
for(i=0;i<=(RD.Length-1);i++)
{
if(!(RD[i]==null))
{
lstRead.Items.Add(RD[i]);
}
else
{
lstRead.Items.Add("0");
}
}
}
publicvoidbutWrite_Click(System.Objectsender,System.EventArgse)
{
shorti=0;
string[]temp=null;
object[]WD=null;
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
WD=newobject[Convert.ToUInt16(txtWriteCnt.Text)];
temp=txtWrite.Text.Split(' ');
for(i=0;i<=(WD.Length-1);i++)
{
if(i>(temp.Length-1))
{
WD[i]=0;
}
else
{
WD[i]=temp[i].Trim();
}
}
intvar1=cmbWriteType.SelectedIndex+1;
EntFxPlc.PlcClient.DataTypetyp=(EntFxPlc.PlcClient.DataType)var1;
switch(cmbWriteMry.SelectedIndex)
{
case0:
ScanRet=PLC.CmdWrite(PlcHand,EntFxPlc.PlcClient.PlcMemory.DI,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
case1:
ScanRet=PLC.CmdWrite(PlcHand,EntFxPlc.PlcClient.PlcMemory.DQ,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
case2:
ScanRet=PLC.CmdWrite(PlcHand,EntFxPlc.PlcClient.PlcMemory.MR,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
case3:
ScanRet=PLC.CmdWrite(PlcHand,EntFxPlc.PlcClient.PlcMemory.DR,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
}
txtReWrite.Text=ScanRet.ToString();
}
publicvoidbutScan_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
if(butScan.Text=="CycleR/W")
{
ScanCount=0;
Timer1.Enabled=true;
butScan.Text="StopR/W";
}
else
{
Timer1.Enabled=false;
butScan.Text="CycleR/W";
}
}
publicvoidTimer1_Tick(System.Objectsender,System.EventArgse)
{
Timer1.Enabled=false;
inttim=System.Convert.ToInt32(timeGetTime());
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
//
butRead_Click(null,null);
butWrite_Click(null,null);
//
if((Convert.ToInt32(txtReRead.Text)<0)||(Convert.ToInt32(txtReWrite.Text)<0))
{
butScan.Text="CycleR/W";
return;
}
else
{
ScanCount++;
txtScanCnt.Text=ScanCount.ToString();
txtScanPrd.Text=(System.Convert.ToInt32(timeGetTime())-tim).ToString()+"ms";
}
Timer1.Enabled=true;
}
publicvoidbutBitTest_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
boolrd=false;
shortre=0;
switch(cmbBitMry.SelectedIndex)
{
case0:
re=PLC.Bit_Test(PlcHand,EntFxPlc.PlcClient.PlcMemory.DI,Convert.ToUInt16(txtBitAdd.Text),refrd);
break;
case1:
re=PLC.Bit_Test(PlcHand,EntFxPlc.PlcClient.PlcMemory.DQ,Convert.ToUInt16(txtBitAdd.Text),refrd);
break;
case2:
re=PLC.Bit_Test(PlcHand,EntFxPlc.PlcClient.PlcMemory.MR,Convert.ToUInt16(txtBitAdd.Text),refrd);
break;
}
txtBitTest.Text=rd.ToString();
txtReBit.Text=re.ToString();
}
publicvoidbutBitSet_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
shortre=0;
switch(cmbBitMry.SelectedIndex)
{
case0:
re=PLC.Bit_Set(PlcHand,EntFxPlc.PlcClient.PlcMemory.DI,Convert.ToUInt16(txtBitAdd.Text));
break;
case1:
re=PLC.Bit_Set(PlcHand,EntFxPlc.PlcClient.PlcMemory.DQ,Convert.ToUInt16(txtBitAdd.Text));
break;
case2:
re=PLC.Bit_Set(PlcHand,EntFxPlc.PlcClient.PlcMemory.MR,Convert.ToUInt16(txtBitAdd.Text));
break;
}
txtReBit.Text=re.ToString();
}
publicvoidbutBitRst_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
shortre=0;
switch(cmbBitMry.SelectedIndex)
{
case0:
re=PLC.Bit_Reset(PlcHand,EntFxPlc.PlcClient.PlcMemory.DI,Convert.ToUInt16(txtBitAdd.Text));
break;
case1:
re=PLC.Bit_Reset(PlcHand,EntFxPlc.PlcClient.PlcMemory.DQ,Convert.ToUInt16(txtBitAdd.Text));
break;
case2:
re=PLC.Bit_Reset(PlcHand,EntFxPlc.PlcClient.PlcMemory.MR,Convert.ToUInt16(txtBitAdd.Text));
break;
}
txtReBit.Text=re.ToString();
}
}
}
⑦ 能给我发个VB与三菱PLC通讯的源代码实例吗,非常感谢啊
得说明是什么型号的PLC啊,串口还是网口,VB6还是VB.NET?
算了,写段代码,VB.NET与Q系列以太网通讯的:
ImportsSystem.Net
ImportsSystem.Runtime.InteropServices
PublicClassForm1
DimHandle1AsInt32
DimEntLink1AsBoolean
DimScanCount1AsLong
DimPLCAsNewEntQsPlc_Asc.PlcClient'EntQsPlc_ASC.DLL是Q系列以太网通讯组件
"winmm.dll"()AsUInt32
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
Me.CenterToScreen()
cmbReadMry.Items.Clear()
cmbReadMry.Items.Add("X")
cmbReadMry.Items.Add("Y")
cmbReadMry.Items.Add("M")
cmbReadMry.Items.Add("D")
cmbReadMry.Items.Add("R")
cmbReadMry.Items.Add("Z")
'
cmbWriteMry.Items.Clear()
cmbWriteMry.Items.Add("X")
cmbWriteMry.Items.Add("Y")
cmbWriteMry.Items.Add("M")
cmbWriteMry.Items.Add("D")
cmbWriteMry.Items.Add("R")
cmbWriteMry.Items.Add("Z")
'
cmbBitMry.Items.Clear()
cmbBitMry.Items.Add("X")
cmbBitMry.Items.Add("Y")
cmbBitMry.Items.Add("M")
'
cmbReadType.Items.Clear()
cmbReadType.Items.Add("INT16")
cmbReadType.Items.Add("UINT16")
cmbReadType.Items.Add("DINT32")
cmbReadType.Items.Add("HEX32")
cmbReadType.Items.Add("REAL32")
cmbReadType.Items.Add("BIN16")
'
cmbWriteType.Items.Clear()
cmbWriteType.Items.Add("INT16")
cmbWriteType.Items.Add("UINT16")
cmbWriteType.Items.Add("DINT32")
cmbWriteType.Items.Add("HEX32")
cmbWriteType.Items.Add("REAL32")
cmbWriteType.Items.Add("BIN16")
cmbReadMry.SelectedIndex=3
cmbWriteMry.SelectedIndex=3
cmbBitMry.SelectedIndex=2
cmbReadType.SelectedIndex=0
cmbWriteType.SelectedIndex=0
lstRead.Items.Clear()
txtWrite.Text=""
'
cmbCmdType.SelectedIndex=0
EndSub
PrivateSubbutLink_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutLink.Click
DimreAsShort
DimrestrAsString=""
re=PLC.EntLink(Trim(txtLocalIP.Text),Val(txtLocalPort.Text),Trim(txtRemoteIP.Text),Val(txtRemotePort.Text),"DEMO",Handle1,1000,CBool(cmbCmdType.SelectedIndex))
txtReLink.Text=re.ToString
Ifre=0Then
EntLink1=True
MsgBox("PLC联接成功!")
Else
EntLink1=False
MsgBox("PLC联接失败:"&restr)
EndIf
EndSub
PrivateSubbutClose_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutClose.Click
DimreAsShort
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
re=PLC.DeLink(Handle1)
txtReClose.Text=re.ToString
EndSubPrivateSubbutRead_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutRead.Click
DimreAsShort
DimiAsShort
DimRD()AsObject
ReDimRD(Val(txtReadCnt.Text-1))
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
'ExitSub
EndIf
DimmryAsEntQsPlc_Asc.PlcClient.PlcMemory=cmbReadMry.SelectedIndex+1
DimtypAsEntQsPlc_Asc.PlcClient.DataType=cmbReadType.SelectedIndex+1
re=PLC.CmdRead(Handle1,mry,typ,CInt(txtReadAdd.Text),CUShort(txtReadCnt.Text),RD)
txtReRead.Text=re.ToString
lstRead.Items.Clear()
Fori=0ToUBound(RD)Step1
IfNotIsNothing(RD(i))ThenlstRead.Items.Add(RD(i))
Nexti
Ifre<>0Then
Timer1.Enabled=False
butScan.Text="CycleR/W"
EndIf
EndSubPrivateSubbutWrite_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutWrite.Click
DimreAsShort
DimiAsShort
Dimtemp()AsString
DimWD()AsObject
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
ReDimWD(Val(txtWriteCnt.Text)-1)
temp=Split(txtWrite.Text,vbCrLf)
Fori=0ToUBound(WD)Step1
Ifi>UBound(temp)Then
WD(i)=0
Else
WD(i)=Trim(temp(i))
EndIf
Nexti
DimmryAsEntQsPlc_Asc.PlcClient.PlcMemory=cmbWriteMry.SelectedIndex+1
DimtypAsEntQsPlc_Asc.PlcClient.DataType=cmbWriteType.SelectedIndex+1
re=PLC.CmdWrite(Handle1,mry,typ,CInt(txtWriteAdd.Text),CUShort(txtWriteCnt.Text),WD)
txtReWrite.Text=re.ToString
Ifre<>0Then
Timer1.Enabled=False
butScan.Text="CycleR/W"
EndIf
EndSub
PrivateSubbutScan_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutScan.Click
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
Timer1.Enabled=NotTimer1.Enabled
IfTimer1.EnabledThen
ScanCount1=0
butScan.Text="StopR/W"
Else
butScan.Text="CycleR/W"
EndIf
EndSubPrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
Timer1.Enabled=False
DimtimAsInteger=timeGetTime
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
'
CallbutRead_Click(Nothing,Nothing)
CallbutWrite_Click(Nothing,Nothing)
'
If(Val(txtReRead.Text)<0)Or(Val(txtReWrite.Text)<0)Then
butScan.Text="CycleR/W"
ExitSub
Else
ScanCount1+=1
txtScanCnt.Text=ScanCount1
txtScanPrd.Text=(timeGetTime-tim)&"ms"
EndIf
Timer1.Enabled=True
EndSub
PrivateSubbutBitTest_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutBitTest.Click
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
DimrdAsBoolean
DimreAsShort
DimmryAsEntQsPlc_Asc.PlcClient.PlcMemory=cmbBitMry.SelectedIndex+1
re=PLC.Bit_Test(Handle1,mry,CUShort(txtBitAdd.Text),rd)
txtBitTest.Text=rd
txtReBit.Text=re
EndSub
PrivateSubbutBitSet_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutBitSet.Click
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
DimreAsShort
re=PLC.Bit_Set(Handle1,cmbBitMry.SelectedIndex+1,Val(txtBitAdd.Text))
txtReBit.Text=re
EndSubPrivateSubbutBitRst_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbutBitRst.Click
IfNotEntLink1Then
MsgBox("还未与PLC建立联接!")
ExitSub
EndIf
DimreAsShort
re=PLC.Bit_Reset(Handle1,cmbBitMry.SelectedIndex+1,Val(txtBitAdd.Text))
txtReBit.Text=re
EndSub
EndClass
⑧ 三菱plc源代码需要写进去plc吗
你只需要点上面的参数+程序就可以了。
⑨ 关于哪位有C#与三菱PLC通讯的源码,最好有实例
C#与三菱PLC通讯的源码
1) 文件校验
我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
2) 数字签名
Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。 对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。
3) 鉴权协议
如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。