本文档面向具备一定C#基础,需要做二次开发的上位机工程师,整理PCHMI常用C#调用接口示例代码。
//PCHMI组件初始化启动
config1.START(this);
//判断控件是否启动完成,只有启动完成之后才可以使用操控PLC的指令。
PCHMI.PClass.SystemRun;
//判断PLC通讯状态,0表示第一个PLC
PCHMI.PClass.IsPlcLink(0);
//获取或设置当前使用的语言
PCHMI.PClass.Language = 0;
//关闭第一个PLC通讯
PCHMI.CONFIG.PLC_OFF[0]=True;
//重启程序,可以用在长时间通讯超时,无法恢复的情况下使用。
PCHMI.UpConfig.ReBoot();
//调用通信配置窗口
new PCHMI.UpConfig().ShowDialog();
//将文字转语音播放出来
PCHMI.PClass.Speech("你好!");
//触发按键音
new PCHMI.PClass().KEYBEEP();
//关闭或开启按键音
PCHMI.CONFIG.KEY_BEEP.启用=false;
//子窗口等比缩放
new PCHMI.AutoFormChange(this);
//权限登录,弹出输入密码窗口
PCHMI.PClass.Login();
//权限修改,修改密码
PCHMI.PClass.UpPwd();
//获取或设置当前权限等级
PCHMI.PClass.NowAuthority = 1;
//获取或设置自动注销时间
PCHMI.CONFIG.nottime;
//获取当前登录用户名
PCHMI.PClass.UserName;
//获取当前登录时间
PCHMI.PClass.LoginTime;
//实例化边沿检测对象,监控0号PLC U0.0上升沿
PCHMI.TIRGGER TG = new PCHMI.TIRGGER(0, "U0.0", "上升沿");
private void timer_Tick(object sender, EventArgs e)
{
if(TG.Enable)
{
MessageBox.Show("哈哈,上升沿被我捕捉到拉");
}
}
//将字符串"123"保存到指定的文件
PCHMI.PClass.WFile(@"D:\PLCIP.TXT", "123");
//从指定的文件读取文本内容
PCHMI.PClass.RFile(@"D:\PLCIP.TXT");
using System.Collections.Generic;
using System.Data;
//写入一行数据到CSV文件
PCHMI.CSV.WriteLine(@"D:\文件名.csv", new List<string>(){"内容1", "内容2", "内容3", "内容4" });
//写入多行数据到CSV文件
List<List<string>> rows = new List<List<string>>()
{
new List<string>() { "A1", "B1", "C1", "D1" },
new List<string>() { "A2", "B2", "C2", "D2" }
};
PCHMI.CSV.WriteLines(@"D:\文件名.csv", rows);
//读取CSV文件内容到DataTable
DataTable TAB = PCHMI.CSV.CsvToDataTable(@"D:\文件名.csv");
//将DataTable里的内容写入CSV文件
PCHMI.CSV.DataTableToCsv(@"D:\文件名.csv", TAB);
//从指定的配方文件调用配方
new PCHMI.配方().CALL_TECH("配方文件名", "配方名");
//保存指定配方文件名的配方
new PCHMI.配方().SAVE_TECH("配方文件名");
//删除指定配方文件名的配方
new PCHMI.配方().DEL_TECH("配方文件名");
//打印控件里的画面
//参数:1、控件名 2、打印机驱动名 3、是否预览
new PCHMI.PRINT().PrintControl(面板1, "", true);
//打印表格
//参数:1、表格控件GridView 2、打印机驱动名 3、标题
PCHMI.PRINTDGV.Print(数据表1.GridView,"","");
//打印预览表格
PCHMI.PRINTDGV.PrintPreview(数据表1.GridView,"","");
using System.Net.Sockets;
using System.Text;
private void Main_Load(object sender, EventArgs e)
{
//在窗口LOAD事件里配置TCP服务
new PCHMI.TCPServer("127.0.0.1", 7800, RECV);
}
//回调函数,用来处理客户端发来的信息
public void RECV(NetworkStream NS, byte[] recvBytes)
{
//将接收到客户端发来的信息更新UI,必须使用Invoke跨线程
this.BeginInvoke(new System.EventHandler(UpdateUI), Encoding.Default.GetString(recvBytes));
Byte[] RDT = Encoding.Default.GetBytes("收到");//要返回的内容
NS.Write(RDT, 0, RDT.Length);//发送给客户端
}
//将服务器接收到客户端的信息显示到文本框
private void UpdateUI(object o, System.EventArgs e)
{
TBox1.Text += o.ToString() + "\r\n";
}
using System.Net.Sockets;
//声明一个TCP客户端链接
PCHMI.TCPClient TCPC=new PCHMI.TCPClient("127.0.0.1", 7800);
private void 发送按钮_Click(object sender, EventArgs e)
{
//向服务器发送数据,并将返回的数据放到字节数组里。
Byte[] RDT=TCPC.TSEND(Encoding.Default.GetBytes("HELLO"));
}
/*TCP客户端在第一次TSEND时会自动与服务器建立链接,如果想手动实现还可以使用下面两个方法。*/
//打开链接并设置IP、端口、链接超时时间。
TCPC.socket = new PCHMI.TimeOutSocket().Connect("127.0.0.1", 7800, 1000);
//关闭链接
TCPC.socket.Close();
//连续读取10个字放到数组里
UInt16[] U = PCHMI.ONE_TIME.GET_WORDs(0,"DB1.0",10);
//连续读取10个字放到数组里,ISOUTTIME是返回的超时状态
UInt16[] U = PCHMI.ONE_TIME.GET_WORDs(0,"DB1.0",10,out bool ISOUTTIME);
//连续读取10个字放到数组里,并设置为1000ms的超时时间
UInt16[] U = PCHMI.ONE_TIME.GET_WORDs(0,"DB1.0",10,1000,out bool ISOUTTIME);
//1、批量修改参数文件名
参数设置界面 PARFORM = new 参数设置界面();
ControlBatch.UpAllTagBox(PARFORM, "原来参数文件名", "现在参数文件名");
PARFORM.Show();
//2、读F32参数
ParamHelper.GET_F32(@"参数文件名", "参数名").ToString();
//3、写F32参数
ParamHelper.SET_F32(@"参数文件名", "参数名",0.25F).ToString();