使用C#引用S7.Net.dll 连接西门子1500PLC 报异常,
在连接过程中出现,虽然可以成功连接PLC,但是无法读取数据的问题。读PLC报异常。
1、首先说下报的异常
(1)S7.Net.PlcException: 无法将数据写入传输连接: 远程主机强迫关闭了一个现有的连接
(2)索引超出范围,请重新输入!
针对第一个报的异常,很明显是一个硬件问题,但是由于对PLC不熟悉,捣鼓了很久。。终于在一个配置文件中找到了问题。
需要博图进行以下设置:
配置博图TIA
- 首先在博图TIA查看PLC的属性
Rack =0
Slot=1
2)查看权限
设置完全权限
3)勾选 允许来自远程对象的PUT/GET通讯访问
4)读取DB数据时必须改DB块的属性,去掉优化的块访问的勾选项
在bin文件夹debug,config文件打开配置PLC IP地址,CPU 的信息
修改配置文件
如下:
IP=192.168.0.1 //PLC IP地址
Rack=0 //PLC 机架
Slot=1 //PLC 插槽
对于第二个异常,暂无解答。。。 配置完成以上后,此问题消失不见。。。(有哪位大哥了解此问题,请为小弟解答下。。)
2、如何连接PLC:
首先应将本机电脑的IP地址和PLC在同一个网段里,配置如下:
button1控件为连接PLC
3、连接PLC 程序代码如下:
private void button1_Click(object sender, EventArgs e){//创建PLC对象 //机架 //机槽S71500 = new Plc(CpuType.S71500, IP_Address.Text, Convert.ToInt16(Rack.Text),Convert.ToInt16(Slot.Text));S71500.OpenAsync().Wait(2000);if (S71500.IsConnected){button1.Enabled = false;button2.Enabled = true;Read_Data.Enabled = true;Write_Data.Enabled = true;textBox1.Text = "已连接到PLC";}elsetextBox1.Text = "PLC 连接不成功,请检查IP地址、机架、插槽等是否正确";}
断开连接代码:
private void button2_Click(object sender, EventArgs e){//调用S7.NET中的方法断开PLCS71500.Close();//断开成功后使能操作按钮if (!S71500.IsConnected){button1.Enabled = true;button2.Enabled = false;Read_Data.Enabled = false;Write_Data.Enabled = false;textBox1.Text = "PLC断开成功";}elsetextBox1.Text = "PLC断开不成功";}
读PLC程序代码:
private void Read_Data_Click(object sender, EventArgs e){int Data_Type_Value = 0;if (Data_Type.Text == "Bool") Data_Type_Value = 1;else if (Data_Type.Text == "Int") Data_Type_Value = 2;else if (Data_Type.Text == "DInt") Data_Type_Value = 3;else if (Data_Type.Text == "Real") Data_Type_Value = 4;else if (Data_Type.Text == "String") Data_Type_Value = 5;else Data_Type_Value = 0;switch (Data_Type_Value){case 1:try{ Current_Value.Text = Convert.ToString(S71500.Read(DataType.DataBlock,Convert.ToInt16(DB_Number.Text), Convert.ToInt16(Start_Address.Text), VarType.Bit, Convert.ToInt16(Length.Text), 0));}catch { MessageBox.Show("索引超出范围,请重新输入!"); }break;case 2:try{Current_Value.Text = Convert.ToString(S71500.Read(DataType.DataBlock,Convert.ToInt16(DB_Number.Text), Convert.ToInt16(Start_Address.Text), VarType.Int, Convert.ToInt16(Length.Text), 0));}catch { MessageBox.Show("索引超出范围,请重新输入!"); }break;case 3:Current_Value.Text = Convert.ToString(S71500.Read(DataType.DataBlock,Convert.ToInt16(DB_Number.Text), Convert.ToInt16(Start_Address.Text), VarType.DInt, Convert.ToInt16(Length.Text), 0));break;case 4:Current_Value.Text = Convert.ToString(S71500.Read(DataType.DataBlock,Convert.ToInt16(DB_Number.Text), Convert.ToInt16(Start_Address.Text), VarType.Real, Convert.ToInt16(Length.Text), 0));break;case 5:Current_Value.Text = Convert.ToString(S71500.Read(DataType.DataBlock,Convert.ToInt16(DB_Number.Text), Convert.ToInt16(Start_Address.Text), VarType.String, Convert.ToInt16(Length.Text), 0));break;default: break;}}
使用C#引用S7.Net.dll 连接西门子1500PLC 报异常,相关推荐
- VB.NET使用S7.NET.dll连接西门子PLC200、200smart、300、400、1200
VB.NET使用S7.NET.dll连接西门子PLC200smart.300.400.1200 由于我之前上传的一个西门子PLC的测试工具(学习PLC初期网上下载的测试工具)被大家下载好多次,于是在这 ...
- 解决:远程连接mysql:报异常,1044 - Access denied for user ‘root‘@‘%‘ to database ‘xxxxxx‘
解决:使用Navicat远程连接,Docker中的mysql8时报异常,:1044 - Access denied for user 'root'@'%' to database 'gulimall_ ...
- 西门子S7.Net.dll
1.C#使用S7.Net.DLL连接PLC,读写数据[https://download.csdn.net/download/hjsbbt/12044882?utm_source=iteye_new] ...
- Java使用S7协议连接西门子PLC1200、1500
Java使用S7协议连接西门子PLC1200.1500 1.引入s7包 2.测试代码(可参考使用) 1.引入s7包 使用 https://github.com/s7connector/s7connec ...
- 通过S7协议或opc协议远程连接西门子模拟器
通过S7协议或opc协议远程连接西门子模拟器 1.环境准备 安装博途 下载:Nettoplcsim,https://sourceforge.net/projects/nettoplcsim/ 2.博途 ...
- mysql c 驱动dll_C#调用MySQL数据库(使用MySql.Data.dll连接)mysql-connector-net-6.10.4.msi
下载地址:http://dev.mysql.com/downloads/connector/net/ 安装指导 1.安装:mysql-connector-net-6.10.4.msi 其下载地址:ht ...
- Softing edgePlug Docker容器产品连接西门子工业边缘
Softing edgePlug产品系列的首批连接产品可在西门子工业边缘市场(Siemens Industrial Edge Marketplace)上进行购买. (Softing edgePlug ...
- C#(vs2022社区免费版)调用MySQL数据库(使用MySql.Data.dll连接)
今天需要用C#访问MySQL, 我的vs版本是vs2022社区免费版, MySQL版本是mysql-installer-community-5.7.28.0, 网上搜教程,一般都说有3种,我选择了My ...
- 当引用com类dll时,在VS2005下会出现,dll虽然更换了但是引用没有更换或找不到的错误
当引用com类dll时,在VS2005下会出现,dll虽然更换了但是引用没有更换或找不到的错误 处理办法: 打开*.vbProj文件找到最后一个<ItemGroup>,添加或更改<C ...
最新文章
- python执行linux命令返回结果_Python中调用Linux命令并获取返回值
- Windows Server2008安装mysql5.6出现程序无法正常启动(0xc000007b)
- Python中的MySQL数据库编程
- server 群辉emby_群晖容器中搭建支持硬件编码的Emby Server教程及注意事项
- 前沿 | NVIDIA PyTorch库让3D深度学习研究更简单!
- 蚂蚁集团CEO胡晓明宣布辞任
- pytorch框架快速测试你的模型结构是否存在问题并得到输出形状
- PIC单片机软件平台----MPLAB IDE和MPLAB X IDE
- Matlab机器学习入门(一)
- 什么是超级浏览器?目前超级浏览器有哪些分类?
- SOA、网格计算、云计算与P2P技术
- 2022-2028全球造水机市场现状及未来发展趋势
- MATLAB凸优化工具箱CVX用户手册-Chapter5
- 压力测试软件 loadr,初学abench压力测试 - 玄大冰 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- 从招聘信息来看,小米、爱奇艺、360甚至芒果TV都要做VR了
- python 列表嵌套字典 添加修改删除_python3--字典,字典的嵌套,概念:分别赋值
- Linux bash 数组 for循环遍历
- 再读杨绛_RWERWERWE_96921_新浪博客
- ms office 2007 vs 2012
- 人体骨骼关键点检测AP值AP@s
热门文章
- #力扣 LeetCode461. 汉明距离 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC
- 推荐系统-用户标签预测算法基础实践-决策树(一)
- 八种提升薪酬激励的艺术(转)
- matlab/simulink汽车带可变阻尼的半主动悬架系统模型
- The order of a Tree(模拟BST的建树和访问)
- uniapp实战项目 (仿知识星球App) - - 利用computed监听用户操作
- C/C++内存问题检查利器—Purify (三)
- 玩游戏学前端——颜色您了解多少?
- 【校内模拟】【18-10-16】长者 【主席树】【哈希】
- windows10永久禁用驱动强制签名