问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...我自己需要写一个c#的程序取PLC中的数据,如何来实现?

发布网友 发布时间:2024-10-02 19:06

我来回答

2个回答

热心网友 时间:2024-10-26 14:25

//通讯组件EntQsPlc_Asc实例化;
        EntQsPlc_Asc.PlcClient PLC = new EntQsPlc_Asc.PlcClient();
bool EntLink; //连接状态标志
        Int32 PlcHandle; //PLC句柄,多PLC网络时对应不同的PLC


        //连接到三菱Q系列PLC
public void butLink_Click(System.Object sender, System.EventArgs e)
{
        short re = 0;
        string restr = "";
                re = PLC.EntLink(txtLocalIP.Text.Trim(), Convert.ToUInt16(txtLocalPort.Text), txtRemoteIP.Text.Trim(), (Convert.ToUInt16(txtRemotePort.Text)), "DEMO", ref PlcHandle, 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);
        }
}


//断开与PLC的连接
public void butClose_Click(System.Object sender, System.EventArgs e)
{
short re = 0;
if (!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
re = PLC.DeLink(PlcHandle );
txtReClose.Text = re.ToString();
}


//读取PLC的数据
public void butRead_Click(System.Object sender, System.EventArgs e)
{
short i = 0;
short re =0;
object[] RD = null;
RD = new object[Convert.ToUInt16(txtReadCnt.Text)];
if (!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
int var1 = cmbReadType.SelectedIndex + 1;
                EntQsPlc_Asc.PlcClient.DataType typ = (EntQsPlc_Asc.PlcClient.DataType)var1;
switch (cmbReadMry.SelectedIndex)
{
case 0:
                                re = PLC.CmdRead(PlcHandle,EntQsPlc_Asc.PlcClient.PlcMemory.DI, typ, Convert.ToInt32(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
        break;
case 1:
                                re = PLC.CmdRead(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.DQ, typ, Convert.ToInt32(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
break;
case 2:
                                re = PLC.CmdRead(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.MR, typ, Convert.ToInt32(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
break;
case 3:
                                re = PLC.CmdRead(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.DR, typ, Convert.ToInt32(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
break;
                        case 4:
                                re = PLC.CmdRead(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.RR, typ, Convert.ToInt32(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
                                break;
                        case 5:
                                re = PLC.CmdRead(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.ZR, typ, Convert.ToInt32(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
                                break;
}
txtReRead.Text = re.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");
}
}

}


//写数据到PLC
public void butWrite_Click(System.Object sender, System.EventArgs e)
{
short i = 0;
short re =0;
string[] temp = null;
object[] WD = null;
if (!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
WD = new object[Convert.ToUInt16(txtWriteCnt.Text)];
temp = txtWrite.Text.Split('\n');
for (i = 0; i <= (WD.Length - 1); i++)
{
if (i > (temp.Length - 1))
{
WD[i] = 0;
}
else
{
WD[i] = temp[i].Trim();
}
}
int var1 = cmbWriteType.SelectedIndex + 1;
                EntQsPlc_Asc.PlcClient.DataType typ = (EntQsPlc_Asc.PlcClient.DataType)var1;
switch (cmbWriteMry.SelectedIndex)
{
case 0:
                                re = PLC.CmdWrite(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.DI, typ, Convert.ToInt32(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
case 1:
                                re = PLC.CmdWrite(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.DQ, typ, Convert.ToInt32(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
case 2:
                                re = PLC.CmdWrite(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.MR, typ, Convert.ToInt32(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
case 3:
                                re = PLC.CmdWrite(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.DR, typ, Convert.ToInt32(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
                        case 4:
                                re = PLC.CmdWrite(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.RR, typ, Convert.ToInt32(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
                                break;
                        case 5:
                                re = PLC.CmdWrite(PlcHandle, EntQsPlc_Asc.PlcClient.PlcMemory.ZR, typ, Convert.ToInt32(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
                                break;
}
txtReWrite.Text = re.ToString();
}

热心网友 时间:2024-10-26 14:25

我建议你使用三菱的MX Compenent V4版本软件,这个版本三菱中国官网已经提供了免费下载。通过这个软件你可以调用其中的相关DLL文件,基本上看看说明书你就可以写出非常好的程序了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 开个童装店需要什么手续 ...情况如下:是单机使用,数据量较少,用C#语言开发。 C#做好了一个Winform程序,程序输出类型是Windows应用程序(.exe)。怎样... c#程序中将一个类的对象作为另一个类的属性怎么写 周星驰有哪些著名对白? 5233怎么才能不显示全部图片呢 我的诺基亚5233怎么玩全屏的冒泡社区…仙剑问情 我的诺基亚5233怎么下的游戏不是全屏的? 我的手机诺基亚5233看图片左右两边黑框不能全屏了怎么办 「无生试讲」左手?右手?傻傻分不清楚!宅家大学生试讲安培力 仓库发货老漏件,监控视频看不清楚,快递员老忘记带扫描枪来收货,怎么... 买二手房的时候怎样才能避开中介,找到真正的房主? 你好 我想买二手房用公积金 家在黄岛 有个青岛的房中介的房子 怕被骗... 为什么来消息手机不亮屏了呢? 五个字网名好听又吸引人昵称 五个字网名好听又难忘的网名360个 -百科/... 看见人家电脑上面的桌面 像海底世界一样 很多鱼在游 还有气泡 还有水花... ...2、电脑桌面也是可以动的风景或是海底世界。 为什么有时候脾气会变得非常暴躁呢? 为什么每次要出事得时候我都会特别暴躁 桩基检测包括哪些内容 祝福孩子前程似锦未来可期的话 微信频繁打招呼会被系统封号吗? 汉dm和汉ev哪个值得买 电表如何远程控制 高血压四项ARR是什么 请问如何换加11功德,和加8功德 口袋西游领取的功德武器直接是点化+8的么 口袋西游换+11功德武器得多少万魂石,不算排行 口袋西游上60级的功德武器点化+11的怎么获得,说详细点 2024年夏至是入伏的开始吗 夏至是入伏的头一天吗夏至节气吃什么 联想乐Pad与苹果iPad2对比有哪些优劣势? 【20分】到底是买IPAD2,还是乐pad+手机,还是dell的win7系统的pad+手 ... 什么样的病人要怀疑有继发性高血压? 我最近有去苹果体验店玩了ipad,想问下ipad与联想的乐pad有什么区别么... 如何鉴别继发性高血压 乐pad和ipad和惠普touchpad三种平板电脑,该买哪个好.不差钱...从功能上... 乐pad、新ipad3、ipad2、国产平板电脑散热怎么样? 排查继发性高血压 继发性高血压如何发现?