VWED_server/docs/sc/S7相关.md

434 lines
13 KiB
Markdown
Raw Normal View History

2025-09-25 10:52:52 +08:00
# S7 模块文档 (Python 版本)
## S7
#### S7 读取 Int
* 方法说明
S7 读取 Int。
```python
def read_s7_int(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,读取的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* 输出参数
* `None`,读取失败。
* `int`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 读取 DInt
* 方法说明
S7 读取 DInt。
```python
def read_s7_dint(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,读取的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* 输出参数
* `None`,读取失败。
* `int`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 读取 Word
* 方法说明
S7 读取 Word。
```python
def read_s7_word(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,读取的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* 输出参数
* `None`,读取失败。
* `int`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 读取 DWord
* 方法说明
S7 读取 DWord。
```python
def read_s7_dword(plc_type: str, ip: str, block_and_offset: str) -> Optional[int]:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,读取的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* 输出参数
* `None`,读取失败。
* `int`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 读取 String
* 方法说明
S7 读取 String。
```python
def read_s7_string(plc_type: str, ip: str, block_and_offset: str) -> Optional[str]:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,读取的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* 输出参数
* `None`,读取失败。
* `str`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 读取 Bool
* 方法说明
S7 读取 Bool。
```python
def read_s7_boolean(plc_type: str, ip: str, block_and_offset: str) -> Optional[bool]:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,读取的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* 输出参数
* `None`,读取失败。
* `bool`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 写入 Int
* 方法说明
S7 写入 Int。
```python
def write_s7_int(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,写入的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* `value`int 类型,写入的值。
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 写入 DInt
* 方法说明
S7 写入 DInt。
```python
def write_s7_dint(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,写入的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* `value`int 类型,写入的值。
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 写入 Word
* 方法说明
S7 写入 Word。
```python
def write_s7_word(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,写入的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* `value`int 类型,写入的值。
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 写入 DWord
* 方法说明
S7 写入 DWord。
```python
def write_s7_dword(plc_type: str, ip: str, block_and_offset: str, value: int) -> bool:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,写入的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* `value`int 类型,写入的值。
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 写入 String
* 方法说明
S7 写入 String。
```python
def write_s7_string(plc_type: str, ip: str, block_and_offset: str, value: str) -> bool:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,写入的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* `value`str 类型,写入的值。
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 写入 Bool
* 方法说明
S7 写入 Bool。
```python
def write_s7_boolean(plc_type: str, ip: str, block_and_offset: str, value: bool) -> bool:
```
* 输入参数
* `plc_type`str 类型PLC 类型可选值区分大小写S1200/S300/S400/S1500/S200Smart/S200。
* `ip`str 类型PLC IP。
* `block_and_offset`str 类型,写入的地址,支持的区域取值示例如下(区分大小写):
| 地址名称 | 地址代号 | 示例 |
| --- | --- | --- |
| 中间寄存器 | M | M100,M200 |
| 输入寄存器 | I | I100,I200 |
| 输出寄存器 | Q | Q100,Q200 |
| DB块寄存器 | DB | DB1.100,DB1.200.7 |
| V寄存器 | V | V100,V200 |
| 定时器的值 | T | T100,T200 |
| 计数器的值 | C | C100,C200 |
| 智能输入寄存器 | AI | AI100,AI200 |
| 智能输出寄存器 | AQ | AQ100,AQ200 |
* `value`bool 类型,写入的值。
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 通用写入
* 方法说明
S7 写入 Int、DInt、Word、DWord、String、Bool。
```python
def write_s7(plc_type: str, ip: str, slot: int, rack: int, data_type: str, block_and_offset: str, value: Any) -> bool:
```
* 输入参数
* `plc_type`:同上
* `ip`:同上
* `slot`CPU 模块的插槽号
* `rack`:中央机架
* `data_type`:在 Int、DInt、Word、DWord、String、Bool 中可选
* `block_and_offset`:同上
* `value`: 与 data_type 类型匹配的值
* 输出参数
* 成功返回 `True`,失败返回 `False`
* 异常
本方法不抛出异常,异常捕获后只作日志记录。
#### S7 通用读取
* 方法说明
S7 读取 Int、DInt、Word、DWord、String、Bool 类型地址的值。
```python
def read_s7(plc_type: str, ip: str, slot: int, rack: int, data_type: str, block_and_offset: str) -> Any:
```
* 输入参数
* `plc_type`:同上
* `ip`:同上
* `slot`CPU 模块的插槽号
* `rack`:中央机架
* `data_type`:在 Int、DInt、Word、DWord、String、Bool 中可选
* `block_and_offset`:同上
* 输出参数
* `None`,读取失败。
* `Any`,读取成功的返回值。
* 异常
本方法不抛出异常,异常捕获后只作日志记录。