C#上位机读取PLC报警
我目前见到的PLC工程师会把报警点位存储在D或者M,M的话就是布尔值0和1嘛,D的话因为是16位的(也有32位)只能以short类型(或者byte[])读取出来再按位转换成布尔数组进行循环判断,为了方便一般都会让PLC工程师将报警点位写在一起,不连续的报警点位只是增加了读取的复杂度。。连续的点位可以批量进行读取,如果地址很分散,就会增加通信负荷。如果必须使用离散地址,可以在 PLC 内部先整理数据(如用 M 继电器映射到连续的 D 寄存器),再批量上传。另外关于报警读取,一般都会以一个总报警点位进行轮询判断,只有当总报警为True的时候,才会去读取相关报警点位,查询是哪个点位触发了报警。
bool[] 报警信息;
short n = 0;
for (int i = 0; i < 25; i++)
{
for (int j = 0; j < 8; j++)
{
报警信息[n] = (报警byte[i] & (1 << j)) != 0;//位与操作,判断当前位是不是true
n++;
}
}
获取的报警布尔值去查找对应报警信息

浙公网安备 33010602011771号