热门搜索:
6ES7222-1HF22-0XA8
概述
由于本系统的通讯需跨Internet的,与Internet连接正常与否及移动网络供应商的信号质量的好坏都会影响此系统的正常运行;这些情况的方式是在所难免的,但当这种情况方式时我们由如何知道在网络瘫痪的期间现场运行情况,所以提出了对发生此类事件的解决办法,而对于我们的这套系统充分的考虑到了这一点,它能够实现网络中断时的数据的存储功能,当网络恢复后再把中断的数据发回到中心站中,如何实现网络中断后的数据存储及恢复后的续发的功能,也就是本文所讨论的内容。
目前,我们提供两种解决方案:
一种方案是在S7-200的程序里作一个周期性的数据存储到配方纪录里,在配方中开辟一个循环存储空间。如每隔半小时写一条纪录,纪录两天的数据需要96条纪录。那么在配方中就可存放较近两的纪录,当用户需查询的时候,可以直接从配方中读取相应的纪录到中心站中。这种方法的优点是实现简单。
另一种方案是通过在S7-200的程序里来判断连接正常与否,当连接正常就不写数据纪录到配方中,当连接不正常就写数据纪录到配方中,在发送功能块的任务管理里也分配给发送缓冲中的数据一个任务,先判断在配方中是否有纪录,若有,那么在发送缓冲数据的周期内把数据发送出去。
下面我们就这两种解决方案作具体的介绍:
一、 方案中先定义一个配方如下图所示:
在配方中定义了日期和时间变量及四个过程变量,分别为:year、month、day、hour、minute、second、var1、var2、var3、var4。变量定义后,在配方中添加纪录如下图:
上面的步骤作了对配方做了定义,它相当于一个数据的数据,接下编写程序来实现数据的存储功能,主程序调用如下图:
在“数据存储”的子程序的程序结构图如下:
为了程序的可读性,在整个程序的编写上用结构化编程的方法,在主程序里每个功能的实现都是调用一个子程序块来完成,具体到每个功能是如何实现的可阅读相应的子程序即可。所以在主程序里的网络12里调用了数据存储的子程序。
网络2里实现的是循环纪录的功能,即当数据的纪录达到96后把指针在修改到指向**条纪录。
网络3实现的是通过调用RCP0_WRITE功能块每隔半小时往配方中写一条纪录。
网络4实现的是通过中心站给定的一个纪录号来读取相应的纪录出来的功能。
网络5中实现的时对纪录指针等移动和当到纪录时刻使能写纪录到配方的位。
网络6实现的是当需写纪录到配方时提取当前的实时变量值出来并赋值给配方中的地址区里。
方案二的实现方法,在此方案里需要给发送缓冲数据一个发送任务,循环发送的图如下,在下面的一个周期里必须*一个发送时刻给缓冲数据的发送。这个周期的发送控制的程序可由用户根据实际情况来编写。
上图给了一个周期内有四个任务需要发送,在发送触发D里是作发送缓冲中的数据的发送任务。在此时刻前根据配方中的纪录情况,来修改发送功能块WDC_SEND的参数,致使其把配方中的数据发送出去。具体实现的程序如下
先定义数据纪录区,在这里需要定义两个配方,一个配方用来纪录过程变量;另一个配方纪录**个配方中有多少数据纪录待发送出去。如下图配方中的定义:
在主程序里调用发送功能块的参数
程序通过判断“Abort”参数位的状态来判断连接状态的好坏,若连接中断则调用写配方功能块来往配方中写纪录
在Buffer2的子程序如下:
上面的程序实现的是当通讯中断后就会调用写配方的功能把当前的值写到配方0的纪录里,同时把在存放在配方1中的配方0的当前纪录条数的值修改并写会到配方1中。
问: MM4 变频器的USS 通讯方案有哪些?
答: MM4 变频器的USS 通讯要求在PLC 或PC 上依USS 协议编程,同时在变频器上设置相关的参数才能实现.现给出常规的几种方案:
一. S7-200 PLC 与MM4 的USS 通讯:
a. S7-200 PLC 根据USS 协议编程如用 XMT 指令;
二. S7-1200 PLC 与MM4 的USS 通讯,S7-1200 PLC要求加CM1241 RS485通信模块,通过USS协议库指令编程。
三. S7-300 PLC 与MM4 的USS 通讯:
a. S7-300 PLC 要求加CP340 RS485通讯模块,依USS 协议编程或通过DriveES SIMATIC软件提供的功能块编程;
四. PC 与MM4 的USS 通讯,PC 要求运行软件如::VB、VC、DELPHI 等,依USS 协议编程。
五. 注意事项: 如用MM4 的USS 广播码方式通讯时, MM4 只支持2个PZD, 而且MM4 的广播码 通讯格式与MM3 不一样 ( 见MM4 广播码通讯的FAQ)。
1.串口通讯介绍
2.1参数化CP341模板:
点击属性窗口上的Parameters按钮:
选择ASCII协议,双击信封图标:
弹出ASCII协议通讯参数设置窗口,保持默认值:9600 bit/s, 8 data bits, 1 stop bit, even parity。对硬件组态存盘编译,下载硬件组态。
2.2 编写通讯程序:
在OB1调用FB7实现字符收发功能:
EN_R为TRUE时始能接收
其中REQ需要正跳沿来触发通讯。
3.1 硬件组态
然后对CP341进行参数化,过程和PLC中完全相同。
3.2 软件编程
3.2.1程序块介绍
_CP341_send用于数据的发送。
表1 _CP341_send功能块参数含义
_CP341_receive用于数据的接收,其参数含义表2所示
表2 _CP341_received功能块参数含义
_CP341_send和_CP341_receive必须在BackgroundTask或TimerInterruptTask中循环调用,如果不循环调用发送请求或接收请求无法执行。不能在SystemInterruptTask中调用,也不推荐在IPOSynchronousTask等同步任务中调用。_CP341_send和_CP341_receive必须在CP卡初始化完成以后进行。
SINAUT MD720-3构成的GPRS通讯系统见下图:
在数据存储的子程序的实现如下
网络1里初始化一个纪录当前纪录的指针VW100;
配方0中的变量定义
6ES7222-1HF22-0XA8
配方0的纪录定义
配方1的变量定义
配方1的纪录定义
b. S7-200 PLC 使用Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library软件包提供的USS协议库指令编程。
b. S7-300 PLC 要求加CP341 RS485通讯模块,依USS 协议编程或通过DriveES SIMATIC软件提供的功能块编程;
c. S7-300 PLC 使用CPU31X-2PtP带串行通讯接口的CPU,依USS 协议编程或通过DriveES SIMATIC软件提供的功能块编程。
CP340/CP34模块是西门子S7-300系列PLC中的串行通讯模块,这些模块具有1个串行通讯口(RS232C或TTY或RS485/422)。可以使用这种通讯模块实现S7-300与其他串行通讯设备的数据交换。同样,将PLC功能和运动控制器结合起来的SIMOTION也可以支持CP340和CP341
对于SIMTOIN C,CP340/341可以直接通过背板总线相连。对于SIMOTION P和SIMOTION D,可以带ET200M作为其远程IO,而ET200M上可以带CP340和CP341,因而也可以通过CP340和CP341进行串行通讯。
与s7-300相比较,SIMOTION目前还不支持“MODBUS”和“DATA HIGHWAY”通讯,其它功能和PLC类似。
软件版本要求:
SIMOTION SCOUT V4.0或更高
SIMOTION Kernel V4.0或更高
SIMOTION technology packages V4.0 或更高
本文将以SIMOTION和S7-300之间利用CP341进行通讯为例,介绍SIMOTION中如何实现Point-to-Point通讯。
2.PLC侧组态和设置
新建STEP 7项目,在硬件组态窗口中插入CPU和CP341模块,双击CP341模板,打开CP341模板的属性窗口:
图1 CP341模块属性窗口
图2 协议选择
图3 协议参数设置
在安装完串口通讯的驱动程序后,可在PLC程序库中找到用于串口通讯的程序:
图4 串口通讯程序块
在OB35中调用FB8实现字符发送功能
3.SIMOTION侧组态与编程
在SIMOTION打开所建立的STEP 7项目,插入D435,建立一个DP网络,并在网络中添加一个ET200M站,并在ET200M站中插入CP341
图5 SIMOTION侧硬件组态
SIMOTION中的串行通讯程序是集成在标准库里的,*安装相应的驱动,如下:
图6 SIMOTION串口通讯程序块
_CP341_send的参数含义如表1所示。
参数名
输入
数据类型
含义
输出
execute
IN
BOOL
触发发送,上升沿有效
reset
IN
BOOL
为True时表示取消当前发送
moduleAddress
IN
DINT
模块地址
dataOffset
IN
UDINT
**字节的位置偏差
dataLength
IN
UDINT
发送的数据长度
periIn
IN
ARRAY [0..15]
用于CP卡IO输入的背景数据块
of BYTE
periOut
IN/OUT
ARRAY [0..15]
of BYTE
用于CP卡IO输出的背景数据块
data
IN/OUT
ARRAY [0.0.1023]
发送的数据区
of BYTE
done
OUT
BOOL
完成标志位
error
OUT
BOOL
错误标志位
errorID
OUT
WORD
故障详细信息,如果error=TRUE,
那么errorID 中将显示事件等级和故障号
errorIdTransfer
OUT
DINT
数据传送给CP卡时产生故障(如果errorID中显示16#1E0F时,那么errorIdTransfer中会有更详细的诊断信息
startup
OUT
BOOL
CP启动完成标志位,为False标志启动完成
参数名
输入
数据类型
含义
输出
enable
IN
BOOL
接收使能
reset
IN
BOOL
取消接收
moduleAddress
IN
DINT
模块地址
dataOffset
IN
UDINT
**字节的位置偏差
periIn
IN
ARRAY[0..15]
用于CP卡IO输入的背景数据块
of BYTE
periOut
IN/OUT
ARRAY[0..15]
of BYTE
用于CP卡IO输出的背景数据块
dataCl3964
IN/OUT
ARRAY[0.0.1023]
接收数据区
of BYTE
dataCl512
IN/OUT
ARRAY[0..6] of
RK 512 的数据区
Struct_CP341
_Cl512Data
comFlags
IN/OUT
ARRAY [0 to 31]
RK 512通讯标志
of BYTE
newDataReceived
OUT
BOOL
新数据接收标志位
error
OUT
BOOL
错误标志位
dataLength
OUT
UDINT
接收长度
errorID
OUT
WORD
故障详情,如果error=TRUE,
那么errorID 中将显示 事件等级和故障
errorIdTransfer
OUT
DINT
数据传送给CP卡时产生故障(如果errorID中
显示16#1E0F时,那么时会有更详细的诊断信息
startup
OUT
BOOL
CP启动状态标志位
6ES7222-1HF22-0XA8