上位机如何和PLC通讯(西门子举例)
B站 :道传科技上位机 观看教程
一、一些基础概念
一、S7协议
S7协议是西门子公司为其S7系列可编程逻辑控制器(PLC)开发的一种通信协议。S7协议主要用于西门子S7系列PLC之间的通信,也可用于PLC与其他设备(如人机界面HMI、变频器、传感器等)之间的通信。通过S7协议,可以实现数据的读取、写入、传输和处理等功能,从而实现设备之间的互联互通。
二、为什么和PLC之间的交互是int\byte\float\double\bool\string
和PLC之间的交互使用int、byte、float、double、bool、string等数据类型的原因主要包括以下几点:
1、数据类型兼容性:PLC通常需要处理各种类型的数据,包括整数、浮点数、布尔值等。这些数据类型能够满足大多数工业控制的需求,确保数据的准确性和可靠性。
2、通信效率:使用标准的数据类型可以简化通信协议的设计和实现,减少通信过程中的错误和延迟。标准数据类型在数据编码和解码过程中更加高效,能够快速传输和处理。
3、易于理解和维护:使用标准数据类型使得编程和调试更加简单,因为这些数据类型在工业控制领域有广泛的应用和成熟的支持。工程师可以更容易地理解和维护代码,减少因数据类型不兼容导致的问题。
4、通用性:不同的PLC品牌和型号之间需要保持一定的兼容性,使用标准数据类型可以确保不同设备之间的互操作性,减少因数据类型不匹配而导致的通信故障。
5、历史原因:在工业自动化领域,这些数据类型已经经过长时间的验证和使用,形成了行业标准。改变这些数据类型可能会带来不必要的麻烦和成本,因此沿用这些标准数据类型更为合理。
三、int\byte\float\double\bool\string等是什么
1.布尔类型 BOOL
也就是我们常说的0和1,也可以理解为 True和False,对于PLC来说就是DI(Digital Input)或者DO(Digital Output)点的输入或输出状态,我们一般用Bool类型表示。对于西门子PLC的DI点,可以使用 I0.0表示,DO点用 Q0.0,还有M0.0,V0.0等表示。所以会经常看到 I0.0~I0.7,布尔类型只占用1位;
2. 字节类型 Byte
一个字节有8位,在PLC的存储器里,比如 IB1,MB1,就代表字节,那么将字节分解后 是8位,在第一项里布尔类型中提到 I0.0~I0.7就可以组成一个字节IB0,M0.0~M0.7组成MB0,所以我们想要提高读取速度,可以直接使用字节读取,然后再进行分解。数据范围0~255;
3. 字类型 WORD
一个字包含16位,比如MW0,他就是由MB0和MB1组成,在使用字类型数据时,会出现组态软件读取的值不对,那么就有可能是字节的排列顺序不一样,可以对高低字节进行交换,很多软件都有这个功能。数据范围0~65535;
4. 双字类型 Double Word
双字包含32位,由2个字组成,比如DW0,它包含2个字MW0和MW2,包含 4个字节MB0,MB1,MB2,MB3,所以很多人在使用寄存器时会碰到各种问题,那么就有可能使用的寄存器存在交叉的问题。比如DW0,DW2这两个双字就存在地址交叉的问题。数据范围 0~4294967295;
5. 整数类型 INT,
一般又可以分为有符号,无符号,数据范围 -32768~32767;
6. 双整形 DINT
同上也可以分为有符号,无符号类型,数据范围 -2147483648~2147483647;
7.实数类型 real
显示十进制的数据,可以包括小数点,一般都是32位,当然也有64位的实数类型。
四、上位机和PLC之间的程序怎么写
基本上所有的PLC和上位机的通讯都可以按照以下的方式去写
1、在NuGet包管理器下载对应的库:比如说西门子 在NuGet包管理器窗口中,点击“浏览”选项卡,然后在搜索框中输入“Sharp7”。
2、编写连接和断开的代码:
3、编写读取数据部分的代码:
4、编写写入数据部分的代码: