//立即写寄存器
PCHMI.RT.SET_BIT(0,"D0.0", 1); //位写入
PCHMI.RT.SET_UINT32(0,"D00", 1); //字写入
PCHMI.RT.SET_UINT16s(0, "D00", new UInt16[] { 1, 2, 3 });//多字写入
PCHMI.RT.SET_UINT32(0, "D00", 1);//双字写入
PCHMI.RT.SET_UINT32s(0, "D00", new UInt32[] { 1, 2, 3 });//双字写入
PCHMI.RT.SET_UINT64(0, "D00", 1);//四字写入
PCHMI.RT.SET_INT16(0, "D00", 1);//INT16写入
PCHMI.RT.SET_INT32(0, "D00", 1);//INT32字写入
PCHMI.RT.SET_F32(0, "D00", 0.1f);//F32浮点写入
PCHMI.RT.SET_F64(0, "D00", 0.1);//F64浮点字写入
PCHMI.RT.SET_STRING(0, "D00", "HELLO WORLD!");//写字符串
PCHMI.RT.SET_SIEMENS_STRING(0, "D00", "HELLO WORLD!");//写西门子字符串
//控制寄存器 PCHMI.RT.CTRL(0, "D0.0", "置位", ""); PCHMI.RT.CTRL(0, "D0.0", "复位", ""); PCHMI.RT.CTRL(0, "D0.0", "瞬动", ""); PCHMI.RT.CTRL(0, "D0.0", "半秒瞬动", ""); PCHMI.RT.CTRL(0, "D0.0", "一秒瞬动", ""); PCHMI.RT.CTRL(0, "D0.0", "反转", ""); PCHMI.RT.CTRL(0, "D00", "字加", "1"); PCHMI.RT.CTRL(0, "D00", "字减", "1"); PCHMI.RT.CTRL(0, "D00", "双字加", "1"); PCHMI.RT.CTRL(0, "D00", "双字减", "1"); PCHMI.RT.CTRL(0, "D00", "字写入", "1"); PCHMI.RT.CTRL(0, "D00", "双字写入", "1"); PCHMI.RT.CTRL(0, "D00", "多字写入", "1,2,3"); PCHMI.RT.CTRL(0, "D00", "字符串写入", "HELLO WORLD!");
//临时读寄存器 PCHMI.VL.GET_BIT(0, "D0.0"); //读位 PCHMI.VL.GET_INT16(0, "D00"); //读INT16 PCHMI.VL.GET_INT32(0, "D00"); //读INT32 PCHMI.VL.GET_UINT16(0, "D00");//读UINT16 PCHMI.VL.GET_UINT32(0, "D00");//读UINT32 PCHMI.VL.GET_F32(0, "D00"); //读F32 PCHMI.VL.GET_F32s(0, "D00",10);//读多个F32 PCHMI.VL.GET_F64(0, "D00"); //读F64 PCHMI.VL.GET_F64s(0, "D00", 10);//读多个F64 PCHMI.VL.GET_STRING(0, "D00", 10);//读字符串 PCHMI.VL.GET_SIEMENS_STRING(0, "D00", 10);//读西门子字符串 PCHMI.VL.GET_INT16s(0, "D00", 10);//读多个INT16 PCHMI.VL.GET_INT32s(0, "D00", 10);//读多个INT32 PCHMI.VL.GET_UINT16s(0, "D00", 10);//读多个UINT16 PCHMI.VL.GET_UINT32s(0, "D00", 10);//多个读UINT32
//永久读寄存器 PCHMI.RT.GET_BIT(0, "D0.0"); //读位 PCHMI.RT.GET_INT16(0, "D00"); //读INT16 PCHMI.RT.GET_INT32(0, "D00"); //读INT32 PCHMI.RT.GET_UINT16(0, "D00");//读UINT16 PCHMI.RT.GET_UINT32(0, "D00");//读UINT32 PCHMI.RT.GET_F32(0, "D00"); //读F32 PCHMI.RT.GET_F32s(0, "D00",10);//读多个F32 PCHMI.RT.GET_F64(0, "D00"); //读F64 PCHMI.RT.GET_F64s(0, "D00",10);//读多个F64 PCHMI.RT.GET_STRING(0, "D00", 10);//读字符串 PCHMI.RT.GET_INT16s(0, "D00", 10);//读多个INT16 PCHMI.RT.GET_INT32s(0, "D00", 10);//读多个INT32 PCHMI.RT.GET_UINT16s(0, "D00", 10);//读多个UINT16 PCHMI.RT.GET_UINT32s(0, "D00", 10);//多个读UINT32
不管是RT还是VL读寄存器,如果使用了在界面中从未使用过的地址,第一次读取系统需要注册,可能读取上来的数据为空。之后再读取就有数据了。如果不想要第一次读取的空数据,可以在窗口的LOAD事件里在启动代码的后面对地址读取一次,下次再读取相同的地址就不会为空数据了。
//单次读取示例 UInt16[] U = PCHMI.ONE_TIME.GET_WORDs(0,"DB1.0",10);//连续读取10个字放到数组里 UInt16[] U = PCHMI.ONE_TIME.GET_WORDs(0,"DB1.0",10,out bool ISOUTTIME);//连续读取10个字放到数组里,ISOUTTIME是返回的超时状态 UInt16[] U = PCHMI.ONE_TIME.GET_WORDs(0,"DB1.0",10,1000,out bool ISOUTTIME);//连续读取10个字放到数组里,并设置为1000ms的超时时间
| 类型 | 示例地址 | 说明 |
|---|---|---|
| PLC地址 | DB1.0 | 例如西门子PLC DB1.0 |
| 用户地址 | U00 | PCHMI内部U地址 |
| 标签地址 | U:标签名 | 标签变量访问 |
| 共享内存 | E:1000 | E:0‑65535,使用PCHMI.MEM.GET_XXX / SET_XXX读写,同一台电脑多DLL进程数据互通,适合多人开发数据交换 |
| 全局变量 | V:PCHMI.GLOBAL.UserName | 必须带V:前缀 |
1、如果是自己的定义的全局静态变量可以随便用,建议自己定义的全局静态变量类里最好不要出现构造函数。建议用户专门新建一个类里面只放全局静态变量。
2、用户自定义全局静态变量必须使用下面格式:
public static string 变量名 { get; set; } = "变量默认值";