找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6905|回复: 15

OPC客户端上位机编程方法

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:28
  • 打卡月天数:7
  • 打卡总奖励:7961
  • 最近打卡:2025-12-22 17:16:30

3317

主题

285

回帖

2万

积分

管理员

积分
24106
发表于 2020-4-27 20:29:51 | 显示全部楼层 |阅读模式
[size=0.8]1、软件实现根据IP地址获取主机名,然后获取OPC服务器,连接服务器后获OPC服务器上的所有节点,双击某个节点标签,在下面可以订阅标签的值,点击某个标签,右键点击可以更改写入值:
[size=0.6]工控超实用的OPC客户端上位机编写

[size=0.6]工控超实用的OPC客户端上位机编写

[size=0.8]2、软件功能演示:
[size=0.6]工控超实用的OPC客户端上位机编写

[size=0.8]3、部分代码如下:
[size=0.8]/// <summary>
[size=0.8]/// 根据IP地址获取DNS主机名
[size=0.8]/// </summary>
[size=0.8]/// <param name="sender"></param>
[size=0.8]/// <param name="e"></param>
[size=0.8]private void button1_Click(object sender, EventArgs e)
[size=0.8]try
[size=0.8]IPHostEntry iPHostEntry = Dns.GetHostEntry(textBox1.Text);
[size=0.8]textBox2.Text = iPHostEntry.HostName;
[size=0.8]catch(Exception ex)
[size=0.8]MessageBox.Show(ex.ToString());
[size=0.8]/// <summary>
[size=0.8]/// 获取OPC服务器
[size=0.8]/// </summary>
[size=0.8]/// <param name="sender"></param>
[size=0.8]/// <param name="e"></param>
[size=0.8]private void button2_Click(object sender, EventArgs e)
[size=0.8]try
[size=0.8]if (textBox2.Text != "")
[size=0.8]kepServer = new OPCServer();
[size=0.8]//获取指定DNS主机名上的OPC服务器
[size=0.8]object serverList = kepServer.GetOPCServers(textBox2.Text);
[size=0.8]comboBox1.Items.Clear();
[size=0.8]foreach (string serverName in (Array)serverList)
[size=0.8]if (!comboBox1.Items.Contains(serverName))
[size=0.8]comboBox1.Items.Add(serverName);
[size=0.8]else
[size=0.8]MessageBox.Show("请先获取DNS主机名");
[size=0.8]catch(Exception ex)
[size=0.8]MessageBox.Show(ex.ToString());
[size=0.8]/// <summary>
[size=0.8]/// 连接OPC服务器
[size=0.8]/// </summary>
[size=0.8]/// <param name="sender"></param>
[size=0.8]/// <param name="e"></param>
[size=0.8]private void button3_Click(object sender, EventArgs e)
[size=0.8]listBox1.Items.Clear();
[size=0.8]bool connFlag= ConnectServer(comboBox1.Text,textBox2.Text);
[size=0.8]if(connFlag==true)
[size=0.8]button3.Text = "已连接OPC";
[size=0.8]GetOPC_Info();
[size=0.8]kepBrowser = kepServer.CreateBrowser();
[size=0.8]CreateKepBrowser(kepBrowser);
[size=0.8]CreateGroup();
[size=0.8]/// <summary>
[size=0.8]/// 连接OPC服务器,并返回是否连接成功
[size=0.8]/// </summary>
[size=0.8]/// <param name="serverName"></param>
[size=0.8]/// <param name="ServerNode"></param>
[size=0.8]/// <returns></returns>
[size=0.8]public bool ConnectServer(string serverName,String ServerNode)
[size=0.8]try
[size=0.8]kepServer.Connect(serverName, ServerNode);
[size=0.8]//判断OPC服务器的连接状态
[size=0.8]if (kepServer.ServerState == (int)OPCServerState.OPCRunning)
[size=0.8]toolStripStatusLabel1.Text = "已连接到服务器:" + kepServer.ServerName + " ";
[size=0.8]return true;
[size=0.8]else
[size=0.8]toolStripStatusLabel1.Text= "状态:" + kepServer.ServerState.ToString() + " ";
[size=0.8]return false;
[size=0.8]catch
[size=0.8]return false;
[size=0.8]4、完整代码较长,如需要完整代码可先关注并留言,然后私信我发送“OPCDA”即可自动回复,如果能帮助到你,感谢你的关注订阅,可以第一时间接收后续更新。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工控课堂 www.gkket.com

0

主题

108

回帖

417

积分

注册会员

积分
417
发表于 2020-4-27 20:29:51 | 显示全部楼层
绝对干货,楼主给力,支持了!!!
工控课堂 www.gkket.com

0

主题

87

回帖

356

积分

注册会员

积分
356
发表于 2020-10-13 06:44:07 | 显示全部楼层
我顶,我顶,我顶顶顶
工控课堂 www.gkket.com

0

主题

4

回帖

14

积分

新手上路

积分
14
发表于 2022-8-16 12:30:35 | 显示全部楼层
绝对干货,楼主给力,支持了!!
工控课堂 www.gkket.com

0

主题

2

回帖

23

积分

新手上路

积分
23
发表于 2024-6-4 14:06:11 | 显示全部楼层
楼主给力,支持了!!!
工控课堂 www.gkket.com

0

主题

118

回帖

195

积分

新手上路

积分
195
发表于 2025-11-13 09:09:47 | 显示全部楼层
占个楼慢慢看,先马克一下
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com

0

主题

81

回帖

125

积分

新手上路

积分
125
发表于 2025-11-13 09:16:32 | 显示全部楼层
路过混个脸熟,顺便为优质内容打 call~
工控课堂 www.gkket.com

0

主题

104

回帖

160

积分

新手上路

积分
160
发表于 2025-11-13 09:17:31 | 显示全部楼层
楼主辛苦啦,期待下一篇分享!
工控课堂 www.gkket.com

0

主题

93

回帖

137

积分

新手上路

积分
137
发表于 2025-11-13 09:17:46 | 显示全部楼层
说得对!狠狠赞同,没毛病~
工控课堂 www.gkket.com

0

主题

105

回帖

436

积分

注册会员

积分
436
发表于 2025-11-13 09:18:18 | 显示全部楼层
蹲个后续,楼主记得更新呀,在线等挺急的~
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 17:37 , Processed in 0.088702 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表