找回密码
 注册

QQ登录

只需一步,快速开始

搜索

[工业通信] 西门子s7-200自由口通讯程序 适合初学者参考

[复制链接]
问题多多 发表于 2018-10-30 23:13:16 | 显示全部楼层 |阅读模式
厂商
厂商: 西门子
西门子自由口通讯程序(有兴趣的可以参考一下)
S7-200可编程控制器与微机通信之设计和实现
介绍了S7-222 通信方式,着重阐述了自由口通信 参数设定、协议规划和通信程序设计。
  可编程控制器(PLC)作为一种高性能 工业现场控制装置,已广泛地用于工业控制 各个领域。目前,工业自动控制对PLC 网络通信能力要求越来越高, PLC与上位机之间、PLC与PLC之间都要能够进行数据共享和控制。
  飞剪控制系统要求 远离PLC 控制室里,实时监控电机、供纸、刀辊等设备。上位机为普通PC机,下位机为 SIEMENS S7-222 PLC。 实际开发中,采用自由口通信模式,自定义 PC与 PLC 通信协议,用Step7编写PLC端 通信程序,而  PC端用VC6.0实现串行通信的控制和监控界面的显示。
2.通信方式及原理
  S7-200系列PLC通信方式有三种:一种是点对点(PPI)方式,用于与西门子公司 PLC编程器或其它产品通信,其通信协议是不公开 。另一种为DP方式,这种方式使 PLC可通过Profibus DP通信接口接入现场总线网络, 扩大PLC 使用范围。最后一种方式是自由口(FreePort)通信方式,由用户定义通信协议,实现PLC与外设 通信。本系统中采用自由口通信方式。它是S7-200系列PLC一个很有特色 功能。这种方式不需要增加投资,具有较好 灵活性,适合小规模控制系统。自由口通信 物理接口上要求双方都使用RS485接口,波特率最高为38400bps。虽然PC机 标准串口为RS232,但西门子公司提供 PC/PPI电缆带有RS232 /RS485电平转换器,因此在不增加任何硬件 情况下,可以很方便地将PLC和PC机互联。
  2.1自由口模式的初始化
  PLC 自由口模式通信编程首先是对串口初始化。对S7-200PLC 初始化是通过对特殊存储字节SMB30(端口0)写入通信控制字,来设置通信的波特率、奇偶校验、停止位和数据位数。显然,这些设定必须与上位机设定值相一致。另外还可选择通信模式和主从站模式,各具体存储位内容可参考SIMATIC S7-200系统手册。
  2.2自由口模式下收发数据
  初始化自由端口通信模式后,就可以进行数据的收发。
  (1) 发送数据指令 XMT
  格式:XMT Table,Port。可以用 XMT指令发送数据,XMT指令激活发送缓冲区(从Table开始 变量存储区)中的数据。数据缓冲区 第一个数据指明了要发送 字节数,Port指明了用于发送 端口,缓冲区最多可以有255个字符。在发完缓冲区 最后一个字符时,会产生一个中断 (对端口 0为中断事件9)。本例 XMT缓冲区 格式如表1。其中,状态字节表示PLC是否正确接收了上位机所传数据;上传数据为PLC上传给PC 数据,需将9字节 16进制数编码为18字节 ASIIC码,所以字节数为18;BCC为上传数据 异或和,同样将16进制数编码为ASIIC码;结束字符的值为26。
用 RCV指令接收最多为255个字符的数据,这些字符存储 缓冲区中。在接收到结束字符时,会产生一个中断(对端口 0为中断事件23)。本例的RCV缓冲区 格式如表2。其中,命令类型表示上位机让PLC 执行什么操作,如读或写;目标站号是分配给PLC 一个代号;起始地址是PLC要进行读写的存储区的起始地址;读写字节数是PLC接到命令后,对存储区进行读写的字节数,本例中最多写入16字节、读出9字节;写入数据是上位机要写入PLC的数据, 读命令不起作用;BCC是从命令类型开始到写入数据为止的43字节数据 异或和。从目标站号到BCC这几项内容,都是把16进制数编码为ASIIC码来表示的。
3.自由口通信程序设计
  通信程序 设计需遵循一定的规则,如中断通信处理程序要短小精悍、要避免XMT与RCV指令同时在一个端口执行等。整个PLC通信程序包括主程序、通信初始化子程序、校验子程序、读写数据子程序和发送完成、接收完成中断服务程序。
  3.1主程序
  通信主程序是PLC实现接收、发送功能 主框架。其主要流程为查询接收是否完成,校验,再根据类型执行读、写等操作。它的用是控制程序的流程,校验、读写等具体工作由相应的程序完成。流程如图1。
  3.2通信初始化程序
  通信初始化子程序设置自由口通信的关参数,对接收信息控制寄存器SMB87写入控制字,定义起始字符、结束字符和接收超时。设好自由口模式的些参数后,还要连接中断事件和中断服务程序,并打开中断。最后,把接收、发送缓冲区写入初值即可。
s7-200自由口通信示例程序 自由口通讯.zip (4.99 KB, 售价: 1 E币)

tanran 发表于 2020-8-4 02:14:51 | 显示全部楼层
谢谢楼主 很不错的程序,已经下载学习
buickfc 发表于 2020-8-7 14:53:38 | 显示全部楼层
学习学习~~~~~         
凤舞九天 发表于 2021-6-19 21:09:50 | 显示全部楼层
请问主站读取从站两条数据温度和压力,从站返回两条数据如何分别存放,假如接收一条容易明白,两条向上就不知道如何接收存放了,存放地址是否能用同一个,那样会不会后面覆盖前面的,我是初学者请勿见笑,求教 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-3-28 17:12

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表