项目里用的是协议4,不带换行回车
按位批读规则
示例
在第5站从X040至X044读5个点的数据(消息等待时间设为100毫秒)假定X040与X043关且X041、X042与X044开)
有几个点要注意下:
- 校验和只在[站号]到[位数]之间计算,计算方法是将计算区间所有的值相加,最后取后两位的ascii码:
$$30+35+46+46+42+52+41+58+30+30+34+30+30+35=347$$
则检验码为34,37 - 消息等待时间可以在0到150毫秒之间设定(以10毫秒为增量)。用一位ASCII字符来设定其值(“0”到“F"),代表0H到FH(0到15)。当在1:n系统中使用485PC-IF时,必须设定消息等待为70毫秒或更长(7或更大)。如果在网络中可编程控制器的扫描时间是70毫秒或更长,消息等待时间须设定为最大扫描时间或更长。
- 收到plc消息的第一位应为STX[02H],不然应该认为通信失败
相似的
按位批写规则
示例
- 写入不需要等待plc读取寄存器值,所以不需要等待。另外接收到的数据第一位应为ACK[06H],不然应该认为通信失败
另附校验码生成程序:
void SumCheck(unsigned char *tMsg, unsigned char *sumcheck) {
int sum = 0;
int i;
for (i = 1; i < strlen(tMsg); ++i) {
sum += *(tMsg + i);
}
*(sumcheck + 1) = sum % 16 + \'0\';
*(sumcheck) = (sum / 16) % 16 + \'0\';
}