PCHMI是一款免费的上位机组态控件。可以用于:上位机组态、上位机通讯、机器视觉与PLC通讯、SCADA与MES数据交互等功能。内容来源PCHMI.COM
下面是争对那些有一定C#基础,需要做二次开发的上位机工程师,整理的一些C#操作PLC的方法。
【C#向寄存器地址写数据方法】
这里采用的上位机组态控件是PCHMI.DLL,使用语言是C#。下面的方法主要用于操作用户U寄存器地址,比如PCHMI.REG.SET_INT16(0, "U00", 1)就是向第一个设备"U00"的用户地址写入1。当然也可以是PLC的寄存器地址,只不过与之前使用的PCHMI.REG.SEND_INT16(0, "DB0.0", 1)区别就是不会将数据发送到PLC,可以在离线状态下模拟用。
下面列出的是向U寄存器地址写数据的一些方法,方便那些有一定C#基础,需要二次开发的人使用。
//PLC或设备编号, 设备地址, 值
PCHMI.REG.SET_WORD(0, "U00", 1);
PCHMI.REG.SET_WORDs(0, "U00",new UInt16[] {1 ,2,3} );
PCHMI.REG.SET_BIT(0, "U00.0", 1);
PCHMI.REG.SET_DWORD(0, "U00", 1);
PCHMI.REG.SET_DWORD(0, "U00", 1);
PCHMI.REG.SET_LWORD(0, "U00", 1);
PCHMI.REG.SET_INT16(0, "U00", 1);
PCHMI.REG.SET_INT32(0, "U00", 1);
PCHMI.REG.SET_INT64(0, "U00", 1);
PCHMI.REG.SET_F32(0, "U00", 9.865f);
测试方法,参考"上位机开发 01-第一个HELLO WORLD程序"视频教程,选择你要控制的PLC,然后按照视频教程连接好PLC的通讯。再到主界面上拖出一个button按钮控件,在button按钮控件的Click事件里面复制上面其中一行代码
例子:向第一个设备,地址为"U00"写入一个浮点数为9.875的值
private void button_Click(object sender, EventArgs e){PCHMI.REG.SEND_SIEMENS_STRING(0, "U00", 9.865f);}
【C#读取PLC数据方法】
这里采用的工控组态控件是PCHMI.DLL,使用语言是C#,下面列出的是读取PLC数据的一些方法。
//读取PLC指定地址的一个或连续多个数据
//PLC或设备编号, 设备地址, +长度
PCHMI.REG.GET_BIT(0, "U0.0");
PCHMI.REG.GET_INT16(0, "U00");
PCHMI.REG.GET_INT32(0, "U00");
PCHMI.REG.GET_UINT16(0, "U00");
PCHMI.REG.GET_UINT32(0, "U00");
PCHMI.REG.GET_F32(0, "U00");
PCHMI.REG.GET_F32s(0, "U00",2);
PCHMI.REG.GET_STRING(0, "U00",10);
PCHMI.REG.GET_SIEMENS_STRING(0, "U00", 10);
PCHMI.REG.GET_INT16s(0, "U00", 10);
PCHMI.REG.GET_INT32s(0, "U00", 10);
PCHMI.REG.GET_UINT16s(0, "U00",10);
PCHMI.REG.GET_UINT32s(0, "U00", 10);
例子:读取第一个松下PLC,地址为"DT00"里面的值
private void button_Click(object sender, EventArgs e){MessageBox.Show(PCHMI.REG.GET_UINT16(0, "DT00").ToString());}
【C#控制PLC方法】
//Send_Control(PLC或设备编号, 设备地址, 操作方法, 值)
PCHMI.DCON.Send_Control(0, "D0.0", "置位", "");
PCHMI.DCON.Send_Control(0, "D0.0", "复位", "");
PCHMI.DCON.Send_Control(0, "D0.0", "瞬动", "");
PCHMI.DCON.Send_Control(0, "D0.0", "反转", "");
PCHMI.DCON.Send_Control(0, "D00", "字加", "1");
PCHMI.DCON.Send_Control(0, "D00", "字减", "1");
PCHMI.DCON.Send_Control(0, "D00", "双字加", "1");
PCHMI.DCON.Send_Control(0, "D00", "双字减", "1");
PCHMI.DCON.Send_Control(0, "D00", "字写入", "1");
PCHMI.DCON.Send_Control(0, "D00", "双字写入", "1");
PCHMI.DCON.Send_Control(0, "D00", "多字写入", "1,2,3");
PCHMI.DCON.Send_Control(0, "D00", "字符串写入", "HELLO WORLD!");
例子:
private void button_Click(object sender, EventArgs e)
{
PCHMI.DCON.Send_Control(0, "Y0", "反转", "");//控制0号PLC的Y0输出点取反
}
C#.NET向PLC写数据方法
工控极客2020-05-05 12:23:29
这里采用的工控组态控件是PCHMI.DLL,使用语言是C#,在其它语言里面叫函数的在c#里面都叫方法。下面列出的是向PLC写数据的一些方法。
//PLC或设备编号, 设备地址, 操作方法, 值
PCHMI.REG.SEND_WDs(0, "D00", new UInt16[] {1,2,3 });//向连续PLC地址D00写入:1,2,3
//还可以用下面的方法
PCHMI.REG.SEND_BIT(0, "D0.0", 1);
PCHMI.REG.SEND_INT16(0, "D00", 1);
PCHMI.REG.SEND_UINT16(0, "D00", 1);
PCHMI.REG.SEND_INT32(0, "D00", 1);
PCHMI.REG.SEND_UINT32(0, "D00", 1);
PCHMI.REG.SEND_F32(0, "D00", 0.1f);
PCHMI.REG.SEND_STRING(0, "D00", "HELLO WORLD!");
PCHMI.REG.SEND_SIEMENS_STRING(0, "D00", "HELLO WORLD!");
//还可以用下面的方法
new PCHMI.DCON().SendValue(0, "D0.0", "BIT", "1");
new PCHMI.DCON().SendValue(0, "D00", "INT16", "-1");
new PCHMI.DCON().SendValue(0, "D00", "INT32", "-1");
new PCHMI.DCON().SendValue(0, "D00", "UINT16", "1");
new PCHMI.DCON().SendValue(0, "D00", "UINT32", "1");
new PCHMI.DCON().SendValue(0, "D00", "F32", "0.1");
new PCHMI.DCON().SendValue(0, "D00", "STRING", "HELLO WORLD!");
new PCHMI.DCON().SendValue(0, "D00", "SIEMENS_STRING", "HELLO WORLD!");
测试方法,参考"工业组态"系列视频教程,选择你要控制的PLC,然后按照视频教程连接好PLC的通讯。再到主界面上拖出一个button按钮控件,在button按钮控件的Click事件里面复制上面其中一行代码
例子:向第一个西门子PLC,地址为"DB0.0"写入西门子格式的字符串
private void button_Click(object sender, EventArgs e)
{
PCHMI.REG.SEND_SIEMENS_STRING(0, "DB0.0", "HELLO WORLD!");
}