導航:首頁 > 源碼編譯 > 三菱plc底層源碼

三菱plc底層源碼

發布時間:2022-07-09 17:15:27

① 三菱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) 鑒權協議
如下的鑒權協議又被稱作"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。

閱讀全文

與三菱plc底層源碼相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:385
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350