软件组讨论

[复制链接]
loveplc | 2011-3-14 18:21:55 | 显示全部楼层

软件组讨论

主要解析G代码,并完成粗插补,能够根据加工数据,实时显示加工进度和加工数据。
为了减少通讯量,要尽可能压缩通讯数据。

具体的思路通过讨论总结!

loveplc | 2011-3-14 21:15:36 | 显示全部楼层

Re:软件组讨论

网上找到的一段VC程序整理了一下
这个函数是一个工业数控上的G代码编译程序,
G代码的格式如下,我把它存在了记事本中。现在利用CStdioFile fs.Open打开文件,然后利用ReadString对文件的每一行进行读取。读取出来一行字符串后在接着对字符串中的字符进行处理。现在的关键问题是程序按行读取字符串没有问题。可是要求程序有循环指令,也就是遇到G22就要进行循环,它的循环体式G22到G80之间的行数.

G代码格式:
G22 L4
G1 U-120 V-110
U120 V110
G80
M60
G0 X-123 Y0 Z0
M62
G22 L4
G1 U120 V-110
U-120 V-110
G80
M60
M00
G0 X123 Y0 Z0
M62
G22 L4
G1 U-120 V-110
U120 V-110
G80
M60
部分代码
if(fs.Open(SourPath, CFile::modeRead | CFile::typeText))
while(1)

if(fs.ReadString(str1)==NULL)break; // 利用ReadString读取每一行代码
str1 =' '; //在行结束的时候给它加上一个换行符
while(str1[n]!=' ') //对字符串中的每个字符进行判断

switch(str1[n])

case 'X':case 'x':
Read(str1,n,xn); //如果有X,就把X后边的数字读取出来,赋值给xn,以备下边的处理。
bX=true;
break;
case 'Y':case 'y':
Read(str1,n,yn); 
bY=true;
break; 
case 'Z':case 'z':
Read(str1,n,zn);
bZ=true;
break;
case 'U':case 'u':
ReadNum(str1,n,un1);
bU=true;
break;
case 'V':case 'v':
ReadNum(str1,n,vn);
bV=true;
break;
case 'W':case 'w':
Read(str1,n,wn);
bW=true;
break; 
case 'G':case 'g': //如果遇到G,就把G后边的数字读取出来。
Read(str1,n,code);
switch(code)
{ //5
case 0:
case 1:
case 2:
case 3:
Line=code; 
break;
case 4: //G04暂停G04 X或者是P,X和P都为暂停时间,单位不一样
case 17:
case 18:
case 19:
PlanGroup=code;
break;
case 22: 
bG22=true;


case 80: //绝对值方式编程
bG80=true; 
break;
 
break;
default:
break;
} switch(str1[n])判断到这里一个字符判断完毕

   
n ;
} while(str1[n]!=' ')
xinnv | 2011-4-27 20:23:26 | 显示全部楼层

Re:软件组讨论

能否考虑用PLC实现G代码的解析,因为G代码的类型不多,而且通过上位机通讯实现的数据如果传输频率过高容易丢包

如果这样要解决的问题则是将图形动作转化为G代码

然后在PLC里加载 该段代码到固定的区间

loveplc | 2011-4-28 08:05:33 | 显示全部楼层

Re:软件组讨论

以下引用xinnv在2011-4-27 12:23:26发表的评论:

能否考虑用PLC实现G代码的解析,因为G代码的类型不多,而且通过上位机通讯实现的数据如果传输频率过高容易丢包

如果这样要解决的问题则是将图形动作转化为G代码

然后在PLC里加载 该段代码到固定的区间


G代码解析要大量的运算,最好是上位机来做,复杂会影响PLC的运行速度和实时性。

与上位机通讯中可以压缩通讯量,波特率设置到9600等,在做好CRC校验,应该没有问题!

loveplc | 2011-4-28 08:06:50 | 显示全部楼层

Re:软件组讨论

如果能解析G代码,那就是数控系统了,不是PLC了
loveplc | 2011-10-7 00:24:38 | 显示全部楼层

Re:软件组讨论

很久没有聊了,现在卡在三轴联动这里了

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则