s7netplus二次应用

news/2024/10/3 19:23:35

1. 安装

  • 这是个基于S7协议的开源协议

2. 引用

using S7.Net;

3. 创建PLC对象

    internal class s7net_lib{//idenfy basic link paramsprivate string plc_ip;private CpuType plc_type;private short plc_rack, plc_slot;public Plc my_plc;//constructor,含参构造函数 public s7net_lib(int type, string ip, short rack, short slot){switch (type){case 0:plc_type = CpuType.S7200;break;case 1:plc_type = CpuType.S7300;break;case 2:plc_type = CpuType.S7400;break;case 3:plc_type = CpuType.S71200;break;case 4:plc_type = CpuType.S71500;break;default:break;}plc_ip = ip;plc_rack = rack;plc_slot = slot;my_plc = new Plc(plc_type, plc_ip, plc_rack, plc_slot);}}

4. 连接

        //connectpublic bool connect_plc(){try{my_plc.Open();}catch{MessageBox.Show("plc can't be connected,check params!");}if (my_plc.IsConnected){return true;}else{return false;}}

5. 断开连接

        //disconnectedpublic bool disconnect_plc(){my_plc.Close();if (my_plc.IsConnected){return false;}else{return true;}}

6. PLC数据类型和寻址类型

      //Analysis S7 data typeprivate VarType S7_datatype(string type){switch (type){case "bool": return VarType.Bit;case "byte": return VarType.Byte;case "word": return VarType.Word;case "dword": return VarType.DWord;case "int": return VarType.Int;case "dint": return VarType.DInt;case "real": return VarType.Real;case "lreal": return VarType.LReal;case "string": return VarType.String;case "s7string": return VarType.S7String;case "s7wstring": return VarType.S7WString;case "datetime": return VarType.DateTime;case "timer": return VarType.Timer;case "datetimelong": return VarType.DateTimeLong;default:return VarType.Byte;}}//Analysis S7 register typeprivate DataType S7_registertype(int db_area){switch (db_area){case 129: return DataType.Input;case 130: return DataType.Output;case 131: return DataType.Memory;case 132: return DataType.DataBlock;case 29: return DataType.Timer;case 28: return DataType.Counter;default:return DataType.DataBlock;}}

7. 读写数据

        //data write and readpublic object? write_read_value(string type, int db_area, int iDB_num, int iDB_start_byteadd, string w_or_r, object values, int bit_address = 0, int count = 1){if (w_or_r == "w")if (type == "bool"){my_plc.WriteBit(S7_registertype(db_area), iDB_num, iDB_start_byteadd, bit_address, (bool)values);}else{my_plc.Write(S7_registertype(db_area), iDB_num, iDB_start_byteadd, values);}return my_plc.Read(S7_registertype(db_area), iDB_num, iDB_start_byteadd, S7_datatype(type), count);}

8. Int数据读写

        //int data write and readpublic short int_rw_value(int db_area, int iDB_num, int iDB_start_byteadd, string w_or_r, short values = 0){short feedbackword = (short)write_read_value("int", db_area, iDB_num, iDB_start_byteadd, w_or_r, values);return feedbackword;}

9. byte数据读写

        //byte data write and readpublic byte byte_rw_value(int db_area, int iDB_num, int iDB_start_byteadd, string w_or_r, byte values = 0){return (byte)write_read_value("byte", db_area, iDB_num, iDB_start_byteadd, w_or_r, values);}

10. 字符串读写

        //string data public string string_rw_value(int db_area, int iDB_num, int iDB_start_byteadd, string w_or_r, string values = ""){byte maxcount= new byte();string string_value;if (w_or_r == "r") { maxcount = byte_rw_value(db_area, iDB_num, iDB_start_byteadd + 1, "r"); }else if (w_or_r == "w") { maxcount = (byte)values.Length; byte_rw_value(db_area, iDB_num, iDB_start_byteadd + 1, "w", maxcount); }string_value = (string)write_read_value("string", db_area, iDB_num, iDB_start_byteadd + 2, w_or_r, values, 0,maxcount);return string_value;}

11. 字符读写

        //char datapublic char char_rw_value(int db_area, int iDB_num, int iDB_start_byteadd, string w_or_r, char values = ' '){ char char_value = new char();if (w_or_r == "r")char_value = (char)byte_rw_value(db_area, iDB_num, iDB_start_byteadd, "r");else if(w_or_r == "w")char_value = (char)byte_rw_value(db_area, iDB_num, iDB_start_byteadd, "w",(byte)values);return char_value;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29105.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

MySQL-09.性能分析工具的使用

1.数据库服务器的优化步骤当遇到数据库调优问题时,思考的流程如下图。 整个流程划分成了观察(Show status)和行动(Action)两个部分。字母S的部分代表观察(会使用相应的分析工具),字母A代表的部分是行动(对应分析可以采取的行动)。上图,就是数据库调优的思路。如果发现执行SQ…

获取系统时间

获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建。 /*************************************************** file name:GetCurTime.c* author :momolyl@126.com* dat…

libvips 一个最好用的高性能、低内存、跨平台的图片处理库

一个可以媲美OpenCV的开源库,它具有高性能、低内存、跨平台、无内存泄漏的特性。 项目简介 这是用C++开发的图像处理库,支持的API超过300多个,涵盖了算术、颜色、图片转换、卷积、形态、马赛克、合并、切割等。 支持多种图像格式,包括:JPEG、JPEG2000、JPEG-XL、TIFF、PNG…

2022年最新的Asp.Net程序员学习路线图

给大家分享一个微软MVP整理的,2022年最新的Asp.Net程序员学习路线图。这个图的知识点,分为:1、个人必须掌握 2、进一步学习 3、兴趣 4、其他 5、可能需要学习。第1、2部分大家必须去掌握起来,其他的内容可以根据工作的需要、兴趣选择。 在Github已经针有人对路线图的每一个…

一个基于C#开发的、开源的特殊字符输入法

来自:编程乐趣 2024-02-18emoji表情在社交网络非常流行,我们在手机也非常方便输入,但是在PC电脑我们一般需要到归集好的网页拷贝,所以今天推荐一个Windows小工具,让你方便输入特殊字符和emoji表情。01 项目简介 这是一个基于C#开发的开源项目,方便我们通过键盘组合键、拷…

小组练习:拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小组收集不少于

小组练习: 拿出手机发朋友圈/微信群, 收集你的目标用户对你当前产品的NPS。 每个项目小组收集不少于 30 条投票,截图展示 在学习通提交解答的同时,可以同步发布在团队和个人博客上,作为学习心得体会,记录下来。 我的答案: 【第二组】 NPS(Net Promoter Score)是一种用来…

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

原文链接:http://tecdat.cn/?p=5222 原文出处:拓端数据部落公众号在本文中,我们将以Scikit-learn的决策树和随机森林预测NBA获胜者。美国国家篮球协会(NBA)是北美主要的男子职业篮球联赛,被广泛认为是首屈一指的男子职业篮球联赛在世界上。它有30个队(美国29个,加拿大…