西门子PLC通讯是基于S7Comm通讯协议的PLC制作方法

西门子PLC是工业控制中常用的控制器,最新的控制器有Smart、1200、1500系列。

这些新

控制器都有以太网接口。我们都知道西门子PLC通讯是基于S7Comm通讯协议的。S7Comm 封装在基于 TCP/IP 的 TPKT 和 ISO-COTP 协议中。引用网上的图片。

因为 TPKT 和 ISO-COTP 格式都是固定的。所以重点关注S7Comm在生产过程中的实现。

CSDN上有很多关于S7Comm解释的相关资料。您可以从这些博客的信息中学习。

Easy Language是入门级的中文编程语言,对我们理解通信原理和计算机原理很有帮助。所以我用easy语言制作了PLC通讯的驱动文件(动态链接库dll文件)。通过这个过程易语言打开文件参数,您还可以深入了解Easy Language这个非常受业余爱好者欢迎的软件。事不宜迟,让我们开始吧。

第一步:总体规划。

因为涉及到TCP通信,所以选择了“网络通信客户端”这个组件。程序内容分为:“连接”、“断开”、“读I区”、“读Q区”、“读M区”、“读V区”、“写Q区”、“写M区” 》、《写V区》这些功能基本满足一般需求。

第 2 步:注意事项

需要注意Dll文件中指定的几类参数的数据类型。虽然简易语言帮助中提到的数组和字节集对于VB和C语言都是可以接受的,但在实际操作中编译会出错。所以在制作子程序时,参数中应避免数组和字节集。

第三步:关键参数的识别

了解PLC的人一定知道,PLC的每个变量都有一个寄存器。西门子智能PLC寄存器分为四种IQMV。寄存器的最小单位是bit(01010101为8bit),8bit组成一个byte,byte结合了整数(8-bit、16-bit、32-bit常称为bit)和字符(4byte英文和8byte中文人物) 。这里不要过度解释。所以我们的关键参数是这些寄存器地址,以及寄存器的数据。

图片[1]-西门子PLC通讯是基于S7Comm通讯协议的PLC制作方法-老王博客

此外,为了优化通信速度,S7Comm 还可以一次对多个寄存器进行分组读取。因此,一次分组和读取次数可以用作次要参数。

第 4 步:全局变量选择

根据 S7Comm 的通信结构。并且为了防止程序出现问题,我选择了这三个数据作为全局变量。可以根据个人喜好易语言打开文件参数,也可以在汇编变量中定义。毕竟我们的程序比较简单。

第 5 步:常量定义

任何上下文类型的通信协议都会有很多常量,以提高通信的质量和效率。S7Comm 也有很多。通常,这些常数以具有一定含义的十六进制文本表示。

因为这次写了基础函数,所以定义了这些常量。有些有用,有些没用。这些开放的内容可以从互联网上接收相关信息。例如:

以上就是准备的基本工作,后面会深入讲解。另外,需要搭建一个测试平台

准备工具:

1. 一个智能PLC,我用的是最便宜的SR20

2. Wireshark抓包软件(这个软件很强大,可以自动识别S7Comm协议)

3. 插头 + 螺丝刀 + 一些松散的电线

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论