導航:首頁 > 源碼編譯 > q系列通訊源碼

q系列通訊源碼

發布時間:2022-05-05 01:44:16

❶ 哪位有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();
}


}

}

❷ AB PLC和三菱Q系列乙太網SOCKET通訊如何實現

用CCLINK通訊吧!Q為主站,另外一個PLC為從站。要傳送數據直接在寄存器和位元件中。

❸ VB和三菱Q系列PLC通信

1.0 通訊組件概述
通訊組件用於PC與可編程控制器(PLC)、智能儀表等進行數據通訊,適用於基於PC高級語言的工業自動化控制系統。組件採用動態鏈接庫文件(*.DLL)的形式,在PC系統的項目工程里引用該組件,調用相應的屬性與方法函數,即可快速實現PC與PLC的高效數據交換。
DLL通訊組件無須安裝,直接復制到工程文件目錄,方便打包安裝部署;無須任何配置,直接調用函數,與應用開發無縫銜接;多年工程經驗的軟體團隊開發測試,經過本公司及客戶的海量實際工程應用檢驗,穩定可靠;採用穩定高效的內部協議,無須編寫PLC內部程序配合,直接訪問PLC的內存,通訊響應快速;內建動態管理的多獨立線程連接,同時支持外部應用的多線程結構調用;兼容WINDOWS系統下的所有開發環境,包括各種版本的VB.NET、C#、VC++,以及DEIPHI 、VB、LabView等;支持幾乎所有PLC的CPU自帶通訊口、通訊擴展模塊。
你可以在技成看視頻教程,這個案例比較經典,看視頻更容易理解。

❹ 電腦如何和三菱Q系列PLC通訊

通訊第一步你的電腦必須要有RS232串口就是9針那種第一行5針第二行4針是公座,如果筆記本大部分沒有串口,你可以到【東莞友誠工控】買一個USB轉串口RS232的轉換線120元裡麵包括驅動光碟自己安裝後把轉換線插到USB上你的電腦就生成一個串口。第二部必須有串口到三菱PLC的通訊線不管你是FX系列。Q系列還是A系列都有相應的通訊電纜,也就是專用的編程電纜把這個編程電纜一頭和串口鏈接另一頭和PLC連接,友誠工控都有的賣。第三部也是最重要的你需要懂一點編程軟體的使用方法在三菱工控展銷網下載三菱全系列編程軟體,軟體安裝好打開點擊左上角有一張小白紙樣的小方框
,會彈出一個【創建新工程】的復選框你自己選擇PLC的系列和類型也就是Q系列還是A系列或者是FX系列的你用什麼型號自己選好,然後點擊【確定】,下一畫面點擊上面的【在線】然後彈出的選項中點擊PLC讀取這樣就通訊成功。如果出現通訊錯誤改一傳輸設置,具體步驟是點擊【在線】點擊第一行【傳輸設置】然後彈出一個傳輸設置對話框左上角有個[串列USB]雙擊後彈出串口更改選項用那個串口自己選,三菱PLC分大中小三種A系列Q系列FX系列。其中A系列Q系列又分整體式和組合式。你說的那兩種是PLC點數。特殊功能模塊。組合方式。都不相同的兩種。第四步如果PLC讀取時彈出來請輸入口令那就是密碼。記住我的郵箱需要的話給我發信息,我還有免費的三菱全系列解密軟體發給你。郵箱:[email protected]

❺ 求C#與三菱Q系列PLC 通訊實例或源碼

❻ 有台三菱Q系列plc要和現場一台儀器通信,該儀器上有個232的通信口,怎麼實現通信,程序怎麼寫

首先 要Q上面有通訊口 232 485 都可以
如果是有232就直接和儀器的232對接,如果是485 或者422的話就要轉接一下,可以自己買個轉接盒子,也可以通過焊線加電阻的方式(接線圖網路一大把)。
程序的話就要參考儀器的 通訊協議了。沒有協議,沒辦法進行設置。
望採納

❼ 三菱Q系列PLC與上位機的乙太網通訊數據格式是怎樣的

上位機可以用專用的組態軟體,也可以用VB或VC自己寫監控界面,如果使用專用的組態軟體通訊部分已經是集成好了的,而如果自己用VB,VC寫界面就需要使用三菱的軟體包進行通訊。

PLC與PC機之間實現通道,可使二者互補功能上的不足,PLC用於控制方面既方便又可靠,而PC機在圖形顯示、數據處理、列印報表以及中文顯示等方面有很強的功能。因此,各PLC製造廠家紛紛開發了適用於本公司的各種型號PLC與PC機通信的介面模塊。三菱公司開發的FX-232AW介面模塊用於FX2系列PLC與計算機通信。還有與乙太網連接的介面模塊AJ71E71、與MAP網連接的介面模塊AJ71M51-S1、與FAIS MAP網連接的介面模塊AJ71M51M1等。不同的通信方式,有著不同的成本價格和不同的適用范圍。在此介紹一種通過PC機的RS-232口與PLC進行通信的實現方法。

FX2系列PLC的編程介面採用RS-422標准,而計算機的串列口採用RS-232標准。因此,作為實現PLC計算機通信的介面電路,必須將RS-422標准轉換成RS-232標准。

