浙大中控DCS培训教程(培训)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制站间的数据交换
假如现在系统中有4个控制站,其中2号站需要调 用1号站的一些数据,那么,让我们一起来看看实现 数据交换的步骤——
控制站间的数据交换
首先,在1号站内编制一段程序,通过程序把需要 被调用的数据存放在本站点的数据共享区中,然后 把这些共享数据发送到系统的过程控制网上。
这一次的数据发送是采用广播式的发送,也就是 不特别指明发送到哪一个控制站中。
发送: 那么,在地址为2的控制站中,编写一段程序,
程序中,将3个模拟量和4个开关量分别存放在 2个g_msg变量中,为了方便起见,程序中使用 了g_msg[0]和g_msg[1] 。然后将这两个g_msg发 送出去。
控制站间的数据交换
Setsfloat函数是向长整数中放sfloat数据的函数。 y=setsfloat(长整型数据,半浮点数据,0或1); 长整型数据为被写的数据源, 半浮点的数据为所需存放的数据, 0表示在长整型数据的低位上存放数据, 1表示在长整型数据的高位上存放数据。 函数运算的结果就是向长整数中放sfloat数据。
控制站间的数据交换
Setbit函数是向长整数中放bool数据的函数。 y=setbit(长整型数据,bool数据,0、1…31); 长整型数据为被写的数据源, bool数据为所需存放的数据, 0、1…31表示在长整型数据的哪一位上存放数据, 函数运算的结果就是向长整数中放bool数据。
控制站间的数据交换
控制方案的设计
——高级组态维护培训班
一、编程小案例
两种方法的比较: 组态中实现:精度高 程序中实现:灵活
控制站间的数据交换
控制站间的数据交换
对于一个较大的系统,往往无 法做到将程序需要调用的位号集 中在一个控制站中。这里,就需
要进行数据的站间调பைடு நூலகம்。
控制站间的数据交换
为了实现在控制站间交换数据,每个控制站开辟了 一片共享数据区,用以存放共享数据。数据区内有 128*4个字节描述为 LONG g_msg[128] (在SCControl 中数据类型为DWORD)。为了最灵活经济的使用这片数 据区,系统定义了一系列函数处理各种数据类型从数 据区的放入和取出。通过sendmsg和getmsg执行发送 和接收工作。
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);
控制站间的数据交换
SETBIT模块的功能与前面的模块类似,是在输入的 DWORD型值的指定位置设置开关数据,再赋给输出值。也 就是,在已存在的DWORD型值的某一位上设置开关数据, 其余不变,然后输出。
输入引脚X上连接了一个DWORD变量, 输入引脚Q上连接的就示需要在其他站点上被调用的数 据位号, 输入引脚SERIAL上连接的数字表示该布尔型位号在双字 的g_msg变量中存放的位置序号(0表示放在最低位,31 表示放在最高位)。 将所需的数据存储在DWORD变量指定位置后,将数值改 变后的DWORD变量从输出引脚Y输出。
控制站间的数据交换
经分析,需要发送的数据有模拟量位号3个, 开关量位号4个。
在这里,根据题目要求,我们使用两个g_msg 变量,其中的一个g_msg存放题目中要求的2个模 拟量位号,正好占用了4个字节,另一个g_msg存 放题目中的另一个模拟量位号(2个字节)和4个 开关量(4位)。
控制站间的数据交换
控制站间的数据交换
控制站间的数据交换
SETSFLOST模块的功能是在输入的32位DWORD型变量的指定 位置设置16位的SFLOAT值,再赋给输出值。其中,SFLOAT型在 计算机中以定点法存储,在指定位置设置后,整体以DWORD型 传送。
输入引脚X上连接了一个DWORD变量, 输入引脚SF上连接的就示需要在其他站点上被调用的数据位 号, 输入引脚SERIAL上连接的数字表示该半浮点位号在双字的 g_msg变量中存放的位置序号(0表示放在低16位,1表示放 在高16位)。 将所需的数据存储在DWORD变量指定位置后,将数值改变后 的DWORD变量从输出引脚Y输出。
如何实现?
控制站间的数据交换
根据系统规定,模拟量位号在系统内以2字节 的半浮点(sfloat)数据类型存放,开关量以布 尔(bool)数据类型存放。对于g_msg变量,每 一个g_msg分别可以利用它的高16位和低16位存 放2个半浮点型或整型的2字节变量;若是布尔型 的数据,g_msg的每一位可以存放一个布尔量, 也就是每个g_msg变量可以存放32个布尔量(开 关量);对于像浮点型(float)这样的本身就 占用4个字节的变量,每个g_msg只能存放一个。
以上为被调用数据的站点上进行的操作。
控制站间的数据交换
接着,在接受数据的2号控制站中我们也要编制一 段程序,将指定的1号控制站发送的数据接收到本站 点中。
接收过来的数据可以在本站点中任意使用。
控制站间的数据交换
例子:地址为2的控制站中有以下的一些 数据需要在地址为4的控制站中使用,这些 数据分别是:地址2号控制站中氧化炉温度 TI-101,空气流量FI-101,反应罐液位LI101,电机1状态DI-101,电机2状态DI-102, 电机3状态DI-103,电机4状态DI-104。