模块1:冰库
<p>[TOC]</p>
<h5>函数名称</h5>
<ul>
<li>Ice Storage Institution Control
模块ID号为1。</li>
</ul>
<h5>简要描述</h5>
<ul>
<li>冰库机构控制
冰库电机机构</li>
</ul>
<p>输出:
1.冰库旋转电机
2.冰库水平电机
3.冰库垂直电机
4.冰库门电机</p>
<p>输入:
1.冰库门上传感器
2.冰库门下传感器
3.冰库水平电机前传感器
4.冰库水平电机后传感器
5.冰库垂直电机上传感器
6.冰库垂直电机下传感器
7.冰库旋转电机传感器</p>
<p>功能:</p>
<p>1. 冰库门通过电机上升和下降,达到冰库的开门和关门。同时到上下传感器停止,上下传感器为限位,禁止过限位。
2. 传送带定时旋转
3. 辅料电机1定时旋转
4. 辅料电机2定时旋转
5. 辅料电机3定时旋转
6. 辅料电机4定时旋转
7. 辅料电机5定时旋转
8. 电推杆在后限位传感器时互锁关,电推杆没在后限位位置时,互锁开。
9. 互锁输入高,电推杆不执行,互锁输入低,电推杆伸出执行。</p>
<p>1. 电推杆单独伸出与缩回,
2. 获取传感器值
3. 设置传送带运行时间
4. 设置辅料旋转时间
5. 传送带旋转
6. 辅料电机旋转</p>
<h4>包子类型</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">序号</th>
<th style="text-align: left;">包子类型</th>
<th style="text-align: left;">包子类型编号</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">包子(黑猪肉)</td>
<td style="text-align: left;">1</td>
</tr>
<tr>
<td style="text-align: left;">2</td>
<td style="text-align: left;">包子(梅干菜鲜肉)</td>
<td style="text-align: left;">2</td>
</tr>
<tr>
<td style="text-align: left;">3</td>
<td style="text-align: left;">包子(大姐包的)</td>
<td style="text-align: left;">3</td>
</tr>
</tbody>
</table>
<h4>硬件连接</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">输出</th>
<th style="text-align: left;"></th>
<th style="text-align: left;"></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">电推杆方向</td>
<td style="text-align: left;">DO_0</td>
</tr>
<tr>
<td style="text-align: left;">2</td>
<td style="text-align: left;">电推杆使能</td>
<td style="text-align: left;">DO_1</td>
</tr>
<tr>
<td style="text-align: left;">3</td>
<td style="text-align: left;">辅料电机1</td>
<td style="text-align: left;">DO_2</td>
</tr>
<tr>
<td style="text-align: left;">4</td>
<td style="text-align: left;">辅料电机2</td>
<td style="text-align: left;">DO_3</td>
</tr>
<tr>
<td style="text-align: left;">5</td>
<td style="text-align: left;">辅料电机3</td>
<td style="text-align: left;">DO_4</td>
</tr>
<tr>
<td style="text-align: left;">6</td>
<td style="text-align: left;">辅料电机4</td>
<td style="text-align: left;">DO_5</td>
</tr>
<tr>
<td style="text-align: left;">7</td>
<td style="text-align: left;">辅料电机5</td>
<td style="text-align: left;">DO_6</td>
</tr>
<tr>
<td style="text-align: left;">8</td>
<td style="text-align: left;">传送带带</td>
<td style="text-align: left;">DO_7</td>
</tr>
<tr>
<td style="text-align: left;">9</td>
<td style="text-align: left;">互锁输出</td>
<td style="text-align: left;">DIR+</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">输入</th>
<th style="text-align: left;"></th>
<th style="text-align: left;"></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">1</td>
<td style="text-align: left;">固体电推杆前接近开关</td>
<td style="text-align: left;">DI_0</td>
</tr>
<tr>
<td style="text-align: left;">2</td>
<td style="text-align: left;">固体电推杆后接近开关</td>
<td style="text-align: left;">DI_1</td>
</tr>
</tbody>
</table>
<h5>读取输入状态</h5>
<p>读取传感器状态、</p>
<h5>读取传感器状态命令举例</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">离散输入寄存器地址</th>
<th style="text-align: left;">读取数量</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x02</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
</tr>
</tbody>
</table>
<p>ID号:每个模块板子有一个独立的编号,范围为1~255,一个字节。
命令:02命令为读取离散输入量,一个字节。
地址:模块离散输入寄存器地址,两个字节,高字节在前,低字节在后。
读取数量:读取离散输入寄存器的数量,两个字节,高字节在前,低字节在后。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">线圈地址</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">2000(0x07d0)</td>
<td style="text-align: left;">DI_0输入状态</td>
<td>固体电推杆前接近开关,读取传感器值0为在位,1为不在位</td>
</tr>
<tr>
<td style="text-align: left;">2001(0x07d1)</td>
<td style="text-align: left;">DI_1输入状态</td>
<td>固体电推杆后接近开关,读取传感器值0为在位,1为不在位</td>
</tr>
</tbody>
</table>
<h5>通信设置</h5>
<p>485总线,波特率为115200,8数据位,1停止位,无奇偶校验,采用modbus_rtu通讯协议,支持02,03,06命令,详细请参见modbus文档。
读取传感器状态、</p>
<h5>读取传感器状态命令举例</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">离散输入寄存器地址</th>
<th style="text-align: left;">读取数量</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x02</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
</tr>
</tbody>
</table>
<p>ID号:每个模块板子有一个独立的编号,范围为1~255,一个字节。
命令:02命令为读取离散输入量,一个字节。
地址:模块离散输入寄存器地址,两个字节,高字节在前,低字节在后。
读取数量:读取离散输入寄存器的数量,两个字节,高字节在前,低字节在后。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">线圈地址</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">2000(0x07d0)</td>
<td style="text-align: left;">DI_0输入状态</td>
<td>固体电推杆前接近开关,读取传感器值0为在位,1为不在位</td>
</tr>
<tr>
<td style="text-align: left;">2001(0x07d1)</td>
<td style="text-align: left;">DI_1输入状态</td>
<td>固体电推杆后接近开关,读取传感器值0为在位,1为不在位</td>
</tr>
</tbody>
</table>
<p>主机发送 01 02 00 00 00 08 79 CC , 查询0地址开始,8个离散输入状态。
注:本系统只支持0地址开始8个线圈查询。
从机返回 01 02 01 FE 20 FC ,第4个数据 FE 表示 输入状态。最高位为输入7状态,最低位为输入0状态。0表示高电平,1表示低电平。FE 表示第0输入为高电平,其余为低电平。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">数据长度</th>
<th style="text-align: left;">线圈状态</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x02</td>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0xfe</td>
<td style="text-align: left;">0x20fc</td>
</tr>
</tbody>
</table>
<h5>读(03)写(06)</h5>
<p>寄存器 读取寄存器数值 </p>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">保持寄存器地址</th>
<th style="text-align: left;">读取数量</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x03</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">保持寄存器地址</th>
<th style="text-align: left;">保持寄存器值</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x06</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
</tr>
</tbody>
</table>
<p>ID号:每个模块板子有一个独立的编号,范围为1~255,一个字节。
命令:03命令为读取保持寄存器,06为写保持寄存区,也就是03命令可以读取模块的数据,配置文件等,06命令可以写数据,写配置文件,一个字节。
地址:模块保持寄存器地址,两个字节,高字节在前,低字节在后。
读取数量:读取保持寄存器的数量,两个字节,高字节在前,低字节在后。
03读保持寄存器返回
主机发送 01 03 00 00 00 01 84 0A , 查询0地址开始,1个寄存器状态。
注:本系统只支持单个输入寄存器查询。
从机返回 01 03 02 00 01 79 FC</p>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">数据长度</th>
<th style="text-align: left;">保持寄存器值</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x06</td>
<td style="text-align: left;">0x02</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
</tr>
</tbody>
</table>
<p>06写保持寄存器返回
主机发送 01 06 00 00 00 01 09 A1 ,给地址0x0000,写入0x0000数据。
注:本系统只支持单个保持寄存器写入。
从机返回 01 06 00 00 00 01 09 A1 ,系统地址为1。</p>
<h4>寄存器</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">寄存器地址</th>
<th style="text-align: left;">描述</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">3000(0x0bb8)</td>
<td style="text-align: left;">系统地址</td>
<td style="text-align: left;">1-250</td>
</tr>
<tr>
<td style="text-align: left;">3001(0x0bb9)</td>
<td style="text-align: left;">复位</td>
<td style="text-align: left;">0xAA55</td>
</tr>
<tr>
<td style="text-align: left;">3002(0x0bba)</td>
<td style="text-align: left;">辅料1电机运行时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
<tr>
<td style="text-align: left;">3003(0x0bbb)</td>
<td style="text-align: left;">辅料2电机运行时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
<tr>
<td style="text-align: left;">3004(0x0bbc)</td>
<td style="text-align: left;">辅料3电机运行时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
<tr>
<td style="text-align: left;">3005(0x0bbd)</td>
<td style="text-align: left;">辅料4电机运行时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
<tr>
<td style="text-align: left;">3006(0x0bbe)</td>
<td style="text-align: left;">辅料5电机运行时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
<tr>
<td style="text-align: left;">3007(0x0bbf)</td>
<td style="text-align: left;">传送带电机运行时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
<tr>
<td style="text-align: left;">3008(0x0bc0)</td>
<td style="text-align: left;">电推杆可运行最大时间</td>
<td style="text-align: left;">默认的最大执行时间为(为掉电保护存储),单位0.1秒</td>
</tr>
</tbody>
</table>
<h5>写 (05)线圈</h5>
<p>写线圈命令举例解析</p>
<table>
<thead>
<tr>
<th style="text-align: left;">ID</th>
<th style="text-align: left;">命令</th>
<th style="text-align: left;">线圈地址</th>
<th style="text-align: left;">写线圈状态</th>
<th style="text-align: left;">CRC-16校验</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">0x01</td>
<td style="text-align: left;">0x05</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
<td style="text-align: left;">0x0000</td>
</tr>
</tbody>
</table>
<p> ID号:每个模块板子有一个独立的编号,范围为1~255,一个字节。
命令:05命令为写线圈,一个字节。
线圈地址:模块线圈地址,两个字节,高字节在前,低字节在后。
读取数量:写取线圈的数量,两个字节,高字节在前,低字节在后。</p>
<p>主机发送 01 05 00 01 ff 00 4E 2C , 写线圈,写地址为1的线圈。
从机返回 01 05 00 01 ff 00 4E 2C ,系统地址为1。</p>
<table>
<thead>
<tr>
<th style="text-align: left;">寄存器地址</th>
<th style="text-align: left;">描述</th>
<th style="text-align: left;"></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">4000(0x0fa0)</td>
<td style="text-align: left;">电推杆伸出</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4001(0x0fa0)</td>
<td style="text-align: left;">电推杆缩回</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4002(0x0fa0)</td>
<td style="text-align: left;">辅料电机1转</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4003(0x0fa0)</td>
<td style="text-align: left;">辅料电机2转</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4004(0x0fa0)</td>
<td style="text-align: left;">辅料电机3转</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4005(0x0fa0)</td>
<td style="text-align: left;">辅料电机4转</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4006(0x0fa0)</td>
<td style="text-align: left;">辅料电机5转</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4007(0x0fa0)</td>
<td style="text-align: left;">传送带旋转</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4008(0x0fa1)</td>
<td style="text-align: left;">DO_0线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4009(0x0fa2)</td>
<td style="text-align: left;">DO_1线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4010(0x0fa2)</td>
<td style="text-align: left;">DO_2线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4011(0x0fa3)</td>
<td style="text-align: left;">DO_3线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4012(0x0fa4)</td>
<td style="text-align: left;">DO_4线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4013(0x0fa5)</td>
<td style="text-align: left;">DO_5线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4014(0x0fa6)</td>
<td style="text-align: left;">DO_6线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
<tr>
<td style="text-align: left;">4015(0x0fa7)</td>
<td style="text-align: left;">DO_7线圈地址</td>
<td style="text-align: left;">写0xff00有效,0x0000关闭</td>
</tr>
</tbody>
</table>
<h4>设定辅料时间参数</h4>
<p>1.写3002寄存器,值为要设定的时间,单位为0.1s,辅料电机1::生菜。
2.写3003寄存器,值为要设定的时间,单位为0.1s,辅料电机2::香菜。
3.写3004寄存器,值为要设定的时间,单位为0.1s,辅料电机3::葱花。
4.写3005寄存器,值为要设定的时间,单位为0.1s,辅料电机4::薄脆。
5.写3006寄存器,值为要设定的时间,单位为0.1s,辅料电机5::火腿。
6.写3007寄存器,值为要设定的时间,单位为0.1s,传送带时间。</p>
<h4>下辅料</h4>
<p>1.写4002寄存器,值0xff00,辅料电机1::生菜。
2.写4003寄存器,值0xff00,辅料电机2::香菜。
3.写4004寄存器,值0xff00, 辅料电机3::葱花。
4.写4005寄存器,值0xff00,辅料电机4::薄脆。
5.写 4006寄存器,值0xff00,辅料电机5::火腿。</p>
<h4>出辅料</h4>
<p>1.固体电推杆伸出
写4000寄存器,值0xff00。
2.固态辅料传送带旋转
写4007寄存器,值0xff00,
3.固体辅料缩回
写4001寄存器,值0xff00。</p>