RS-232與RS-422標准在信號的傳送、邏輯電平均不相同。

RS-232採用單端接收器和單端發送器,只用一根信號線來傳送信息,並且根據該信號線上電平相對於公共的信號地電平的大小來決定邏輯的「1」(-3~-15V)和「0」(+3~+15V);

RS-422標準是一種以平衡方式傳輸的標准,即雙端發送和雙端接收,根據兩條傳輸線之間的電位差值來決定邏輯狀態。RS-422電路由發送器、平衡連接電纜、電纜終端負載和接收器組成。它通過平衡發送器和差動接收器將邏輯電平和電位差之間進行轉換(+2V表示「0」,-2V表示「1」)。

選用MAXIM公司的MAX202實現RS-232與TTL之間的電平轉換。MAX202內部有電壓倍增電路和轉換電路,僅需+5V電源就可工作,使用十分方便;選用MAX490實現RS-485與TTL之間的轉換。每片MAX490有一對發送器/接收器,由於通信採用全雙工方式,故需兩片MAX490,另外只需外接4隻電容即可。

PLC的RS-422介面配接DB-25型連接器,而PC機一般用DB-9型連接器。硬體電路圖如圖1所示。

將RS-232的RS、CS短接,這樣對計算機發送數據來說,PLC總是處於就緒狀態。也就是說,計算機在任何時候都可以將數據送到PLC內。又由於DR、ER交叉連接,因此,對計算機接收數據來說,必須等待至PLC處於准備就緒狀態。

2 通信裝置的軟體描述

2.1 FX2系列PLC與計算機之間通信協議

FX2系列PLC與計算機之間的通信採用RS-232標准,其傳輸速率固定為9600bps,奇偶校驗位採用偶校驗。數據格式如圖2所示。數據以幀為單位發送和接收。一個多字元幀由力所示的五部分組成,其中和校驗值是將命令碼ETX之間的的呢字元的ASCII碼(十六進制數)相加,取得所得和的最低二位數。STX和ETX分別表示該字元幀的起始標起和結束標志。

FX2系列與計算機之間的通信是以主機發出的初始命令,PLC對其作出響應的方式進行通信的。共有0、1、7、8四種命令,上位機實現對PLC的讀寫和強行置位。通過ENQ、ACK和NAK,上位機協調與PLC的通信應答。

2.2 通信過程

採用Bland C編寫主機與PLC的通信程序。首先必須對COM1口進行初始化,波特率為9600bps,奇偶校驗位採用偶校驗,七位有效數據。通信的初始化檢測過程如圖4所示。當計算機接收到來自PLC的應答字元ACK後,就可以進入數據通信了。通信的時序圖如圖5所示。

計算機可對PLC內各軟設備進行讀、寫和強制ON/OFF操作。除開PLC的計時器和計數器的設定值採用常數時,以及文件寄存器內的數據,FX2系列PLC的所有開關量輸入、輸出以及各軟體設備對計算機都是透明的。其操作時的多字元幀的格式如圖3所示。但不同的操作在「多個字元」項內有所不同。例如,計算機對PLC的軟設備Y20~Y37進行讀操作,查裝置地址表為00A2,讀取2位元組數據。其狀態如圖6(a)所示,主機發出的命令格式如圖6(b)所示,PLC返回的信息如圖6(c)所示。

如傳送的命令有錯誤,PLC返回NAK信號,本次操作失敗,重新進行。

為了保證主機與PLC的通信准確無誤,上位機也必須按通信協議進行和校。如接收的信息有誤,則重新讀取。如重復3次仍不行,則顯示錯誤信息。

使用C語言很容易實現以上編程。

主機還可向PLC寫數據,進行單點的強近置位和復位。

對於運行在控制和實驗室環境飛速下本方案運行可靠、性價比高、體積小、但是對於通信距離長,環境惡劣的發問,需加光電隔離等措施。

❽ Q系列PLc主站與遠程|/0站通信怎麼寫程序

X1 X10為站號設置,主站必須設置為0. MODE為通訊模式及傳送速率,0-4為在線模式,即正常運行模式;5-9為線路測試;A-E為硬體測試; 對應速率為 156kbps 625kbps 2.5Mbps 5Mbps 10Mbps 。F不允許設置。
將通訊模式撥到A-E,執行以下操作,開始硬體自檢;即主站CPU與CCLINK模塊的自檢。

❾ 三菱Q系列PLC通訊問題

為什麼要用兩個乙太網模塊,這不浪費嗎?用一個不可以嗎?

❿ 能給我發個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
閱讀全文

與q系列通訊源碼相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:578
python員工信息登記表 瀏覽:376
高中美術pdf 瀏覽:160
java實現排列 瀏覽:512
javavector的用法 瀏覽:981
osi實現加密的三層 瀏覽:231
大眾寶來原廠中控如何安裝app 瀏覽:913
linux內核根文件系統 瀏覽:242
3d的命令面板不見了 瀏覽:525
武漢理工大學伺服器ip地址 瀏覽:148
亞馬遜雲伺服器登錄 瀏覽:524
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:929
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:250
哈夫曼編碼數據壓縮 瀏覽:424
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:348