1、 关于组态王历史曲线的绘制在作项目中,常常遇到需要查看工程的历史数据图和历史曲线。在使用组态王的过程中遇到了以下问题。问题;工程要求要能查找历史数据和查看历史曲线。组态王内置历史曲线可以绘制,但数据不能第三方访问。且历史数据记录不能停止。要绘制历史曲线,首先要有历史数据,组态王本身有历史数据库。也可使用第三方数据库。组态王自己的历史数据库不开放(只可用函数语句表另存为) ,第三方不能访问。第三方数据库是微软的 access 数据库或者是 SQL sever 数据库等。在测试 access 数据时发现。组态王保存的历史数据在绘制历史曲线调用时,有个日期时间格式的数据需要选取。但在数据库里边没有符
2、合这个格式的选项。经查看发现组态王合成的日期时间格式在 access 里是字符串( 文本)格式,不符合datetime 格式。于是手动更改为 datetime 格式,组态王可以调用历史数据绘制曲线了。但数据又不能插入了。测试失败。方法 1.在 SQL several 数据库中同时插入两个一摸一样的表格,表格 1 插入数据,表二在表 1插入时同时插入数据并转换数据格式,然后在历史曲线控件里调用。在表格 1 调用触发器,然后再插入数据到表格 2,同时更改日期时间字符串为datetime 格式,直接在组态王历史控件里调用即可。create trigger myinsertaon MODE for i
3、nsertasdeclare a char(15),b int,c char(8),d char(10),e char(24),f int,g int,h int,i int,j int,k int,l int,m char(10);select a=工件号编码 ,b=序号, c=时间, d=日期, e=DATATIME,f=毫秒,g =轨顶温度,h=轨顶温度,i =轨低温度,j= 轨低温度,k=喷风温度,l= 喷风压力,m=用户 FROM INSERTEDINSERT INTO MODE1 values (a,b,c,d,e,f,g,h,i,j,k,l,m);上面第一个触发器定义中间变量和数
4、据长度和格式,定义的格式应当和组态王模板设定的长度和数据类型一致。下面的触发器在每次插入触发时更改DATATIME列的格式为datetime 日期时间格式。 create trigger STTTOTIMEaon MODE -(/记录体名称)ALTER TABLE MODE1ALTER COLUMN DATATIME datetime;方法 2 还是使用 SQL several 数据库。在定义组态王模板时定义一个内部空变量,定义类型为 long,长整型。随模板一起插入,在组态里,转换 DATATIME 字符串为 datetime 日期时间格式,并赋值给定义的长整型(long) ,在组态历史控件
5、里就可以调用了未实践 注;此方法为山东网友所指导。方法 3 和方法 2 类似,采用 access 数据库,没有触发器,需要后台编写查询语句生成查询表。A.在查询语句表格里添加新的变量命名为“新日期” ,更改数据表里的“日期时间”文本为”日期/ 时间 ”格式【用 CDate(日期时间) 】B添加需要的变量,有日期时间后,可以任意在组态王历史曲线控件里边调用。方法 4.应该是所有的数据库都可通用。在数据插入时,在数据库编程。插入本机的系统时间为数据采集时间。Access 经过测试可以使用。A 在组态王数据模板里新添加一个变量命名为 datetime,数类型为 long,选中可以为空值。B 运行组态
6、王, SQLConnect( DeviceID, “dsn=aew;uid=;pwd=“);/连 odbc 数据库SQLCreateTable( DeviceID, “表格 1“, “表格 1“ );/在数据库插入表格模板C 在 access 数据库里打开插入的表格 1,转换到设计视图,更改 datetime 的数据类型 为“日期/时间”D 在“常规”下设置“默认值”为“NOW()”/ 在数据插入式自动插入当前的时间。经测试日期和时间可在组态王控件日期时间空间里显示,历史曲线绘制完成。学习了点 sql 语句,编程自由度很高,不仅仅局限以上的解决方式( 像宏和 vba 脚本都没用到)学无止境2016/8/2 10:49 qq316355917朗利电气设备有限公司