产品描述
西门子低压电器总代理商-授权代理
为了允许PC机和工作站上的应用程序与西门子S7系列产品进行S7通讯西门子公司提供了一个SAPI-S7应用程序接口通过它可以灵活而方便地跟西门子S7系列产品进行通信。安装SIMATIC Ner软件后会在系统system32目录下生成一个s732.dll文件该动态链接库提供了大量基于WindowsNT、Window95/98、Windows3.11和MS-DOS的函数这样就使得用户解决PLC和PC机的数据交换和数据处理问题变为可能。通信编程包括两个部分:(1)CP连接组态(2)PLC与上位机通信编程。 4.1 CP连接组态 可采用step7软件或step7软件中用于工业以太网的NCMS7软件对CP进行网络组态。通讯处理器CP可连接PCPC/PG上一般装网卡CP1613。在Windows控制面板下的“set PC/PG”下安装所用网卡驱动程序并设协议、站号、波特率、是否为主站完成对VFDs(Virtual Field Device)和S7 connections的配置[4]。 4.2 PLC和上位机的通讯编程 S7-300/400PLC有以下各类资源:①输入点I:接收外部开关量信号 ②输出点Q:输出给外部的开关量信号 ③内部辅助点M:存放所需中间结果 ④时间继电器T ⑤计数器 ⑥数据块DB:存放程序数据的存储区域 ⑦外设输入PI:主要接收模拟量输入信号经A/D转换⑧外设输出PQ:给出模拟两输出值[5]。要读/写这些资源首先要建立PLC和PC机的连接。 4.2.1 初始化与PLC的连接 SAPI-S7应用程序接口提供的管理服务模块(Administrative Services)提供了一些可供读出配置信息和登录/退出通讯系统的函数下面作一些简要介绍[6]: Ø s7_get_device() :通过此函数用户程序可以查询所有已安装的CP的CP名。 Ø s7_get_vfd() :通过此函数用户程序可以查询任一CP的所有已配置的VFD。 Ø s7_init():通过此函数用户程序可登录通讯系统。 Ø s7_get_cref() :此函数提供了一个指向所选S7 connection名的指针。 Ø s7_get_conn():此函数返回已登录VFD的所有S7 connection名和指向他们的指针。 Ø s7_shut():通过此函数用户程序可退出通讯系统。 一个应用程序可以登录一个或多个CP的若干个VFD只有当应用程序登录CP及其所选的VFD在配置期间给该VFD的所有连接才是有效的。 4.2.2读/写PLC内部资源 初始化与PLC的连接成功后就可以对PLC进行读写操作。对PLC存储区即数据块DB的读写是实现监控的zui基本操作。SAPI-S7应用程序接口提供的变量服务模块(Variable Services)提供了一些读写函数由于篇幅有限现选一些经常用到的函数作一些简单介绍。 Ø s7_cycl_read():此函数通知服务方准备对单存储单元循环读一个变量。 Ø s7_get_cycl_read_ind():此函数接收来自服务方发送的数据。 Ø s7_multiple_read_req():此函数通知服务方准备对多存储单元读一个或多个变量。 Ø s7_get_multiple_read_cnf():此函数接收来自服务方的一个或多个变量的值。 Ø s7_multiple_write_req():此函数通知服务方准备对多存储单元写一个或多个变量。 Ø s7_get_multiple_write_cnf():此函数接收来来自服务方的执行上述写请求的结果。 需要特别注意的是:S7 300/400PLC遵循“高地址、低字节”的规律这与某些习惯用法不同。例如在C++Builder6中变量类型为word的变量它的数据存放顺序是“低地址低字节”的规律。因此在对所读取的数据进行操作或给PLC数据块中写数据字时要进行相应的处理。 为解决上位机不能因前台的信息处理而中断后台的等问题可采用多线程编程技术将对PLC内部资源的读/写功能模块交给一个后台线程来完成。多线程编程技术能提高CPU利用率加快信息处理提高系统的实时性在由多台计算机组成的分布式实时控制系统中应用多线程技术是*必要的。 4.2.3 后台读/写线程模块部分代码 ····· do { ret = s7_receive(cp_descr&cref&orderid); switch(ret) { case S7_NO_MSG: break; case S7_INITIATE_CNF: Synchronize(my_get_initiate_cnf); Synchronize(my_multiple_read_req); break; case S7_MULTIPLE_READ_CNF: Synchronize(my_get_multiple_read_cnf); Synchronize(my_multiple_read_req); break; · · case S7_ABORT_IND: Synchronize(my_get_abort_ind); break; case S7_VFD_STATE_CNF: Synchronize(my_get_vfd_state_cnf); Synchronize(my_abort); break; case S7_VFD_USTATE_IND: Synchronize(my_get_vfd_ustate_ind); break; default : ····· } }while(ret != last_event_expected) 5 总结 运用C++Builder6.0编写的PLC控制调试程序具有用户界面友好人机交互方便数据库功能强大灵活的特点具有较强的通用性和实用性。通过调用S7通讯提供的SAPI-S7应用程序接口实现PC机与S7300/400PLC基于工业以太网的数据通讯不仅率快而且正确率高。在对PLC控制系统的调试过程中大大缩短了调试周期提高了工作效率。此通讯技术的实现对西门子工控产品的应用以及工业以太网的推广应用有着广泛普遍的重要意义。
――――――――――――――――――――
再来个强人写的帖子,在亿万论坛里面的,没全部贴下来,有兴趣的自己去看:
――――――――――――――――――――
我们知道要访问西门子的300/400 系列PLC中的I/O点,M和DB区内的数据有若干种方法可供选择。zui常用的是使用组态软件Wincc来读取。另外,西门子还提供了SAPI-S7接口和Send/Receive接口。SAPI-S7位于网络七层协议的5-7层,是专门为S7连接优化的,可以方便访问PLC内任意存储区。就我使用过的其他组态软件如intouch(I/O server )和iFix的连接驱动,都是在SAPI-S7接口上开发的(从组态驱动时的配置过程可以看出)。Send/Receive属于较低的层次,一方面可以使用西门子的接口函数编写,另一方面还可以直接用Socket接口编程。这时,在PLC方面要用的功能块编写发送接收程序来配合。常适用于报文的传送(报文结构通常存储于DB块)。关于Socket编程我曾专门发帖讨论过其中若干细节。
还有一种就是新兴的OPC接口,但个人认为这种接口不适于较快数据的传输,即采样时间间隔不能太短。
所以综合考虑还是觉得SAPI-S7zui有研究的价值。这方面的学习有些前辈可能已经讨论过了,在下不揣冒昧,把自己的一些体会写下来供大家参考。
SAPI-S7和Send/Receive接口都是随Simatic Net一起安装到系统上的。就现在我手上有的两个版本的Net说明一下。其一,是2000/05版,对应于5.0,其中含有COML S7等工具;其二,是2005版,对应6.3,在6.0以后就废弃了COML S7,而采用统一的PC Station 了。这两个版本在建立连接组态方面有很大的差异,后面我尽可能的说明之。
相应的参考手册有以下几本;
Volume 1_Introducing SOFTNET for Industrial Ethernet.pdf
Volume 2_Send-Receive Programming Interface.pdf
Volume 3_S7 Programming Interface.pdf
Volume 4_Configuring the S7 Mode with COML S7.pdf
6.0以后还要参考:
Commissioning PC Stations.pdf
这些资料都可以下载到,或从Net的另一张文档光盘上找到。
说一下两个版本的光盘。2000/05的光盘安装后会提供一些C语言编写的SAPi-S7的例子,而且光盘上还有关于用VB编程的资料和例子。2005的就没有了。我学习的起点就是2000/5的C和VB的例子。先建立应用环境,再对程序功能一边测试,一边观摩源程序。
由于编程是半路出家,VC++就放弃了,熟悉Delphi编程(网上能找到Software option 公司的The SIMATIC NET SAPI-S7 Interface for Borland Delphi,但我只有试用版),所以选择C++ Builder做为编程工具
了解LOGO!
1999年我在电子与自动化杂志上见到LOGO!产品的宣传图片,这也是我使用西门子自动化的第一个产品,当时西门子产品在国内小型机电产品的应用还不是很广泛,了解到某工厂生产容器罐的设备--2台高频电阻缝焊机多次程序错乱故障,在维修发现是设备产生的高频谐波干扰引起的电路故障,都是专用的程序板卡,如果更换备件采购周期很长,2000年我使用LOGO!改进设备。
后来喜欢上了西门子的产品逐渐接触到S7-200、300、400、到现在的新产品S7-1200。我成为西门子自动化产品的粉丝,关注每一款新产品的发布都,并积极大胆的参加新产品推荐和应用。
选择LOGO!
10年前,在包装行业中生产使用的国产自动/半自动多采用TTL/COMS数字集成电路板控制。它的功能可以区分为程序板,驱动板,触发板及保护板和电源板组成。各模板之间使用专用插座相连接,电路连线较多,通用性和灵活性比较差,同时也给维修带来了一定的困难,当采用SIEMENS LOGO!模块后,电路连接简单,抗干扰能力强,对设备的后续改造和维修非常容易。
应用LOGO!
(1)应用简述
LOGO!模块是西门子公司的入门级产品,它的可靠性高,能适应强电磁干扰的场合,具有通讯功能可以在现场编程。通过航空工业总公司安中机械厂的FN10型半自动电阻缝焊机为例加以介绍,由于电阻缝焊机的工作电流较大(脉冲电流在6300A左右)并采用了功率晶体管和大电流可控硅器件。所以它工作时设备内会产生较强的电磁干扰。改进方法是:程序控制部分用西门子公司的LOGO!24RCLB11总线型模块替代原有控制部件。
上述方案已在某包装产品制造公司的技术革新中使用,并且实际运行了一年,从未出现过问题,完全可以改造现有的各种电阻缝焊机,实现的设备升级,取得了明显的经济效益。
(2)工艺流程介绍
它的工作流如图书1所示。当电阻缝焊机开机进入准备工作状态时,上电极抬起,传动系处于制动状戊,夹紧机构松开,当被圈圆的罐体送到位或者踩下脚踏开关时,夹具夹紧罐体,并驱动换向阀使上电极压下,进入焊接程序--离合传动--前段小电流--中段大电流--后段小电流焊接—完成后复位为下个工件准备。五个过程。
(3)系统硬件配置
该部分主要对整个应用中围绕LOGO! 的产品硬件设计作详细的说明。
(4)软件开发
对应用中的数字量模拟量I/O分配以表格的形式进行说明,具体符号表见表格1。
表格1
符号 | 地址 | 符号 | 地址 |
左进料传感器 | I1 | 夹具 | Q1 |
右进料传感器 | I2 | 走丝电机 | Q2 |
左夹具到位开关 | I3 | 焊轮压下 | Q3 |
右夹具到位开关 | I4 | 焊轮抬起 | Q4 |
脚踏开关 | I5 | 前段电流 | Q5 |
冷却水压力 | I6 | 中段电流 | Q6 |
气压表 | I7 | 后段电流 | Q7 |
焊轮压到位 | I8 | 报警 | Q8 |
焊接行程到位 | I9 | ||
复位 | I10 | ||
温度 | I11 | ||
备用 | I12 |
(5)使用LOGO! 的体会
LOGO!模块采用简单的逻辑图编程,所谓“编程”就是输入线路。实际上程序只是由不同方式表达的方框图组成,对于一般技术人员无须学习就能应用自如。对刚接触自动化的人员是一种良好的设计工具。
产品推荐