C#与西门子PLC通信上位机程序

1.该程可以实现c#与西门子全系列plc(200smart,300,400,1200,1500)的以太网s7通讯,通讯传输快稳定。
2.该程序采用.dll动态链接库方式,是最近几年才出来的一种与西门子plc通讯的方式,本人经过几个星期的测试,找到他的所有使用方法和注意事项,并开发了一个通用类库可以读取写入各种类型的数据,字符串,bool,16位整数,32位整数,浮点数还有struct数据结构。
3.该程序还可以实时监控上位机与plc的通讯状态。程序稍微改造就可以应用到实际项目,已经应用到多条生产线系统中;

4.下面有部分程序源码,如果您需要全套源码+V:1357448516。或者qq:584472557

S7.net

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using S7.Net;
using System.Threading;
using System.Threading.Tasks;

namespace S7net通信测试
{
    public partial class Form1 : Form
    {
        //该测试程序举了两个PLC实例,PLC1对应S7-200Smart,一定要注意对于S7-200Smart的驱动CpuType.S71200,因为S7-200Smart的通讯协议跟1200是一样的.
        //S7-200SmartPLC的V区就用S7-1200PLC的DB1代替,比如想读取VD100,那就用地址DB1.DBD100代替,其他区域跟1200一样。
        //PLC2对应S7-1200PLC
        S7NetPLC PLC2 = new S7NetPLC(CpuType.S71200, "192.168.0.1", 0, 1);//S7-1200PLC

        //textbox控件Text多线程调用枚举
        private delegate void delegateText(TextBox textbox, string text);

        //label控件Text多线程调用枚举
        private delegate void delegateLab(Label textbox, string text);

        //CheckBox控件多线程调用枚举
        private delegate void delegateCheck(CheckBox checkbox, bool bl);

        //PLC循环线程,该线程是实时读取PLC1变量处理数据用的
        private Thread threadPLCCycle;

        //界面加载延时定时器
        System.Windows.Forms.Timer DownloadDelayedTimer;

        private bool writeBoolEn = false;
        private bool writeStringEn = false;
        private bool writeByteEn = false;
        private bool writeUshortEn = false;
        private bool writeShortEn = false;
        private bool writeIntEN = false;
        private bool writeRealEN = false;
        private bool writeStructEN = false;
        private bool writeClassEN = false;

        public Form1()
        {
            InitializeComponent();
        }


        /// <summary>
        /// 界面加载延时处理函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void DownloadDelayedTimer_Tick(object sender, EventArgs e)
        {
            DownloadDelayedTimer.Enabled = false;

            //PLC2.connectPLC();

            threadPLCCycle = new Thread(Connectplc);
            threadPLCCycle.IsBackground = true;
            threadPLCCycle.Start();


        }


        /// <summary>
        ///  PLC循环控制线程函数
        /// </summary>
        private void Connectplc()
        {
            while (true)
            {

                PLC2.connectPLC();//判断通讯连接状态
                if (PLC2.ConectStatus == true)
                {
                    labShow(labPLC2Conect, "连接");
                    labPLC2Conect.BackColor = Color.Lime;
                }
                else
                {
                    labShow(labPLC2Conect, "断开");
                    labPLC2Conect.BackColor = Color.Red;
                }

                PLC2CyceleControl();//PLC读写控制

            }
        }

