導航:首頁 > 編程語言 > 三菱q系列編程實例

三菱q系列編程實例

發布時間:2025-07-11 06:41:51

① 請問三菱Q系列PLC 中NOPLF是什麼指令

PLF上升沿微分指令。

SW80是字面意思是特殊寄存器,用於診斷和網路信息這類,需要配置給特殊模塊,SW80用在CClink上是子站狀態。基本指令是比較常用的一些指令:編寫梯形圖或語句表、SFC圖等指令;應用指令是一些特殊功能用的指令:運算、比較、轉換以及通信等指令。


(1)三菱q系列編程實例擴展閱讀:

可編程式控制制器由CPU、指令及數據內存、輸入/輸出介面、電源、數字模擬轉換等功能單元組成。早期的可編程邏輯控制器只有邏輯控制的功能,所以被命名為可編程邏輯控制器,後來隨著不斷地發展。

這些當初功能簡單的計算機模塊已經有了包括邏輯控制、時序控制、模擬控制、多機通信等各類功能。

名稱也改為可編程式控制制器(Programmable Controller),但是由於它的簡寫PC與個人電腦(Personal Computer)的簡寫相沖突,加上習慣的原因,人們還是經常使用可編程邏輯控制器這一稱呼,並仍使用PLC這一縮寫。

② plc模擬量編程問題

假設模擬量的標准電信號是A0—Am(如:4—20mA), A/D 轉換後數值為D0
—Dm(如:6400—32000),設模擬量的標准電信號是A,A/D 轉換後的相應數值
為D,由於是線性關系,函數關系A=f(D)可以表示為數學方程:
A=(D-D0)×(Am-A0)/(Dm-D0)+A0。
根據該方程式,可以方便地根據D 值計算出A 值。將該方程式逆變換,得出
函數關系D=f(A)可以表示為數學方程:
D=(A-A0)×(Dm-D0)/(Am-A0)+D0。
具體舉一個實例,以S7-200 和4—20mA 為例,經A/D 轉換後,我們得到的
數值是6400—32000,即A0=4,Am=20,D0=6400,Dm=32000,代入公式,得
出:
A=(D-6400)×(20-4)/(32000-6400)+4
假設該模擬量與AIW0 對應,則當AIW0 的值為12800 時,相應的模擬電信號
是6400×16/25600+4=8mA。
又如,某溫度感測器,-10—60℃與4—20mA 相對應,以T 表示溫度值,AIW0
為PLC 模擬量采樣值,則根據上式直接代入得出:
T=70×(AIW0-6400)/25600-10
可以用T 直接顯示溫度值。
模擬量值和A/D 轉換值的轉換理解起來比較困難,該段多讀幾遍,結合所舉
例子,就會理解。為了讓您方便地理解,我們再舉一個例子:
某壓力變送器,當壓力達到滿量程5MPa 時,壓力變送器的輸出電流是20mA,
AIW0 的數值是32000。可見,每毫安對應的A/D 值為32000/20,測得當壓力為
0.1MPa 時,壓力變送器的電流應為4mA,A/D 值為(32000/20)×4=6400。由
此得出,AIW0 的數值轉換為實際壓力值(單位為KPa)的計算公式為:
VW0 的值=(AIW0 的值-6400)(5000-100)/(32000-6400)+100(單位:KPa)

③ 能給我發個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系列編程實例相關的資料

熱點內容
電腦c盤有灰色文件夾 瀏覽:124
斐波那契數列php 瀏覽:666
如何獲取嗶哩嗶哩app郵箱注冊 瀏覽:530
怎麼啟動arduino編譯環境 瀏覽:842
昕動app怎麼突然進不去 瀏覽:471
如何登錄內部伺服器 瀏覽:878
python讀取在線表格 瀏覽:1001
喝什麼茶能緩解壓抑 瀏覽:867
u命令無法打開 瀏覽:962
vue編譯後的js能爬嗎 瀏覽:453
解壓骰子推薦3代 瀏覽:749
安卓手機劃線密碼忘了怎麼解鎖 瀏覽:309
精美角度主圖指標源碼 瀏覽:279
程序員編程函數需要特別好嗎 瀏覽:183
fue加密毛發怎麼樣 瀏覽:931
網上考學歷app如何屏蔽 瀏覽:352
python矩陣庫 瀏覽:163
伺服器如何ping伺服器 瀏覽:281
雲伺服器雙機熱備怎麼做 瀏覽:100
安卓果盤高清帳號是什麼帳號 瀏覽:548