资源描述
控制方案的设计,高级组态维护培训班,一、编程小案例,两种方法的比较:,组态中实现:精度高,程序中实现:灵活,控制站间的数据交换,控制站间的数据交换,对于一个较大的系统,往往无法做到将程序需要调用的位号集中在一个控制站中。这里,就需要进行数据的站间调用。,控制站间的数据交换,为了实现在控制站间交换数据,每个控制站开辟了一片共享数据区,用以存放共享数据。数据区内有128*4个字节描述为,LONG g_,msg,128(,在,SCControl,中数据类型为,DWORD)。,为了最灵活经济的使用这片数据区,系统定义了一系列函数处理各种数据类型从数据区的放入和取出。通过,sendmsg,和,getmsg,执行发送和接收工作。,控制站间的数据交换,假如现在系统中有4个控制站,其中2号站需要调用1号站的一些数据,那么,让我们一起来看看实现数据交换的步骤,控制站间的数据交换,首先,在1号站内编制一段程序,通过程序把需要被调用的数据存放在本站点的数据共享区中,然后把这些共享数据发送到系统的过程控制网上。,这一次的数据发送是采用广播式的发送,也就是不特别指明发送到哪一个控制站中。,以上为被调用数据的站点上进行的操作。,控制站间的数据交换,接着,在接受数据的2号控制站中我们也要编制一段程序,将指定的1号控制站发送的数据接收到本站点中。,接收过来的数据可以在本站点中任意使用。,控制站间的数据交换,例子:地址为2的控制站中有以下的一些数据需要在地址为4的控制站中使用,这些数据分别是:地址2号控制站中氧化炉温度,TI-101,,空气流量,FI-101,,反应罐液位,LI-101,,电机1状态,DI-101,,电机2状态,DI-102,,电机3状态,DI-103,,电机4状态,DI-104。,如何实现?,控制站间的数据交换,根据系统规定,模拟量位号在系统内以2字节的半浮点(,sfloat,),数据类型存放,开关量以布尔(,bool,),数据类型存放。对于,g_,msg,变量,每一个,g_,msg,分别可以利用它的高16位和低16位存放2个半浮点型或整型的2字节变量;若是布尔型的数据,,g_,msg,的每一位可以存放一个布尔量,也就是每个,g_,msg,变量可以存放32个布尔量(开关量);对于像浮点型(,float),这样的本身就占用4个字节的变量,每个,g_,msg,只能存放一个。,控制站间的数据交换,经分析,需要发送的数据有模拟量位号3个,开关量位号4个。,在这里,根据题目要求,我们使用两个,g_,msg,变量,其中的一个,g_,msg,存放题目中要求的2个模拟量位号,正好占用了4个字节,另一个,g_,msg,存放题目中的另一个模拟量位号(2个字节)和4个开关量(4位)。,控制站间的数据交换,发送:,那么,在地址为2的控制站中,编写一段程序,程序中,将个模拟量和个开关量分别存放在个,g_,msg,变量中,为了方便起见,程序中使用了,g_,msg,0,和,g_,msg,1。,然后将这两个,g_,msg,发送出去。,控制站间的数据交换,Setsfloat,函数是向长整数中放,sfloat,数据的函数。,y=,setsfloat,(,长整型数据,半浮点数据,或,);,长整型数据为被写的数据源,,半浮点的数据为所需存放的数据,,表示在长整型数据的低位上存放数据,,表示在长整型数据的高位上存放数据。,函数运算的结果就是向长整数中放,sfloat,数据。,控制站间的数据交换,Setbit,函数是向长整数中放,bool,数据的函数。,y=,setbit,(,长整型数据,bool,数据,0、131,);,长整型数据为被写的数据源,,bool,数据为所需存放的数据,,0、131表示在长整型数据的哪一位上存放数据,,函数运算的结果就是向长整数中放,bool,数据。,控制站间的数据交换,Sendmsg,为设置向其他控制站发消息的数目的函数。,sendmsg,(,所需发送,msg,的数量);,控制站间的数据交换,g_,msg,0,=,0,;,g_,msg,1,=,0,;,g_,msg,0,=,setsfloat,(g_,msg,0,_TAG,(,TI-101,).PV,0,);,g_,msg,0,=,setsfloat,(g_,msg,0,_TAG,(,FI-101,).PV,1,);,g_,msg,1,=,setsfloat,(g_,msg,1,_TAG,(,LI-101,).PV,1,);,g_,msg,1,=,setbit,(g_,msg,1,_TAG,(,DI-101,).PV,0,);,g_,msg,1,=,setbit,(g_,msg,1,_TAG,(,DI-102,).PV,1,);,g_,msg,1,=,setbit,(g_,msg,1,_TAG,(,DI-103,).PV,2,);,g_,msg,1,=,setbit,(g_,msg,1,_TAG,(,DI-104,).PV,3,);,sendmsg,(,2,);,控制站间的数据交换,SETSFLOST,模块的功能是在输入的32位,DWORD,型变量的指定位置设置16位的,SFLOAT,值,再赋给输出值。其中,,SFLOAT,型在计算机中以定点法存储,在指定位置设置后,整体以,DWORD,型传送。,控制站间的数据交换,输入引脚,X,上连接了一个,DWORD,变量,,输入引脚,SF,上连接的就示需要在其他站点上被调用的数据位号,,输入引脚,SERIAL,上连接的数字表示该半浮点位号在双字的,g_,msg,变量中存放的位置序号(0表示放在低16位,1表示放在高16位)。,将所需的数据存储在,DWORD,变量指定位置后,将数值改变后的,DWORD,变量从输出引脚,Y,输出。,SETBIT,模块的功能与前面的模块类似,是在输入的,DWORD,型值的指定位置设置开关数据,再赋给输出值。也就是,在已存在的,DWORD,型值的某一位上设置开关数据,其余不变,然后输出。,控制站间的数据交换,输入引脚,X,上连接了一个,DWORD,变量,,输入引脚,Q,上连接的就示需要在其他站点上被调用的数据位号,,输入引脚,SERIAL,上连接的数字表示该布尔型位号在双字的,g_,msg,变量中存放的位置序号(0表示放在最低位,31表示放在最高位)。,将所需的数据存储在,DWORD,变量指定位置后,将数值改变后的,DWORD,变量从输出引脚,Y,输出。,SENDMSG,模块的功能是通知发送消息的个数。,SIZE,定义消息的个数,消息内容放在,g_,msg,中。,控制站间的数据交换,控制站间的数据交换,接收:,接着我们需要在接受数据的站点地址4号控制站编写接受数据的程序。本站点需要接受的数据就是地址2号控制站发送出来的两个,g_,msg,变量,g_,msg,0,和,g_,msg,1,。,控制站间的数据交换,Getmsg,为从其他控制站取消息的函数。,y=,getmsg,(,控制站地址,所接收的,msg,号,);,控制站间的数据交换,Getsfloat,为从长整数中取半浮点数的函数。,y=,getsfloat,(,长整型数据,或,);,长整型数据为取数据的数据源,一般的,就是我们从其它控制站中取来的数据。,表示从长整型数据的低位上取数据,,表示从长整型数据的高位上取数据。,控制站间的数据交换,Getbit,函数是从长整数中取,BOOL,数据的函数。,y=,getbit,(,长整型数据,0、131,);,长整型数据为取数据的数据源,一般的,就是我们从其它控制站中取来的数据,,0、131表示从长整型数据的哪一位上取数据。,控制站间的数据交换,long msg0,msg1;,sfloat,TI101,FI101,LI101;,bool,DI101,DI102,DI103,DI104;,msg0=,getmsg,(2,0);,msg1=,getmsg,(2,1);,TI101=,getsfloat,(msg0,0);,FI101=,getsfloat,(msg0,1);,LI101=,getsfloat,(msg1,1);,DI101=,getbit,(msg1,0);,DI102=,getbit,(msg1,1);,DI103=,getbit,(msg1,2);,DI104=,getbit,(msg1,3);,控制站间的数据交换,GETMSG,模块的功能,是从其他控制站取传送过来的消息。,STATION,引脚为控制站号,填写控制站的地址。,SERIAL,引脚为消息序号,填写所接受的,msg,序号。,MSG,引脚输出的是接受到的消息。,控制站间的数据交换,GETSFLOST,模块的功能是从输入的32位,DWORD,型值的指定位置取16位的,SFLOAT,型值。其中,在计算机中,,SFLOAT,型用定点表示法表示。,SERIAL=0,,取低16位;,SERIAL=1,取高16位。,控制站间的数据交换,输入引脚,X,上连接了一个,DWORD,变量,,即为取数据的数据源。,输入引脚,SERIAL,上连接的数字表示从双字的变量中取半浮点数的位置序号(0表示从低16位取数,1表示从高16位取数)。,取出的半浮点数从输出引脚,Y,输出。,GETBIT,模块的功能与前面的模块类似,是从输入的,DWORD,型值的指定位置取,BOOL,数。,控制站间的数据交换,输入引脚,X,上连接了一个,DWORD,变量,,即为取数据的数据源。,输入引脚,SERIAL,上连接的数字表示从双字的变量中取布尔数的位置序号(0表示从最低位取数,31表示从最高位取数)。,取出的布尔数从输出引脚,Q,输出。,控制站间的数据交换,控制站间的数据交换,数据从网络上接收到本控制站后,通过上面的方法将数据取出来放在指定的变量中以后,在本控制站就可以任意的调用这些数据的实时值了。这就是控制站之间数据调用的全过程。,控制站间的数据交换,
展开阅读全文