1、控制站间的数据交换控制站间的数据交换对于一个较大的系统,往往无法做到将程序需要调用的位号集中在一个控制站中。这里,就需要进行数据的站间调用。控制站间的数据交换为了实现在控制站间交换数据,每个控制站开辟了一片共享数据区,用以存放共享数据。数据区内有128*4个字节描述为 LONG g_msg128 (在 SCControl中数据类型为 DWORD)。 为了最灵活经济的使用这片数据区,系统定义了一系列函数处理各种数据类型从数据区的放入和取出。通过 sendmsg和 getmsg执行发送和接收工作。 控制站间的数据交换假如现在系统中有 4个控制站,其中 2号站需要调用 1号站的一些数据,那么,让我们
2、一起来看看实现数据交换的步骤:数据存放 广播发送数据接收 数据使用控制站间的数据交换例子:地址为 2的控制站中有以下的一些数据需要在地址为 4的控制站中使用,这些数据分别是:TI-101 氧化炉温度FI-101 空气流量LI-101 反应罐液位DI-101 电机 1状态DI-102 电机 2状态DI-103 电机 3状态DI-104 电机 4状态控制站间的数据交换根据系统规定,模拟量位号在系统内以 2字节的半浮点( sfloat) 数据类型存放,开关量以布尔( bool) 数据类型存放。对于 g_msg变量,每一个 g_msg分别可以利用它的高 16位和低 16位存放 2个半浮点型或整型的 2
3、字节变量;若是布尔型的数据, g_msg的每一位可以存放一个布尔量,也就是每个 g_msg变量可以存放 32个布尔量(开关量);对于像浮点型 ( float) 这样的本身就占用 4个字节的变量,每个 g_msg只能存放一个。控制站间的数据交换经分析,需要发送的数据有模拟量位号 3个,开关量位号 4个。在这里,根据题目要求,我们使用两个 g_msg变量,其中的一个 g_msg存放题目中要求的 2个模拟量位号,正好占用了 4个字节,另一个 g_msg存放题目中的另一个模拟量位号( 2个字节)和 4个开关量( 4位)。 控制站间的数据交换发送:那么,在地址为 2的控制站中,编写一段程序,程序中,将个
4、模拟量和个开关量分别存放在个 g_msg变量中,为了方便起见,程序中使用了 g_msg0和 g_msg1 。 然后将这两个 g_msg发送出去。控制站间的数据交换Setsfloat函数是向长整数中放 sfloat数据的函数。y=setsfloat(长整型数据 ,半浮点数据 ,或 );长整型数据为被写的数据源,半浮点的数据为所需存放的数据,表示在长整型数据的低位上存放数据,表示在长整型数据的高位上存放数据。函数运算的结果就是向长整数中放 sfloat数据。控制站间的数据交换Setbit函数是向长整数中放 bool数据的函数。y=setbit(长整型数据 ,bool数据 ,0、 131 );长整型数据为被写的数据源,bool数据为所需存放的数据,0、 131 表示在长整型数据的哪一位上存放数据,函数运算的结果就是向长整数中放 bool数据。