Ⅰ 什麼叫PLC源代碼
就是PLC的源程序。梯形圖 語句表 SFC 功能圖
Ⅱ 您好PLC怎麼提供源代碼啊
用編程軟體編輯完PLC的程序,保存後,會生成一個文件。(就好比,你用記事本編輯一段文字,然後保存,就生成一個TXT文件一樣)。生成的這個文件就是PLC的源代碼了,把這個文件提供出去,就是提供源代碼了。
望採納。。。。。。
Ⅲ 基於plc的8路智能搶答器(各種圖)
這時才用DP801製作的8路搶答器電路,這是第一張圖,共9張。其它圖是編制的程序。現只能傳一個,其他的你需給我QQ郵箱,我給你發到郵箱里
Ⅳ plc代碼。
這是把OB1轉成了源代碼,源代碼編譯之後就成為你熟悉的 A / = 之內的有效代碼部分了。其他的Title Version 之類的都會成為這個功能塊的屬性。
打開任意一個功能塊之後在 File 菜單下可以找到 生成源代碼選項,你轉換一個功能塊試試,生成之後在Source 目錄下,而不是通常的Blocks目錄,這個源代碼還可以外部輸出,以供另外保存。
Ⅳ 關於PLC八路彩燈的課程設計
用什麼PLC都成,但必須要有系統時間的那種,比如三凌的FX1S,FX2N,松下FP0R等都可以。
以FX2N為例:分別使用Y0-Y7作為A-H的各點輸出,各埠驅動一隻繼電器後再驅動彩燈。
程序設計各人所用方法各有不同,可以用步進程序也可以用置數方式,由定時器產生一個1.5秒的脈沖信號,通過移位指令一步一步去對PLC輸出埠寫入數據即可。程式可到我相冊上查看:
http://photo.163.com/300once/big/#aid=215634522&id=6625539909
系統有校時功能可以加裝 顯視模塊 FX1N-5DM。此模塊可以直接調整時間,無須寫程式。
Ⅵ 8路集線器與plc怎麼做modbus通信
8路485集線器,分別連接8個PLC嗎?這樣做效率很低,8個PLC不能並行通訊,最好是8路PLC 485轉以太,通過路由或交換機與中心連接,這樣就能實現並行通訊,中心伺服器採用組態平台搭建數據採集和控制很容易。
Ⅶ 哪位有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();
}
}
}
Ⅷ plc程序源代碼用什麼程序寫的
源程序是用STL語言寫的,可以通過梯形圖生成。打開程序塊,文件菜單下邊有一個生成源文件就可以。最常用到的使用源文件的地方就是給程序塊加密(雖然現在可以很容易破解)。
1、在STEP7中打開要加密的程序塊,點擊菜單「文件/生成源文件(File/Generate source)」,
生成要加密保護的程序塊的原代碼文件。
2、關閉程序塊,在項目管理器中打開「源文件(source)」,打開生成的源文件。
3、在程序塊的聲明部分,TITLE行下面的一行中輸入「KNOW_HOW_PROTECT」。
4、執行菜單命令「文件/保存(File/Save)」然後「文件/編譯(File/Compile)」。
5、編譯成功後,可在「塊」中看到加鎖的程序塊。
6、解除密碼,打開相應的「源文件」,把「KNOW_HOW_PROTECT」刪除,然後編譯即可。
注意,保存好源文件,否則已加密的程序塊將無法打開。
Ⅸ PLC程序如何轉換源代碼
梯形圖是不行的必須轉化成源代碼,導出成awl文件,用記事本打來,裡面有源代碼
申請時候建議把源代碼處理下避免重復
如果都一樣,提交到版權中心他們用儀器掃下能查出來重復。
申請高新需要7個以上
如果您要登記軟體著作權可以私信 能保證出證的
Ⅹ 用PLC設計,八位搶答器,搶到者用七段解碼顯示器顯示出來
你要寫好的程式嗎?這個很簡單,入門的PLC課本中就有這些東西。
8位,8進8出就夠用了。
原理很簡單,當有某位輸入端有效時,置位對應的輸出並復位其他輸入端並鎖存。主持人端還有一個按鈕用來復位全部輸入端並啟動定時器。如果要求再高就有難度了,還要考慮選手搶答犯規檢測。
至於7段解碼可考慮用矩陣電路,這也不難。關鍵是每個選手要看到顯示和觀眾面還有有一個大顯示屏。
用來做作業不用考慮太多,如果是實用,不是在這里幾句話能說得清的。