永发信息网

关于哪位有C#与三菱PLC通讯的源码,最好有实例

答案:2  悬赏:50  手机版
解决时间 2021-04-02 19:07
关于哪位有C#与三菱PLC通讯的源码,最好有实例
最佳答案
C#与三菱PLC通讯的源码
  1) 文件校验
  我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
  MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
  2) 数字签名
  Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。 对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。
  3) 鉴权协议
  如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。
全部回答

具体时哪个型号?不同的型号引用的组件不一样的,这里提供一段C#与FX5U以太网通讯大代码:                EntFxPlc.PlcClient PLC = new EntFxPlc.PlcClient();
bool EntLink;
                Int32 PlcHand;

public void Form1_Load(System.Object sender, System.EventArgs e)
{
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;
}

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 PlcHand,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);
}
}
public void butClose_Click(System.Object sender, System.EventArgs e)
{
short re = 0;
            EntLink = false;
            re = PLC.DeLink(PlcHand);
txtReClose.Text = re.ToString();
}
public void butRead_Click(System.Object sender, System.EventArgs e)
{
short i = 0;
object[] RD = null;
RD = new object[Convert.ToUInt16(txtReadCnt.Text)];
if (!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
int var1 = cmbReadType.SelectedIndex + 1;
            EntFxPlc.PlcClient.DataType typ = (EntFxPlc .PlcClient.DataType)var1;
switch (cmbReadMry.SelectedIndex)
{
case 0:
                    ScanRet = PLC.CmdRead(PlcHand,EntFxPlc.PlcClient.PlcMemory.DI, typ,    Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
break;
case 1:
                    ScanRet = PLC.CmdRead(PlcHand, EntFxPlc.PlcClient.PlcMemory.DQ, typ,   Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
break;
case 2:
                    ScanRet = PLC.CmdRead(PlcHand, EntFxPlc.PlcClient.PlcMemory.MR, typ,   Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
break;
case 3:
                    ScanRet = PLC.CmdRead(PlcHand, EntFxPlc.PlcClient.PlcMemory.DR, typ,   Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
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");
}
}

}

public void butWrite_Click(System.Object sender, System.EventArgs e)
{
short i = 0;
string[] temp = null;
object[] WD = null;
if (!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
WD = new object[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();
}
}
int var1 = cmbWriteType.SelectedIndex + 1;
            EntFxPlc.PlcClient.DataType typ = (EntFxPlc.PlcClient.DataType)var1;
switch (cmbWriteMry.SelectedIndex)
{
case 0:
                    ScanRet = PLC.CmdWrite(PlcHand, EntFxPlc.PlcClient.PlcMemory.DI, typ,   Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
case 1:
                    ScanRet = PLC.CmdWrite(PlcHand, EntFxPlc.PlcClient.PlcMemory.DQ, typ,   Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
case 2:
                    ScanRet = PLC.CmdWrite(PlcHand, EntFxPlc.PlcClient.PlcMemory.MR, typ,   Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
case 3:
                    ScanRet = PLC.CmdWrite(PlcHand, EntFxPlc.PlcClient.PlcMemory.DR, typ,   Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
break;
}
txtReWrite.Text = ScanRet.ToString();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
吧里有人打算过准备出国打工的吗
求助:三星A9P总是莫名其妙重启
有上海交大清华北语这些大学香港大学直通车项
最近客厅出现好多小虫子给怎么办
选择填空:1.Here we are.Let's__the bus
如何自己制作蚕丝被?
如何管理比你资历老的员工
bilibili现在不能收藏专题了怎么办
郎酒T6现在什么价格?我6月份 在安徽 买了300
岳阳楼区岳阳格力哪位知道具体地址啊
熔丝位的常用熔丝位
金指课堂八年级上册答案
配股后的除权价如何计算
为什么今天梦幻西游说(服务器繁忙)进不去求
怎么用C#做单击鼠标右键时出现的菜单
推荐资讯
我终于知道李疯子为什么打不过傻子那了
before用法
灰枣和骏枣哪个好
魔声耳机效果灰常好么
这样的幸福刚刚好,配情侣网名
谁能帮我找一个叫代茹的喀什女孩·?她现在应
求翻译:夫物之不齐,物之情也。或相倍蓰,或相
你对爱人有什么要求
不想变成的结局最终还是下句是什么
怎么样把自行车改装成山地车呢?。。。。
我在江苏常州市,请问在那里能买到万州浪香格
商品房公摊面积盈利属于业主还是物业公司,有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?