n
概述
对于远程系统来说,要发送用户需要的数据,那么就必须通过程序块来实现。sinaut md720-3 系统提供了四个基本的功能块wdc_init、wdc_send、wdc_receive和wdc_control。刚开始学习此系统的用户可能对如何使用这四个功能块、以及如何用这四个功能块来实现一个任务感觉很困难,因此我们针对这种情况,对如何编程作进一部的介绍。n
根据不同的应用情况,下面分两种情况来作程序架构的搭建步骤:n
一、远程站与中心站通讯n
二、远程站与远程站的通讯
远程站与中心站通讯
不管哪种应用情况,首先要注意的一点是,上面提及的四个功能块都必须在程序的每个扫描周期顺序调用。n
一、远程站发送数据到中心站见下图:n
第一步:s7-200 plc通过模拟量接口模块读取模拟量值12.3%到内部的数据区。n
第二步:s7-200 plc通过调用功能块wdc_send(包括有发送的站地址、和数据区的起始地址及长度;中心站的站地址为0)到modem上n
第三步:modem把接收到的数据12.3%进行处理后转化为gprs的数据包格式后,通过gprs服务转发到移动服务供应商。n
第四步:移动网络供应商进一步把数据12.3%转发到internet上,移动供应商提供了与internet的接入点。n
第五步: internet通过路由把数据12.3%转发到internet网络服务供应商的中心站上。n
第六步:internet网络服务供应商的中心站把数据12.3%继续转发到sinaut micro sc的中心服务器。n
第七步:sinaut micro sc中的opc server把接收到的数据提供给opc的客户端使用。n
第八步:当sinaut micro sc成功接收数据后,会发一个确认信息给远程站。n
第九步:modem接收到这个确认信息后,把它转发给s7-200的cpun
第十步:s7-200 cpu通过wdc_receive功能块接收此确认信息,紧接着又通过wdc_send功能发送一个发送完成的信息给用户程序。n
上面的这些步骤完成了一次发送的任务,从此不难看出即使是一个发送任务,仅调用一次wdc_send功能是不行,还必须调用wdc_receive功能块来接收确认的信息,而在调用发送与接收功能块之前必须调用wdc_init功能块来完成gprs通讯的初始化工作,经过实验我们发现wdc_control功能块也是必不可少的。n
在s7-200中的程序如下:n
vb720 中定义sinaut micro sc 服务器上用的端口号,必须与在sinaut micro sc软件所定义的端口号一致;
vb730 中定义modem的名字,必须与在sinaut micro sc软件所定义的modem名一致;
vb740 中定义modem的密码,必须与在sinaut micro sc软件所定义的modem密码一致;
vb750 中定义sim卡的pin码,必须与所使用sim卡的pin码一致;不清楚的话可以向移动公司查询;缺省值“1234”;
vb760 中定义网络供应商的internet接入点名,对于移动的接入点为“cmnet”;
vb770 中定义网登陆接入点的用户名,对于移动的接入点为空,所以定义为“”;
vb780 中定义网登陆接入点的密码,对于移动的接入点为空,所以定义为“”;
vb790 gsm 供应商的域名服务器 ip 地址。若在ip里填写的是ip地址那么这里可以为空,但若是在ip地址里填的是域名,那么这里必须指定域名服务器的ip地址;
vb809 中定义工作站上所有允许的拨叫号码列表。单个表单条目通过分号 (;) 隔开。序列已确定,为在 s7-200 (com_clip_x) 上的电话拨叫服务和在调制解调器上的拨叫服务
的运行 (service_clip_x) 各选择 3 个号码。n
网络2调用wdc_send功能块发送数据,这个功能块确实完成这两中功能,一是发送用户需要发送的数据;二是发送确认信息,所以不管程序是否发需要送用户数据,此功能块必须调用,因为它还发送这gprs通讯的确认信息。n
m10.0 上升沿触发一次发送任务,在此程序里,我们是在网络5与网络6来对触发周期来作控制的,从程序中不难看出触发任务的周期是30s。也就是每隔30s会发一组数据出去。
vw814 该地址中存放着远程工作站的逻辑地址,可以将数据发送到该地址,或从该地址读取数据,这里我们可以通过传输指令把整数“0”传输到vw814中,这样发送的目的地址就是中心站。n
vw816 该地址存放要发送数据的起始地址,如这里可以通过传输指令把“3000”传输给vw816,意味着要发送的数的起始地址是vb3000;n
vw818 该地址存放要发送数据的数据长度,如这里可以通过传输指令把“10”传输给vw818,意味着要发送的数长度为10个字节;n
vw820 控制命令 “1” 将数据发送到另一个工作站;“2” 要求得到另一个工作站的数据;
网络3调用wdc_receive功能块接收数据,这个功能块也完成两中功能,一是接收用户发送来的数据;二是接收确认信息,所以不管程序是否接收用户数据,此功能块必须调用,因为它还接收gprs通讯的确认信息。在这个程序里主要用来接收确认信息。n
vw824 该地址存放着接收缓冲区的起始地址,如这里可以通过传输指令把“2000”传输给vw824,意味着接收缓冲区的起始地址是vb2000;n
vw826 该地址存接收缓冲区的大小,如这里可以通过传输指令把“10”传输给vw818,意味着接收缓冲区长度为10个字节;n
网络4调用wdc_control功能来切换gprs modem的工作模式。这里我们不作详细的介绍。n
二、中心站发送数据到远程站见下图:n
第一步:远程站a通过模拟量接口模块读取模拟量值12.3%到内部的数据区。n
第二步:远程站a通过调用功能块wdc_send(包括有发送的站地址、和数据区的起始地址及长度;远程站b的地址)发送n
第三步:数据被转发到modem上。n
第四步:modem把接收到的数据12.3%进行处理后转化为gprs的数据包格式后,通过gprs服务转发internet上。n
第五步: internet通过路由把数据12.3%转发到internet网络服务供应商的中心站上。n
第六步:internet网络服务供应商的中心站把数据12.3%继续转发到sinaut micro sc的中心服务器。n
第七步:sinaut micro sc把发来的数据包去掉远程站的逻辑地址。n
第八步:sinaut micro sc把数据12.3%加上远程站b的ip地址发送。n
第九步:数据12.3%通过internet网络供应商上发送并在internet上路由,最后到达移动的网络供应商的gprs网络的远程站b的modem上。n
第十步: modem md720-3把数据转发到了远程站b的cpu上。n
第十一步:远程站b的cpu通过调用功能块wdc_receive把数据存储到它上的存储区内。n
第十二步:远程站b的cpu会自动调用wdc_send功能块发送一个确认信息出到远程站b的modem上。n
第十三步:modem会把这个确认的信息发到中心站的sinaut micro sc的服务器上。n
第十四步:sinaut micro sc的服务器又把这个确认信息转发到远程站a上。n
第十五步:远程站a的modem把这个确认信息继续转发到cpu上。n
第十六步:远程站a通过调用wdc_receive接收此确认信息,接收成功后再调用wdc_send功能块发送成功完成任务的信息出去。n
完成此任务时,在远程站a和远程站b中编写的程序结构与前面介绍的程序结构是一样的,只是在a站与b站中调用功能块的一些参数不一样,根据实际情况赋值参数。
发送任务的管理
前面介绍各种发送任务的实现过程,实现的程序基本就是顺序调用四个功能块。在这几个功能块来说,只有发送功能块可以控制发送的条件,而其他几个基本上赋值参数就可以,而且需在每个循环扫描周期里调用即可。
对于用户通讯功能的完成来说,有可能是上面的几个任务的组合,但对于程序来说,一时刻只能处理一个发送任务,要处理多个任务,那么就必须对任务进行规划,也就是需要用户自己编写发送的时钟周期,来在不同的周期里发送不同的任务,而且在在每个任务执行前把相应的发送和接收的功能块的参数进行修改。
关键词
sinaut gprs scada s7-200 opc program