自由口通讯
宏指令编写自由通讯协议
本章主要讲述在 SKWorkshop(以下简称 SK)组态软件中如何用宏指令编写 自由通讯协议。SK 的自由通讯协议编写主要运用了内部自带的两个函数:
PUTCHARS(发送数据函数)和 GETCHARS(接收数据函数)。编程人员运用这两个函数 可以很方便的编写自己的设备协议。
首先新建一个工程,命名为:自由口通讯;通讯连接设置连接接口:COM1;设备服务 选择:Samkoon NULL PLC(或者建立工程后在连接中更改),如图 3-1:
}
else
//接收正确
{
LW2=Gdata[0]&0xff;
//数据处理
LB0=0;//处理Fra bibliotek毕,下次进入时发送
PUTCHARS(0,Pdata,0);
//清除缓冲区
}
}
在变量设定表里面建立如下 4 个变量:
LB0:内部地址 LB0,BOOL,读写;
LW0:内部地址 LW0,16 位整数,写;
LW1:内部地址 LW1,16 位整数,写;
//所要发送的数据
Pdata[1]=0x02;
Pdata[2]=0x03;
Pdata[3]=0x04;
PUTCHARS(0,Pdata,4);
//发送函数,发送数据到串口
LB0=1;
//发送完毕,下次进入不发送,等待接收
return;
//退出等待接收
}
else
{
result=GETCHARS(0,Gdata); //接收函数,把接收到的数据存在 Gdata 数组中
图 3-2
图 3-3 下载工程至触摸屏,用串口线连接电脑与触摸屏。电脑端打开串口调试助手, 设置串口参数与触摸屏参数一致。连接成功以后在接收区接收到如图 3-4 所示代 码
图 3-4 点击手动发送(注意勾选十六进制发送)即可在触摸屏上监视到发送的数据 的第一个数据。如图 3-5
图 3-5
图 3-1
新建宏指令 Marco_COM,编写如下代码:
char Pdata[20];
//发送数据存储数组
char Gdata[100];
//接收数据存储数组
int result;
//接收返回数据的长度
if (LB0==0)
//LB0 为发送接收标志,为 0 发送状态,1 等待接收状态
{
Pdata[0]=0x01;
LW0=result;
//查看接收长度
if (result<=0)
//返回 0 和-1 表示没有接受到或者接收错误
{
LW1++;
//超时判断,开始计数
if (LW1>=3)
//等待 3 个本宏指令执行时间
{
LW1=0;
//计数清零
LB0=0;
//发送标志清零,下次进入发送
}
return;
//直接退出
LW2:内部地址 LW2, 16 位正整数,写;
如图 3-2:
在画面上分别建立如下控件:
位按钮:功能选择交替,写入地址 LB0,勾选监视,勾选监视地址与写入地
址相同;
数值显示:监视地址 LW0;
数值显示:监视地址 LW1;
数值显示:监视地址 LW2;
定时器:执行宏指令 Marco_COM;
效果如图 3-3