MYSQL的AlongWu第三方库(CODESYS)的使用

一,概述

AlongWu编写的CODESYS与MYSQL操作的第三方库。

下载地址:

https://download.csdn.net/download/weixin_42386991/88995577

本第三方库目前只有3个功能块。

分别是

Mysql_Open:建立mysql连接和完成授权。

Mysql_ExecuteNonQuery:执行 Insert,Update,Delete等 无数据返回的 SQL语句。

Mysql_QueryData:执行 select的 SQL语句。

本库特色:

1,MYSQL语句通过字节数组的形式输入命令功能块。其最大长度为1450个Byte。

2,Mysql_QueryData 会将Mysql回复的数据,自动将解析并输出数据项的值并将其以50*20Byte的二维字节数组的显示输出。如返回3行3列数值,3行*3列,共计9个数据项,那么前9个20Byte的数组将分别存有该9个数据项的值(字节数组)。用户需要自己将这9个20Byte的数组,根据业务需要,自己转为需要的数据。

另外,

        由于CODESYS不支持动态分配内存,所以无法像PC那样对MYSQL回复内容进行灵活地生成表格。

        如果觉得sql语句的输入长度1450不够,或者对Mysql_QueryData解析Mysql回复数据有专门的解析需要,可以联系我。

二,CODESYS安装和测试

三、简单调用测试程序

(*
#@Copyright:
#@License:
#@Birth:            created by Along on 2024-03-24
#@Content:          PLC_PRG-主程序
#@Version:          0.0.3
#@Revision:         last revised by Along on 2024-03-24
#@Note             
               
*)


PROGRAM PLC_PRG

VAR CONSTANT
	arr_empty						:ARRAY [0..1449] OF BYTE :=[0];			//空白字节数组
	str_msg							:STRING(255);							//空白 字符串

END_VAR

VAR
	
fb_mysql_open						:Mysql_Open;										//mysql Open 功能块实例
fb_mysql_executenonquery			:Mysql_ExecuteNonQuery ;							//mysql_ExecuteNonQuery 功能块实例
fb_mysql_querydata					:Mysql_QueryData ;									//mysql_QueryData 功能块实例
	
str_insert_1						:STRING;											//字符串 mysql insert语句
str_query_1							:STRING;											//字符串 mysql select语句
arr_sqlcmd							:ARRAY [0..1449] OF BYTE;							//字节数组 sql指令

i_len								:INT;												//sql指令 字节素组 有效字节数量

r_trig_nonequery					:R_TRIG;											//上升沿 执行mysql_ExecuteNonQuery位
r_trig_query						:R_TRIG;											//上升沿 执行mysql_QueryData位

bw_nonequery_exec					:BOOL;												//位 执行mysql_ExecuteNonQuery位
bw_query_exec						:BOOL;												//位 执行mysql_QueryData位

str_error_msg						:STRING(255);										//字符串 mysql回复错误信息

END_VAR



//mysql Open 功能块实例
fb_mysql_open(
	byte_ip1:= 192, 
	byte_ip2:= 168, 
	byte_ip3:= 1, 
	byte_ip4:= 109, 
	ui_port:= 3306, 
	str_account:= 'along', 
	str_password:= '123456', 
	str_database:= 'mydatabase', 
	bw_enable:= , 
	bs_connected=> , 
	bs_busy=> , 
	bs_error=> , 
	ui_errorid=> , 
	bs_inited=> , 
	pt_handler=> );

//上升沿 执行nonquery
r_trig_nonequery(CLK:= bw_nonequery_exec, Q=> );
//上升沿 执行nonquery
IF r_trig_nonequery.Q  THEN
	//复位字节数组
	arr_sqlcmd := arr_empty;
	//复位错误字符串
	str_error_msg := str_msg;
	
	//sql指令
	str_insert_1 := 'INSERT INTO `mytable` (`key`, `mytext`) VALUES (111, $'abc$')';
	//指令长度
	i_len := LEN(str_insert_1);

	//字符串指令转字节数组
	MEM.MemMove(pSource:= ADR(str_insert_1), pDestination:= ADR(arr_sqlcmd), uiNumberOfBytes:=INT_TO_UINT(i_len) );

END_IF

//mysql_ExecuteNonQuery 功能块实例
fb_mysql_executenonquery(
	pt_handler:= fb_mysql_open.pt_handler, 
	bw_execute:= bw_nonequery_exec, 
	buff_sql:= arr_sqlcmd,  
	bs_failure=> , 
	bs_OK=> , 
	bs_FE=> , 
	bs_FF=> ,
	str_FF_msg => str_error_msg
	);	
	
//上升沿 执行querydata
r_trig_query(CLK:= bw_query_exec, Q=> );
//上升沿 执行querydata
IF r_trig_query.Q THEN
	//复位字节数组
	arr_sqlcmd := arr_empty;
	//复位错误字符串
	str_error_msg := str_msg;
	//sql指令
	str_query_1 :='SELECT * FROM mytable';
	//指令长度
	i_len := LEN(str_query_1);

	//字符串指令转字节数组
	MEM.MemMove(pSource:= ADR(str_query_1), pDestination:= ADR(arr_sqlcmd), uiNumberOfBytes:=INT_TO_UINT(i_len) );

END_IF

//mysql_QueryData 功能块实例
fb_mysql_querydata(
	pt_handler:= fb_mysql_open.pt_handler, 
	bw_execute:= bw_query_exec, 
	buff_sql:= arr_sqlcmd,  
	bs_failure=> , 
	bs_OK=> , 
	bs_FF=> , 
	str_FF_msg=> , 
	buff_data=> , 
	i_item_count=> );	

测试程序主要就是Mysql_Open,Mysql_ExecuteNonQuery,Mysql_QueryData 的使用测试。

四、截图

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值