Ⅰ 什么叫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段译码可考虑用矩阵电路,这也不难。关键是每个选手要看到显示和观众面还有有一个大显示屏。
用来做作业不用考虑太多,如果是实用,不是在这里几句话能说得清的。