简介
非标软件,要做成什么样,才能把设备流程在软件上就能完全编写好?不借助Visual Studio(VS2015/VS2019等)。
另:本编已经有优化如下图,具体请打开:进攻:设备动作流程(二)
场景
在客户现场你没有见过机械手的软件工程师,对吧?
但在客户现场的非标设备软件工程师却很常见,是吧!
为什么非标设备的软件工程师就一定要在客户现场?
因为设备的动作流程现在是软工用Visual Studio(VS2015/VS2019等)在做,设备的当前动作不满足就需要即时完善,但完善,也只有会软件编写才能完善。因此设备有需要完善时(增加点位及相应动作,优化动作等),软工不能离开客户现场。这里就指向了设备动作流程,那么当软工做的程序能够不需要亲自写动作流程,在软件上就能完成所以动作流程,就是能够把设备动作流程交由其他部门来做,那么就可以一直专研于程序的升级优化,做出更加好的程序。
那么,如何进攻“设备动作流程”?
带着这个问题,我们接下来大概可以什么做?
可以这样做?
代码确认好,点击保存,再点击运行,就可以执行这些代码。
接下来上代码:
static string 上料状态 = "未完成";
static string 飞达状态 = "未完成";
static string 取料状态 = "未完成";
static string 贴合状态 = "未完成";
static string 下料状态 = "完成";
static public void B模拟上料()
{
while (true)
{
工具.等待(ref 下料状态,"完成");
工具.显示("上料123,确认后设置为完成");
上料状态 = "完成";
下料状态 = "未完成";
}
}
static public void C模拟飞达()
{
while (true)
{
工具.等待(ref 上料状态,"完成");
工具.显示("飞达,确认后设置为完成");
飞达状态 = "完成";
上料状态 = "未完成";
}
}
static public void D模拟取料()
{
while (true)
{
工具.等待(ref 飞达状态,"完成");
工具.显示("取料,确认后设置为完成");
取料状态 = "完成";
飞达状态 = "未完成";
}
}
static public void E模拟贴合()
{
while (true)
{
工具.等待(ref 取料状态,"完成");
工具.显示("贴合,确认后设置为完成");
贴合状态 = "完成";
取料状态 = "未完成";
}
}
static public void F模拟下料()
{
while (true)
{
工具.等待(ref 贴合状态,"完成");
工具.显示("下料,确认后设置为完成");
下料状态 = "完成";
贴合状态 = "未完成";
}
}
补充下“工具”类
using System.Windows.Forms;
using System.Threading;
namespace WCF.WCFScript
{
/// 类 名:工具
/// 类 描 述:示例工具类
/// WCF·769838889@qq.com
/// 创建时间:2019/7/26
/// 源 码:https://github.com/jiliwei/WCF
public static class 工具
{
public static void 显示(string value)
{
MessageBox.Show(value);
}
public static void 等待(ref string value, string result)
{
继续等待:
if (value.Equals(result))
{
return;
}
Thread.Sleep(50);
goto 继续等待;
}
public static void 等待50毫秒()
{
Thread.Sleep(50);
}
}
}
以上关键有两点:
1、动态编译代码:CS-Script
官网参考:https://github.com/oleg-shilo/cs-script
CSDN参考:https://blog.csdn.net/u014608071/article/details/107030857
2、代码中文命名
CSDN参考:https://blog.csdn.net/u014608071/article/details/109408945
小总结
以上就能解决:为什么非标设备的软件工程师就一定要在客户现场?
不,不确定,这个是1年前的了,但拿来做“引子”还是可以的。
比如:在工具类里面,增加:
1、相对运动;
2、绝对运动;
3、等待输入IO信号;
4、设置输出IO信号;
5、等这些运动控制卡的相关操作。
以上,是不是就应该能够完成 一个不带视觉的自动化设备软件。
整体大概的思路
运动控制
上面的已经解决就不多说
逻辑
因为用了“CS-Script ”,所以在生成代码时,我们自己,可以对代码进行优化(替换)。
就是,进行中文化,让大家更容易上手,履清逻辑。
比如:在程序的流程里面写:“如果”在使用“CS-Script ”生成前,找到“如果”,就把如果替换成“if”,这样是不是就很方便,还有这些:
原始代码 | 替换的代码 |
---|---|
如果 | if |
一直循环 | while(true) |
循环 | while |
遍历 | for/foreach |
结束循环 | break |
结束本次循环 | continue |
字符串 | string |
数字 | double |
整数 | int |
通讯
把通讯做成自定义控件,然后如同运动控制一样,添加在工具类里面。
视觉
当下的视觉,主要分两种:
1、智能相机;
2、halcon或者opencv
第一种:就相对简单些。智能相机,说白了就是通讯。就是可以给定位坐标的通讯。把通讯做成自定义控件,剩下的就是,数据的拼接发送,和接收的数据解析。
第二种:门槛就比较高,这也是为什么,视觉可以单独起来。但还是可以做起来的,做法同“通讯”。
其他
这里就是设备日志、取放料矩阵等等的更多功能。
另:本编已经有优化如下图,具体请打开:进攻:设备动作流程(二)