用户登陆 用户注册
您的位置:首页>
技术文章>内容正文
PRO-FACE人机界面应用技巧
[正文]:face的gp2000系列(除gp2301,2501,2401h和2301h)触摸屏有一个扩展串行接口(com2) ,这个扩展串口通过d脚本程序的编写可以方便的实现gp与一些特殊设备间的通讯(rs232) 。
下面是一个扩展串口通讯的实例。
这里我们进行通讯的设备是gp-2500s与chk-8d型电池巡检仪(以下简称巡检仪)。
1.通讯要求 我们的目的是通过触摸屏读出巡检仪检测到的电池电压信息。
2.通讯设置 巡检仪有一个rs-485口,支持多种波特率。
它的通讯格式为异步,一位起始码,八位数据位,一位停止位,无校验,半双工方式。
首先,我们在gp的扩展sio设置中选择和巡检仪的通讯设置一样的参数。
设置方法如下:同时按住gp的任意三个角,进入offline状态,依次进入initialize,setup i/o,setup sio,这里有gp的通讯设置,把它们设置成与巡检仪相应的格式即可。
3.报文交换格式(代码各项均为1字节hex码) 上位机下发命令: eb 90 eb 90 巡检仪机号 上位机号 03 00 c1 00 00 90 eb 巡检仪回复: eb 90 eb 90 上位机号 巡检仪机号 报文长度(l)报文长度(h) c2 电池组电压(1)电池组电压(2)1#电池电压(1) 1#电池电压(2) 2#电池电压(1)2#电池电压(2) …………n#电池电压(1) n#电池电压(2)代码和(l) 代码和(h) 90 eb 巡检仪机号: 即机器的地址编号,在chk-8d型巡检仪上设定,我们这里把它设为1号 电池的节数n: 根据实际的电池节数,在chk-8d型巡检仪上设定,我们这里设为103节 4.d脚本语句说明 4.1 接收功能 下面的命令被用于读从扩展口接收到的数据 格式 io_read([p:ext_sio], ls storage address, transer byte) 例子 io_read([p:ext_sio],[w:ls0100], 10) [p:ext_sio]表示接收数据 [w:ls0100]这是存放接收数据的起始地址,接收数据的大小存放在ls0100,接收的数据从ls0101开始存,10表示有10个字节存放在ls区(最大传送字节是6095)。
4.2 发送功能 下面的命令表示把要发送的数据写到扩展口 格式 io_write_ex([p:ext_sio], ls storage address, transer byte) 例子 io_write_ex([p:ext_sio], [w:ls0100], 10) [w:ls0100]是要发送的数据开始地址,10表示要发送10个数据。
*注意:每一个传送的是字节,也就是说传送的是每一个字的低八位,同样接收的数据也是一样的。
4.3 控制 增加控制变量去清除发送和接收缓存器以及错误状态,这个变量的属性是只能写的。
格式 位 [c:ext_sio_ctrl**] **:00到15 字 [c:ext_sio_ctrl] 例如:控制字的内容 位 [c:ext_sio_ctrl00]=1 字 [c:ext_sio_ctrl]=0x0007 当控制字的内容被确定以后,它的处理过程按照这样的次序来完成的,先清除错误状态,然后清除接收缓存,再清除发送缓存。
点击查看大图片
4.4 状态 增加[ext_esio_istat]作为状态变量,这个变量的属性是只读的。
格式 位 [s:ext_sio_stat**] **:00到15 字 [s:ext_sio_stat] 例如 位 if([s:ext_sio_stat00]==1) 字 if(([s:ext_sio_stat]&0x0000)<>0) 字的内容描述如下
点击查看大图片
4.5 接收数据的大小 这个属性也是只读的。
格式 [r:ext_sio_recv] 例如 if([r:ext_sio_recv]>=10) 5.通讯实现 5.1 硬件连接 由于巡检仪的通讯口是rs485,这里我们需要一个485/232的转换器。
9针的com2口的管脚定义如下:
点击查看大图片
5.2 软件设计 首先,新建一个pro/pb工程,plc类型选择memory link sio type, 协议选择extend sio script,如下图所示
点击查看大图片
然后新建一个画面,放置一些键盘输入显示,地址设为收到的电池电压的地址。
我们计算了总接受报文长度为221个字节,准备放置到7000到7220的地址中。
gp发送报文总长度为13个字节,准备放置在6000到6012的地址中 。
这些准备完成后,下面就可以开始d脚本编程了。
如下所示: 第一个程序:每30秒发送一次报文给巡检仪。
点击查看大图片
第二个程序:初始化
点击查看大图片
其中[s:ext_sio_stat14]为扩展sio状态字的第14位,当其值为1时表示扩展sio协议准备好了。
[c:ext_sio_ctrl]为扩展sio控制字,它的00,01,02位为1时分别清发送缓存,接收缓存,错误信息。
[b:020000]到[b:020004]为通讯步骤,当初始化完成触发[b:020001],执行下一步。
第三个程序:发送准备
点击查看大图片
这一步主要是把发送到巡检仪的报文储存到6000开始的13个连续地址中去。
完成后[b:020001]清零,[b:020002]置1,执行下一步。
第四个程序:发送子程序
点击查看大图片
ldcopy(databuf0, [w:6000], 13)是把6000开始的13个地址中的数据放到databuf0这个串中。
[s:ext_sio_stat00]等于1表示发送缓存区为空。
io_write_ex([p:ext_sio], databuf0, 13)为把databuf0的开始13个数据通过扩展口发送。
第五个程序:接收子程序
点击查看大图片
[s:ext_sio_stat02]等于1表示接收数据准备完毕。
[r:ext_sio_recv ]为接收数据长度,为了保证完整接收巡检仪传过来的报文,我们首先判断接收数据的长度是否大于221。
io read ( [p:ext_sio ], databuf1, 221)表示接收221个字节的数据放到databuf1中。
_dlcopy ([w:7000], databuf1, 0, 221)是将databuf1中0位开始的221个字节数据存放到[w:7000]开始的地址中去。
第六个程序:主程序
点击查看大图片
[b:020002]等于1时开始发送报文,发送完毕[b:020003]置1开始接收数据。
接收完判断数据是否正确,正确的话[b:020004]置1,一次通讯完成。
不正确的话[b:020003]重新置1,再收。
这样一个扩展串口通讯程序就完成了,此后再对接收的数据进行一些处理,即可得到我们所需的数据了。
这是扩展口通讯的一个实际应用,大家可以参照此中的参数设置和思路,编写自己的扩展口通讯程序。
点击查看大图片
点击查看大图片
点击查看大图片
点击查看大图片
点击查看大图片
点击查看大图片
点击查看大图片
点击查看大图片
网站首页
培训课程
维修指南
技术文章
家电专栏
供应信息
求购信息
培训资讯
展会信息
电脑专栏
教程下载
资料下载
常用软件
PLC教程
PLC资料
变频伺服
低压电器
维修资料
人机界面
自控仪表
工控机类
文章标题:
搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
京ICP备11002135号
报时(2026-04-02 22:10:03)