        /// <summary>
        /// PLC2循环读取写入方法
        /// </summary>
        private void PLC2CyceleControl()
        {
            try
            {
                if (PLC2.ConectStatus == true)
                {
                    labShow(label10, PLC2.linkErrNum.ToString());//显示重连次数

                    //bool写入控制
                    if (writeBoolEn == true)
                    {
                        if (chBoxWriteBool2.Checked)
                        {
                            //往M10.0写入true
                            PLC2.WriteBoolenM("M10.0", true);
                        }
                        else
                        {
                            //往M10.0写入false
                            PLC2.WriteBoolenM("M10.0", false);
                        }

                        if (chBoxWriteBool1.Checked)
                        {
                            //往Q0.0写入true
                            PLC2.WriteBoolenQ("Q0.0", true);
                        }
                        else
                        {
                            //往Q0.0写入false
                            PLC2.WriteBoolenQ("Q0.0", false);
                        }

                        if (chBoxWriteBool3.Checked)
                        {
                            //往DB1.DBX0.0写入true
                            PLC2.WriteBoolenDB("DB1.DBX0.0", true);
                        }
                        else
                        {
                            //往DB1.DBX0.0写入false
                            PLC2.WriteBoolenDB("DB1.DBX0.0", false);
                        }

                        writeBoolEn = false;
                    }

                    //写入Stirng类型控制
                    if (writeStringEn == true)
                    {
                        string string1 = txtBoxWriteChars.Text;
                        PLC2.WriteString(CpuType.S71200, DataType.DataBlock, 1, 22, string1, 20);//往DB1.DBB21开始的字节写入字符串,注意:起始地址填字符串首地址

                        writeStringEn = false;

                    }


                    //写入Byte类型控制
                    if (writeByteEn == true)
                    {
                        if (chBoxWriteB1.Checked)
                        {

                            byte by = byte.Parse(txtBoxWrtieB.Text.Trim());
                   

                        }

                        if (chBoxWriteB2.Checked)
                        {

                            byte by = byte.Parse(txtBoxWrtieB.Text.Trim());//往MB11写8位字节整数
                            PLC2.WriteByte("MB11", by);

                        }
                        if (chBoxWriteB3.Checked)
                        {

                            byte by = byte.Parse(txtBoxWrtieB.Text.Trim());
                            PLC2.WriteByte("DB1.DBB1", by);//往DB1.DBB1写8位整数

                        }
                        writeByteEn = false;
                    }

                    //写入16位无符号整数控制
                    if (writeUshortEn == true)
                    {
                        if (chBoxWriteWord1.Checked)
                        {

                            ushort by = ushort.Parse(txtBoxWrtieWord.Text.Trim());
                      

                        }

                        if (chBoxWriteWord2.Checked)
                        {

                            ushort by = ushort.Parse(txtBoxWrtieWord.Text.Trim());
                            PLC2.WriteWord("MW12", by);//往MW12写16位无符号整数

                        }

                        if (chBoxWriteWord3.Checked)
                        {

                            ushort by = ushort.Parse(txtBoxWrtieWord.Text.Trim());
                            PLC2.WriteWord("DB1.DBW2", by);//往DB1.DBW2写16位无符号整数

                        }

                        writeUshortEn = false;
                    }


                    //写入16位整数控制
                    if (writeShortEn == true)
                    {
                        if (chBoxWriteInt1.Checked)
                        {

                            short by = short.Parse(txtBoxWrtieInt.Text.Trim());
 

                        }

                        if (chBoxWriteInt2.Checked)
                        {

                            short by = short.Parse(txtBoxWrtieInt.Text.Trim());
                            PLC2.WriteShort("MW14", by);//往MW14写16位有符号整数

                        }

                        if (chBoxWriteInt3.Checked)
                        {

                            short by = short.Parse(txtBoxWrtieInt.Text.Trim());
                            PLC2.WriteShort("DB1.DBW4", by);//往DB1.DBW4写16位有符号整数

                        }

                        writeShortEn = false;
                    }

                    //读取双整数控制
                    if (writeIntEN == true)
                    {
                        if (chBoxWriteDInt1.Checked)
                        {

                            int by = int.Parse(txtBoxWrtieDInt.Text.Trim());
                        

                        }

                        if (chBoxWriteDInt2.Checked)
                        {

                            int by = int.Parse(txtBoxWrtieDInt.Text.Trim());
                            PLC2.WriteInt("MD16", by);//往MD16写32位有符号整数

                        }

                        if (chBoxWriteDInt3.Checked)
                        {

                            int by = int.Parse(txtBoxWrtieDInt.Text.Trim());
                            PLC2.WriteInt("DB1.DBD6", by);//往DB1.DBD6写32位有符号整数

                        }

                        writeIntEN = false;
                    }

                    //写入浮点数控制
                    if (writeRealEN == true)
                    {
                        if (chBoxWriteFloat1.Checked)
                        {

                            double by = double.Parse(txtBoxWrtieFloat.Text.Trim());
                         

                        }

                        if (chBoxWriteFloat2.Checked)
                        {

                            double by = double.Parse(txtBoxWrtieFloat.Text.Trim());
                            PLC2.WriteReal("MD20", by);//往MD20写32位浮点数

                        }

                        if (chBoxWriteFloat3.Checked)
                        {

                            double by = double.Parse(txtBoxWrtieFloat.Text.Trim());
                            PLC2.WriteReal("DB1.DBD10", by);//往DB1.DBD10写32位浮点数

                        }

                        writeRealEN = false;
                    }

                    //写入Struct控制
                    if (writeStructEN == true)
                    {

                        try
                        {
                            TestStruct typeStruct = new TestStruct();
                            typeStruct.Var1 = double.Parse(txtBoxWrtieStruct1.Text.Trim());
                            typeStruct.Var2 = ushort.Parse(txtBoxWrtieStruct2.Text.Trim());
                            typeStruct.Var3 = short.Parse(txtBoxWrtieStruct3.Text.Trim());
                            PLC2.plc.WriteStruct(typeStruct, 1, 14);//往DB1.DBB14开始的字节开始的结构写入值
                        }
                        catch (Exception ex)
                        {

                        }

                        writeStructEN = false;
                    }

                    //写入类批量测试程序
                    if(writeClassEN ==true)
                    {
                        try
                        {
                            TestClass typeClass = new TestClass();
                            double[] var1=new double[16]{1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0};
                            short[] var2 = new short[16] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
                            typeClass.Var1 = var1;
                            typeClass.Var2 = var2;
                            PLC2.plc.WriteClass(typeClass, 1, 44);//往DB1.DBB44开始的字节开始的数组写入值
                        }
                        catch (Exception ex)
                        {

                        }

                        writeClassEN = false;
                    }


                    读取bool控制
                    checkShow(chBoxReadBool2, PLC2.readBoolenM("M10.0"));
                    checkShow(chBoxReadBool3, PLC2.readBoolenDB("DB1.DBX0.0"));
                    checkShow(chBoxReadBool1, PLC2.readBoolenQ("Q0.0"));

                    //读取字符串
                    string str = PLC2.ReadStringGood(DataType.DataBlock, 1, 24, 20);//读取起始地址为DB1.DBB22的字符串,注意:此处起始地址=填字符串首地址+2
                    textShow(txtBoxReadChars, str);

                    //读取8位字节整数
                    string byte3 = PLC2.ReadByte(DataType.DataBlock, 1, 1).ToString();//读取DB1.DBB1
                    textShow(txtBoxReadB3, byte3);

                    //读取16位无符号整数
                    string ushort2 = PLC2.readInt("MW12").ToString();//读取MW12
                    textShow(txtBoxReadWord2, ushort2);
                    string ushort3 = PLC2.readInt("DB1.DBW2").ToString();//读取DB1.DBW2
                    textShow(txtBoxReadWord3, ushort3);

                    //读取16位有符号整数
                    string short2 = PLC2.readInt("MW14").ToString();//读取MW14
                    textShow(txtBoxReadInt2, short2);
                    string short3 = PLC2.readInt("DB1.DBW4").ToString();//读取DB1.DBW4
                    textShow(txtBoxReadInt3, short3);

                    //读取32位双整数
                    string Dint2 = PLC2.readDInt("MD16").ToString();//读取MD16
                    textShow(txtBoxReadDInt2, Dint2);
                    string Dint3 = PLC2.readDInt("DB1.DBD6").ToString();//读取DB1.DBD6
                    textShow(txtBoxReadDInt3, Dint3);

                    //读浮点数
                    string real2 = PLC2.readReal("MD20").ToString();//读取MD20
                    textShow(txtBoxReadFloat2, real2);
                    string real3 = PLC2.readReal("DB1.DBD10").ToString();//读取DB1.DBD10
                    textShow(txtBoxReadFloat3, real3);

                    //读取结构变量,批量读取控制
                    TestStruct test = (TestStruct)PLC2.plc.ReadStruct(typeof(TestStruct), 1, 14);
                    textShow(txtBoxReadStruct1, test.Var1.ToString());
                    textShow(txtBoxReadStruct2, test.Var2.ToString());
                    textShow(txtBoxReadStruct3, test.Var3.ToString());

                    //类批量读取测试
                    TestClass test1 = new TestClass();
                    PLC2.plc.ReadClass(test1, 1, 44);
                    double[] Var1=new double[16];
                    short[] Var2=new short[16];
                    Var1 = test1.Var1;
                    Var2= test1.Var2;


                }
            }
            catch
            {

            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //初始化界面加载延时计时器
            DownloadDelayedTimer = new System.Windows.Forms.Timer();
            DownloadDelayedTimer.Interval = 2000;
            DownloadDelayedTimer.Tick += new EventHandler(DownloadDelayedTimer_Tick);
            DownloadDelayedTimer.Enabled = true;

        }

   
        private void btnWrtieBool_Click(object sender, EventArgs e)
        {
            writeBoolEn = true;

        }

        private void btnWriteChars_Click(object sender, EventArgs e)
        {
            writeStringEn = true;

        }

        private void btnWriteB_Click(object sender, EventArgs e)
        {
            writeByteEn = true;
        }

        private void btnWriteWord_Click(object sender, EventArgs e)
        {
            writeUshortEn = true;

        }

        private void btnWriteInt_Click(object sender, EventArgs e)
        {
            writeShortEn = true;

        }

        private void btnWriteDInt_Click(object sender, EventArgs e)
        {
            writeIntEN = true;

        }

        private void btnWriteFloat_Click(object sender, EventArgs e)
        {
            writeRealEN = true;
        }


        /// <summary>
        /// 写结构类型,注意:结构里不能存在string类型,不然会报错,其他类型都可以。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnWriteStruct_Click(object sender, EventArgs e)
        {
            writeStructEN = true;

        }

        /// <summary>
        /// PLC结构变量定义
        /// </summary>
        public struct TestStruct
        {
            public double Var1;
            public ushort Var2;
            public short Var3;

        }


        #region label控件Text多线程显示
        private void labShow(Label label, string text)
        {
            try
            {
                if (label.InvokeRequired)
                {
                    delegateLab opcdelateTimer = new delegateLab(InvokeLab);
                    this.Invoke(opcdelateTimer, label, text);
                }
                else
                {
                    label.Text = text;
                }
            }
            catch
            {

            }
        }
        private void InvokeLab(Label label, string text)
        {
            label.Text = text;
        }

        #endregion


        #region text控件Text多线程显示
        private void textShow(TextBox textbox, string text)
        {
            try
            {
                if (textbox.InvokeRequired)
                {
                    delegateText opcdelateTimer = new delegateText(InvokeLabel);
                    this.Invoke(opcdelateTimer, textbox, text);
                }
                else
                {
                    textbox.Text = text;
                }
            }
            catch
            {

            }
        }
        private void InvokeLabel(TextBox textbox, string text)
        {
            textbox.Text = text;
        }

        #endregion

        #region checkBoX控件Checked多线程显示
        private void checkShow(CheckBox checkbox, bool bl)
        {
            try
            {
                if (checkbox.InvokeRequired)
                {
                    delegateCheck opcdelateTimer = new delegateCheck(Invokecheck);
                    this.Invoke(opcdelateTimer, checkbox, bl);
                }
                else
                {
                    checkbox.Checked = bl;
                }
            }
            catch
            {

            }
        }
        private void Invokecheck(CheckBox checkbox, bool bl)
        {
            checkbox.Checked = bl;
        }

        #endregion

        /// <summary>
        /// PLC类变量定义
        /// </summary>
        public class TestClass
        {
            private double[] var1= new double[16];
            public double[] Var1 
            {
                get//读的属性
                {
                    return var1;//返回值
                }
                set//写的属性
                {
                    var1 = value;//重新赋值
                }
            }

            private short[] var2 = new short[16];
            public short[] Var2
            {
                get//读的属性
                {
                    return var2;//返回值
                }
                set//写的属性
                {
                    var2 = value;//重新赋值
                }
            }    
        }
        
        //类批量写入
        private void button1_Click(object sender, EventArgs e)
        {
            writeClassEN = true;
        }

     

    }
}
 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中使用S7.net与西门子PLC通讯

最近因为工作的原因用到了西门子PLC&#xff0c;在使用过程中一直在思考上位机和PLC的通讯问题&#xff0c;后来上网查了一下&#xff0c;找到了一个专门针对S7开发的一个.net库–《S7netPlus》&#xff0c;PLC通讯方法比较多&#xff0c;所以也是在不断地学习中&#xff0c;以…

C#调用PCHMI与西门子PLC连接通讯

文章目录 一、PCHMI环境配置二、PCHMI连接S7&#xff08;PLC&#xff09;三、标签与按钮的使用总结 一、PCHMI环境配置 创建一个新项目 打开项目属性&#xff0c;更改输出路径为"bin\binexe"下 工具箱新建个选择卡&#xff0c;我们命名为PCHMI 鼠标右键【选择项】…

第三方调试助手的与S7-1200 PLC的通信

1、概述 西门子S7-1200 PLC支持多种协议通过以太网通讯方式&#xff0c;如OPC、TCP、S7、MODBUS-TCP等。TCP方式相比其它协议&#xff0c;具有更多的灵活性&#xff0c;更快的数据响应等优点&#xff0c; 需要PLC与电脑还有其他设备进行TCP通讯&#xff0c;使用TCP调试助手与…

TIA 博图 使用 S7通讯 Put Get 对两台PLC进行通讯

1.打开设备组态-属性-找到防护与安全&#xff1a; 把允许来自远程的PUT/GET 通讯访问✔&#xff0c;两台PLC都是这样&#xff0c;把组态下载进去。 2.设备与网络中&#xff0c;用端口1把两台设备连在一起&#xff1a; 两台设备需要在同一个网段里面 3.在PLC3新建一个DB块&#…

文心一言 VS 讯飞星火 VS chatgpt (23)-- 算法导论4.2 5题

五、V.Pan 发现一种方法&#xff0c;可以用 132 464 次乘法操作完成 68 x 68 的矩阵相乘&#xff0c;发现另一种方法&#xff0c;可以用 143 640 次乘法操作完成 70 x 70 的矩阵相乘&#xff0c;还发现一种方法&#xff0c;可以用155 424次乘法操作完成 72 x 72 的矩阵相乘。当…

【Python爬虫项目实战二】Chatgpt还原验证算法-解密某宝伪知网数据接口

目录 🐱背景🐱工具🐱分析流程🐔登陆分析🐔检索分析🐔模拟HTML代码请求🐔 解析HTML🐔 再次分析🐟分析js算法🐟 拿下furl🐟拿下sfname🐟拿下sfname🐔 构造请求🐔再次瓶颈🐔分析cookie🐟 成功演示🐱总结

[云炬python3玩转机器学习]6-2模拟梯度下降法

模拟梯度下降法 In [1]: import numpy as np import matplotlib.pyplot as plt import datetime;print (Run by CYJ,,datetime.datetime.now()) In [2]: plot_x np.linspace(-1., 6., 141) plot_xOut[2]: array([-1. , -0.95, -0.9 , -0.85, -0.8 , -0.75, -0.7 , -0.65…

OneFlow源码解析:静态图与运行时

作者&#xff5c;郑建华 更新&#xff5c;许啸宇、张文骁、成诚 OneFlow静态图的训练效率远高于动态图&#xff08;eager模式&#xff09;。本文试图通过一个简单例子&#xff0c;结合v0.8.0版本的代码&#xff0c;解读一下静态图和运行时的实现机制。 在开始之前&#xff0c;建…

infer源码阅读之yolo.cu

目录 yolo.cu注意事项一、2023/3/30更新前言1.宏定义2.Norm3.后处理3.1 affine_project3.2 decode3.2.1 decode_common3.2.2 decode_v8 3.3 nms3.4 invoker 4.预处理5.decode_mask6.AffineMatrix7.InferImpl7.1 adjust_memory7.2 preprocess7.3 load7.4 forwards 8.其它9.拓展之…

【爬虫实例】从B站和某论文网站分析python爬虫的一般编写思路———To someone

问题背景 好久没写爬虫了&#xff0c;前两天友人来问我python能不能爬论文&#xff0c;能不能告诉她爬虫的基本运行原理是什么&#xff0c;跑起来是什么样子。 我一看&#xff0c;论文爬取——爬虫最实用的场景之一&#xff0c;这不拿捏&#xff1f; 于是便尝试现场演示一番。…

【Metaverse系列一】元宇宙的奥秘

你有没有想过逃离闷热的会议室&#xff0c;瞬间移动到马尔代夫的沙滩上开会&#xff1f;开完会&#xff0c;纵身跳入大海和美人鱼捉迷藏。然后一个鲤鱼打挺直冲云霄&#xff0c;进入天宫一号开展科学研究&#xff0c;发现微重力环境下韭菜的长势喜人&#xff0c;而且在特定光照…

科大讯飞版ChatGPT测评:很好很强大

大家好&#xff0c;我是黄海广。 今天我体验到了科大讯飞版本的ChatGPT&#xff0c;这个产品凭借其强大的功能和出色的性能&#xff0c;超出了我对国产大模型的预期。 一、产品简介 这个模型全名叫讯飞星火认知大模型&#xff0c;官方是这么解释这个产品的&#xff1a; “科大讯…

七大语言模型PK,ChatGPT内容基线测评稳居第一

随着ChatGPT的爆火与流行&#xff0c;大型语言模型&#xff08;LLM&#xff09;与生成式人工智能&#xff08;AIGC&#xff09;不断跃入大众视野&#xff0c;随之也带来了许多内容风险隐患。 近日&#xff0c;知道创宇内容安全专家对互联网上流行的7款大型语言模型进行了全面和…

ChatGPT风靡全球,我们应该为未来感到担心吗?

近期&#xff0c;关于ChatGPT的话题再次引爆全网&#xff0c;不少用户加入到“玩疯了”的阵营中……有赞叹不已的、有表示惊奇的、有展示BUG的&#xff0c;但总体来说&#xff0c;ChatGPT的整体社交评价还是非常向好的。 微软CEO纳德拉就坦言&#xff0c;ChatGPT服务的风靡&…

库克考虑卸任苹果CEO,谁会是下一任接班人?

作者 | Carol 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 十年前&#xff0c;8 月 24 日那天&#xff0c;史蒂夫乔布斯宣布辞去苹果 CEO 一职&#xff0c;正式任命蒂姆库克成为苹果的新掌门人。如今&#xff0c;恰逢库克上任苹果 CEO 十周年。在今年4月份&…

历史上的今天:乔布斯辞去苹果CEO一职;Windows 95 发布

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 8 月 24 日&#xff0c;14 年前的今天&#xff0c;北京奥运会闭幕式举办&#xff0c;宣告圆满结束&#xff0c;为所有国人打上了一针强心剂。而在科技历史上&am…

最全盘点苹果高管团队 谁有可能成为下一代继任者?

编译&#xff5c;辰辰 出品&#xff5c;网易智能 随着苹果首席执行官蒂姆库克(Tim Cook)已经掌舵10年&#xff0c;他和高级副手们正将更多注意力放在培养公司新一代领导者上。 目前库克管理团队的成员都是在苹果工作20多年&#xff0c;已经赚到数千万美元、年龄在55岁至60岁左右…

行业报告 | AI+制造业赋能,机器视觉开启掘金新大陆(上)

原创 | 文 BFT机器人 01 核心要点 Al制造业赋能&#xff0c;META 发布 SAM 助力机器视觉迎来 GPT 时刻。 机器视觉技术使得工业设备能够“看到”它正在进行的操作并进行快速决策&#xff0c;完整机器视觉系统由硬件软件组成,分别进行成像和图像处理工作。 目前&#xff0c;以“…

2024奇点将至:人类尚未准备好迎接S2F大于100的巨硬资产

奇点将至&#xff01; “奇点”这个词儿本来是搞人工智能的那帮人从物理学里借用过来唬人的。大意是指所谓AGI通用人工智能降临的那一刻。计算机将在智能上全方位碾压人类。 最近ChatGPT的爆红让无数人产生了错觉&#xff0c;真的彷佛看到AGI近在咫尺。 但是&#xff0c;穿越过…

chatGPT人工智能对话系统H5写作论文毕业论文付费问答写代码分销

ChatGPT对话问答系统是一款功能神奇的人工智能应用&#xff0c;具有广泛的用途和应用领域。以下是一些主要功能&#xff1a; 编写代码&#xff1a;ChatGPT可以帮助用户编写和理解各种编程语言的代码。撰写文案、论文、小说&#xff1a;ChatGPT能够根据用户的需求&#xff0c;协…